Statistics
| Branch: | Tag: | Revision:

root / api / tests_auth.py @ 71a2be7d

History | View | Annotate | Download (3.8 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, NoUniqueToken
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_shibboleth_correct_request(self):
23
        """test request that should succeed and register a user
24
        """
25
        response = self.client.get(self.apibase + '/servers', {},
26
                                   **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
27
                                      Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
28
                                      Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
29
        user = None
30
        try:
31
            user = SynnefoUser.objects.get(uniq = "jh@gmail.com")
32
        except SynnefoUser.DoesNotExist:
33
            self.assertNotEqual(user, None)
34
        self.assertNotEqual(user, None)
35

    
36
    def test_shibboleth_no_uniq_request(self):
37
        """test a request with no unique field
38
        """
39
        try :
40
            response = self.client.get(self.apibase + '/servers', {},
41
                                   **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
42
                                      Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
43
            self.assertEqual(True, True)
44
        except NoUniqueToken:
45
            self.assertEqual(True, True)
46

    
47
    def test_shibboleth_wrong_from_request(self):
48
        """ test request from wrong host
49
        """
50
        #TODO: Test request from wrong host
51
        #self.client
52
        #response = self.client.get(self.apibase + '/servers', {},
53
        #                           **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
54
        #                              Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
55
        #                              Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
56

    
57
    def test_shibboleth_expired_token(self):
58
        """ test request from expired token
59
        """
60

    
61
        #response = self.client.get(self.apibase + '/servers', {},
62
        #                           **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
63
        #                              Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
64
        #                              Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
65

    
66
    def test_auth_shibboleth(self):
67
        """ test redirect to shibboleth page
68
        """
69
        response = self.client.get(self.apibase + '/servers')
70
        self.assertEquals(response.status_code, 302)
71

    
72
    def test_fail_oapi_auth(self):
73
        """ test authentication from not registered user using OpenAPI
74
        """
75
        response = self.client.get(self.apibase + '/servers', {},
76
                                   **{'X-Auth-User': 'notme',
77
                                      'X-Auth-Key': '0xdeadbabe'})
78
        self.assertEquals(response.status_code, 401)
79

    
80
    def test_oapi_auth(self):
81
        """authentication with user registration
82
        """
83
        response = self.client.get(self.apibase + '/', {},
84
                                   **{'X-Auth-User': 'testuser',
85
                                      'X-Auth-Key': 'testuserpasswd'})
86
        self.assertEquals(response.status_code, 204)
87
        self.assertNotEqual(response['X-Auth-Token'], None)
88
        self.assertEquals(response['X-Server-Management-Url'], '')
89
        self.assertEquals(response['X-Storage-Url'], '')
90
        self.assertEquals(response['X-CDN-Management-Url'], '')
91

    
92
        #Check access now that we do have an auth token
93
        token = response['X-Auth-Token']
94
        response = self.client.get(self.apibase + '/servers/detail', {},
95
                                   **{'X-Auth-Token': token})
96
        self.assertEquals(response.status_code, 200)