diff --git a/test_swauth/unit/test_authtypes.py b/test_swauth/unit/test_authtypes.py new file mode 100644 index 0000000..eda1de4 --- /dev/null +++ b/test_swauth/unit/test_authtypes.py @@ -0,0 +1,64 @@ +# 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. +# +# Pablo Llopis 2011 + +import unittest +from contextlib import contextmanager +from swauth import authtypes + + +class TestPlaintext(unittest.TestCase): + + def setUp(self): + self.auth_encoder = authtypes.Plaintext() + + def test_plaintext_encode(self): + enc_key = self.auth_encoder.encode('keystring') + self.assertEquals('plaintext:keystring', enc_key) + + def test_plaintext_valid_match(self): + creds = 'plaintext:keystring' + match = self.auth_encoder.match('keystring', creds) + self.assertEquals(match, True) + + def test_plaintext_invalid_match(self): + creds = 'plaintext:other-keystring' + match = self.auth_encoder.match('keystring', creds) + self.assertEquals(match, False) + + +class TestSha1(unittest.TestCase): + + def setUp(self): + self.auth_encoder = authtypes.Sha1() + self.auth_encoder.salt = 'salt' + + def test_sha1_encode(self): + enc_key = self.auth_encoder.encode('keystring') + self.assertEquals('sha1:salt$d50dc700c296e23ce5b41f7431a0e01f69010f06', + enc_key) + + def test_sha1_valid_match(self): + creds = 'sha1:salt$d50dc700c296e23ce5b41f7431a0e01f69010f06' + match = self.auth_encoder.match('keystring', creds) + self.assertEquals(match, True) + + def test_sha1_invalid_match(self): + creds = 'sha1:salt$deadbabedeadbabedeadbabec0ffeebadc0ffeee' + match = self.auth_encoder.match('keystring', creds) + self.assertEquals(match, False) + + +if __name__ == '__main__': + unittest.main() diff --git a/test_swauth/unit/test_middleware.py b/test_swauth/unit/test_middleware.py index c17dde7..9820631 100644 --- a/test_swauth/unit/test_middleware.py +++ b/test_swauth/unit/test_middleware.py @@ -145,6 +145,29 @@ class TestAuth(unittest.TestCase): 'auth_prefix': 'test'})(app) self.assertEquals(ath.auth_prefix, '/test/') + def test_no_auth_type_init(self): + app = FakeApp() + ath = auth.filter_factory({})(app) + self.assertEquals(ath.auth_type, 'Plaintext') + + def test_valid_auth_type_init(self): + app = FakeApp() + ath = auth.filter_factory({'auth_type': 'sha1'})(app) + self.assertEquals(ath.auth_type, 'Sha1') + ath = auth.filter_factory({'auth_type': 'plaintext'})(app) + self.assertEquals(ath.auth_type, 'Plaintext') + + def test_invalid_auth_type_init(self): + app = FakeApp() + exc = None + try: + auth.filter_factory({'auth_type': 'NONEXISTANT'})(app) + except Exception as err: + exc = err + self.assertEquals(str(exc), + 'Invalid auth_type in config file: %s' % + 'Nonexistant') + def test_default_swift_cluster_init(self): app = FakeApp() self.assertRaises(Exception, auth.filter_factory({