| # Copyright 2016 Google Inc. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """Unit tests for oauth2client.contrib.dictionary_storage""" |
| |
| import unittest2 |
| |
| import oauth2client |
| from oauth2client import client |
| from oauth2client.contrib import dictionary_storage |
| |
| |
| def _generate_credentials(scopes=None): |
| return client.OAuth2Credentials( |
| 'access_tokenz', |
| 'client_idz', |
| 'client_secretz', |
| 'refresh_tokenz', |
| '3600', |
| oauth2client.GOOGLE_TOKEN_URI, |
| 'Test', |
| id_token={ |
| 'sub': '123', |
| 'email': 'user@example.com' |
| }, |
| scopes=scopes) |
| |
| |
| class DictionaryStorageTests(unittest2.TestCase): |
| |
| def test_constructor_defaults(self): |
| dictionary = {} |
| key = 'test-key' |
| storage = dictionary_storage.DictionaryStorage(dictionary, key) |
| |
| self.assertEqual(dictionary, storage._dictionary) |
| self.assertEqual(key, storage._key) |
| self.assertIsNone(storage._lock) |
| |
| def test_constructor_explicit(self): |
| dictionary = {} |
| key = 'test-key' |
| storage = dictionary_storage.DictionaryStorage(dictionary, key) |
| |
| lock = object() |
| storage = dictionary_storage.DictionaryStorage( |
| dictionary, key, lock=lock) |
| self.assertEqual(storage._lock, lock) |
| |
| def test_get(self): |
| credentials = _generate_credentials() |
| dictionary = {} |
| key = 'credentials' |
| storage = dictionary_storage.DictionaryStorage(dictionary, key) |
| |
| self.assertIsNone(storage.get()) |
| |
| dictionary[key] = credentials.to_json() |
| returned = storage.get() |
| |
| self.assertIsNotNone(returned) |
| self.assertEqual(returned.access_token, credentials.access_token) |
| self.assertEqual(returned.id_token, credentials.id_token) |
| self.assertEqual(returned.refresh_token, credentials.refresh_token) |
| self.assertEqual(returned.client_id, credentials.client_id) |
| |
| def test_put(self): |
| credentials = _generate_credentials() |
| dictionary = {} |
| key = 'credentials' |
| storage = dictionary_storage.DictionaryStorage(dictionary, key) |
| |
| storage.put(credentials) |
| returned = storage.get() |
| |
| self.assertIn(key, dictionary) |
| self.assertIsNotNone(returned) |
| self.assertEqual(returned.access_token, credentials.access_token) |
| self.assertEqual(returned.id_token, credentials.id_token) |
| self.assertEqual(returned.refresh_token, credentials.refresh_token) |
| self.assertEqual(returned.client_id, credentials.client_id) |
| |
| def test_delete(self): |
| credentials = _generate_credentials() |
| dictionary = {} |
| key = 'credentials' |
| storage = dictionary_storage.DictionaryStorage(dictionary, key) |
| |
| storage.put(credentials) |
| |
| self.assertIn(key, dictionary) |
| |
| storage.delete() |
| |
| self.assertNotIn(key, dictionary) |
| self.assertIsNone(storage.get()) |