Statistics
| Branch: | Tag: | Revision:

root / kamaki / clients / test / astakos.py @ cb65588d

History | View | Annotate | Download (4 kB)

1 24851aa5 Stavros Sachtouris
# Copyright 2013 GRNET S.A. All rights reserved.
2 c1004a00 Stavros Sachtouris
#
3 c1004a00 Stavros Sachtouris
# Redistribution and use in source and binary forms, with or
4 c1004a00 Stavros Sachtouris
# without modification, are permitted provided that the following
5 c1004a00 Stavros Sachtouris
# conditions are met:
6 c1004a00 Stavros Sachtouris
#
7 c1004a00 Stavros Sachtouris
#   1. Redistributions of source code must retain the above
8 c1004a00 Stavros Sachtouris
#      copyright notice, this list of conditions and the following
9 c1004a00 Stavros Sachtouris
#      disclaimer.
10 c1004a00 Stavros Sachtouris
#
11 c1004a00 Stavros Sachtouris
#   2. Redistributions in binary form must reproduce the above
12 c1004a00 Stavros Sachtouris
#      copyright notice, this list of conditions and the following
13 c1004a00 Stavros Sachtouris
#      disclaimer in the documentation and/or other materials
14 c1004a00 Stavros Sachtouris
#      provided with the distribution.
15 c1004a00 Stavros Sachtouris
#
16 c1004a00 Stavros Sachtouris
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 c1004a00 Stavros Sachtouris
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 c1004a00 Stavros Sachtouris
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 c1004a00 Stavros Sachtouris
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 c1004a00 Stavros Sachtouris
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 c1004a00 Stavros Sachtouris
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 c1004a00 Stavros Sachtouris
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 c1004a00 Stavros Sachtouris
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 c1004a00 Stavros Sachtouris
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 c1004a00 Stavros Sachtouris
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 c1004a00 Stavros Sachtouris
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 c1004a00 Stavros Sachtouris
# POSSIBILITY OF SUCH DAMAGE.
28 c1004a00 Stavros Sachtouris
#
29 c1004a00 Stavros Sachtouris
# The views and conclusions contained in the software and
30 c1004a00 Stavros Sachtouris
# documentation are those of the authors and should not be
31 c1004a00 Stavros Sachtouris
# interpreted as representing official policies, either expressed
32 c1004a00 Stavros Sachtouris
# or implied, of GRNET S.A.
33 c1004a00 Stavros Sachtouris
34 274bcf7a Stavros Sachtouris
from mock import patch
35 c1004a00 Stavros Sachtouris
36 c1004a00 Stavros Sachtouris
from unittest import TestCase
37 c1004a00 Stavros Sachtouris
from kamaki.clients.astakos import AstakosClient
38 274bcf7a Stavros Sachtouris
39 274bcf7a Stavros Sachtouris
40 274bcf7a Stavros Sachtouris
example = dict(
41 274bcf7a Stavros Sachtouris
        name='Simple Name',
42 274bcf7a Stavros Sachtouris
        username='User Full Name',
43 274bcf7a Stavros Sachtouris
        auth_token_expires='1362583796000',
44 274bcf7a Stavros Sachtouris
        auth_token_created='1359991796000',
45 274bcf7a Stavros Sachtouris
        email=['user@example.gr'],
46 274bcf7a Stavros Sachtouris
        id=42,
47 274bcf7a Stavros Sachtouris
        uuid='aus3r-uu1d-f0r-73s71ng-as7ak0s')
48 274bcf7a Stavros Sachtouris
49 274bcf7a Stavros Sachtouris
example0 = dict(
50 274bcf7a Stavros Sachtouris
        name='Simple Name 0',
51 274bcf7a Stavros Sachtouris
        username='User Full Name 0',
52 274bcf7a Stavros Sachtouris
        auth_token_expires='1362583796001',
53 274bcf7a Stavros Sachtouris
        auth_token_created='1359991796001',
54 274bcf7a Stavros Sachtouris
        email=['user0@example.gr'],
55 274bcf7a Stavros Sachtouris
        id=32,
56 274bcf7a Stavros Sachtouris
        uuid='an07h2r-us3r-uu1d-f0r-as7ak0s')
57 c1004a00 Stavros Sachtouris
58 c1004a00 Stavros Sachtouris
59 c1004a00 Stavros Sachtouris
class Astakos(TestCase):
60 c1004a00 Stavros Sachtouris
61 d86c3c7d Stavros Sachtouris
    class FR(object):
