def test_missing_required_type_installed(self): required = clientsecrets.VALID_CLIENT[clientsecrets.TYPE_INSTALLED]["required"] # We will certainly have less than all 5 keys. self.assertEqual(len(required), 5) clientsecrets_dict = {clientsecrets.TYPE_INSTALLED: {"not_required": None}} with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets(clientsecrets_dict)
def test_missing_required_type_web(self): required = clientsecrets.VALID_CLIENT[ clientsecrets.TYPE_WEB]['required'] # We will certainly have less than all 5 keys. self.assertEqual(len(required), 5) clientsecrets_dict = { clientsecrets.TYPE_WEB: {'not_required': None}, } with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets(clientsecrets_dict)
def test_missing_required_type_installed(self): required = clientsecrets.VALID_CLIENT[ clientsecrets.TYPE_INSTALLED]['required'] # We will certainly have less than all 5 keys. self.assertEqual(len(required), 5) clientsecrets_dict = { clientsecrets.TYPE_INSTALLED: { 'not_required': None }, } with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets(clientsecrets_dict)
def test_string_not_configured_type_installed(self): string_props = clientsecrets.VALID_CLIENT[clientsecrets.TYPE_INSTALLED]["string"] self.assertTrue("client_id" in string_props) clientsecrets_dict = { clientsecrets.TYPE_INSTALLED: { "client_id": "[[template]]", "client_secret": "seekrit", "redirect_uris": None, "auth_uri": None, "token_uri": None, } } with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets(clientsecrets_dict)
def test_string_not_configured_type_web(self): string_props = clientsecrets.VALID_CLIENT[ clientsecrets.TYPE_WEB]['string'] self.assertTrue('client_id' in string_props) clientsecrets_dict = { clientsecrets.TYPE_WEB: { 'client_id': '[[template]]', 'client_secret': 'seekrit', 'redirect_uris': None, 'auth_uri': None, 'token_uri': None, }, } with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets(clientsecrets_dict)
def test_success_type_installed(self): client_info = { "client_id": "eye-dee", "client_secret": "seekrit", "redirect_uris": None, "auth_uri": None, "token_uri": None, } clientsecrets_dict = {clientsecrets.TYPE_INSTALLED: client_info} result = clientsecrets._validate_clientsecrets(clientsecrets_dict) self.assertEqual(result, (clientsecrets.TYPE_INSTALLED, client_info))
def test_success_type_installed(self): client_info = { 'client_id': 'eye-dee', 'client_secret': 'seekrit', 'redirect_uris': None, 'auth_uri': None, 'token_uri': None, } clientsecrets_dict = { clientsecrets.TYPE_INSTALLED: client_info, } result = clientsecrets._validate_clientsecrets(clientsecrets_dict) self.assertEqual(result, (clientsecrets.TYPE_INSTALLED, client_info))
def get_flow(scope, device_uri=None): client_type, client_info = clientsecrets._validate_clientsecrets(settings.GOOGLE_OAUTH_CONFIG) if client_type in (clientsecrets.TYPE_WEB, clientsecrets.TYPE_INSTALLED): constructor_kwargs = { 'redirect_uri': client_info['redirect_uris'][0], 'auth_uri': client_info['auth_uri'], 'token_uri': client_info['token_uri'], 'approval_prompt': client_info['approval_prompt'] } revoke_uri = client_info.get('revoke_uri') if revoke_uri is not None: constructor_kwargs['revoke_uri'] = revoke_uri if device_uri is not None: constructor_kwargs['device_uri'] = device_uri return OAuth2WebServerFlow( client_info['client_id'], client_info['client_secret'], scope, **constructor_kwargs)
def test_invalid_client_type(self): fake_type = 'fake_type' self.assertNotEqual(fake_type, clientsecrets.TYPE_WEB) self.assertNotEqual(fake_type, clientsecrets.TYPE_INSTALLED) with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets({fake_type: None})
def test_with_none(self): with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets(None)
def test_with_other_than_one_key(self): with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets({}) with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets({'one': 'val', 'two': 'val'})
def test_with_non_dictionary(self): non_dict = [None] with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets(non_dict)
def test_with_other_than_one_key(self): with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets({}) with self.assertRaises(clientsecrets.InvalidClientSecretsError): clientsecrets._validate_clientsecrets({"one": "val", "two": "val"})