~lutostag/ubuntu/trusty/maas/1.5.4+keystone

« back to all changes in this revision

Viewing changes to src/maasserver/tests/test_api_utils.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez
  • Date: 2013-03-04 11:49:44 UTC
  • mto: This revision was merged to the branch mainline in revision 25.
  • Revision ID: package-import@ubuntu.com-20130304114944-azcvu9anlf8mizpa
Tags: upstream-1.3+bzr1452+dfsg
ImportĀ upstreamĀ versionĀ 1.3+bzr1452+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2012 Canonical Ltd.  This software is licensed under the
 
2
# GNU Affero General Public License version 3 (see the file LICENSE).
 
3
 
 
4
"""Tests for API helpers."""
 
5
 
 
6
from __future__ import (
 
7
    absolute_import,
 
8
    print_function,
 
9
    unicode_literals,
 
10
    )
 
11
 
 
12
__metaclass__ = type
 
13
__all__ = []
 
14
 
 
15
from collections import namedtuple
 
16
 
 
17
from django.http import QueryDict
 
18
from maasserver.api_utils import (
 
19
    extract_oauth_key,
 
20
    extract_oauth_key_from_auth_header,
 
21
    get_oauth_token,
 
22
    get_overrided_query_dict,
 
23
    )
 
24
from maasserver.exceptions import Unauthorized
 
25
from maasserver.testing.factory import factory
 
26
from maasserver.testing.testcase import TestCase
 
27
 
 
28
 
 
29
class TestGetOverridedQueryDict(TestCase):
 
30
 
 
31
    def test_returns_QueryDict(self):
 
32
        defaults = {factory.getRandomString(): factory.getRandomString()}
 
33
        results = get_overrided_query_dict(defaults, QueryDict(''))
 
34
        expected_results = QueryDict('').copy()
 
35
        expected_results.update(defaults)
 
36
        self.assertEqual(expected_results, results)
 
37
 
 
38
    def test_data_values_override_defaults(self):
 
39
        key = factory.getRandomString()
 
40
        defaults = {key: factory.getRandomString()}
 
41
        data_value = factory.getRandomString()
 
42
        data = {key: data_value}
 
43
        results = get_overrided_query_dict(defaults, data)
 
44
        self.assertEqual([data_value], results.getlist(key))
 
45
 
 
46
 
 
47
class TestOAuthHelpers(TestCase):
 
48
 
 
49
    def make_fake_request(self, auth_header):
 
50
        """Create a very simple fake request, with just an auth header."""
 
51
        FakeRequest = namedtuple('FakeRequest', ['META'])
 
52
        return FakeRequest(META={'HTTP_AUTHORIZATION': auth_header})
 
53
 
 
54
    def test_extract_oauth_key_from_auth_header_returns_key(self):
 
55
        token = factory.getRandomString(18)
 
56
        self.assertEqual(
 
57
            token,
 
58
            extract_oauth_key_from_auth_header(
 
59
                factory.make_oauth_header(oauth_token=token)))
 
60
 
 
61
    def test_extract_oauth_key_from_auth_header_returns_None_if_missing(self):
 
62
        self.assertIs(None, extract_oauth_key_from_auth_header(''))
 
63
 
 
64
    def test_extract_oauth_key_raises_Unauthorized_if_no_auth_header(self):
 
65
        self.assertRaises(
 
66
            Unauthorized,
 
67
            extract_oauth_key, self.make_fake_request(None))
 
68
 
 
69
    def test_extract_oauth_key_raises_Unauthorized_if_no_key(self):
 
70
        self.assertRaises(
 
71
            Unauthorized,
 
72
            extract_oauth_key, self.make_fake_request(''))
 
73
 
 
74
    def test_extract_oauth_key_returns_key(self):
 
75
        token = factory.getRandomString(18)
 
76
        self.assertEqual(
 
77
            token,
 
78
            extract_oauth_key(self.make_fake_request(
 
79
                factory.make_oauth_header(oauth_token=token))))
 
80
 
 
81
    def test_get_oauth_token_finds_token(self):
 
82
        user = factory.make_user()
 
83
        consumer, token = user.get_profile().create_authorisation_token()
 
84
        self.assertEqual(
 
85
            token,
 
86
            get_oauth_token(
 
87
                self.make_fake_request(
 
88
                    factory.make_oauth_header(oauth_token=token.key))))
 
89
 
 
90
    def test_get_oauth_token_raises_Unauthorized_for_unknown_token(self):
 
91
        fake_token = factory.getRandomString(18)
 
92
        header = factory.make_oauth_header(oauth_token=fake_token)
 
93
        self.assertRaises(
 
94
            Unauthorized,
 
95
            get_oauth_token, self.make_fake_request(header))