diff --git a/tests/test_pagure_lib_login.py b/tests/test_pagure_lib_login.py new file mode 100644 index 0000000..94c7f6e --- /dev/null +++ b/tests/test_pagure_lib_login.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- + +""" + (c) 2016 - Copyright Red Hat Inc + + Authors: + Pierre-Yves Chibon + +""" + +__requires__ = ['SQLAlchemy >= 0.8'] +import pkg_resources + +import unittest +import shutil +import sys +import os + +from mock import patch + +sys.path.insert(0, os.path.join(os.path.dirname( + os.path.abspath(__file__)), '..')) + +import pagure.lib +from pagure.exceptions import PagureException +import pagure.lib.login +import hashlib +from pagure import APP +import tests + + +class PagureLibLogintests(tests.Modeltests): + """ Tests for pagure.lib.login """ + + def test_id_generator(self): + ''' Test pagure.lib.login.id_generator. ''' + self.assertEqual( + pagure.lib.login.id_generator(size=3, chars=['a']), + 'aaa' + ) + + def test_get_users_by_group(self): + ''' Test pagure.lib.login.get_users_by_group. ''' + + users = pagure.lib.login.get_users_by_group(self.session, 'foo') + self.assertEqual(users, []) + + def test_get_session_by_visitkey(self): + ''' Test pagure.lib.login.get_session_by_visitkey. ''' + + session = pagure.lib.login.get_session_by_visitkey(self.session, 'foo') + self.assertEqual(session, None) + + def test_generate_hashed_value(self): + ''' Test pagure.lib.login.generate_hashed_value. ''' + password = pagure.lib.login.generate_hashed_value('foo') + self.assertTrue(password.startswith('$2$')) + self.assertEqual(len(password), 63) + + def test_check_password(self): + ''' Test pagure.lib.login.check_password. ''' + + # Version 2 + password = pagure.lib.login.generate_hashed_value('foo') + self.assertTrue( + pagure.lib.login.check_password('foo', password)) + self.assertFalse( + pagure.lib.login.check_password('bar', password)) + + # Version 1 + password = '%s%s' % ('foo', APP.config.get('PASSWORD_SEED', None)) + password = '$1$' + hashlib.sha512(password).hexdigest() + self.assertTrue(pagure.lib.login.check_password('foo', password)) + self.assertFalse(pagure.lib.login.check_password('bar', password)) + + # Invalid password - No version + password = '%s%s' % ('foo', APP.config.get('PASSWORD_SEED', None)) + password = hashlib.sha512(password).hexdigest() + self.assertRaises( + PagureException, + pagure.lib.login.check_password, + 'foo', password + ) + + # Invalid password - Invalid version + password = '$3$' + password + self.assertRaises( + PagureException, + pagure.lib.login.check_password, + 'foo', + password + ) + password = '%s%s' % ('foo', APP.config.get('PASSWORD_SEED', None)) + password = hashlib.sha512(password).hexdigest() + self.assertRaises( + PagureException, + pagure.lib.login.check_password, + 'foo', password + ) + + # Invalid password - Invalid version + password = '$3$' + password + self.assertRaises( + PagureException, + pagure.lib.login.check_password, + 'foo', + password + ) + +if __name__ == '__main__': + SUITE = unittest.TestLoader().loadTestsFromTestCase(PagureLibLogintests) + unittest.TextTestRunner(verbosity=2).run(SUITE) diff --git a/tests/test_progit_lib_login.py b/tests/test_progit_lib_login.py deleted file mode 100644 index 94c7f6e..0000000 --- a/tests/test_progit_lib_login.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- - -""" - (c) 2016 - Copyright Red Hat Inc - - Authors: - Pierre-Yves Chibon - -""" - -__requires__ = ['SQLAlchemy >= 0.8'] -import pkg_resources - -import unittest -import shutil -import sys -import os - -from mock import patch - -sys.path.insert(0, os.path.join(os.path.dirname( - os.path.abspath(__file__)), '..')) - -import pagure.lib -from pagure.exceptions import PagureException -import pagure.lib.login -import hashlib -from pagure import APP -import tests - - -class PagureLibLogintests(tests.Modeltests): - """ Tests for pagure.lib.login """ - - def test_id_generator(self): - ''' Test pagure.lib.login.id_generator. ''' - self.assertEqual( - pagure.lib.login.id_generator(size=3, chars=['a']), - 'aaa' - ) - - def test_get_users_by_group(self): - ''' Test pagure.lib.login.get_users_by_group. ''' - - users = pagure.lib.login.get_users_by_group(self.session, 'foo') - self.assertEqual(users, []) - - def test_get_session_by_visitkey(self): - ''' Test pagure.lib.login.get_session_by_visitkey. ''' - - session = pagure.lib.login.get_session_by_visitkey(self.session, 'foo') - self.assertEqual(session, None) - - def test_generate_hashed_value(self): - ''' Test pagure.lib.login.generate_hashed_value. ''' - password = pagure.lib.login.generate_hashed_value('foo') - self.assertTrue(password.startswith('$2$')) - self.assertEqual(len(password), 63) - - def test_check_password(self): - ''' Test pagure.lib.login.check_password. ''' - - # Version 2 - password = pagure.lib.login.generate_hashed_value('foo') - self.assertTrue( - pagure.lib.login.check_password('foo', password)) - self.assertFalse( - pagure.lib.login.check_password('bar', password)) - - # Version 1 - password = '%s%s' % ('foo', APP.config.get('PASSWORD_SEED', None)) - password = '$1$' + hashlib.sha512(password).hexdigest() - self.assertTrue(pagure.lib.login.check_password('foo', password)) - self.assertFalse(pagure.lib.login.check_password('bar', password)) - - # Invalid password - No version - password = '%s%s' % ('foo', APP.config.get('PASSWORD_SEED', None)) - password = hashlib.sha512(password).hexdigest() - self.assertRaises( - PagureException, - pagure.lib.login.check_password, - 'foo', password - ) - - # Invalid password - Invalid version - password = '$3$' + password - self.assertRaises( - PagureException, - pagure.lib.login.check_password, - 'foo', - password - ) - password = '%s%s' % ('foo', APP.config.get('PASSWORD_SEED', None)) - password = hashlib.sha512(password).hexdigest() - self.assertRaises( - PagureException, - pagure.lib.login.check_password, - 'foo', password - ) - - # Invalid password - Invalid version - password = '$3$' + password - self.assertRaises( - PagureException, - pagure.lib.login.check_password, - 'foo', - password - ) - -if __name__ == '__main__': - SUITE = unittest.TestLoader().loadTestsFromTestCase(PagureLibLogintests) - unittest.TextTestRunner(verbosity=2).run(SUITE)