%PDF- %PDF-
Direktori : /lib/python3/dist-packages/lazr/restfulclient/tests/ |
Current File : //lib/python3/dist-packages/lazr/restfulclient/tests/test_oauth.py |
# Copyright 2009-2018 Canonical Ltd. # This file is part of lazr.restfulclient. # # lazr.restfulclient is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License # as published by the Free Software Foundation, version 3 of the # License. # # lazr.restfulclient is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with lazr.restfulclient. If not, see <http://www.gnu.org/licenses/>. """Tests for the OAuth-aware classes.""" __metaclass__ = type import os import os.path import stat import unittest from fixtures import ( MockPatch, TempDir, ) from testtools import TestCase from lazr.restfulclient.authorize.oauth import ( AccessToken, Consumer, OAuthAuthorizer, SystemWideConsumer, ) class TestConsumer(TestCase): def test_data_fields(self): consumer = Consumer("key", "secret", "application") self.assertEqual(consumer.key, "key") self.assertEqual(consumer.secret, "secret") self.assertEqual(consumer.application_name, "application") def test_default_application_name(self): # Application name defaults to None consumer = Consumer("key", "secret") self.assertEqual(consumer.application_name, None) class TestAccessToken(TestCase): def test_data_fields(self): access_token = AccessToken("key", "secret", "context") self.assertEqual(access_token.key, "key") self.assertEqual(access_token.secret, "secret") self.assertEqual(access_token.context, "context") def test_default_context(self): # Context defaults to None. access_token = AccessToken("key", "secret") self.assertIsNone(access_token.context) def test___str__(self): access_token = AccessToken("lock&key", "secret=password") self.assertEqual( "oauth_token_secret=secret%3Dpassword&oauth_token=lock%26key", str(access_token)) def test_from_string(self): access_token = AccessToken.from_string( "oauth_token_secret=secret%3Dpassword&oauth_token=lock%26key") self.assertEqual(access_token.key, "lock&key") self.assertEqual(access_token.secret, "secret=password") class TestSystemWideConsumer(TestCase): def test_useful_distro_name(self): # If distro.name returns a useful string, as it does on Ubuntu, # we'll use the first string for the system type. self.useFixture(MockPatch('distro.name', return_value='Fooix')) self.useFixture(MockPatch('platform.system', return_value='FooOS')) self.useFixture(MockPatch('socket.gethostname', return_value='foo')) consumer = SystemWideConsumer("app name") self.assertEqual( consumer.key, 'System-wide: Fooix (foo)') def test_empty_distro_name(self): # If distro.name returns an empty string, as it does on Windows and # Mac OS X, we fall back to the result of platform.system(). self.useFixture(MockPatch('distro.name', return_value='')) self.useFixture(MockPatch('platform.system', return_value='BarOS')) self.useFixture(MockPatch('socket.gethostname', return_value='bar')) consumer = SystemWideConsumer("app name") self.assertEqual( consumer.key, 'System-wide: BarOS (bar)') def test_broken_distro_name(self): # If distro.name raises an exception, we fall back to the result of # platform.system(). self.useFixture( MockPatch('distro.name', side_effect=Exception('Oh noes!'))) self.useFixture(MockPatch('platform.system', return_value='BazOS')) self.useFixture(MockPatch('socket.gethostname', return_value='baz')) consumer = SystemWideConsumer("app name") self.assertEqual( consumer.key, 'System-wide: BazOS (baz)') class TestOAuthAuthorizer(TestCase): """Test for the OAuth Authorizer.""" def test_save_to_and_load_from__path(self): # Credentials can be saved to and loaded from a file using # save_to_path() and load_from_path(). temp_dir = self.useFixture(TempDir()).path credentials_path = os.path.join(temp_dir, 'credentials') credentials = OAuthAuthorizer( 'consumer.key', consumer_secret='consumer.secret', access_token=AccessToken('access.key', 'access.secret')) credentials.save_to_path(credentials_path) self.assertTrue(os.path.exists(credentials_path)) # Make sure the file is readable and writable by the user, but # not by anyone else. self.assertEqual(stat.S_IMODE(os.stat(credentials_path).st_mode), stat.S_IREAD | stat.S_IWRITE) loaded_credentials = OAuthAuthorizer.load_from_path(credentials_path) self.assertEqual(loaded_credentials.consumer.key, 'consumer.key') self.assertEqual( loaded_credentials.consumer.secret, 'consumer.secret') self.assertEqual( loaded_credentials.access_token.key, 'access.key') self.assertEqual( loaded_credentials.access_token.secret, 'access.secret') def test_suite(): return unittest.TestLoader().loadTestsFromName(__name__)