62 274bcf7a Stavros Sachtouris
        json = example
63 c1004a00 Stavros Sachtouris
        headers = {}
64 c1004a00 Stavros Sachtouris
        content = json
65 c1004a00 Stavros Sachtouris
        status = None
66 c1004a00 Stavros Sachtouris
        status_code = 200
67 c1004a00 Stavros Sachtouris
68 c1004a00 Stavros Sachtouris
        def release(self):
69 c1004a00 Stavros Sachtouris
            pass
70 c1004a00 Stavros Sachtouris
71 274bcf7a Stavros Sachtouris
    cached = False
72 274bcf7a Stavros Sachtouris
73 c1004a00 Stavros Sachtouris
    def setUp(self):
74 c1004a00 Stavros Sachtouris
        self.url = 'https://astakos.example.com'
75 c1004a00 Stavros Sachtouris
        self.token = 'ast@k0sT0k3n=='
76 c1004a00 Stavros Sachtouris
        self.client = AstakosClient(self.url, self.token)
77 c1004a00 Stavros Sachtouris
        from kamaki.clients.connection.kamakicon import KamakiHTTPConnection
78 c1004a00 Stavros Sachtouris
        self.C = KamakiHTTPConnection
79 c1004a00 Stavros Sachtouris
80 274bcf7a Stavros Sachtouris
    def _authenticate(self):
81 c1004a00 Stavros Sachtouris
        with patch.object(self.C, 'perform_request', return_value=self.FR()):
82 c1004a00 Stavros Sachtouris
            r = self.client.authenticate()
83 274bcf7a Stavros Sachtouris
        self.cached = True
84 274bcf7a Stavros Sachtouris
        return r
85 c1004a00 Stavros Sachtouris
86 274bcf7a Stavros Sachtouris
    def test_authenticate(self):
87 274bcf7a Stavros Sachtouris
        r = self._authenticate()
88 274bcf7a Stavros Sachtouris
        self.assertEqual(self.client.http_client.url, self.url)
89 274bcf7a Stavros Sachtouris
        self.assertEqual(self.client.http_client.path, '/im/authenticate')
90 274bcf7a Stavros Sachtouris
        for term, val in example.items():
91 274bcf7a Stavros Sachtouris
            self.assertTrue(term in r)
92 274bcf7a Stavros Sachtouris
            self.assertEqual(val, r[term])
93 c1004a00 Stavros Sachtouris
94 274bcf7a Stavros Sachtouris
    def test_info(self):
95 274bcf7a Stavros Sachtouris
        if not self.cached:
96 274bcf7a Stavros Sachtouris
            self._authenticate()
97 274bcf7a Stavros Sachtouris
            return self.test_info()
98 274bcf7a Stavros Sachtouris
        self.assertTrue(set(
99 274bcf7a Stavros Sachtouris
            example.keys()).issubset(self.client.info().keys()))
100 c1004a00 Stavros Sachtouris
101 274bcf7a Stavros Sachtouris
    def test_get(self):
102 274bcf7a Stavros Sachtouris
        if not self.cached:
103 274bcf7a Stavros Sachtouris
            self._authenticate()
104 274bcf7a Stavros Sachtouris
            return self.test_get()
105 274bcf7a Stavros Sachtouris
        for term, val in example.items():
106 274bcf7a Stavros Sachtouris
            self.assertEqual(self.client.term(term, self.token), val)
107 274bcf7a Stavros Sachtouris
        self.assertTrue(example['email'][0] in self.client.term('email'))
108 c1004a00 Stavros Sachtouris
109 c1004a00 Stavros Sachtouris
    def test_list(self):
110 274bcf7a Stavros Sachtouris
        if not self.cached:
111 274bcf7a Stavros Sachtouris
            self._authenticate
112 274bcf7a Stavros Sachtouris
        with patch.object(self.FR, 'json', return_value=example0):
113 274bcf7a Stavros Sachtouris
            self._authenticate()
114 274bcf7a Stavros Sachtouris
        r = self.client.list()
115 274bcf7a Stavros Sachtouris
        self.assertTrue(len(r) == 1)
116 274bcf7a Stavros Sachtouris
        self.assertEqual(r[0]['auth_token'], self.token)