root / aai / tests.py @ c9fdfa27
History | View | Annotate | Download (3.8 kB)
1 | 5fb55fba | Georgios Gousios | #
|
---|---|---|---|
2 | 8f377cd6 | Georgios Gousios | # Unit Tests for aai
|
3 | 5fb55fba | Georgios Gousios | #
|
4 | 8f377cd6 | Georgios Gousios | # Provides automated tests for aai module. The tests
|
5 | 5fb55fba | Georgios Gousios | #
|
6 | 5fb55fba | Georgios Gousios | # Copyright 2011 Greek Research and Technology Network
|
7 | 5fb55fba | Georgios Gousios | #
|
8 | 5fb55fba | Georgios Gousios | |
9 | 5fb55fba | Georgios Gousios | from django.test import TestCase |
10 | 5fb55fba | Georgios Gousios | from django.test.client import Client |
11 | faa26af8 | Georgios Gousios | from django.conf import settings |
12 | 5fb55fba | Georgios Gousios | |
13 | dd53338a | Georgios Gousios | from synnefo.db.models import SynnefoUser |
14 | dd53338a | Georgios Gousios | |
15 | faa26af8 | Georgios Gousios | from datetime import datetime, timedelta |
16 | faa26af8 | Georgios Gousios | |
17 | 2cd99e7a | Georgios Gousios | from synnefo.aai.shibboleth import Tokens |
18 | 2cd99e7a | Georgios Gousios | |
19 | 1428a464 | Georgios Gousios | |
20 | 1428a464 | Georgios Gousios | class AaiTestCase(TestCase): |
21 | faa26af8 | Georgios Gousios | fixtures = ['api_test_data', 'auth_test_data'] |
22 | dd53338a | Georgios Gousios | apibase = '/api/v1.1'
|
23 | 5fb55fba | Georgios Gousios | |
24 | 5fb55fba | Georgios Gousios | def setUp(self): |
25 | 5fb55fba | Georgios Gousios | self.client = Client()
|
26 | 5fb55fba | Georgios Gousios | |
27 | 1896d262 | Georgios Gousios | def test_shibboleth_correct_request(self): |
28 | 1896d262 | Georgios Gousios | """test request that should succeed and register a user
|
29 | 420f2c20 | Georgios Gousios | """
|
30 | 1428a464 | Georgios Gousios | response = self.client.get('/index.html', {}, |
31 | ac3c3a4b | Georgios Gousios | **{Tokens.SIB_NAME: 'Jimmy',
|
32 | ac3c3a4b | Georgios Gousios | Tokens.SIB_EPPN: 'jh@gmail.com',
|
33 | ac3c3a4b | Georgios Gousios | Tokens.SIB_CN: 'Jimmy Hendrix',
|
34 | ac3c3a4b | Georgios Gousios | Tokens.SIB_SESSION_ID: '123321',
|
35 | 8f377cd6 | Georgios Gousios | 'TEST-AAI' : 'true'}) |
36 | dd53338a | Georgios Gousios | user = None
|
37 | dd53338a | Georgios Gousios | try:
|
38 | dd53338a | Georgios Gousios | user = SynnefoUser.objects.get(uniq = "jh@gmail.com")
|
39 | dd53338a | Georgios Gousios | except SynnefoUser.DoesNotExist:
|
40 | dd53338a | Georgios Gousios | self.assertNotEqual(user, None) |
41 | dd53338a | Georgios Gousios | self.assertNotEqual(user, None) |
42 | 57e59589 | Georgios Gousios | self.assertEquals(response.status_code, 302) |
43 | ac3c3a4b | Georgios Gousios | self.assertEquals(response['Location'], settings.APP_INSTALL_URL) |
44 | 57e59589 | Georgios Gousios | self.assertTrue('X-Auth-Token' in response) |
45 | 57e59589 | Georgios Gousios | self.assertEquals(response['X-Auth-Token'], user.auth_token) |
46 | c06de383 | Georgios Gousios | #self.assertNotEquals(response.cookies['X-Auth-Token'].find(user.auth_token), -1)
|
47 | 420f2c20 | Georgios Gousios | |
48 | 1896d262 | Georgios Gousios | def test_shibboleth_no_uniq_request(self): |
49 | 1896d262 | Georgios Gousios | """test a request with no unique field
|
50 | 1896d262 | Georgios Gousios | """
|
51 | 1428a464 | Georgios Gousios | response = self.client.get('/index.html', {}, |
52 | 1428a464 | Georgios Gousios | **{Tokens.SIB_NAME: 'Jimmy',
|
53 | 1428a464 | Georgios Gousios | Tokens.SIB_CN: 'Jimmy Hendrix',
|
54 | 1428a464 | Georgios Gousios | 'TEST-AAI': 'true'}) |
55 | faa26af8 | Georgios Gousios | self._test_redirect(response)
|
56 | 1896d262 | Georgios Gousios | |
57 | 71a2be7d | Georgios Gousios | def test_shibboleth_expired_token(self): |
58 | 71a2be7d | Georgios Gousios | """ test request from expired token
|
59 | 71a2be7d | Georgios Gousios | """
|
60 | 1428a464 | Georgios Gousios | user = SynnefoUser.objects.get(uniq="test@synnefo.gr")
|
61 | c9fdfa27 | Georgios Gousios | self.assertNotEqual(user.auth_token_expires, None) |
62 | c9fdfa27 | Georgios Gousios | user.auth_token_expires = datetime.now() |
63 | c9fdfa27 | Georgios Gousios | user.save() |
64 | 1428a464 | Georgios Gousios | response = self.client.get('/index.html', {}, |
65 | 1428a464 | Georgios Gousios | **{'X-Auth-Token': user.auth_token,
|
66 | 1428a464 | Georgios Gousios | 'TEST-AAI': 'true'}) |
67 | faa26af8 | Georgios Gousios | self._test_redirect(response)
|
68 | 71a2be7d | Georgios Gousios | |
69 | 57e59589 | Georgios Gousios | def test_shibboleth_redirect(self): |
70 | 57e59589 | Georgios Gousios | """ test redirect to Sibboleth page
|
71 | 1896d262 | Georgios Gousios | """
|
72 | 1428a464 | Georgios Gousios | response = self.client.get('/index.html', {}, **{'TEST-AAI': 'true'}) |
73 | 57e59589 | Georgios Gousios | self._test_redirect(response)
|
74 | 57e59589 | Georgios Gousios | |
75 | 57e59589 | Georgios Gousios | def test_shibboleth_auth(self): |
76 | 57e59589 | Georgios Gousios | """ test authentication with X-Auth-Token
|
77 | 57e59589 | Georgios Gousios | """
|
78 | 1428a464 | Georgios Gousios | user = SynnefoUser.objects.get(uniq="test@synnefo.gr")
|
79 | 1428a464 | Georgios Gousios | response = self.client.get('/index.html', {}, |
80 | 1428a464 | Georgios Gousios | **{'X-Auth-Token': user.auth_token,
|
81 | 1428a464 | Georgios Gousios | 'TEST-AAI': 'true'}) |
82 | 57e59589 | Georgios Gousios | self.assertTrue(response.status_code, 200) |
83 | 57e59589 | Georgios Gousios | self.assertTrue('Vary' in response) |
84 | 57e59589 | Georgios Gousios | self.assertTrue('X-Auth-Token' in response['Vary']) |
85 | 1896d262 | Georgios Gousios | |
86 | c9fdfa27 | Georgios Gousios | def test_auth_cookie(self): |
87 | c9fdfa27 | Georgios Gousios | user = SynnefoUser.objects.get(uniq = "test@synnefo.gr")
|
88 | c9fdfa27 | Georgios Gousios | self.client.cookies['X-Auth-Token'] = user.auth_token |
89 | c9fdfa27 | Georgios Gousios | response = self.client.get('/', {}, |
90 | c9fdfa27 | Georgios Gousios | **{'X-Auth-Token': user.auth_token,
|
91 | c9fdfa27 | Georgios Gousios | 'TEST-AAI' : 'true'}) |
92 | c9fdfa27 | Georgios Gousios | self.assertTrue(response.status_code, 200) |
93 | c9fdfa27 | Georgios Gousios | self.assertTrue('Vary' in response) |
94 | c9fdfa27 | Georgios Gousios | self.assertTrue('X-Auth-Token' in response['Vary']) |
95 | c9fdfa27 | Georgios Gousios | |
96 | faa26af8 | Georgios Gousios | def _test_redirect(self, response): |
97 | faa26af8 | Georgios Gousios | self.assertEquals(response.status_code, 302) |
98 | 57e59589 | Georgios Gousios | self.assertTrue('Location' in response) |
99 | 60de282a | Georgios Gousios | self.assertTrue(response['Location'].endswith(settings.LOGIN_PATH)) |