From e7e4d55ce5e3043b693296d9ce29ecaf8fdc80cb Mon Sep 17 00:00:00 2001 From: Emmanuel Raviart Date: Sat, 28 Aug 2004 07:25:23 +0000 Subject: Renamed login_tests.py to profiles_tests.py. Added Server tests (=> discovered bug #265). --- python/tests/login_tests.py | 138 --------------------------------- python/tests/profiles_tests.py | 169 +++++++++++++++++++++++++++++++++++++++++ python/tests/tests.py | 2 +- 3 files changed, 170 insertions(+), 139 deletions(-) delete mode 100644 python/tests/login_tests.py create mode 100755 python/tests/profiles_tests.py (limited to 'python/tests') diff --git a/python/tests/login_tests.py b/python/tests/login_tests.py deleted file mode 100644 index a7ac8cd2..00000000 --- a/python/tests/login_tests.py +++ /dev/null @@ -1,138 +0,0 @@ -#! /usr/bin/env python -# -*- coding: UTF-8 -*- - - -# Python unit tests for Lasso library -# By: Frederic Peters -# Emmanuel Raviart -# -# Copyright (C) 2004 Entr'ouvert -# http://lasso.entrouvert.org -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -import os -import unittest -import sys - -if not '..' in sys.path: - sys.path.insert(0, '..') -if not '../.libs' in sys.path: - sys.path.insert(0, '../.libs') - -import lasso - - -try: - dataDir -except NameError: - dataDir = '../../tests/data' - - -class LoginTestCase(unittest.TestCase): - def test01(self): - """SP login; testing access to authentication request.""" - - lassoServer = lasso.Server( - os.path.join(dataDir, 'sp1-la/metadata.xml'), - None, # os.path.join(dataDir, 'sp1-la/public-key.pem') is no more used - os.path.join(dataDir, 'sp1-la/private-key-raw.pem'), - os.path.join(dataDir, 'sp1-la/certificate.pem'), - lasso.signatureMethodRsaSha1) - lassoServer.add_provider( - os.path.join(dataDir, 'idp1-la/metadata.xml'), - os.path.join(dataDir, 'idp1-la/public-key.pem'), - os.path.join(dataDir, 'idp1-la/certificate.pem')) - login = lasso.Login(lassoServer) - login.init_authn_request(lasso.httpMethodRedirect) - self.failUnlessEqual(login.request_type, lasso.messageTypeAuthnRequest) - login.authn_request - login.authn_request.protocolProfile = lasso.libProtocolProfileBrwsArt - - -class LogoutTestCase(unittest.TestCase): - def test01(self): - """SP logout without session and identity; testing init_request.""" - - lassoServer = lasso.Server( - os.path.join(dataDir, 'sp1-la/metadata.xml'), - None, # os.path.join(dataDir, 'sp1-la/public-key.pem') is no more used - os.path.join(dataDir, 'sp1-la/private-key-raw.pem'), - os.path.join(dataDir, 'sp1-la/certificate.pem'), - lasso.signatureMethodRsaSha1) - lassoServer.add_provider( - os.path.join(dataDir, 'idp1-la/metadata.xml'), - os.path.join(dataDir, 'idp1-la/public-key.pem'), - os.path.join(dataDir, 'idp1-la/certificate.pem')) - logout = lasso.Logout(lassoServer, lasso.providerTypeSp) - try: - logout.init_request() - except lasso.Error, error: - if error.code != -1: - raise - else: - self.fail('logout.init_request without having set identity before should fail') - - def test02(self): - """IDP logout without session and identity; testing logout.get_next_providerID.""" - - lassoServer = lasso.Server( - os.path.join(dataDir, 'idp1-la/metadata.xml'), - None, # os.path.join(dataDir, 'idp1-la/public-key.pem') is no more used - os.path.join(dataDir, 'idp1-la/private-key-raw.pem'), - os.path.join(dataDir, 'idp1-la/certificate.pem'), - lasso.signatureMethodRsaSha1) - lassoServer.add_provider( - os.path.join(dataDir, 'sp1-la/metadata.xml'), - os.path.join(dataDir, 'sp1-la/public-key.pem'), - os.path.join(dataDir, 'sp1-la/certificate.pem')) - logout = lasso.Logout(lassoServer, lasso.providerTypeIdp) - self.failIf(logout.get_next_providerID()) - - -class DefederationTestCase(unittest.TestCase): - def test01(self): - """IDP initiated defederation; testing process_notification_msg with non Liberty query.""" - - lassoServer = lasso.Server( - os.path.join(dataDir, 'idp1-la/metadata.xml'), - None, # os.path.join(dataDir, 'idp1-la/public-key.pem') is no more used - os.path.join(dataDir, 'idp1-la/private-key-raw.pem'), - os.path.join(dataDir, 'idp1-la/certificate.pem'), - lasso.signatureMethodRsaSha1) - lassoServer.add_provider( - os.path.join(dataDir, 'sp1-la/metadata.xml'), - os.path.join(dataDir, 'sp1-la/public-key.pem'), - os.path.join(dataDir, 'sp1-la/certificate.pem')) - defederation = lasso.Defederation(lassoServer, lasso.providerTypeIdp) - # The process_notification_msg should failt but not abort. - try: - defederation.process_notification_msg('nonLibertyQuery=1', lasso.httpMethodRedirect) - except lasso.Error, error: - pass - else: - self.fail('Defederation process_notification_msg should have failed.') - - -suite1 = unittest.makeSuite(LoginTestCase, 'test') -suite2 = unittest.makeSuite(LogoutTestCase, 'test') -suite3 = unittest.makeSuite(DefederationTestCase, 'test') - -allTests = unittest.TestSuite((suite1, suite2, suite3)) - -if __name__ == '__main__': - sys.exit(not unittest.TextTestRunner(verbosity = 2).run(allTests).wasSuccessful()) - diff --git a/python/tests/profiles_tests.py b/python/tests/profiles_tests.py new file mode 100755 index 00000000..4e367ad7 --- /dev/null +++ b/python/tests/profiles_tests.py @@ -0,0 +1,169 @@ +#! /usr/bin/env python +# -*- coding: UTF-8 -*- + + +# Python unit tests for Lasso library +# By: Frederic Peters +# Emmanuel Raviart +# +# Copyright (C) 2004 Entr'ouvert +# http://lasso.entrouvert.org +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +import os +import unittest +import sys + +if not '..' in sys.path: + sys.path.insert(0, '..') +if not '../.libs' in sys.path: + sys.path.insert(0, '../.libs') + +import lasso + + +try: + dataDir +except NameError: + dataDir = '../../tests/data' + + +class ServerTestCase(unittest.TestCase): + def test01(self): + """Server construction, dump & new_from_dump.""" + + lassoServer = lasso.Server( + os.path.join(dataDir, 'sp1-la/metadata.xml'), + None, # os.path.join(dataDir, 'sp1-la/public-key.pem') is no more used + os.path.join(dataDir, 'sp1-la/private-key-raw.pem'), + os.path.join(dataDir, 'sp1-la/certificate.pem'), + lasso.signatureMethodRsaSha1) + lassoServer.add_provider( + os.path.join(dataDir, 'idp1-la/metadata.xml'), + os.path.join(dataDir, 'idp1-la/public-key.pem'), + os.path.join(dataDir, 'idp1-la/certificate.pem')) + dump = lassoServer.dump() + lassoServer2 = lassoServer.new_from_dump(dump) + dump2 = lassoServer2.dump() + self.failUnlessEqual(dump, dump2) + + def test02(self): + """Server construction without argument, dump & new_from_dump.""" + + lassoServer = lasso.Server() + lassoServer.add_provider(os.path.join(dataDir, 'idp1-la/metadata.xml')) + dump = lassoServer.dump() + lassoServer2 = lassoServer.new_from_dump(dump) + dump2 = lassoServer2.dump() + self.failUnlessEqual(dump, dump2) + + +class LoginTestCase(unittest.TestCase): + def test01(self): + """SP login; testing access to authentication request.""" + + lassoServer = lasso.Server( + os.path.join(dataDir, 'sp1-la/metadata.xml'), + None, # os.path.join(dataDir, 'sp1-la/public-key.pem') is no more used + os.path.join(dataDir, 'sp1-la/private-key-raw.pem'), + os.path.join(dataDir, 'sp1-la/certificate.pem'), + lasso.signatureMethodRsaSha1) + lassoServer.add_provider( + os.path.join(dataDir, 'idp1-la/metadata.xml'), + os.path.join(dataDir, 'idp1-la/public-key.pem'), + os.path.join(dataDir, 'idp1-la/certificate.pem')) + login = lasso.Login(lassoServer) + login.init_authn_request(lasso.httpMethodRedirect) + self.failUnlessEqual(login.request_type, lasso.messageTypeAuthnRequest) + login.authn_request + login.authn_request.protocolProfile = lasso.libProtocolProfileBrwsArt + + +class LogoutTestCase(unittest.TestCase): + def test01(self): + """SP logout without session and identity; testing init_request.""" + + lassoServer = lasso.Server( + os.path.join(dataDir, 'sp1-la/metadata.xml'), + None, # os.path.join(dataDir, 'sp1-la/public-key.pem') is no more used + os.path.join(dataDir, 'sp1-la/private-key-raw.pem'), + os.path.join(dataDir, 'sp1-la/certificate.pem'), + lasso.signatureMethodRsaSha1) + lassoServer.add_provider( + os.path.join(dataDir, 'idp1-la/metadata.xml'), + os.path.join(dataDir, 'idp1-la/public-key.pem'), + os.path.join(dataDir, 'idp1-la/certificate.pem')) + logout = lasso.Logout(lassoServer, lasso.providerTypeSp) + try: + logout.init_request() + except lasso.Error, error: + if error.code != -1: + raise + else: + self.fail('logout.init_request without having set identity before should fail') + + def test02(self): + """IDP logout without session and identity; testing logout.get_next_providerID.""" + + lassoServer = lasso.Server( + os.path.join(dataDir, 'idp1-la/metadata.xml'), + None, # os.path.join(dataDir, 'idp1-la/public-key.pem') is no more used + os.path.join(dataDir, 'idp1-la/private-key-raw.pem'), + os.path.join(dataDir, 'idp1-la/certificate.pem'), + lasso.signatureMethodRsaSha1) + lassoServer.add_provider( + os.path.join(dataDir, 'sp1-la/metadata.xml'), + os.path.join(dataDir, 'sp1-la/public-key.pem'), + os.path.join(dataDir, 'sp1-la/certificate.pem')) + logout = lasso.Logout(lassoServer, lasso.providerTypeIdp) + self.failIf(logout.get_next_providerID()) + + +class DefederationTestCase(unittest.TestCase): + def test01(self): + """IDP initiated defederation; testing process_notification_msg with non Liberty query.""" + + lassoServer = lasso.Server( + os.path.join(dataDir, 'idp1-la/metadata.xml'), + None, # os.path.join(dataDir, 'idp1-la/public-key.pem') is no more used + os.path.join(dataDir, 'idp1-la/private-key-raw.pem'), + os.path.join(dataDir, 'idp1-la/certificate.pem'), + lasso.signatureMethodRsaSha1) + lassoServer.add_provider( + os.path.join(dataDir, 'sp1-la/metadata.xml'), + os.path.join(dataDir, 'sp1-la/public-key.pem'), + os.path.join(dataDir, 'sp1-la/certificate.pem')) + defederation = lasso.Defederation(lassoServer, lasso.providerTypeIdp) + # The process_notification_msg should failt but not abort. + try: + defederation.process_notification_msg('nonLibertyQuery=1', lasso.httpMethodRedirect) + except lasso.Error, error: + pass + else: + self.fail('Defederation process_notification_msg should have failed.') + + +suite1 = unittest.makeSuite(ServerTestCase, 'test') +suite2 = unittest.makeSuite(LoginTestCase, 'test') +suite3 = unittest.makeSuite(LogoutTestCase, 'test') +suite4 = unittest.makeSuite(DefederationTestCase, 'test') + +allTests = unittest.TestSuite((suite1, suite2, suite3, suite4)) + +if __name__ == '__main__': + sys.exit(not unittest.TextTestRunner(verbosity = 2).run(allTests).wasSuccessful()) + diff --git a/python/tests/tests.py b/python/tests/tests.py index a1913e01..de3cf808 100755 --- a/python/tests/tests.py +++ b/python/tests/tests.py @@ -41,7 +41,7 @@ if not '../.libs' in sys.path: testSuites = ( - 'login_tests', + 'profiles_tests', 'errorchecking_tests', ) -- cgit