Statistics
| Branch: | Tag: | Revision:

root / api / tests_auth.py @ 71a2be7d

History | View | Annotate | Download (3.8 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 1896d262 Georgios Gousios
from synnefo.logic.shibboleth import Tokens, NoUniqueToken
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 1896d262 Georgios Gousios
    def test_shibboleth_correct_request(self):
23 1896d262 Georgios Gousios
        """test request that should succeed and register a user
24 420f2c20 Georgios Gousios
        """
25 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/servers', {},
26 dd53338a Georgios Gousios
                                   **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
27 dd53338a Georgios Gousios
                                      Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
28 dd53338a Georgios Gousios
                                      Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
29 dd53338a Georgios Gousios
        user = None
30 dd53338a Georgios Gousios
        try:
31 dd53338a Georgios Gousios
            user = SynnefoUser.objects.get(uniq = "jh@gmail.com")
32 dd53338a Georgios Gousios
        except SynnefoUser.DoesNotExist:
33 dd53338a Georgios Gousios
            self.assertNotEqual(user, None)
34 dd53338a Georgios Gousios
        self.assertNotEqual(user, None)
35 420f2c20 Georgios Gousios
36 1896d262 Georgios Gousios
    def test_shibboleth_no_uniq_request(self):
37 1896d262 Georgios Gousios
        """test a request with no unique field
38 1896d262 Georgios Gousios
        """
39 1896d262 Georgios Gousios
        try :
40 1896d262 Georgios Gousios
            response = self.client.get(self.apibase + '/servers', {},
41 1896d262 Georgios Gousios
                                   **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
42 1896d262 Georgios Gousios
                                      Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
43 1896d262 Georgios Gousios
            self.assertEqual(True, True)
44 1896d262 Georgios Gousios
        except NoUniqueToken:
45 1896d262 Georgios Gousios
            self.assertEqual(True, True)
46 1896d262 Georgios Gousios
47 1896d262 Georgios Gousios
    def test_shibboleth_wrong_from_request(self):
48 1896d262 Georgios Gousios
        """ test request from wrong host
49 1896d262 Georgios Gousios
        """
50 1896d262 Georgios Gousios
        #TODO: Test request from wrong host
51 1896d262 Georgios Gousios
        #self.client
52 1896d262 Georgios Gousios
        #response = self.client.get(self.apibase + '/servers', {},
53 1896d262 Georgios Gousios
        #                           **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
54 1896d262 Georgios Gousios
        #                              Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
55 1896d262 Georgios Gousios
        #                              Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
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 71a2be7d Georgios Gousios
61 71a2be7d Georgios Gousios
        #response = self.client.get(self.apibase + '/servers', {},
62 71a2be7d Georgios Gousios
        #                           **{Tokens.SIB_GIVEN_NAME: 'Jimmy',
63 71a2be7d Georgios Gousios
        #                              Tokens.SIB_EDU_PERSON_PRINCIPAL_NAME: 'jh@gmail.com',
64 71a2be7d Georgios Gousios
        #                              Tokens.SIB_DISPLAY_NAME: 'Jimmy Hendrix'})
65 71a2be7d Georgios Gousios
66 1896d262 Georgios Gousios
    def test_auth_shibboleth(self):
67 1896d262 Georgios Gousios
        """ test redirect to shibboleth page
68 1896d262 Georgios Gousios
        """
69 1896d262 Georgios Gousios
        response = self.client.get(self.apibase + '/servers')
70 1896d262 Georgios Gousios
        self.assertEquals(response.status_code, 302)
71 1896d262 Georgios Gousios
72 1896d262 Georgios Gousios
    def test_fail_oapi_auth(self):
73 1896d262 Georgios Gousios
        """ test authentication from not registered user using OpenAPI
74 5fb55fba Georgios Gousios
        """
75 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/servers', {},
76 dd53338a Georgios Gousios
                                   **{'X-Auth-User': 'notme',
77 dd53338a Georgios Gousios
                                      'X-Auth-Key': '0xdeadbabe'})
78 5fb55fba Georgios Gousios
        self.assertEquals(response.status_code, 401)
79 5fb55fba Georgios Gousios
80 1896d262 Georgios Gousios
    def test_oapi_auth(self):
81 1896d262 Georgios Gousios
        """authentication with user registration
82 1896d262 Georgios Gousios
        """
83 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/', {},
84 dd53338a Georgios Gousios
                                   **{'X-Auth-User': 'testuser',
85 dd53338a Georgios Gousios
                                      'X-Auth-Key': 'testuserpasswd'})
86 5fb55fba Georgios Gousios
        self.assertEquals(response.status_code, 204)
87 5fb55fba Georgios Gousios
        self.assertNotEqual(response['X-Auth-Token'], None)
88 5fb55fba Georgios Gousios
        self.assertEquals(response['X-Server-Management-Url'], '')
89 5fb55fba Georgios Gousios
        self.assertEquals(response['X-Storage-Url'], '')
90 5fb55fba Georgios Gousios
        self.assertEquals(response['X-CDN-Management-Url'], '')
91 5fb55fba Georgios Gousios
92 5fb55fba Georgios Gousios
        #Check access now that we do have an auth token
93 5fb55fba Georgios Gousios
        token = response['X-Auth-Token']
94 dd53338a Georgios Gousios
        response = self.client.get(self.apibase + '/servers/detail', {},
95 5fb55fba Georgios Gousios
                                   **{'X-Auth-Token': token})
96 5fb55fba Georgios Gousios
        self.assertEquals(response.status_code, 200)