Statistics
| Branch: | Tag: | Revision:

root / api / tests_auth.py @ dd53338a

History | View | Annotate | Download (2.5 kB)

1 5fb55fba Georgios Gousios
#
2 5fb55fba Georgios Gousios
# Unit Tests for api
3 5fb55fba Georgios Gousios
#
4 5fb55fba Georgios Gousios
# Provides automated tests for api module
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 5fb55fba Georgios Gousios
12 dd53338a Georgios Gousios
from synnefo.logic.shibboleth import Tokens
13 dd53338a Georgios Gousios
from synnefo.db.models import SynnefoUser
14 dd53338a Georgios Gousios
15 5fb55fba Georgios Gousios
class AuthTestCase(TestCase):
16 dd53338a Georgios Gousios
    fixtures = ['api_test_data']
17 dd53338a Georgios Gousios
    apibase = '/api/v1.1'
18 5fb55fba Georgios Gousios
19 5fb55fba Georgios Gousios
    def setUp(self):
20 5fb55fba Georgios Gousios
        self.client = Client()
21 5fb55fba Georgios Gousios
22 dd53338a Georgios Gousios
    def test_auth_shibboleth(self):
23 dd53338a Georgios Gousios
        """ test redirect to shibboleth page
24 420f2c20 Georgios Gousios
        """
25 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/servers')
26 dd53338a Georgios Gousios
        self.assertEquals(response.status_code, 302)
27 420f2c20 Georgios Gousios
28 dd53338a Georgios Gousios
    def test_register_shibboleth_user(self):
29 dd53338a Georgios Gousios
        """ test registration of sibboleth user upon new incoming request
30 420f2c20 Georgios Gousios
        """
31 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/servers', {},
32 dd53338a Georgios Gousios
                                   **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
33 dd53338a Georgios Gousios
                                      Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
34 dd53338a Georgios Gousios
                                      Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
35 dd53338a Georgios Gousios
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 420f2c20 Georgios Gousios
43 5fb55fba Georgios Gousios
    def test_auth_headers(self):
44 5fb55fba Georgios Gousios
        """ test whether the authentication mechanism sets the correct headers
45 5fb55fba Georgios Gousios
        """
46 5fb55fba Georgios Gousios
        #Check with non-existing user
47 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/servers', {},
48 dd53338a Georgios Gousios
                                   **{'X-Auth-User': 'notme',
49 dd53338a Georgios Gousios
                                      'X-Auth-Key': '0xdeadbabe'})
50 5fb55fba Georgios Gousios
        self.assertEquals(response.status_code, 401)
51 5fb55fba Georgios Gousios
52 5fb55fba Georgios Gousios
        #Check with existing user
53 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/', {},
54 dd53338a Georgios Gousios
                                   **{'X-Auth-User': 'testuser',
55 dd53338a Georgios Gousios
                                      'X-Auth-Key': 'testuserpasswd'})
56 5fb55fba Georgios Gousios
        self.assertEquals(response.status_code, 204)
57 5fb55fba Georgios Gousios
        self.assertNotEqual(response['X-Auth-Token'], None)
58 5fb55fba Georgios Gousios
        self.assertEquals(response['X-Server-Management-Url'], '')
59 5fb55fba Georgios Gousios
        self.assertEquals(response['X-Storage-Url'], '')
60 5fb55fba Georgios Gousios
        self.assertEquals(response['X-CDN-Management-Url'], '')
61 5fb55fba Georgios Gousios
62 5fb55fba Georgios Gousios
        #Check access now that we do have an auth token
63 5fb55fba Georgios Gousios
        token = response['X-Auth-Token']
64 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/servers/detail', {},
65 5fb55fba Georgios Gousios
                                   **{'X-Auth-Token': token})
66 5fb55fba Georgios Gousios
        self.assertEquals(response.status_code, 200)