Statistics
| Branch: | Tag: | Revision:

root / aai / tests.py @ fdc10aee

History | View | Annotate | Download (3.8 kB)

1
#
2
# Unit Tests for aai
3
#
4
# Provides automated tests for aai module. The tests
5
#
6
# Copyright 2011 Greek Research and Technology Network
7
#
8

    
9
from django.test import TestCase
10
from django.test.client import Client
11
from django.conf import settings
12

    
13
from synnefo.db.models import SynnefoUser
14

    
15
from datetime import datetime, timedelta
16

    
17
from synnefo.aai.shibboleth import Tokens
18

    
19

    
20
class AaiTestCase(TestCase):
21
    fixtures = ['api_test_data', 'auth_test_data']
22
    apibase = '/api/v1.1'
23

    
24
    def setUp(self):
25
        self.client = Client()
26

    
27
    def test_shibboleth_correct_request(self):
28
        """test request that should succeed and register a user
29
        """
30
        response = self.client.get('/index.html', {},
31
                                   **{Tokens.SHIB_NAME: 'Jimmy',
32
                                      Tokens.SHIB_EPPN: 'jh@gmail.com',
33
                                      Tokens.SHIB_CN: 'Jimmy Hendrix',
34
                                      Tokens.SHIB_SESSION_ID: '123321',
35
                                      'TEST-AAI' : 'true'})
36
        user = None
37
        try:
38
            user = SynnefoUser.objects.get(uniq = "jh@gmail.com")
39
        except SynnefoUser.DoesNotExist:
40
            self.assertNotEqual(user, None)
41
        self.assertNotEqual(user, None)
42
        self.assertEquals(response.status_code, 302)
43
        self.assertEquals(response['Location'], settings.APP_INSTALL_URL)
44
        self.assertTrue('X-Auth-Token' in response)
45
        self.assertEquals(response['X-Auth-Token'], user.auth_token)
46
        #self.assertNotEquals(response.cookies['X-Auth-Token'].find(user.auth_token), -1)
47

    
48
    def test_shibboleth_no_uniq_request(self):
49
        """test a request with no unique field
50
        """
51
        response = self.client.get('/index.html', {},
52
                               **{Tokens.SHIB_NAME: 'Jimmy',
53
                                  Tokens.SHIB_CN: 'Jimmy Hendrix',
54
                                  'TEST-AAI': 'true'})
55
        self._test_redirect(response)
56

    
57
    def test_shibboleth_expired_token(self):
58
        """ test request from expired token
59
        """
60
        user = SynnefoUser.objects.get(uniq="test@synnefo.gr")
61
        self.assertNotEqual(user.auth_token_expires, None)
62
        user.auth_token_expires = datetime.now()
63
        user.save()
64
        response = self.client.get('/index.html', {},
65
                               **{'X-Auth-Token': user.auth_token,
66
                                  'TEST-AAI': 'true'})
67
        self._test_redirect(response)
68

    
69
    def test_shibboleth_redirect(self):
70
        """ test redirect to Sibboleth page
71
        """
72
        response = self.client.get('/index.html', {}, **{'TEST-AAI': 'true'})
73
        self._test_redirect(response)
74

    
75
    def test_shibboleth_auth(self):
76
        """ test authentication with X-Auth-Token
77
        """
78
        user = SynnefoUser.objects.get(uniq="test@synnefo.gr")
79
        response = self.client.get('/index.html', {},
80
                               **{'X-Auth-Token': user.auth_token,
81
                                  'TEST-AAI': 'true'})
82
        self.assertTrue(response.status_code, 200)
83
        self.assertTrue('Vary' in response)
84
        self.assertTrue('X-Auth-Token' in response['Vary'])
85

    
86
    def test_auth_cookie(self):
87
        user = SynnefoUser.objects.get(uniq = "test@synnefo.gr")
88
        self.client.cookies['X-Auth-Token'] = user.auth_token
89
        response = self.client.get('/', {},
90
                                   **{'X-Auth-Token': user.auth_token,
91
                                      'TEST-AAI' : 'true'})
92
        self.assertTrue(response.status_code, 200)
93
        self.assertTrue('Vary' in response)
94
        self.assertTrue('X-Auth-Token' in response['Vary'])
95

    
96
    def _test_redirect(self, response):
97
        self.assertEquals(response.status_code, 302)
98
        self.assertTrue('Location' in response)
99
        self.assertTrue(response['Location'].endswith(settings.LOGIN_PATH))
100