import pytest from httmock import urlmatch, HTTMock from util.config.validators import ConfigValidationException from util.config.validators.validate_google_login import GoogleLoginValidator from test.fixtures import * @pytest.mark.parametrize('unvalidated_config', [ ({}), ({'GOOGLE_LOGIN_CONFIG': {}}), ({'GOOGLE_LOGIN_CONFIG': {'CLIENT_ID': 'foo'}}), ({'GOOGLE_LOGIN_CONFIG': {'CLIENT_SECRET': 'foo'}}), ]) def test_validate_invalid_google_login_config(unvalidated_config, app): validator = GoogleLoginValidator() with pytest.raises(ConfigValidationException): validator.validate(unvalidated_config, None, None) def test_validate_google_login(app): url_hit = [False] @urlmatch(netloc=r'www.googleapis.com', path='/oauth2/v3/token') def handler(_, __): url_hit[0] = True return {'status_code': 200, 'content': ''} validator = GoogleLoginValidator() with HTTMock(handler): validator.validate({ 'GOOGLE_LOGIN_CONFIG': { 'CLIENT_ID': 'foo', 'CLIENT_SECRET': 'bar', }, }, None, None) assert url_hit[0]