Statistics
| Branch: | Tag: | Revision:

root / api / tests_auth.py @ dbf97ed2

History | View | Annotate | Download (2.9 kB)

1
#
2
# Unit Tests for api
3
#
4
# Provides automated tests for api module
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

    
12
from synnefo.logic.shibboleth import Tokens
13
from synnefo.db.models import SynnefoUser
14

    
15
class AuthTestCase(TestCase):
16
    fixtures = ['api_test_data']
17
    apibase = '/api/v1.1'
18

    
19
    def setUp(self):
20
        self.client = Client()
21

    
22
    def test_auth_shibboleth(self):
23
        """ test redirect to shibboleth page
24
        """
25
        response = self.client.get(self.apibase + '/servers')
26
        self.assertEquals(response.status_code, 302)
27

    
28
    def test_register_shibboleth_user(self):
29
        """ test registration of sibboleth user upon new incoming request
30
        """
31
        #TODO: Test request from wrong host
32
        #self.client
33
        #response = self.client.get(self.apibase + '/servers', {},
34
        #                           **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
35
        #                              Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
36
        #                              Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
37

    
38

    
39
        #Test correct request
40
        response = self.client.get(self.apibase + '/servers', {},
41
                                   **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
42
                                      Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
43
                                      Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
44

    
45
        user = None
46
        try:
47
            user = SynnefoUser.objects.get(uniq = "jh@gmail.com")
48
        except SynnefoUser.DoesNotExist:
49
            self.assertNotEqual(user, None)
50
        self.assertNotEqual(user, None)
51

    
52
    def test_auth_headers(self):
53
        """ test whether the authentication mechanism sets the correct headers
54
        """
55
        #Check with non-existing user
56
        response = self.client.get(self.apibase + '/servers', {},
57
                                   **{'X-Auth-User': 'notme',
58
                                      'X-Auth-Key': '0xdeadbabe'})
59
        self.assertEquals(response.status_code, 401)
60

    
61
        #Check with existing user
62
        response = self.client.get(self.apibase + '/', {},
63
                                   **{'X-Auth-User': 'testuser',
64
                                      'X-Auth-Key': 'testuserpasswd'})
65
        self.assertEquals(response.status_code, 204)
66
        self.assertNotEqual(response['X-Auth-Token'], None)
67
        self.assertEquals(response['X-Server-Management-Url'], '')
68
        self.assertEquals(response['X-Storage-Url'], '')
69
        self.assertEquals(response['X-CDN-Management-Url'], '')
70

    
71
        #Check access now that we do have an auth token
72
        token = response['X-Auth-Token']
73
        response = self.client.get(self.apibase + '/servers/detail', {},
74
                                   **{'X-Auth-Token': token})
75
        self.assertEquals(response.status_code, 200)