diff --git a/README.rst b/README.rst index 265f031715fd0d736fb853e9f7141087071dac87..31175e7e411bde06edbda70b6642921160ef4e33 100644 --- a/README.rst +++ b/README.rst @@ -163,7 +163,7 @@ On a Debian/Ubuntu system this can be accomplished with the following command (including dependencies required to run tests):: $ sudo apt-get install swig libpam0g-dev apache2-dev \ - python-dev python-setuptools python-nose python-m2crypto + python3-dev python3-setuptools python3-nose python3-m2crypto Then it should be just a matter of running:: diff --git a/configure.ac b/configure.ac index 764afdcc8237bdd9e7afb4282eb5b318beb7eb62..d52a0a03c345a9b278233222ee5af509789c5cc6 100644 --- a/configure.ac +++ b/configure.ac @@ -92,8 +92,8 @@ AM_CONDITIONAL(ENABLE_PAM_SSO, [ test "$build_pam_sso" != "no" ]) dnl Python-dev (actually only used for $PYTHON) AX_PYTHON_DEVEL -dnl nosetests -AC_PATH_PROG([NOSETESTS], [nosetests${PYTHON_VERSION}]) +dnl pytest +AC_PATH_PROG([PYTEST], [pytest]) dnl GoogleTest (use the embedded version) GTEST_LIBS="\$(top_builddir)/lib/gtest/libgtest.la" diff --git a/debian/control b/debian/control index 89e0c29089f04d5f022cfe9fc064ea77ec0ad3c2..a4ec48818ca86e969743ddb3bcb035cb24170ab4 100644 --- a/debian/control +++ b/debian/control @@ -5,7 +5,7 @@ Maintainer: Autistici/Inventati <debian@autistici.org> Build-Depends: debhelper (>= 10), apache2-dev | apache2-prefork-dev | apache2-threaded-dev, apache2, autoconf, automake, libtool, python3-dev, dh-python, python3-all, libpam-dev, libssl-dev, python3-setuptools, pkg-config, libz-dev, - python3-requests, python3-nose + python3-requests, python3-pytest Standards-Version: 3.7.2 Package: ai-sso diff --git a/src/mod_sso/test/httpd_integration_test.py b/src/mod_sso/test/httpd_integration_test.py index 996b667e0c9e3ca5e3a7b7ed01556653208c3f8d..fa40c2957e1fad2acd4df129f050234c532531a3 100755 --- a/src/mod_sso/test/httpd_integration_test.py +++ b/src/mod_sso/test/httpd_integration_test.py @@ -130,7 +130,7 @@ class HttpdKeyLoadingTest(unittest.TestCase): ts = signer.sign(t) status, body, location = _query("/index.html", cookie="SSO_test=%s" % ts) - self.assertEquals(200, status) + self.assertEqual(200, status) finally: _stop_httpd(httpd) @@ -246,7 +246,7 @@ class HttpdIntegrationTestBase(unittest.TestCase): cookie=check.get("cookie")) if use_nonce and location: location = drop_nonce_rx.sub('', location) - self.assertEquals( + self.assertEqual( check["status"], status, "test: '%s'\nunexpected HTTP status for %s (got %d, exp %d)" % ( name, check["url"], status, check["status"])) @@ -256,7 +256,7 @@ class HttpdIntegrationTestBase(unittest.TestCase): "test: '%s'\nbody mismatch for %s (exp '%s')" % ( name, check["url"], check["body"])) if "location" in check: - self.assertEquals( + self.assertEqual( check["location"], location, "test: '%s'\nunexpected redirect for %s (got %s, exp %s)" % ( name, check["url"], location, check["location"])) @@ -276,7 +276,7 @@ class HttpdIntegrationTestBase(unittest.TestCase): f'http://127.0.0.1:{APACHE_PORT}{url}', headers={'Host': host_header}, allow_redirects=False) - self.assertEquals(302, resp.status_code) + self.assertEqual(302, resp.status_code) location = resp.headers["Location"] location_u = urlsplit(location) location_args = dict(parse_qsl(location_u.query)) @@ -292,10 +292,10 @@ class HttpdIntegrationTestBase(unittest.TestCase): headers={'Host': host_header}, cookies={'_sso_local_session': session_cookie}, allow_redirects=False) - self.assertEquals(302, resp.status_code) + self.assertEqual(302, resp.status_code) self.assertTrue('SSO_test' in resp.cookies, 'missing cookie: %s\n%s' % (resp.cookies, resp.headers)) - self.assertEquals(tkt, resp.cookies['SSO_test']) + self.assertEqual(tkt, resp.cookies['SSO_test']) # Make the original request again. resp = sess.get( @@ -303,7 +303,7 @@ class HttpdIntegrationTestBase(unittest.TestCase): headers={'Host': host_header}, cookies={'SSO_test': tkt}, allow_redirects=False) - self.assertEquals(200, resp.status_code) + self.assertEqual(200, resp.status_code) class HttpdIntegrationTest(HttpdIntegrationTestBase): @@ -321,14 +321,14 @@ class HttpdIntegrationTest(HttpdIntegrationTestBase): for i in range(n): cookie = 'SSO_test=%s' % self._ticket() status, body, location = _query("/index.html", cookie=cookie) - self.assertEquals(200, status) + self.assertEqual(200, status) def test_cgi_environment(self): # test that environment variables are correctly set tkt = self._ticket(nonce='NONCE1') status, body, location = _query("/cgi/env.cgi", cookie=mkcookie(tkt)) - self.assertEquals(200, status) + self.assertEqual(200, status) self.assertTrue(body) self.assertTrue("REMOTE_USER=testuser" in body) self.assertTrue("SSO_USER=testuser" in body) @@ -344,12 +344,12 @@ class HttpdIntegrationTest(HttpdIntegrationTestBase): resp = requests.get( f'http://127.0.0.1:{APACHE_PORT}/sso_login?{query_args}', allow_redirects=False) - self.assertEquals(302, resp.status_code) + self.assertEqual(302, resp.status_code) set_cookie_hdr = resp.headers["Set-Cookie"] self.assertTrue(set_cookie_hdr) self.assertTrue('SSO_test' in resp.cookies, 'missing cookie: %s' % resp.cookies) - self.assertEquals(tkt, resp.cookies['SSO_test']) + self.assertEqual(tkt, resp.cookies['SSO_test']) def test_sso_logout(self): # test the /sso_logout endpoint @@ -379,7 +379,7 @@ class HttpdIntegrationTestWithNonces(HttpdIntegrationTestBase): tkt = self._ticket(nonce='NONCE1') status, body, location = _query("/cgi/env.cgi", cookie=mkcookie(tkt)) - self.assertEquals(200, status) + self.assertEqual(200, status) self.assertTrue(body) self.assertTrue("REMOTE_USER=testuser" in body) self.assertTrue("SSO_USER=testuser" in body) diff --git a/src/python/Makefile.am b/src/python/Makefile.am index 836b840cd8336c3b4092be0fbc8a4076401260b5..a3f74047ec314b27fe6cc95a97b6d8297603d71e 100644 --- a/src/python/Makefile.am +++ b/src/python/Makefile.am @@ -15,7 +15,7 @@ check-local: env \ LD_LIBRARY_PATH=$(top_builddir)/src/sso/.libs \ DYLD_LIBRARY_PATH=$(top_builddir)/src/sso/.libs \ - $(NOSETESTS) -v + $(PYTEST) -v clean-local: -rm -f $(wildcard sso/_pysso*.so) diff --git a/src/python/test/sso_test.py b/src/python/test/sso_test.py index 1a527c32f8e4ae3e70a4952afe834779ed2f1201..3998a2f49b59fd24bf01b749ece7b21b6ef0d78a 100644 --- a/src/python/test/sso_test.py +++ b/src/python/test/sso_test.py @@ -17,8 +17,8 @@ class CommonTest(unittest.TestCase): def test_generate_keys(self): pub, sec = sso.generate_keys() - self.assertEquals(32, len(pub)) - self.assertEquals(64, len(sec)) + self.assertEqual(32, len(pub)) + self.assertEqual(64, len(sec)) #def test_read_key_from_file(self): # pub, sec = sso.generate_keys() @@ -26,7 +26,7 @@ class CommonTest(unittest.TestCase): # with open(pkey_file, 'w') as fd: # fd.write(sec) # sec2 = sso.read_key_from_file(pkey_file) - # self.assertEquals(sec, sec2) + # self.assertEqual(sec, sec2) if __name__ == '__main__': diff --git a/src/python/test/ticket_test.py b/src/python/test/ticket_test.py index 6c81985324b9f1276070374fad538862afedcc12..e20b9d8b2491880c7302c8ca90443f5fc783e9f2 100644 --- a/src/python/test/ticket_test.py +++ b/src/python/test/ticket_test.py @@ -8,9 +8,9 @@ class TicketTest(unittest.TestCase): tkt = sso.Ticket('user', 'service', 'domain') self.assertTrue(tkt is not None) self.assertFalse(tkt.empty()) - self.assertEquals('user', tkt.user()) - self.assertEquals('service', tkt.service()) - self.assertEquals('domain', tkt.domain()) + self.assertEqual('user', tkt.user()) + self.assertEqual('service', tkt.service()) + self.assertEqual('domain', tkt.domain()) expires = tkt.expires() self.assertTrue(isinstance(expires, int)) self.assertTrue(expires > 0) @@ -25,12 +25,12 @@ class TicketTest(unittest.TestCase): self.assertFalse(tkt.empty()) groups2 = tkt.groups() self.assertTrue(isinstance(groups2, set)) - self.assertEquals(groups, groups2) + self.assertEqual(groups, groups2) def test_create_ticket_with_nonce(self): tkt = sso.Ticket('user', 'service', 'domain', nonce='nonce') self.assertFalse(tkt.empty()) - self.assertEquals('nonce', tkt.nonce()) + self.assertEqual('nonce', tkt.nonce()) if __name__ == '__main__': diff --git a/src/python/test/verifier_test.py b/src/python/test/verifier_test.py index 0309cc8f94642d8577539e8f6ad9b017072c5c55..28c9bcc2fca9896e47f5557e279729a09bd2536b 100644 --- a/src/python/test/verifier_test.py +++ b/src/python/test/verifier_test.py @@ -23,7 +23,7 @@ class VerifierTest(unittest.TestCase): signed = self._sign_token(tkt) v = sso.Verifier(self.public, 'service/', 'domain') tkt2 = v.verify(signed) - self.assertEquals(tkt, tkt2) + self.assertEqual(tkt, tkt2) def test_verify_ok(self): tkt = sso.Ticket('user', 'service/', 'domain', groups=set(['group1'])) @@ -33,15 +33,15 @@ class VerifierTest(unittest.TestCase): v = sso.Verifier(self.public, 'service/', 'domain', self.groups) tkt2 = v.verify(signed) - self.assertEquals(tkt, tkt2) + self.assertEqual(tkt, tkt2) def test_verify_ok_with_nonce(self): tkt = sso.Ticket('user', 'service/', 'domain', nonce='nonce') signed = self._sign_token(tkt) v = sso.Verifier(self.public, 'service/', 'domain') tkt2 = v.verify(signed, 'nonce') - self.assertEquals(tkt, tkt2) - self.assertEquals('user', tkt2.user()) + self.assertEqual(tkt, tkt2) + self.assertEqual('user', tkt2.user()) def test_verify_fail_with_bad_nonce(self): tkt = sso.Ticket('user', 'service/', 'domain', nonce='nonce') diff --git a/src/sso_server/Makefile.am b/src/sso_server/Makefile.am index eddd04fb7cd5b0ee48fadaa2d88e1982eb891fbd..bf15a9a7b3c7d75bdbac058acb7dc4194a37523f 100644 --- a/src/sso_server/Makefile.am +++ b/src/sso_server/Makefile.am @@ -8,7 +8,7 @@ check-local: LD_LIBRARY_PATH=$(top_builddir)/src/sso/.libs \ DYLD_LIBRARY_PATH=$(top_builddir)/src/sso/.libs \ PYTHONPATH=$(top_builddir)/src/python \ - nosetests -v + pytest -v clean-local: $(PYTHON) setup.py clean --all diff --git a/src/sso_server/sso_server/test/__init__.py b/src/sso_server/sso_server/test/__init__.py index 4fb2a6bfd30183906ea850f4bda7cdc6da334761..982854ad0393bf28ba4eb7bbeab2c5510e821993 100644 --- a/src/sso_server/sso_server/test/__init__.py +++ b/src/sso_server/sso_server/test/__init__.py @@ -48,11 +48,11 @@ class SSOServerTestBase(unittest.TestCase): def _login(self, c, location, query_args): query_args['d'] = query_args['d'][0].replace('http://', 'https://') response = c.get(location, query_string=query_args) - self.assertEquals(200, response.status_code, response.data) + self.assertEqual(200, response.status_code, response.data) values = parse_form(response) self.assertTrue('_csrf' in values, values) values['username'] = 'admin' values['password'] = 'admin' response = c.post('/', data=values) - self.assertEquals(302, response.status_code, response.data) + self.assertEqual(302, response.status_code, response.data) return response diff --git a/src/sso_server/sso_server/test/main_test.py b/src/sso_server/sso_server/test/main_test.py index 94d666f586fcf9dfff3dde7e80600142837b2912..b88c1748bcfd458d6592075939c3127d345d54ef 100644 --- a/src/sso_server/sso_server/test/main_test.py +++ b/src/sso_server/sso_server/test/main_test.py @@ -44,14 +44,14 @@ class SSOServerCommandLineTest(mox.MoxTestBase): def test_prints_usage(self): status, out = self.run_server(['--help']) - self.assertEquals(0, status) + self.assertEqual(0, status) self.assert_("Usage" in out) def test_run_fails_setup(self): application.create_app('test.conf').AndRaise(Exception('error')) self.mox.ReplayAll() status, out = self.run_server(['--config=test.conf']) - self.assertEquals(1, status) + self.assertEqual(1, status) def test_run_with_options(self): app = 'app' @@ -61,7 +61,7 @@ class SSOServerCommandLineTest(mox.MoxTestBase): self.mox.ReplayAll() status, out = self.run_server(['--config=test.conf', '--port=10000']) - self.assertEquals(0, status) + self.assertEqual(0, status) def test_run_server_fcgi(self): self.mox.StubOutWithMock(main, 'autodetect_fastcgi') diff --git a/src/sso_server/sso_server/test/saml_test.py b/src/sso_server/sso_server/test/saml_test.py index 79f03dfb41222800314ffd177fe97cb3c8e8cbea..2997da08e661f79603c86b7566e3602a9bec7fb4 100644 --- a/src/sso_server/sso_server/test/saml_test.py +++ b/src/sso_server/sso_server/test/saml_test.py @@ -50,7 +50,7 @@ class SAMLTest(SSOServerTestBase): # blueprint is properly plugged into the main app. with self.app.test_client() as c: response = c.get('/saml/metadata/xml/') - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) def _make_saml_request(self): saml_request = "<samlp:AuthnRequest AssertionConsumerServiceURL='https://saml.example.com/users/auth/saml/callback' Destination='https://localhost/saml/login' ID='_14443901-284e-4780-ae25-686f6fd781aa' IssueInstant='%(stamp)s' Version='2.0' xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion' xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol'><saml:Issuer>https://saml.example.com</saml:Issuer><samlp:NameIDPolicy AllowCreate='true' Format='urn:oasis:names:tc:SAML:2.0:nameid-format:transient'/></samlp:AuthnRequest>" % { @@ -63,14 +63,14 @@ class SAMLTest(SSOServerTestBase): def test_saml_login_empty_request(self): with self.app.test_client() as c: response = c.get('/saml/login') - self.assertEquals(400, response.status_code) + self.assertEqual(400, response.status_code) def test_saml_login(self): with self.app.test_client() as c: def _follow(path, data): response = c.get(path, query_string=data) - self.assertEquals(302, response.status_code, + self.assertEqual(302, response.status_code, 'got %d for %s, expecting 302' % ( response.status_code, path)) path, data = parse_args(response.location) @@ -81,15 +81,15 @@ class SAMLTest(SSOServerTestBase): # Follow the redirect to /login/process. path, data = _follow(path, data) # Submit the login form. - self.assertEquals('/', path) + self.assertEqual('/', path) response = self._login(c, path, data) # Now request the /sso_login endpoint. path, data = parse_args(response.location) - self.assertEquals('/saml/sso_login', path) + self.assertEqual('/saml/sso_login', path) # Follow to the sso_login endpoint path, data = _follow(path, data) - self.assertEquals('/saml/login/process', path) + self.assertEqual('/saml/login/process', path) # Back to the SAML app at last # Finally we're getting some xml thingy or what response = c.get(path, query_string=data) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) diff --git a/src/sso_server/sso_server/test/sso_server_test.py b/src/sso_server/sso_server/test/sso_server_test.py index 5fd44ca3e7ee90aab2e70d6db4371cc6e16fe530..481ece1eeb7eba64c74e80ae423e79a47e12ef20 100644 --- a/src/sso_server/sso_server/test/sso_server_test.py +++ b/src/sso_server/sso_server/test/sso_server_test.py @@ -51,8 +51,8 @@ class SSOServerTest(SSOServerTestBase): def _check_ticket(self, query_string, expected_d, expected_s, nonce=None): # Check the query string arguments. args = urldecode(query_string) - self.assertEquals(expected_d, args.get('d')) - self.assertEquals(expected_s, args.get('s')) + self.assertEqual(expected_d, args.get('d')) + self.assertEqual(expected_s, args.get('s')) self.assertTrue(args.get('t')) # Check that we got a valid ticket for the remote service. @@ -71,14 +71,14 @@ class SSOServerTest(SSOServerTestBase): response = c.get('/', query_string=parms) # Check that we got a 302 redirect - self.assertEquals(302, response.status_code) + self.assertEqual(302, response.status_code) location = response.headers['Location'] path, qs = location.split('?', 1) - self.assertEquals('https://someservice.org/sso_login', path) + self.assertEqual('https://someservice.org/sso_login', path) ticket = self._check_ticket( qs, 'https://someservice.org/dest', 'someservice.org/') - self.assertEquals('user', ticket.user()) + self.assertEqual('user', ticket.user()) # Check that we are tracking the active services in the session. active_services = flask.session.get('active_services') @@ -97,15 +97,15 @@ class SSOServerTest(SSOServerTestBase): response = c.get('/', query_string=parms) # Check that we got a 302 redirect - self.assertEquals(302, response.status_code) + self.assertEqual(302, response.status_code) location = response.headers['Location'] path, qs = location.split('?', 1) - self.assertEquals('https://someservice.org/sso_login', path) + self.assertEqual('https://someservice.org/sso_login', path) # Check the resulting ticket. ticket = self._check_ticket( qs, 'https://someservice.org/dest', 'someservice.org/') - self.assertEquals('user', ticket.user()) + self.assertEqual('user', ticket.user()) self.assertTrue('group1' in ticket.groups()) def test_login_fail_with_wrong_cookie(self): @@ -114,7 +114,7 @@ class SSOServerTest(SSOServerTestBase): parms = {'s': 'someservice.org/', 'd': 'https://someservice.org/dest'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) def test_login_fail_with_cookie_and_nonmatching_groups(self): # Test that non-matching groups will cause auth to fail even @@ -126,7 +126,7 @@ class SSOServerTest(SSOServerTestBase): response = c.get('/', query_string=parms) # Check that we got a 403 reply - self.assertEquals(403, response.status_code) + self.assertEqual(403, response.status_code) def test_login_show_form(self): # Test that the login form is shown properly, with CSRF protection. @@ -134,7 +134,7 @@ class SSOServerTest(SSOServerTestBase): parms = {'s': 'someservice.org/', 'd': 'https://someservice.org/'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) self.assertTrue('<form' in response.data) self.assertTrue('name="username"' in response.data) self.assertTrue('name="password"' in response.data) @@ -148,7 +148,7 @@ class SSOServerTest(SSOServerTestBase): # Check that the CSRF tokens match. csrf_html = self._extract_csrf(response.data) csrf_session = flask.session['_csrf'] - self.assertEquals(csrf_html, csrf_session) + self.assertEqual(csrf_html, csrf_session) def test_login_show_form_with_groups(self): # Test that group information is correctly present in the login form. @@ -157,7 +157,7 @@ class SSOServerTest(SSOServerTestBase): 'd': 'https://someservice.org/', 'g': 'mygroup'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) self.assertTrue('name="g" value="mygroup"' in response.data) def test_login_ok_with_form(self): @@ -166,21 +166,21 @@ class SSOServerTest(SSOServerTestBase): parms = {'s': 'someservice.org/', 'd': 'https://someservice.org/dest'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) csrf_token = self._extract_csrf(response.data) parms.update({'username': 'admin', 'password': 'admin', '_csrf': csrf_token}) response = c.post('/', data=parms) - self.assertEquals(302, response.status_code, response.data) + self.assertEqual(302, response.status_code, response.data) location = response.headers['Location'] path, qs = location.split('?', 1) - self.assertEquals('https://someservice.org/sso_login', path) + self.assertEqual('https://someservice.org/sso_login', path) ticket = self._check_ticket( qs, 'https://someservice.org/dest', 'someservice.org/') - self.assertEquals('admin', ticket.user()) + self.assertEqual('admin', ticket.user()) def test_login_ok_with_form_utf8(self): # Test that the login form understands non-ASCII parameters. @@ -188,7 +188,7 @@ class SSOServerTest(SSOServerTestBase): parms = {'s': 'someservice.org/', 'd': 'https://someservice.org/dest'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) csrf_token = self._extract_csrf(response.data) u = u'\xc3dmin' @@ -196,14 +196,14 @@ class SSOServerTest(SSOServerTestBase): 'password': u, '_csrf': csrf_token}) response = c.post('/', data=parms) - self.assertEquals(302, response.status_code, response.data) + self.assertEqual(302, response.status_code, response.data) location = response.headers['Location'] path, qs = location.split('?', 1) - self.assertEquals('https://someservice.org/sso_login', path) + self.assertEqual('https://someservice.org/sso_login', path) ticket = self._check_ticket( qs, 'https://someservice.org/dest', 'someservice.org/') - self.assertEquals(u, unicode(ticket.user(), 'utf-8')) + self.assertEqual(u, unicode(ticket.user(), 'utf-8')) def test_login_ok_with_form_and_nonce(self): # Test that we can successfully login via the login form, @@ -213,22 +213,22 @@ class SSOServerTest(SSOServerTestBase): 'd': 'https://someservice.org/dest', 'n': 'testnonce'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) csrf_token = self._extract_csrf(response.data) parms.update({'username': 'admin', 'password': 'admin', '_csrf': csrf_token}) response = c.post('/', data=parms) - self.assertEquals(302, response.status_code, response.data) + self.assertEqual(302, response.status_code, response.data) location = response.headers['Location'] path, qs = location.split('?', 1) - self.assertEquals('https://someservice.org/sso_login', path) + self.assertEqual('https://someservice.org/sso_login', path) ticket = self._check_ticket( qs, 'https://someservice.org/dest', 'someservice.org/', 'testnonce') - self.assertEquals('admin', ticket.user()) - self.assertEquals('testnonce', ticket.nonce()) + self.assertEqual('admin', ticket.user()) + self.assertEqual('testnonce', ticket.nonce()) def test_login_fail_auth(self): # Test authentication failure on the login form. @@ -236,14 +236,14 @@ class SSOServerTest(SSOServerTestBase): parms = {'s': 'someservice.org/', 'd': 'https://someservice.org/dest'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) csrf_token = self._extract_csrf(response.data) parms.update({'username': 'admin', 'password': 'not_admin', '_csrf': csrf_token}) response = c.post('/', data=parms) - self.assertEquals(200, response.status_code, response.data) + self.assertEqual(200, response.status_code, response.data) self.assertTrue('Authentication failed' in response.data) def test_login_fail_csrf(self): @@ -252,13 +252,13 @@ class SSOServerTest(SSOServerTestBase): parms = {'s': 'someservice.org/', 'd': 'https://someservice.org/dest'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) parms.update({'username': 'admin', 'password': 'admin', '_csrf': 'blah'}) response = c.post('/', data=parms) - self.assertEquals(200, response.status_code, response.data) + self.assertEqual(200, response.status_code, response.data) self.assertTrue('Invalid session' in response.data) def test_login_params_validation(self): @@ -276,12 +276,12 @@ class SSOServerTest(SSOServerTestBase): for s, d in sdvars: with self.get_auth_client(ticketstr=localtkt) as c: response = c.get('/', query_string={'s': s, 'd': d}) - self.assertEquals(302, response.status_code, + self.assertEqual(302, response.status_code, 'sso failure for s=%s, d=%s: status=%d, expected=302' % ( s, d, response.status_code)) location = response.headers['Location'].split('?')[0] location_exp = 'https://%ssso_login' % s - self.assertEquals(location_exp, location, + self.assertEqual(location_exp, location, 'redirect failure for s=%s, d=%s: location=%s, expected=%s' % ( s, d, location, location_exp)) @@ -303,7 +303,7 @@ class SSOServerTest(SSOServerTestBase): for s, d, exp_status in sdvars: with self.get_auth_client(ticketstr=localtkt) as c: response = c.get('/', query_string={'s': s, 'd': d}) - self.assertEquals(exp_status, response.status_code, + self.assertEqual(exp_status, response.status_code, 'bad request returned %d (exp. %d): s=%s, d=%s' % ( response.status_code, exp_status, s, d)) @@ -318,7 +318,7 @@ class SSOServerTest(SSOServerTestBase): for s, d, exp_status in sdvars: with self.get_auth_client(ticketstr=localtkt) as c: response = c.get('/', query_string={'s': s, 'd': d}) - self.assertEquals(exp_status, response.status_code, + self.assertEqual(exp_status, response.status_code, 'bad request returned %d (exp. %d): s=%s, d=%s' % ( response.status_code, exp_status, s, d)) @@ -329,32 +329,32 @@ class SSOServerTest(SSOServerTestBase): parms = {'s': 'someservice.org/', 'd': 'https://someservice.org/dest'} response = c.get('/', query_string=parms) - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) csrf_token = self._extract_csrf(response.data) parms.update({'username': 'error', 'password': 'error', '_csrf': csrf_token}) response = c.post('/', data=parms) - self.assertEquals(200, response.status_code, response.data) + self.assertEqual(200, response.status_code, response.data) self.assertTrue('Authentication failed' in response.data) def test_logout_nop(self): # Test logging out without having logged in. with self.app.test_client() as c: response = c.get('/logout') - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) def test_logout_ok(self): # Test logging out from multiple services. with self.get_auth_client() as c: response = c.get('/', query_string={'s': 'svc1.com/', 'd': 'https://svc1.com/'}) - self.assertEquals(302, response.status_code) + self.assertEqual(302, response.status_code) response = c.get('/', query_string={'s': 'svc2.com/', 'd': 'https://svc2.com/'}) - self.assertEquals(302, response.status_code) + self.assertEqual(302, response.status_code) response = c.get('/logout') - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) # Verify that cookies have been wiped. cookies = self._get_cookies(response) @@ -367,25 +367,25 @@ class SSOServerTest(SSOServerTestBase): def test_static_data(self): with self.app.test_client() as c: response = c.get('/static/pure.min.css') - self.assertEquals(200, response.status_code) + self.assertEqual(200, response.status_code) self.assertTrue(response.headers['Content-Type'].startswith('text/css')) def test_notfound(self): with self.app.test_client() as c: response = c.get('/notfound') - self.assertEquals(404, response.status_code) + self.assertEqual(404, response.status_code) def test_cache_headers(self): with self.app.test_client() as c: response = c.get('/') - self.assertEquals('-1', response.headers['Expires']) - self.assertEquals('no-cache', response.headers['Cache-Control']) + self.assertEqual('-1', response.headers['Expires']) + self.assertEqual('no-cache', response.headers['Cache-Control']) def test_xss_headers(self): with self.app.test_client() as c: response = c.get('/') - self.assertEquals('SAMEORIGIN', response.headers['X-Frame-Options']) - self.assertEquals('1; mode=block', response.headers['X-XSS-Protection']) + self.assertEqual('SAMEORIGIN', response.headers['X-Frame-Options']) + self.assertEqual('1; mode=block', response.headers['X-XSS-Protection']) if __name__ == "__main__":