diff --git a/tests/test_oauth2client_keyring.py b/tests/test_oauth2client_keyring.py new file mode 100644 index 0000000..6fb0b9e --- /dev/null +++ b/tests/test_oauth2client_keyring.py @@ -0,0 +1,94 @@ +# Copyright 2012 Google Inc. +# +# 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. + + +"""Tests for oauth2client.keyring_storage tests. + +Unit tests for oauth2client.keyring_storage. +""" + +__author__ = 'jcgregorio@google.com (Joe Gregorio)' + +import datetime +import keyring +import unittest +import mox + +from oauth2client.client import OAuth2Credentials +from oauth2client.keyring_storage import Storage + + +class OAuth2ClientKeyringTests(unittest.TestCase): + + def test_non_existent_credentials_storage(self): + m = mox.Mox() + m.StubOutWithMock(keyring, 'get_password') + m.StubOutWithMock(keyring, 'set_password') + keyring.get_password('my_unit_test', 'me').AndReturn(None) + m.ReplayAll() + + s = Storage('my_unit_test', 'me') + credentials = s.get() + self.assertEquals(None, credentials) + + m.UnsetStubs() + m.VerifyAll() + + def test_malformed_credentials_in_storage(self): + m = mox.Mox() + m.StubOutWithMock(keyring, 'get_password') + m.StubOutWithMock(keyring, 'set_password') + keyring.get_password('my_unit_test', 'me').AndReturn('{') + m.ReplayAll() + + s = Storage('my_unit_test', 'me') + credentials = s.get() + self.assertEquals(None, credentials) + + m.UnsetStubs() + m.VerifyAll() + + def test_json_credentials_storage(self): + access_token = 'foo' + client_id = 'some_client_id' + client_secret = 'cOuDdkfjxxnv+' + refresh_token = '1/0/a.df219fjls0' + token_expiry = datetime.datetime.utcnow() + token_uri = 'https://www.google.com/accounts/o8/oauth2/token' + user_agent = 'refresh_checker/1.0' + + credentials = OAuth2Credentials( + access_token, client_id, client_secret, + refresh_token, token_expiry, token_uri, + user_agent) + + m = mox.Mox() + m.StubOutWithMock(keyring, 'get_password') + m.StubOutWithMock(keyring, 'set_password') + keyring.get_password('my_unit_test', 'me').AndReturn(None) + keyring.set_password('my_unit_test', 'me', credentials.to_json()) + keyring.get_password('my_unit_test', 'me').AndReturn(credentials.to_json()) + m.ReplayAll() + + s = Storage('my_unit_test', 'me') + self.assertEquals(None, s.get()) + + s.put(credentials) + + restored = s.get() + self.assertEqual('foo', restored.access_token) + self.assertEqual('some_client_id', restored.client_id) + + m.UnsetStubs() + m.VerifyAll()