root / snf-astakos-client / astakosclient / tests.py @ 2377e7c2
History | View | Annotate | Download (22.3 kB)
1 | 57ba2dfc | Ilias Tsitsimpis | #!/usr/bin/env python
|
---|---|---|---|
2 | 57ba2dfc | Ilias Tsitsimpis | #
|
3 | 57ba2dfc | Ilias Tsitsimpis | # Copyright (C) 2012, 2013 GRNET S.A. All rights reserved.
|
4 | 57ba2dfc | Ilias Tsitsimpis | #
|
5 | 57ba2dfc | Ilias Tsitsimpis | # Redistribution and use in source and binary forms, with or
|
6 | 57ba2dfc | Ilias Tsitsimpis | # without modification, are permitted provided that the following
|
7 | 57ba2dfc | Ilias Tsitsimpis | # conditions are met:
|
8 | 57ba2dfc | Ilias Tsitsimpis | #
|
9 | 57ba2dfc | Ilias Tsitsimpis | # 1. Redistributions of source code must retain the above
|
10 | 57ba2dfc | Ilias Tsitsimpis | # copyright notice, this list of conditions and the following
|
11 | 57ba2dfc | Ilias Tsitsimpis | # disclaimer.
|
12 | 57ba2dfc | Ilias Tsitsimpis | #
|
13 | 57ba2dfc | Ilias Tsitsimpis | # 2. Redistributions in binary form must reproduce the above
|
14 | 57ba2dfc | Ilias Tsitsimpis | # copyright notice, this list of conditions and the following
|
15 | 57ba2dfc | Ilias Tsitsimpis | # disclaimer in the documentation and/or other materials
|
16 | 57ba2dfc | Ilias Tsitsimpis | # provided with the distribution.
|
17 | 57ba2dfc | Ilias Tsitsimpis | #
|
18 | 57ba2dfc | Ilias Tsitsimpis | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
19 | 57ba2dfc | Ilias Tsitsimpis | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20 | 57ba2dfc | Ilias Tsitsimpis | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
21 | 57ba2dfc | Ilias Tsitsimpis | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
22 | 57ba2dfc | Ilias Tsitsimpis | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
23 | 57ba2dfc | Ilias Tsitsimpis | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
24 | 57ba2dfc | Ilias Tsitsimpis | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
25 | 57ba2dfc | Ilias Tsitsimpis | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
26 | 57ba2dfc | Ilias Tsitsimpis | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
27 | 57ba2dfc | Ilias Tsitsimpis | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
28 | 57ba2dfc | Ilias Tsitsimpis | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29 | 57ba2dfc | Ilias Tsitsimpis | # POSSIBILITY OF SUCH DAMAGE.
|
30 | 57ba2dfc | Ilias Tsitsimpis | #
|
31 | 57ba2dfc | Ilias Tsitsimpis | # The views and conclusions contained in the software and
|
32 | 57ba2dfc | Ilias Tsitsimpis | # documentation are those of the authors and should not be
|
33 | 57ba2dfc | Ilias Tsitsimpis | # interpreted as representing official policies, either expressed
|
34 | 57ba2dfc | Ilias Tsitsimpis | # or implied, of GRNET S.A.
|
35 | 57ba2dfc | Ilias Tsitsimpis | |
36 | 57ba2dfc | Ilias Tsitsimpis | """Unit Tests for the astakos-client module
|
37 | 57ba2dfc | Ilias Tsitsimpis |
|
38 | 57ba2dfc | Ilias Tsitsimpis | Provides unit tests for the code implementing
|
39 | 57ba2dfc | Ilias Tsitsimpis | the astakos client library
|
40 | 57ba2dfc | Ilias Tsitsimpis |
|
41 | 57ba2dfc | Ilias Tsitsimpis | """
|
42 | 57ba2dfc | Ilias Tsitsimpis | |
43 | bc56a641 | Ilias Tsitsimpis | import sys |
44 | 57ba2dfc | Ilias Tsitsimpis | import socket |
45 | 454a1ad4 | Ilias Tsitsimpis | import simplejson |
46 | 57ba2dfc | Ilias Tsitsimpis | |
47 | 57ba2dfc | Ilias Tsitsimpis | import astakosclient |
48 | f93cc364 | Ilias Tsitsimpis | from astakosclient import AstakosClient |
49 | f93cc364 | Ilias Tsitsimpis | from astakosclient.errors import \ |
50 | 2377e7c2 | Ilias Tsitsimpis | AstakosClientException, Unauthorized, BadRequest, NotFound, \ |
51 | 2377e7c2 | Ilias Tsitsimpis | NoDisplayName, NoUUID |
52 | 57ba2dfc | Ilias Tsitsimpis | |
53 | 57ba2dfc | Ilias Tsitsimpis | # Use backported unittest functionality if Python < 2.7
|
54 | bc56a641 | Ilias Tsitsimpis | try:
|
55 | bc56a641 | Ilias Tsitsimpis | import unittest2 as unittest |
56 | bc56a641 | Ilias Tsitsimpis | except ImportError: |
57 | bc56a641 | Ilias Tsitsimpis | if sys.version_info < (2, 7): |
58 | bc56a641 | Ilias Tsitsimpis | raise Exception("The unittest2 package is required for Python < 2.7") |
59 | bc56a641 | Ilias Tsitsimpis | import unittest |
60 | 57ba2dfc | Ilias Tsitsimpis | |
61 | 57ba2dfc | Ilias Tsitsimpis | |
62 | 57ba2dfc | Ilias Tsitsimpis | # --------------------------------------------------------------------
|
63 | 57ba2dfc | Ilias Tsitsimpis | # Helper functions
|
64 | 57ba2dfc | Ilias Tsitsimpis | |
65 | 57ba2dfc | Ilias Tsitsimpis | # ----------------------------
|
66 | 57ba2dfc | Ilias Tsitsimpis | # This functions will be used as mocked requests
|
67 | 57ba2dfc | Ilias Tsitsimpis | def _requestOffline(conn, method, url, **kwargs): |
68 | 57ba2dfc | Ilias Tsitsimpis | """This request behaves as we were offline"""
|
69 | 57ba2dfc | Ilias Tsitsimpis | raise socket.gaierror
|
70 | 57ba2dfc | Ilias Tsitsimpis | |
71 | 57ba2dfc | Ilias Tsitsimpis | |
72 | 57ba2dfc | Ilias Tsitsimpis | def _requestStatus302(conn, method, url, **kwargs): |
73 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 302"""
|
74 | 57ba2dfc | Ilias Tsitsimpis | status = 302
|
75 | 57ba2dfc | Ilias Tsitsimpis | data = '<html>\r\n<head><title>302 Found</title></head>\r\n' \
|
76 | 57ba2dfc | Ilias Tsitsimpis | '<body bgcolor="white">\r\n<center><h1>302 Found</h1></center>\r\n' \
|
77 | 57ba2dfc | Ilias Tsitsimpis | '<hr><center>nginx/0.7.67</center>\r\n</body>\r\n</html>\r\n'
|
78 | 66208bc7 | Ilias Tsitsimpis | return (data, status)
|
79 | 57ba2dfc | Ilias Tsitsimpis | |
80 | 57ba2dfc | Ilias Tsitsimpis | |
81 | 57ba2dfc | Ilias Tsitsimpis | def _requestStatus404(conn, method, url, **kwargs): |
82 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 404"""
|
83 | 57ba2dfc | Ilias Tsitsimpis | status = 404
|
84 | 57ba2dfc | Ilias Tsitsimpis | data = '<html><head><title>404 Not Found</title></head>' \
|
85 | 57ba2dfc | Ilias Tsitsimpis | '<body><h1>Not Found</h1><p>The requested URL /foo was ' \
|
86 | 57ba2dfc | Ilias Tsitsimpis | 'not found on this server.</p><hr><address>Apache Server ' \
|
87 | 57ba2dfc | Ilias Tsitsimpis | 'at example.com Port 80</address></body></html>'
|
88 | 66208bc7 | Ilias Tsitsimpis | return (data, status)
|
89 | 57ba2dfc | Ilias Tsitsimpis | |
90 | 57ba2dfc | Ilias Tsitsimpis | |
91 | 57ba2dfc | Ilias Tsitsimpis | def _requestStatus401(conn, method, url, **kwargs): |
92 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 401"""
|
93 | 57ba2dfc | Ilias Tsitsimpis | status = 401
|
94 | 57ba2dfc | Ilias Tsitsimpis | data = "Invalid X-Auth-Token\n"
|
95 | 66208bc7 | Ilias Tsitsimpis | return (data, status)
|
96 | 57ba2dfc | Ilias Tsitsimpis | |
97 | 57ba2dfc | Ilias Tsitsimpis | |
98 | 57ba2dfc | Ilias Tsitsimpis | def _requestStatus400(conn, method, url, **kwargs): |
99 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 400"""
|
100 | 57ba2dfc | Ilias Tsitsimpis | status = 400
|
101 | 57ba2dfc | Ilias Tsitsimpis | data = "Method not allowed.\n"
|
102 | 66208bc7 | Ilias Tsitsimpis | return (data, status)
|
103 | 57ba2dfc | Ilias Tsitsimpis | |
104 | 57ba2dfc | Ilias Tsitsimpis | |
105 | 57ba2dfc | Ilias Tsitsimpis | def _requestOk(conn, method, url, **kwargs): |
106 | 57ba2dfc | Ilias Tsitsimpis | """This request behaves like original Astakos does"""
|
107 | 66208bc7 | Ilias Tsitsimpis | if url[0:16] == "/im/authenticate": |
108 | 57ba2dfc | Ilias Tsitsimpis | return _reqAuthenticate(conn, method, url, **kwargs)
|
109 | 66208bc7 | Ilias Tsitsimpis | elif url[0:14] == "/user_catalogs": |
110 | 57ba2dfc | Ilias Tsitsimpis | return _reqCatalogs(conn, method, url, **kwargs)
|
111 | 57ba2dfc | Ilias Tsitsimpis | else:
|
112 | 57ba2dfc | Ilias Tsitsimpis | return _requestStatus404(conn, method, url, **kwargs)
|
113 | 57ba2dfc | Ilias Tsitsimpis | |
114 | 57ba2dfc | Ilias Tsitsimpis | |
115 | 57ba2dfc | Ilias Tsitsimpis | def _reqAuthenticate(conn, method, url, **kwargs): |
116 | 57ba2dfc | Ilias Tsitsimpis | """Check if user exists and return his profile"""
|
117 | 344d5c90 | Ilias Tsitsimpis | global user_1, user_2
|
118 | 57ba2dfc | Ilias Tsitsimpis | |
119 | d4789cd4 | Ilias Tsitsimpis | # Check input
|
120 | 57ba2dfc | Ilias Tsitsimpis | if conn.__class__.__name__ != "HTTPSConnection": |
121 | 57ba2dfc | Ilias Tsitsimpis | return _requestStatus302(conn, method, url, **kwargs)
|
122 | 57ba2dfc | Ilias Tsitsimpis | |
123 | 57ba2dfc | Ilias Tsitsimpis | if method != "GET": |
124 | 57ba2dfc | Ilias Tsitsimpis | return _requestStatus400(conn, method, url, **kwargs)
|
125 | 57ba2dfc | Ilias Tsitsimpis | |
126 | 57ba2dfc | Ilias Tsitsimpis | token = kwargs['headers']['X-Auth-Token'] |
127 | 57ba2dfc | Ilias Tsitsimpis | if token == token_1:
|
128 | 344d5c90 | Ilias Tsitsimpis | user = dict(user_1)
|
129 | 57ba2dfc | Ilias Tsitsimpis | elif token == token_2:
|
130 | 344d5c90 | Ilias Tsitsimpis | user = dict(user_2)
|
131 | 57ba2dfc | Ilias Tsitsimpis | else:
|
132 | 57ba2dfc | Ilias Tsitsimpis | # No user found
|
133 | 57ba2dfc | Ilias Tsitsimpis | return _requestStatus401(conn, method, url, **kwargs)
|
134 | 57ba2dfc | Ilias Tsitsimpis | |
135 | d4789cd4 | Ilias Tsitsimpis | # Return
|
136 | 344d5c90 | Ilias Tsitsimpis | if "usage=1" not in url: |
137 | 57ba2dfc | Ilias Tsitsimpis | # Strip `usage' key from `user'
|
138 | 344d5c90 | Ilias Tsitsimpis | del user['usage'] |
139 | 66208bc7 | Ilias Tsitsimpis | return (simplejson.dumps(user), 200) |
140 | 57ba2dfc | Ilias Tsitsimpis | |
141 | 57ba2dfc | Ilias Tsitsimpis | |
142 | 57ba2dfc | Ilias Tsitsimpis | def _reqCatalogs(conn, method, url, **kwargs): |
143 | 57ba2dfc | Ilias Tsitsimpis | """Return user catalogs"""
|
144 | d071e6f1 | Ilias Tsitsimpis | global token_1, token_2, user_1, user_2
|
145 | d071e6f1 | Ilias Tsitsimpis | |
146 | d4789cd4 | Ilias Tsitsimpis | # Check input
|
147 | d071e6f1 | Ilias Tsitsimpis | if conn.__class__.__name__ != "HTTPSConnection": |
148 | d071e6f1 | Ilias Tsitsimpis | return _requestStatus302(conn, method, url, **kwargs)
|
149 | d071e6f1 | Ilias Tsitsimpis | |
150 | d071e6f1 | Ilias Tsitsimpis | if method != "POST": |
151 | d071e6f1 | Ilias Tsitsimpis | return _requestStatus400(conn, method, url, **kwargs)
|
152 | d071e6f1 | Ilias Tsitsimpis | |
153 | d4789cd4 | Ilias Tsitsimpis | token = kwargs['headers']['X-Auth-Token'] |
154 | d4789cd4 | Ilias Tsitsimpis | if token != token_1 and token != token_2: |
155 | d4789cd4 | Ilias Tsitsimpis | return _requestStatus401(conn, method, url, **kwargs)
|
156 | d4789cd4 | Ilias Tsitsimpis | |
157 | d4789cd4 | Ilias Tsitsimpis | # Return
|
158 | d4789cd4 | Ilias Tsitsimpis | body = simplejson.loads(kwargs['body'])
|
159 | aaf0a42c | Ilias Tsitsimpis | if 'uuids' in body: |
160 | aaf0a42c | Ilias Tsitsimpis | # Return uuid_catalog
|
161 | aaf0a42c | Ilias Tsitsimpis | uuids = body['uuids']
|
162 | aaf0a42c | Ilias Tsitsimpis | catalogs = {} |
163 | aaf0a42c | Ilias Tsitsimpis | if user_1['uuid'] in uuids: |
164 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_1['uuid']] = user_1['username'] |
165 | aaf0a42c | Ilias Tsitsimpis | if user_2['uuid'] in uuids: |
166 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_2['uuid']] = user_2['username'] |
167 | aaf0a42c | Ilias Tsitsimpis | return_catalog = {"displayname_catalog": {}, "uuid_catalog": catalogs} |
168 | aaf0a42c | Ilias Tsitsimpis | elif 'displaynames' in body: |
169 | aaf0a42c | Ilias Tsitsimpis | # Return displayname_catalog
|
170 | aaf0a42c | Ilias Tsitsimpis | names = body['displaynames']
|
171 | aaf0a42c | Ilias Tsitsimpis | catalogs = {} |
172 | aaf0a42c | Ilias Tsitsimpis | if user_1['username'] in names: |
173 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_1['username']] = user_1['uuid'] |
174 | aaf0a42c | Ilias Tsitsimpis | if user_2['username'] in names: |
175 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_2['username']] = user_2['uuid'] |
176 | aaf0a42c | Ilias Tsitsimpis | return_catalog = {"displayname_catalog": catalogs, "uuid_catalog": {}} |
177 | aaf0a42c | Ilias Tsitsimpis | else:
|
178 | aaf0a42c | Ilias Tsitsimpis | return_catalog = {"displayname_catalog": {}, "uuid_catalog": {}} |
179 | d4789cd4 | Ilias Tsitsimpis | return (simplejson.dumps(return_catalog), 200) |
180 | 57ba2dfc | Ilias Tsitsimpis | |
181 | 57ba2dfc | Ilias Tsitsimpis | |
182 | 57ba2dfc | Ilias Tsitsimpis | # ----------------------------
|
183 | 57ba2dfc | Ilias Tsitsimpis | # Mock the actual _doRequest
|
184 | 57ba2dfc | Ilias Tsitsimpis | def _mockRequest(new_requests): |
185 | 57ba2dfc | Ilias Tsitsimpis | """Mock the actual request
|
186 | 57ba2dfc | Ilias Tsitsimpis |
|
187 | 57ba2dfc | Ilias Tsitsimpis | Given a list of requests to use (in rotation),
|
188 | 57ba2dfc | Ilias Tsitsimpis | replace the original _doRequest function with
|
189 | 57ba2dfc | Ilias Tsitsimpis | a new one
|
190 | 57ba2dfc | Ilias Tsitsimpis |
|
191 | 57ba2dfc | Ilias Tsitsimpis | """
|
192 | 57ba2dfc | Ilias Tsitsimpis | def _mock(conn, method, url, **kwargs): |
193 | 57ba2dfc | Ilias Tsitsimpis | # Get first request
|
194 | 57ba2dfc | Ilias Tsitsimpis | request = _mock.requests[0]
|
195 | 57ba2dfc | Ilias Tsitsimpis | # Rotate requests
|
196 | 57ba2dfc | Ilias Tsitsimpis | _mock.requests = _mock.requests[1:] + _mock.requests[:1] |
197 | 57ba2dfc | Ilias Tsitsimpis | # Use first request
|
198 | b2a2fe7a | Ilias Tsitsimpis | return request(conn, method, url, **kwargs)
|
199 | 57ba2dfc | Ilias Tsitsimpis | |
200 | 57ba2dfc | Ilias Tsitsimpis | _mock.requests = new_requests |
201 | 57ba2dfc | Ilias Tsitsimpis | # Replace `_doRequest' with our `_mock'
|
202 | 57ba2dfc | Ilias Tsitsimpis | astakosclient._doRequest = _mock |
203 | 57ba2dfc | Ilias Tsitsimpis | |
204 | 57ba2dfc | Ilias Tsitsimpis | |
205 | 57ba2dfc | Ilias Tsitsimpis | # ----------------------------
|
206 | 57ba2dfc | Ilias Tsitsimpis | # Local users
|
207 | 57ba2dfc | Ilias Tsitsimpis | token_1 = "skzleaFlBl+fasFdaf24sx=="
|
208 | 344d5c90 | Ilias Tsitsimpis | user_1 = \ |
209 | 454a1ad4 | Ilias Tsitsimpis | {"username": "user1@example.com", |
210 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_created": 1359386939000, |
211 | 454a1ad4 | Ilias Tsitsimpis | "name": "Example User One", |
212 | 454a1ad4 | Ilias Tsitsimpis | "email": ["user1@example.com"], |
213 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_expires": 1361978939000, |
214 | 454a1ad4 | Ilias Tsitsimpis | "id": 108, |
215 | 344d5c90 | Ilias Tsitsimpis | "uuid": "73917abc-abcd-477e-a1f1-1763abcdefab", |
216 | 344d5c90 | Ilias Tsitsimpis | "usage": [
|
217 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 42949672960, |
218 | 344d5c90 | Ilias Tsitsimpis | "display_name": "System Disk", |
219 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.disk"}, |
220 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 4, |
221 | 344d5c90 | Ilias Tsitsimpis | "display_name": "CPU", |
222 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.cpu"}, |
223 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 4294967296, |
224 | 344d5c90 | Ilias Tsitsimpis | "display_name": "RAM", |
225 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.ram"}, |
226 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 3, |
227 | 344d5c90 | Ilias Tsitsimpis | "display_name": "VM", |
228 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.vm"}, |
229 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 0, |
230 | 344d5c90 | Ilias Tsitsimpis | "display_name": "private network", |
231 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.network.private"}, |
232 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 152, |
233 | 344d5c90 | Ilias Tsitsimpis | "display_name": "Storage Space", |
234 | 344d5c90 | Ilias Tsitsimpis | "name": "pithos+.diskspace"}]} |
235 | 57ba2dfc | Ilias Tsitsimpis | |
236 | 57ba2dfc | Ilias Tsitsimpis | token_2 = "fasdfDSFdf98923DF+sdfk=="
|
237 | 344d5c90 | Ilias Tsitsimpis | user_2 = \ |
238 | 454a1ad4 | Ilias Tsitsimpis | {"username": "user2@example.com", |
239 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_created": 1358386938997, |
240 | 454a1ad4 | Ilias Tsitsimpis | "name": "Example User Two", |
241 | 454a1ad4 | Ilias Tsitsimpis | "email": ["user1@example.com"], |
242 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_expires": 1461998939000, |
243 | 454a1ad4 | Ilias Tsitsimpis | "id": 109, |
244 | 344d5c90 | Ilias Tsitsimpis | "uuid": "73917bca-1234-5678-a1f1-1763abcdefab", |
245 | 344d5c90 | Ilias Tsitsimpis | "usage": [
|
246 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 68719476736, |
247 | 344d5c90 | Ilias Tsitsimpis | "display_name": "System Disk", |
248 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.disk"}, |
249 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 1, |
250 | 344d5c90 | Ilias Tsitsimpis | "display_name": "CPU", |
251 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.cpu"}, |
252 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 1073741824, |
253 | 344d5c90 | Ilias Tsitsimpis | "display_name": "RAM", |
254 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.ram"}, |
255 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 2, |
256 | 344d5c90 | Ilias Tsitsimpis | "display_name": "VM", |
257 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.vm"}, |
258 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 1, |
259 | 344d5c90 | Ilias Tsitsimpis | "display_name": "private network", |
260 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.network.private"}, |
261 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 2341634510, |
262 | 344d5c90 | Ilias Tsitsimpis | "display_name": "Storage Space", |
263 | 344d5c90 | Ilias Tsitsimpis | "name": "pithos+.diskspace"}]} |
264 | bc56a641 | Ilias Tsitsimpis | |
265 | bc56a641 | Ilias Tsitsimpis | |
266 | bc56a641 | Ilias Tsitsimpis | # --------------------------------------------------------------------
|
267 | bc56a641 | Ilias Tsitsimpis | # The actual tests
|
268 | bc56a641 | Ilias Tsitsimpis | |
269 | bc56a641 | Ilias Tsitsimpis | class TestCallAstakos(unittest.TestCase): |
270 | bc56a641 | Ilias Tsitsimpis | """Test cases for function _callAstakos"""
|
271 | bc56a641 | Ilias Tsitsimpis | |
272 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
273 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we don't have internet access
|
274 | b2a2fe7a | Ilias Tsitsimpis | def _offline(self, pool): |
275 | bc56a641 | Ilias Tsitsimpis | global token_1
|
276 | bc56a641 | Ilias Tsitsimpis | _mockRequest([_requestOffline]) |
277 | bc56a641 | Ilias Tsitsimpis | try:
|
278 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
279 | 98752f06 | Ilias Tsitsimpis | client._callAstakos(token_1, "/im/authenticate")
|
280 | 66208bc7 | Ilias Tsitsimpis | except AstakosClientException:
|
281 | bc56a641 | Ilias Tsitsimpis | pass
|
282 | bc56a641 | Ilias Tsitsimpis | else:
|
283 | 66208bc7 | Ilias Tsitsimpis | self.fail("Should have raised AstakosClientException") |
284 | bc56a641 | Ilias Tsitsimpis | |
285 | b2a2fe7a | Ilias Tsitsimpis | def test_Offline(self): |
286 | b2a2fe7a | Ilias Tsitsimpis | """Test _offline without pool"""
|
287 | b2a2fe7a | Ilias Tsitsimpis | self._offline(False) |
288 | b2a2fe7a | Ilias Tsitsimpis | |
289 | bc56a641 | Ilias Tsitsimpis | def test_OfflinePool(self): |
290 | b2a2fe7a | Ilias Tsitsimpis | """Test _offline using pool"""
|
291 | b2a2fe7a | Ilias Tsitsimpis | self._offline(True) |
292 | b2a2fe7a | Ilias Tsitsimpis | |
293 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
294 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we send invalid token
|
295 | b2a2fe7a | Ilias Tsitsimpis | def _invalidToken(self, pool): |
296 | b2a2fe7a | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
297 | b2a2fe7a | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
298 | b2a2fe7a | Ilias Tsitsimpis | try:
|
299 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
300 | 98752f06 | Ilias Tsitsimpis | client._callAstakos(token, "/im/authenticate")
|
301 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
302 | 8fe6475a | Ilias Tsitsimpis | pass
|
303 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
304 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
305 | b2a2fe7a | Ilias Tsitsimpis | else:
|
306 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
307 | b2a2fe7a | Ilias Tsitsimpis | |
308 | b2a2fe7a | Ilias Tsitsimpis | def test_InvalidToken(self): |
309 | b2a2fe7a | Ilias Tsitsimpis | """Test _invalidToken without pool"""
|
310 | b2a2fe7a | Ilias Tsitsimpis | self._invalidToken(False) |
311 | b2a2fe7a | Ilias Tsitsimpis | |
312 | b2a2fe7a | Ilias Tsitsimpis | def test_InvalidTokenPool(self): |
313 | b2a2fe7a | Ilias Tsitsimpis | """Test _invalidToken using pool"""
|
314 | b2a2fe7a | Ilias Tsitsimpis | self._invalidToken(True) |
315 | b2a2fe7a | Ilias Tsitsimpis | |
316 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
317 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we send invalid url
|
318 | b2a2fe7a | Ilias Tsitsimpis | def _invalidUrl(self, pool): |
319 | bc56a641 | Ilias Tsitsimpis | global token_1
|
320 | b2a2fe7a | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
321 | bc56a641 | Ilias Tsitsimpis | try:
|
322 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
323 | 98752f06 | Ilias Tsitsimpis | client._callAstakos(token_1, "/im/misspelled")
|
324 | f93cc364 | Ilias Tsitsimpis | except NotFound:
|
325 | 8fe6475a | Ilias Tsitsimpis | pass
|
326 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
327 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 404 (Not Found)") |
328 | b2a2fe7a | Ilias Tsitsimpis | else:
|
329 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 404 (Not Found)") |
330 | b2a2fe7a | Ilias Tsitsimpis | |
331 | b2a2fe7a | Ilias Tsitsimpis | def test_InvalidUrl(self): |
332 | b2a2fe7a | Ilias Tsitsimpis | """Test _invalidUrl without pool"""
|
333 | b2a2fe7a | Ilias Tsitsimpis | self._invalidUrl(False) |
334 | b2a2fe7a | Ilias Tsitsimpis | |
335 | b2a2fe7a | Ilias Tsitsimpis | def test_invalidUrlPool(self): |
336 | b2a2fe7a | Ilias Tsitsimpis | """Test _invalidUrl using pool"""
|
337 | b2a2fe7a | Ilias Tsitsimpis | self._invalidUrl(True) |
338 | b2a2fe7a | Ilias Tsitsimpis | |
339 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
340 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we use an unsupported scheme
|
341 | b2a2fe7a | Ilias Tsitsimpis | def _unsupportedScheme(self, pool): |
342 | b2a2fe7a | Ilias Tsitsimpis | global token_1
|
343 | b2a2fe7a | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
344 | b2a2fe7a | Ilias Tsitsimpis | try:
|
345 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("ftp://example.com", use_pool=pool)
|
346 | 98752f06 | Ilias Tsitsimpis | client._callAstakos(token_1, "/im/authenticate")
|
347 | b2a2fe7a | Ilias Tsitsimpis | except ValueError: |
348 | bc56a641 | Ilias Tsitsimpis | pass
|
349 | bc56a641 | Ilias Tsitsimpis | except Exception: |
350 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have raise ValueError Exception") |
351 | bc56a641 | Ilias Tsitsimpis | else:
|
352 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have raise ValueError Exception") |
353 | b2a2fe7a | Ilias Tsitsimpis | |
354 | b2a2fe7a | Ilias Tsitsimpis | def test_UnsupportedScheme(self): |
355 | b2a2fe7a | Ilias Tsitsimpis | """Test _unsupportedScheme without pool"""
|
356 | b2a2fe7a | Ilias Tsitsimpis | self._unsupportedScheme(False) |
357 | b2a2fe7a | Ilias Tsitsimpis | |
358 | b2a2fe7a | Ilias Tsitsimpis | def test_UnsupportedSchemePool(self): |
359 | b2a2fe7a | Ilias Tsitsimpis | """Test _unsupportedScheme using pool"""
|
360 | b2a2fe7a | Ilias Tsitsimpis | self._unsupportedScheme(True) |
361 | b2a2fe7a | Ilias Tsitsimpis | |
362 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
363 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we use http instead of https
|
364 | b2a2fe7a | Ilias Tsitsimpis | def _httpScheme(self, pool): |
365 | b2a2fe7a | Ilias Tsitsimpis | global token_1
|
366 | b2a2fe7a | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
367 | b2a2fe7a | Ilias Tsitsimpis | try:
|
368 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("http://example.com", use_pool=pool)
|
369 | 98752f06 | Ilias Tsitsimpis | client._callAstakos(token_1, "/im/authenticate")
|
370 | 66208bc7 | Ilias Tsitsimpis | except AstakosClientException as err: |
371 | 66208bc7 | Ilias Tsitsimpis | if err.status != 302: |
372 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 302 (Found)") |
373 | b2a2fe7a | Ilias Tsitsimpis | else:
|
374 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 302 (Found)") |
375 | b2a2fe7a | Ilias Tsitsimpis | |
376 | b2a2fe7a | Ilias Tsitsimpis | def test_HttpScheme(self): |
377 | b2a2fe7a | Ilias Tsitsimpis | """Test _httpScheme without pool"""
|
378 | b2a2fe7a | Ilias Tsitsimpis | self._httpScheme(False) |
379 | b2a2fe7a | Ilias Tsitsimpis | |
380 | b2a2fe7a | Ilias Tsitsimpis | def test_HttpSchemePool(self): |
381 | b2a2fe7a | Ilias Tsitsimpis | """Test _httpScheme using pool"""
|
382 | b2a2fe7a | Ilias Tsitsimpis | self._httpScheme(True) |
383 | b2a2fe7a | Ilias Tsitsimpis | |
384 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
385 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we use authenticate with POST
|
386 | b2a2fe7a | Ilias Tsitsimpis | def _postAuthenticate(self, pool): |
387 | b2a2fe7a | Ilias Tsitsimpis | global token_1
|
388 | b2a2fe7a | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
389 | b2a2fe7a | Ilias Tsitsimpis | try:
|
390 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
391 | 98752f06 | Ilias Tsitsimpis | client._callAstakos(token_1, "/im/authenticate", method="POST") |
392 | f93cc364 | Ilias Tsitsimpis | except BadRequest:
|
393 | 8fe6475a | Ilias Tsitsimpis | pass
|
394 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
395 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
396 | b2a2fe7a | Ilias Tsitsimpis | else:
|
397 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
398 | b2a2fe7a | Ilias Tsitsimpis | |
399 | b2a2fe7a | Ilias Tsitsimpis | def test_PostAuthenticate(self): |
400 | b2a2fe7a | Ilias Tsitsimpis | """Test _postAuthenticate without pool"""
|
401 | b2a2fe7a | Ilias Tsitsimpis | self._postAuthenticate(False) |
402 | b2a2fe7a | Ilias Tsitsimpis | |
403 | b2a2fe7a | Ilias Tsitsimpis | def test_PostAuthenticatePool(self): |
404 | b2a2fe7a | Ilias Tsitsimpis | """Test _postAuthenticate using pool"""
|
405 | b2a2fe7a | Ilias Tsitsimpis | self._postAuthenticate(True) |
406 | bc56a641 | Ilias Tsitsimpis | |
407 | d071e6f1 | Ilias Tsitsimpis | # ----------------------------------
|
408 | d071e6f1 | Ilias Tsitsimpis | # Test the response if we request user_catalogs with GET
|
409 | d071e6f1 | Ilias Tsitsimpis | def _getUserCatalogs(self, pool): |
410 | d071e6f1 | Ilias Tsitsimpis | global token_1
|
411 | d071e6f1 | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
412 | d071e6f1 | Ilias Tsitsimpis | try:
|
413 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
414 | 98752f06 | Ilias Tsitsimpis | client._callAstakos(token_1, "/user_catalogs")
|
415 | f93cc364 | Ilias Tsitsimpis | except BadRequest:
|
416 | 8fe6475a | Ilias Tsitsimpis | pass
|
417 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
418 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
419 | d071e6f1 | Ilias Tsitsimpis | else:
|
420 | d071e6f1 | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
421 | d071e6f1 | Ilias Tsitsimpis | |
422 | d071e6f1 | Ilias Tsitsimpis | def test_GetUserCatalogs(self): |
423 | d071e6f1 | Ilias Tsitsimpis | """Test _getUserCatalogs without pool"""
|
424 | d071e6f1 | Ilias Tsitsimpis | self._getUserCatalogs(False) |
425 | d071e6f1 | Ilias Tsitsimpis | |
426 | d071e6f1 | Ilias Tsitsimpis | def test_GetUserCatalogsPool(self): |
427 | d071e6f1 | Ilias Tsitsimpis | """Test _getUserCatalogs using pool"""
|
428 | d071e6f1 | Ilias Tsitsimpis | self._getUserCatalogs(True) |
429 | d071e6f1 | Ilias Tsitsimpis | |
430 | bc56a641 | Ilias Tsitsimpis | |
431 | 864eb390 | Ilias Tsitsimpis | class TestAuthenticate(unittest.TestCase): |
432 | 864eb390 | Ilias Tsitsimpis | """Test cases for function authenticate"""
|
433 | 864eb390 | Ilias Tsitsimpis | |
434 | 864eb390 | Ilias Tsitsimpis | # ----------------------------------
|
435 | 864eb390 | Ilias Tsitsimpis | # Test the response we get if we don't have internet access
|
436 | 864eb390 | Ilias Tsitsimpis | def test_Offline(self): |
437 | 864eb390 | Ilias Tsitsimpis | """Test offline after 3 retries"""
|
438 | 864eb390 | Ilias Tsitsimpis | global token_1
|
439 | 864eb390 | Ilias Tsitsimpis | _mockRequest([_requestOffline]) |
440 | 864eb390 | Ilias Tsitsimpis | try:
|
441 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", retry=3) |
442 | 98752f06 | Ilias Tsitsimpis | client.authenticate(token_1) |
443 | 864eb390 | Ilias Tsitsimpis | except AstakosClientException:
|
444 | 864eb390 | Ilias Tsitsimpis | pass
|
445 | 864eb390 | Ilias Tsitsimpis | else:
|
446 | 864eb390 | Ilias Tsitsimpis | self.fail("Should have raised AstakosClientException exception") |
447 | 864eb390 | Ilias Tsitsimpis | |
448 | 864eb390 | Ilias Tsitsimpis | # ----------------------------------
|
449 | 864eb390 | Ilias Tsitsimpis | # Test the response we get for invalid token
|
450 | 864eb390 | Ilias Tsitsimpis | def _invalidToken(self, pool): |
451 | 864eb390 | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
452 | 864eb390 | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
453 | 864eb390 | Ilias Tsitsimpis | try:
|
454 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
455 | 98752f06 | Ilias Tsitsimpis | client.authenticate(token) |
456 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
457 | 8fe6475a | Ilias Tsitsimpis | pass
|
458 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
459 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
460 | 864eb390 | Ilias Tsitsimpis | else:
|
461 | d4789cd4 | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
462 | 864eb390 | Ilias Tsitsimpis | |
463 | 864eb390 | Ilias Tsitsimpis | def test_InvalidToken(self): |
464 | 864eb390 | Ilias Tsitsimpis | """Test _invalidToken without pool"""
|
465 | 864eb390 | Ilias Tsitsimpis | self._invalidToken(False) |
466 | 864eb390 | Ilias Tsitsimpis | |
467 | 864eb390 | Ilias Tsitsimpis | def test_InvalidTokenPool(self): |
468 | 864eb390 | Ilias Tsitsimpis | """Test _invalidToken using pool"""
|
469 | 864eb390 | Ilias Tsitsimpis | self._invalidToken(True) |
470 | 864eb390 | Ilias Tsitsimpis | |
471 | 864eb390 | Ilias Tsitsimpis | #- ---------------------------------
|
472 | 864eb390 | Ilias Tsitsimpis | # Test response for user 1
|
473 | 864eb390 | Ilias Tsitsimpis | def _authUser(self, token, user_info, usage, pool): |
474 | 864eb390 | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
475 | 864eb390 | Ilias Tsitsimpis | try:
|
476 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
477 | 98752f06 | Ilias Tsitsimpis | auth_info = client.authenticate(token, usage=usage) |
478 | 864eb390 | Ilias Tsitsimpis | except:
|
479 | 864eb390 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
480 | 864eb390 | Ilias Tsitsimpis | self.assertEqual(user_info, auth_info)
|
481 | 864eb390 | Ilias Tsitsimpis | |
482 | 864eb390 | Ilias Tsitsimpis | def test_AuthUserOne(self): |
483 | 864eb390 | Ilias Tsitsimpis | """Test _authUser for User 1 without pool, without usage"""
|
484 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
485 | 864eb390 | Ilias Tsitsimpis | user_info = dict(user_1)
|
486 | 864eb390 | Ilias Tsitsimpis | del user_info['usage'] |
487 | 864eb390 | Ilias Tsitsimpis | self._authUser(token_1, user_info, False, False) |
488 | 864eb390 | Ilias Tsitsimpis | |
489 | 864eb390 | Ilias Tsitsimpis | def test_AuthUserOneUsage(self): |
490 | 864eb390 | Ilias Tsitsimpis | """Test _authUser for User 1 without pool, with usage"""
|
491 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
492 | 864eb390 | Ilias Tsitsimpis | self._authUser(token_1, user_1, True, False) |
493 | 864eb390 | Ilias Tsitsimpis | |
494 | 864eb390 | Ilias Tsitsimpis | def test_AuthUserOneUsagePool(self): |
495 | 864eb390 | Ilias Tsitsimpis | """Test _authUser for User 1 using pool, with usage"""
|
496 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
497 | 864eb390 | Ilias Tsitsimpis | self._authUser(token_1, user_1, True, True) |
498 | 864eb390 | Ilias Tsitsimpis | |
499 | 864eb390 | Ilias Tsitsimpis | def test_AuthUserTwo(self): |
500 | 864eb390 | Ilias Tsitsimpis | """Test _authUser for User 2 without pool, without usage"""
|
501 | 864eb390 | Ilias Tsitsimpis | global token_2, user_2
|
502 | 864eb390 | Ilias Tsitsimpis | user_info = dict(user_2)
|
503 | 864eb390 | Ilias Tsitsimpis | del user_info['usage'] |
504 | 864eb390 | Ilias Tsitsimpis | self._authUser(token_2, user_info, False, False) |
505 | 864eb390 | Ilias Tsitsimpis | |
506 | 864eb390 | Ilias Tsitsimpis | def test_AuthUserTwoUsage(self): |
507 | 864eb390 | Ilias Tsitsimpis | """Test _authUser for User 2 without pool, with usage"""
|
508 | 864eb390 | Ilias Tsitsimpis | global token_2, user_2
|
509 | 864eb390 | Ilias Tsitsimpis | self._authUser(token_2, user_2, True, False) |
510 | 864eb390 | Ilias Tsitsimpis | |
511 | 864eb390 | Ilias Tsitsimpis | def test_AuthUserTwoUsagePool(self): |
512 | 864eb390 | Ilias Tsitsimpis | """Test _authUser for User 2 using pool, with usage"""
|
513 | 864eb390 | Ilias Tsitsimpis | global token_2, user_2
|
514 | 864eb390 | Ilias Tsitsimpis | self._authUser(token_2, user_2, True, True) |
515 | 864eb390 | Ilias Tsitsimpis | |
516 | 864eb390 | Ilias Tsitsimpis | # ----------------------------------
|
517 | 864eb390 | Ilias Tsitsimpis | # Test retry functionality
|
518 | 864eb390 | Ilias Tsitsimpis | def test_OfflineRetry(self): |
519 | 864eb390 | Ilias Tsitsimpis | """Test retry functionality for authentication"""
|
520 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
521 | 864eb390 | Ilias Tsitsimpis | _mockRequest([_requestOffline, _requestOffline, _requestOk]) |
522 | 864eb390 | Ilias Tsitsimpis | try:
|
523 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", retry=2) |
524 | 98752f06 | Ilias Tsitsimpis | auth_info = client.authenticate(token_1, usage=True)
|
525 | 864eb390 | Ilias Tsitsimpis | except:
|
526 | 864eb390 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
527 | 864eb390 | Ilias Tsitsimpis | self.assertEqual(user_1, auth_info)
|
528 | 454a1ad4 | Ilias Tsitsimpis | |
529 | 454a1ad4 | Ilias Tsitsimpis | |
530 | d4789cd4 | Ilias Tsitsimpis | class TestDisplayNames(unittest.TestCase): |
531 | d4789cd4 | Ilias Tsitsimpis | """Test cases for functions getDisplayNames/getDisplayName"""
|
532 | d4789cd4 | Ilias Tsitsimpis | |
533 | d4789cd4 | Ilias Tsitsimpis | # ----------------------------------
|
534 | d4789cd4 | Ilias Tsitsimpis | # Test the response we get for invalid token
|
535 | d4789cd4 | Ilias Tsitsimpis | def test_InvalidToken(self): |
536 | d4789cd4 | Ilias Tsitsimpis | """Test the response we get for invalid token (without pool)"""
|
537 | d4789cd4 | Ilias Tsitsimpis | global user_1
|
538 | d4789cd4 | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
539 | d4789cd4 | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
540 | d4789cd4 | Ilias Tsitsimpis | try:
|
541 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
542 | 98752f06 | Ilias Tsitsimpis | client.getDisplayNames(token, [user_1['uuid']])
|
543 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
544 | 8fe6475a | Ilias Tsitsimpis | pass
|
545 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
546 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
547 | d4789cd4 | Ilias Tsitsimpis | else:
|
548 | d4789cd4 | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
549 | d4789cd4 | Ilias Tsitsimpis | |
550 | d4789cd4 | Ilias Tsitsimpis | # ----------------------------------
|
551 | d4789cd4 | Ilias Tsitsimpis | # Get Info for both users
|
552 | aaf0a42c | Ilias Tsitsimpis | def test_DisplayNames(self): |
553 | d4789cd4 | Ilias Tsitsimpis | """Test getDisplayNames with both users"""
|
554 | d4789cd4 | Ilias Tsitsimpis | global token_1, user_1, user_2
|
555 | d4789cd4 | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
556 | d4789cd4 | Ilias Tsitsimpis | try:
|
557 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
558 | 98752f06 | Ilias Tsitsimpis | catalog = client.getDisplayNames( |
559 | 98752f06 | Ilias Tsitsimpis | token_1, [user_1['uuid'], user_2['uuid']]) |
560 | d4789cd4 | Ilias Tsitsimpis | except:
|
561 | d4789cd4 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
562 | d4789cd4 | Ilias Tsitsimpis | self.assertEqual(catalog[user_1['uuid']], user_1['username']) |
563 | d4789cd4 | Ilias Tsitsimpis | self.assertEqual(catalog[user_2['uuid']], user_2['username']) |
564 | d4789cd4 | Ilias Tsitsimpis | |
565 | d4789cd4 | Ilias Tsitsimpis | # ----------------------------------
|
566 | d4789cd4 | Ilias Tsitsimpis | # Get info for user 1
|
567 | d4789cd4 | Ilias Tsitsimpis | def test_DisplayNameUserOne(self): |
568 | d4789cd4 | Ilias Tsitsimpis | """Test getDisplayName for User One"""
|
569 | d4789cd4 | Ilias Tsitsimpis | global token_2, user_1
|
570 | d4789cd4 | Ilias Tsitsimpis | _mockRequest([_requestOffline, _requestOk]) |
571 | d4789cd4 | Ilias Tsitsimpis | try:
|
572 | d4789cd4 | Ilias Tsitsimpis | client = AstakosClient( |
573 | 98752f06 | Ilias Tsitsimpis | "https://example.com", use_pool=True, retry=2) |
574 | 98752f06 | Ilias Tsitsimpis | info = client.getDisplayName(token_2, user_1['uuid'])
|
575 | d4789cd4 | Ilias Tsitsimpis | except:
|
576 | d4789cd4 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
577 | d4789cd4 | Ilias Tsitsimpis | self.assertEqual(info, user_1['username']) |
578 | d4789cd4 | Ilias Tsitsimpis | |
579 | 2377e7c2 | Ilias Tsitsimpis | # ----------------------------------
|
580 | 2377e7c2 | Ilias Tsitsimpis | # Get info with wrong uuid
|
581 | 2377e7c2 | Ilias Tsitsimpis | def test_NoDisplayName(self): |
582 | 2377e7c2 | Ilias Tsitsimpis | global token_1
|
583 | 2377e7c2 | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
584 | 2377e7c2 | Ilias Tsitsimpis | try:
|
585 | 2377e7c2 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
586 | 2377e7c2 | Ilias Tsitsimpis | client.getDisplayName(token_1, "1234")
|
587 | 2377e7c2 | Ilias Tsitsimpis | except NoDisplayName:
|
588 | 2377e7c2 | Ilias Tsitsimpis | pass
|
589 | 2377e7c2 | Ilias Tsitsimpis | except:
|
590 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoDisplayName exception") |
591 | 2377e7c2 | Ilias Tsitsimpis | else:
|
592 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoDisplayName exception") |
593 | 2377e7c2 | Ilias Tsitsimpis | |
594 | d4789cd4 | Ilias Tsitsimpis | |
595 | aaf0a42c | Ilias Tsitsimpis | class TestGetUUIDs(unittest.TestCase): |
596 | aaf0a42c | Ilias Tsitsimpis | """Test cases for functions getUUIDs/getUUID"""
|
597 | aaf0a42c | Ilias Tsitsimpis | |
598 | aaf0a42c | Ilias Tsitsimpis | # ----------------------------------
|
599 | aaf0a42c | Ilias Tsitsimpis | # Test the response we get for invalid token
|
600 | aaf0a42c | Ilias Tsitsimpis | def test_InvalidToken(self): |
601 | aaf0a42c | Ilias Tsitsimpis | """Test the response we get for invalid token (using pool)"""
|
602 | aaf0a42c | Ilias Tsitsimpis | global user_1
|
603 | aaf0a42c | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
604 | aaf0a42c | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
605 | aaf0a42c | Ilias Tsitsimpis | try:
|
606 | aaf0a42c | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
607 | aaf0a42c | Ilias Tsitsimpis | client.getUUIDs(token, [user_1['username']])
|
608 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
609 | 8fe6475a | Ilias Tsitsimpis | pass
|
610 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
611 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
612 | aaf0a42c | Ilias Tsitsimpis | else:
|
613 | aaf0a42c | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
614 | aaf0a42c | Ilias Tsitsimpis | |
615 | aaf0a42c | Ilias Tsitsimpis | # ----------------------------------
|
616 | aaf0a42c | Ilias Tsitsimpis | # Get info for both users
|
617 | aaf0a42c | Ilias Tsitsimpis | def test_UUIDs(self): |
618 | aaf0a42c | Ilias Tsitsimpis | """Test getUUIDs with both users"""
|
619 | aaf0a42c | Ilias Tsitsimpis | global token_1, user_1, user_2
|
620 | aaf0a42c | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
621 | aaf0a42c | Ilias Tsitsimpis | try:
|
622 | aaf0a42c | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
623 | aaf0a42c | Ilias Tsitsimpis | catalog = client.getUUIDs( |
624 | aaf0a42c | Ilias Tsitsimpis | token_1, [user_1['username'], user_2['username']]) |
625 | aaf0a42c | Ilias Tsitsimpis | except:
|
626 | aaf0a42c | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
627 | aaf0a42c | Ilias Tsitsimpis | self.assertEqual(catalog[user_1['username']], user_1['uuid']) |
628 | aaf0a42c | Ilias Tsitsimpis | self.assertEqual(catalog[user_2['username']], user_2['uuid']) |
629 | aaf0a42c | Ilias Tsitsimpis | |
630 | aaf0a42c | Ilias Tsitsimpis | # ----------------------------------
|
631 | aaf0a42c | Ilias Tsitsimpis | # Get uuid for user 2
|
632 | aaf0a42c | Ilias Tsitsimpis | def test_GetUUIDUserTwo(self): |
633 | aaf0a42c | Ilias Tsitsimpis | """Test getUUID for User Two"""
|
634 | aaf0a42c | Ilias Tsitsimpis | global token_1, user_2
|
635 | aaf0a42c | Ilias Tsitsimpis | _mockRequest([_requestOffline, _requestOk]) |
636 | aaf0a42c | Ilias Tsitsimpis | try:
|
637 | aaf0a42c | Ilias Tsitsimpis | client = AstakosClient("https://example.com", retry=1) |
638 | aaf0a42c | Ilias Tsitsimpis | info = client.getUUID(token_2, user_1['username'])
|
639 | aaf0a42c | Ilias Tsitsimpis | except:
|
640 | aaf0a42c | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
641 | aaf0a42c | Ilias Tsitsimpis | self.assertEqual(info, user_1['uuid']) |
642 | aaf0a42c | Ilias Tsitsimpis | |
643 | 2377e7c2 | Ilias Tsitsimpis | # ----------------------------------
|
644 | 2377e7c2 | Ilias Tsitsimpis | # Get uuid with wrong username
|
645 | 2377e7c2 | Ilias Tsitsimpis | def test_NoUUID(self): |
646 | 2377e7c2 | Ilias Tsitsimpis | global token_1
|
647 | 2377e7c2 | Ilias Tsitsimpis | _mockRequest([_requestOk]) |
648 | 2377e7c2 | Ilias Tsitsimpis | try:
|
649 | 2377e7c2 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
650 | 2377e7c2 | Ilias Tsitsimpis | client.getUUID(token_1, "1234")
|
651 | 2377e7c2 | Ilias Tsitsimpis | except NoUUID:
|
652 | 2377e7c2 | Ilias Tsitsimpis | pass
|
653 | 2377e7c2 | Ilias Tsitsimpis | except:
|
654 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoUUID exception") |
655 | 2377e7c2 | Ilias Tsitsimpis | else:
|
656 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoUUID exception") |
657 | 2377e7c2 | Ilias Tsitsimpis | |
658 | aaf0a42c | Ilias Tsitsimpis | |
659 | bc56a641 | Ilias Tsitsimpis | # ----------------------------
|
660 | bc56a641 | Ilias Tsitsimpis | # Run tests
|
661 | bc56a641 | Ilias Tsitsimpis | if __name__ == "__main__": |
662 | bc56a641 | Ilias Tsitsimpis | unittest.main() |