root / astakosclient / astakosclient / tests.py @ 21190887
History | View | Annotate | Download (22.6 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 | 794c94e6 | Ilias Tsitsimpis | NoUserName, 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 | 794c94e6 | Ilias Tsitsimpis | def _request_offline(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 | 794c94e6 | Ilias Tsitsimpis | def _request_status_302(conn, method, url, **kwargs): |
73 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 302"""
|
74 | 21190887 | Ilias Tsitsimpis | message = "FOUND"
|
75 | 57ba2dfc | Ilias Tsitsimpis | status = 302
|
76 | 57ba2dfc | Ilias Tsitsimpis | data = '<html>\r\n<head><title>302 Found</title></head>\r\n' \
|
77 | 57ba2dfc | Ilias Tsitsimpis | '<body bgcolor="white">\r\n<center><h1>302 Found</h1></center>\r\n' \
|
78 | 57ba2dfc | Ilias Tsitsimpis | '<hr><center>nginx/0.7.67</center>\r\n</body>\r\n</html>\r\n'
|
79 | 21190887 | Ilias Tsitsimpis | return (message, data, status)
|
80 | 57ba2dfc | Ilias Tsitsimpis | |
81 | 57ba2dfc | Ilias Tsitsimpis | |
82 | 794c94e6 | Ilias Tsitsimpis | def _request_status_404(conn, method, url, **kwargs): |
83 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 404"""
|
84 | 21190887 | Ilias Tsitsimpis | message = "Not Found"
|
85 | 57ba2dfc | Ilias Tsitsimpis | status = 404
|
86 | 57ba2dfc | Ilias Tsitsimpis | data = '<html><head><title>404 Not Found</title></head>' \
|
87 | 57ba2dfc | Ilias Tsitsimpis | '<body><h1>Not Found</h1><p>The requested URL /foo was ' \
|
88 | 57ba2dfc | Ilias Tsitsimpis | 'not found on this server.</p><hr><address>Apache Server ' \
|
89 | 57ba2dfc | Ilias Tsitsimpis | 'at example.com Port 80</address></body></html>'
|
90 | 21190887 | Ilias Tsitsimpis | return (message, data, status)
|
91 | 57ba2dfc | Ilias Tsitsimpis | |
92 | 57ba2dfc | Ilias Tsitsimpis | |
93 | 794c94e6 | Ilias Tsitsimpis | def _request_status_401(conn, method, url, **kwargs): |
94 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 401"""
|
95 | 21190887 | Ilias Tsitsimpis | message = "UNAUTHORIZED"
|
96 | 57ba2dfc | Ilias Tsitsimpis | status = 401
|
97 | 57ba2dfc | Ilias Tsitsimpis | data = "Invalid X-Auth-Token\n"
|
98 | 21190887 | Ilias Tsitsimpis | return (message, data, status)
|
99 | 57ba2dfc | Ilias Tsitsimpis | |
100 | 57ba2dfc | Ilias Tsitsimpis | |
101 | 794c94e6 | Ilias Tsitsimpis | def _request_status_400(conn, method, url, **kwargs): |
102 | 57ba2dfc | Ilias Tsitsimpis | """This request returns 400"""
|
103 | 21190887 | Ilias Tsitsimpis | message = "BAD REQUEST"
|
104 | 57ba2dfc | Ilias Tsitsimpis | status = 400
|
105 | 57ba2dfc | Ilias Tsitsimpis | data = "Method not allowed.\n"
|
106 | 21190887 | Ilias Tsitsimpis | return (message, data, status)
|
107 | 57ba2dfc | Ilias Tsitsimpis | |
108 | 57ba2dfc | Ilias Tsitsimpis | |
109 | 794c94e6 | Ilias Tsitsimpis | def _request_ok(conn, method, url, **kwargs): |
110 | 57ba2dfc | Ilias Tsitsimpis | """This request behaves like original Astakos does"""
|
111 | 66208bc7 | Ilias Tsitsimpis | if url[0:16] == "/im/authenticate": |
112 | 794c94e6 | Ilias Tsitsimpis | return _req_authenticate(conn, method, url, **kwargs)
|
113 | 66208bc7 | Ilias Tsitsimpis | elif url[0:14] == "/user_catalogs": |
114 | 794c94e6 | Ilias Tsitsimpis | return _req_catalogs(conn, method, url, **kwargs)
|
115 | 57ba2dfc | Ilias Tsitsimpis | else:
|
116 | 794c94e6 | Ilias Tsitsimpis | return _request_status_404(conn, method, url, **kwargs)
|
117 | 57ba2dfc | Ilias Tsitsimpis | |
118 | 57ba2dfc | Ilias Tsitsimpis | |
119 | 794c94e6 | Ilias Tsitsimpis | def _req_authenticate(conn, method, url, **kwargs): |
120 | 57ba2dfc | Ilias Tsitsimpis | """Check if user exists and return his profile"""
|
121 | 344d5c90 | Ilias Tsitsimpis | global user_1, user_2
|
122 | 57ba2dfc | Ilias Tsitsimpis | |
123 | d4789cd4 | Ilias Tsitsimpis | # Check input
|
124 | 57ba2dfc | Ilias Tsitsimpis | if conn.__class__.__name__ != "HTTPSConnection": |
125 | 794c94e6 | Ilias Tsitsimpis | return _request_status_302(conn, method, url, **kwargs)
|
126 | 57ba2dfc | Ilias Tsitsimpis | |
127 | 57ba2dfc | Ilias Tsitsimpis | if method != "GET": |
128 | 794c94e6 | Ilias Tsitsimpis | return _request_status_400(conn, method, url, **kwargs)
|
129 | 57ba2dfc | Ilias Tsitsimpis | |
130 | 57ba2dfc | Ilias Tsitsimpis | token = kwargs['headers']['X-Auth-Token'] |
131 | 57ba2dfc | Ilias Tsitsimpis | if token == token_1:
|
132 | 344d5c90 | Ilias Tsitsimpis | user = dict(user_1)
|
133 | 57ba2dfc | Ilias Tsitsimpis | elif token == token_2:
|
134 | 344d5c90 | Ilias Tsitsimpis | user = dict(user_2)
|
135 | 57ba2dfc | Ilias Tsitsimpis | else:
|
136 | 57ba2dfc | Ilias Tsitsimpis | # No user found
|
137 | 794c94e6 | Ilias Tsitsimpis | return _request_status_401(conn, method, url, **kwargs)
|
138 | 57ba2dfc | Ilias Tsitsimpis | |
139 | d4789cd4 | Ilias Tsitsimpis | # Return
|
140 | 344d5c90 | Ilias Tsitsimpis | if "usage=1" not in url: |
141 | 57ba2dfc | Ilias Tsitsimpis | # Strip `usage' key from `user'
|
142 | 344d5c90 | Ilias Tsitsimpis | del user['usage'] |
143 | 21190887 | Ilias Tsitsimpis | return ("", simplejson.dumps(user), 200) |
144 | 57ba2dfc | Ilias Tsitsimpis | |
145 | 57ba2dfc | Ilias Tsitsimpis | |
146 | 794c94e6 | Ilias Tsitsimpis | def _req_catalogs(conn, method, url, **kwargs): |
147 | 57ba2dfc | Ilias Tsitsimpis | """Return user catalogs"""
|
148 | d071e6f1 | Ilias Tsitsimpis | global token_1, token_2, user_1, user_2
|
149 | d071e6f1 | Ilias Tsitsimpis | |
150 | d4789cd4 | Ilias Tsitsimpis | # Check input
|
151 | d071e6f1 | Ilias Tsitsimpis | if conn.__class__.__name__ != "HTTPSConnection": |
152 | 794c94e6 | Ilias Tsitsimpis | return _request_status_302(conn, method, url, **kwargs)
|
153 | d071e6f1 | Ilias Tsitsimpis | |
154 | d071e6f1 | Ilias Tsitsimpis | if method != "POST": |
155 | 794c94e6 | Ilias Tsitsimpis | return _request_status_400(conn, method, url, **kwargs)
|
156 | d071e6f1 | Ilias Tsitsimpis | |
157 | d4789cd4 | Ilias Tsitsimpis | token = kwargs['headers']['X-Auth-Token'] |
158 | d4789cd4 | Ilias Tsitsimpis | if token != token_1 and token != token_2: |
159 | 794c94e6 | Ilias Tsitsimpis | return _request_status_401(conn, method, url, **kwargs)
|
160 | d4789cd4 | Ilias Tsitsimpis | |
161 | d4789cd4 | Ilias Tsitsimpis | # Return
|
162 | d4789cd4 | Ilias Tsitsimpis | body = simplejson.loads(kwargs['body'])
|
163 | aaf0a42c | Ilias Tsitsimpis | if 'uuids' in body: |
164 | aaf0a42c | Ilias Tsitsimpis | # Return uuid_catalog
|
165 | aaf0a42c | Ilias Tsitsimpis | uuids = body['uuids']
|
166 | aaf0a42c | Ilias Tsitsimpis | catalogs = {} |
167 | aaf0a42c | Ilias Tsitsimpis | if user_1['uuid'] in uuids: |
168 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_1['uuid']] = user_1['username'] |
169 | aaf0a42c | Ilias Tsitsimpis | if user_2['uuid'] in uuids: |
170 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_2['uuid']] = user_2['username'] |
171 | aaf0a42c | Ilias Tsitsimpis | return_catalog = {"displayname_catalog": {}, "uuid_catalog": catalogs} |
172 | aaf0a42c | Ilias Tsitsimpis | elif 'displaynames' in body: |
173 | aaf0a42c | Ilias Tsitsimpis | # Return displayname_catalog
|
174 | aaf0a42c | Ilias Tsitsimpis | names = body['displaynames']
|
175 | aaf0a42c | Ilias Tsitsimpis | catalogs = {} |
176 | aaf0a42c | Ilias Tsitsimpis | if user_1['username'] in names: |
177 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_1['username']] = user_1['uuid'] |
178 | aaf0a42c | Ilias Tsitsimpis | if user_2['username'] in names: |
179 | aaf0a42c | Ilias Tsitsimpis | catalogs[user_2['username']] = user_2['uuid'] |
180 | aaf0a42c | Ilias Tsitsimpis | return_catalog = {"displayname_catalog": catalogs, "uuid_catalog": {}} |
181 | aaf0a42c | Ilias Tsitsimpis | else:
|
182 | aaf0a42c | Ilias Tsitsimpis | return_catalog = {"displayname_catalog": {}, "uuid_catalog": {}} |
183 | 21190887 | Ilias Tsitsimpis | return ("", simplejson.dumps(return_catalog), 200) |
184 | 57ba2dfc | Ilias Tsitsimpis | |
185 | 57ba2dfc | Ilias Tsitsimpis | |
186 | 57ba2dfc | Ilias Tsitsimpis | # ----------------------------
|
187 | 57ba2dfc | Ilias Tsitsimpis | # Mock the actual _doRequest
|
188 | 794c94e6 | Ilias Tsitsimpis | def _mock_request(new_requests): |
189 | 57ba2dfc | Ilias Tsitsimpis | """Mock the actual request
|
190 | 57ba2dfc | Ilias Tsitsimpis |
|
191 | 57ba2dfc | Ilias Tsitsimpis | Given a list of requests to use (in rotation),
|
192 | 57ba2dfc | Ilias Tsitsimpis | replace the original _doRequest function with
|
193 | 57ba2dfc | Ilias Tsitsimpis | a new one
|
194 | 57ba2dfc | Ilias Tsitsimpis |
|
195 | 57ba2dfc | Ilias Tsitsimpis | """
|
196 | 57ba2dfc | Ilias Tsitsimpis | def _mock(conn, method, url, **kwargs): |
197 | 57ba2dfc | Ilias Tsitsimpis | # Get first request
|
198 | 57ba2dfc | Ilias Tsitsimpis | request = _mock.requests[0]
|
199 | 57ba2dfc | Ilias Tsitsimpis | # Rotate requests
|
200 | 57ba2dfc | Ilias Tsitsimpis | _mock.requests = _mock.requests[1:] + _mock.requests[:1] |
201 | 57ba2dfc | Ilias Tsitsimpis | # Use first request
|
202 | b2a2fe7a | Ilias Tsitsimpis | return request(conn, method, url, **kwargs)
|
203 | 57ba2dfc | Ilias Tsitsimpis | |
204 | 57ba2dfc | Ilias Tsitsimpis | _mock.requests = new_requests |
205 | 57ba2dfc | Ilias Tsitsimpis | # Replace `_doRequest' with our `_mock'
|
206 | 794c94e6 | Ilias Tsitsimpis | astakosclient._do_request = _mock |
207 | 57ba2dfc | Ilias Tsitsimpis | |
208 | 57ba2dfc | Ilias Tsitsimpis | |
209 | 57ba2dfc | Ilias Tsitsimpis | # ----------------------------
|
210 | 57ba2dfc | Ilias Tsitsimpis | # Local users
|
211 | 57ba2dfc | Ilias Tsitsimpis | token_1 = "skzleaFlBl+fasFdaf24sx=="
|
212 | 344d5c90 | Ilias Tsitsimpis | user_1 = \ |
213 | 454a1ad4 | Ilias Tsitsimpis | {"username": "user1@example.com", |
214 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_created": 1359386939000, |
215 | 454a1ad4 | Ilias Tsitsimpis | "name": "Example User One", |
216 | 454a1ad4 | Ilias Tsitsimpis | "email": ["user1@example.com"], |
217 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_expires": 1361978939000, |
218 | 454a1ad4 | Ilias Tsitsimpis | "id": 108, |
219 | 344d5c90 | Ilias Tsitsimpis | "uuid": "73917abc-abcd-477e-a1f1-1763abcdefab", |
220 | 344d5c90 | Ilias Tsitsimpis | "usage": [
|
221 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 42949672960, |
222 | 344d5c90 | Ilias Tsitsimpis | "display_name": "System Disk", |
223 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.disk"}, |
224 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 4, |
225 | 344d5c90 | Ilias Tsitsimpis | "display_name": "CPU", |
226 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.cpu"}, |
227 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 4294967296, |
228 | 344d5c90 | Ilias Tsitsimpis | "display_name": "RAM", |
229 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.ram"}, |
230 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 3, |
231 | 344d5c90 | Ilias Tsitsimpis | "display_name": "VM", |
232 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.vm"}, |
233 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 0, |
234 | 344d5c90 | Ilias Tsitsimpis | "display_name": "private network", |
235 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.network.private"}, |
236 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 152, |
237 | 344d5c90 | Ilias Tsitsimpis | "display_name": "Storage Space", |
238 | 344d5c90 | Ilias Tsitsimpis | "name": "pithos+.diskspace"}]} |
239 | 57ba2dfc | Ilias Tsitsimpis | |
240 | 57ba2dfc | Ilias Tsitsimpis | token_2 = "fasdfDSFdf98923DF+sdfk=="
|
241 | 344d5c90 | Ilias Tsitsimpis | user_2 = \ |
242 | 454a1ad4 | Ilias Tsitsimpis | {"username": "user2@example.com", |
243 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_created": 1358386938997, |
244 | 454a1ad4 | Ilias Tsitsimpis | "name": "Example User Two", |
245 | 454a1ad4 | Ilias Tsitsimpis | "email": ["user1@example.com"], |
246 | 454a1ad4 | Ilias Tsitsimpis | "auth_token_expires": 1461998939000, |
247 | 454a1ad4 | Ilias Tsitsimpis | "id": 109, |
248 | 344d5c90 | Ilias Tsitsimpis | "uuid": "73917bca-1234-5678-a1f1-1763abcdefab", |
249 | 344d5c90 | Ilias Tsitsimpis | "usage": [
|
250 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 68719476736, |
251 | 344d5c90 | Ilias Tsitsimpis | "display_name": "System Disk", |
252 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.disk"}, |
253 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 1, |
254 | 344d5c90 | Ilias Tsitsimpis | "display_name": "CPU", |
255 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.cpu"}, |
256 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 1073741824, |
257 | 344d5c90 | Ilias Tsitsimpis | "display_name": "RAM", |
258 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.ram"}, |
259 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 2, |
260 | 344d5c90 | Ilias Tsitsimpis | "display_name": "VM", |
261 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.vm"}, |
262 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 1, |
263 | 344d5c90 | Ilias Tsitsimpis | "display_name": "private network", |
264 | 344d5c90 | Ilias Tsitsimpis | "name": "cyclades.network.private"}, |
265 | 344d5c90 | Ilias Tsitsimpis | {"currValue": 2341634510, |
266 | 344d5c90 | Ilias Tsitsimpis | "display_name": "Storage Space", |
267 | 344d5c90 | Ilias Tsitsimpis | "name": "pithos+.diskspace"}]} |
268 | bc56a641 | Ilias Tsitsimpis | |
269 | bc56a641 | Ilias Tsitsimpis | |
270 | bc56a641 | Ilias Tsitsimpis | # --------------------------------------------------------------------
|
271 | bc56a641 | Ilias Tsitsimpis | # The actual tests
|
272 | bc56a641 | Ilias Tsitsimpis | |
273 | bc56a641 | Ilias Tsitsimpis | class TestCallAstakos(unittest.TestCase): |
274 | bc56a641 | Ilias Tsitsimpis | """Test cases for function _callAstakos"""
|
275 | bc56a641 | Ilias Tsitsimpis | |
276 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
277 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we don't have internet access
|
278 | b2a2fe7a | Ilias Tsitsimpis | def _offline(self, pool): |
279 | bc56a641 | Ilias Tsitsimpis | global token_1
|
280 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_offline]) |
281 | bc56a641 | Ilias Tsitsimpis | try:
|
282 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
283 | 794c94e6 | Ilias Tsitsimpis | client._call_astakos(token_1, "/im/authenticate")
|
284 | 66208bc7 | Ilias Tsitsimpis | except AstakosClientException:
|
285 | bc56a641 | Ilias Tsitsimpis | pass
|
286 | bc56a641 | Ilias Tsitsimpis | else:
|
287 | 66208bc7 | Ilias Tsitsimpis | self.fail("Should have raised AstakosClientException") |
288 | bc56a641 | Ilias Tsitsimpis | |
289 | 794c94e6 | Ilias Tsitsimpis | def test_offline(self): |
290 | b2a2fe7a | Ilias Tsitsimpis | """Test _offline without pool"""
|
291 | b2a2fe7a | Ilias Tsitsimpis | self._offline(False) |
292 | b2a2fe7a | Ilias Tsitsimpis | |
293 | 794c94e6 | Ilias Tsitsimpis | def test_offline_pool(self): |
294 | b2a2fe7a | Ilias Tsitsimpis | """Test _offline using pool"""
|
295 | b2a2fe7a | Ilias Tsitsimpis | self._offline(True) |
296 | b2a2fe7a | Ilias Tsitsimpis | |
297 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
298 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we send invalid token
|
299 | 794c94e6 | Ilias Tsitsimpis | def _invalid_token(self, pool): |
300 | b2a2fe7a | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
301 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
302 | b2a2fe7a | Ilias Tsitsimpis | try:
|
303 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
304 | 794c94e6 | Ilias Tsitsimpis | client._call_astakos(token, "/im/authenticate")
|
305 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
306 | 8fe6475a | Ilias Tsitsimpis | pass
|
307 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
308 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
309 | b2a2fe7a | Ilias Tsitsimpis | else:
|
310 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
311 | b2a2fe7a | Ilias Tsitsimpis | |
312 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_token(self): |
313 | 794c94e6 | Ilias Tsitsimpis | """Test _invalid_token without pool"""
|
314 | 794c94e6 | Ilias Tsitsimpis | self._invalid_token(False) |
315 | b2a2fe7a | Ilias Tsitsimpis | |
316 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_token_pool(self): |
317 | 794c94e6 | Ilias Tsitsimpis | """Test _invalid_token using pool"""
|
318 | 794c94e6 | Ilias Tsitsimpis | self._invalid_token(True) |
319 | b2a2fe7a | Ilias Tsitsimpis | |
320 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
321 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we send invalid url
|
322 | 794c94e6 | Ilias Tsitsimpis | def _invalid_url(self, pool): |
323 | bc56a641 | Ilias Tsitsimpis | global token_1
|
324 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
325 | bc56a641 | Ilias Tsitsimpis | try:
|
326 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
327 | 794c94e6 | Ilias Tsitsimpis | client._call_astakos(token_1, "/im/misspelled")
|
328 | f93cc364 | Ilias Tsitsimpis | except NotFound:
|
329 | 8fe6475a | Ilias Tsitsimpis | pass
|
330 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
331 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 404 (Not Found)") |
332 | b2a2fe7a | Ilias Tsitsimpis | else:
|
333 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 404 (Not Found)") |
334 | b2a2fe7a | Ilias Tsitsimpis | |
335 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_url(self): |
336 | 794c94e6 | Ilias Tsitsimpis | """Test _invalid_url without pool"""
|
337 | 794c94e6 | Ilias Tsitsimpis | self._invalid_url(False) |
338 | b2a2fe7a | Ilias Tsitsimpis | |
339 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_url_pool(self): |
340 | 794c94e6 | Ilias Tsitsimpis | """Test _invalid_url using pool"""
|
341 | 794c94e6 | Ilias Tsitsimpis | self._invalid_url(True) |
342 | b2a2fe7a | Ilias Tsitsimpis | |
343 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
344 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we use an unsupported scheme
|
345 | 794c94e6 | Ilias Tsitsimpis | def _unsupported_scheme(self, pool): |
346 | b2a2fe7a | Ilias Tsitsimpis | global token_1
|
347 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
348 | b2a2fe7a | Ilias Tsitsimpis | try:
|
349 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("ftp://example.com", use_pool=pool)
|
350 | 794c94e6 | Ilias Tsitsimpis | client._call_astakos(token_1, "/im/authenticate")
|
351 | b2a2fe7a | Ilias Tsitsimpis | except ValueError: |
352 | bc56a641 | Ilias Tsitsimpis | pass
|
353 | bc56a641 | Ilias Tsitsimpis | except Exception: |
354 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have raise ValueError Exception") |
355 | bc56a641 | Ilias Tsitsimpis | else:
|
356 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have raise ValueError Exception") |
357 | b2a2fe7a | Ilias Tsitsimpis | |
358 | 794c94e6 | Ilias Tsitsimpis | def test_unsupported_scheme(self): |
359 | 794c94e6 | Ilias Tsitsimpis | """Test _unsupported_scheme without pool"""
|
360 | 794c94e6 | Ilias Tsitsimpis | self._unsupported_scheme(False) |
361 | b2a2fe7a | Ilias Tsitsimpis | |
362 | 794c94e6 | Ilias Tsitsimpis | def test_unsupported_scheme_pool(self): |
363 | 794c94e6 | Ilias Tsitsimpis | """Test _unsupported_scheme using pool"""
|
364 | 794c94e6 | Ilias Tsitsimpis | self._unsupported_scheme(True) |
365 | b2a2fe7a | Ilias Tsitsimpis | |
366 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
367 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we use http instead of https
|
368 | 794c94e6 | Ilias Tsitsimpis | def _http_scheme(self, pool): |
369 | b2a2fe7a | Ilias Tsitsimpis | global token_1
|
370 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
371 | b2a2fe7a | Ilias Tsitsimpis | try:
|
372 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("http://example.com", use_pool=pool)
|
373 | 794c94e6 | Ilias Tsitsimpis | client._call_astakos(token_1, "/im/authenticate")
|
374 | 66208bc7 | Ilias Tsitsimpis | except AstakosClientException as err: |
375 | 66208bc7 | Ilias Tsitsimpis | if err.status != 302: |
376 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 302 (Found)") |
377 | b2a2fe7a | Ilias Tsitsimpis | else:
|
378 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 302 (Found)") |
379 | b2a2fe7a | Ilias Tsitsimpis | |
380 | 794c94e6 | Ilias Tsitsimpis | def test_http_scheme(self): |
381 | 794c94e6 | Ilias Tsitsimpis | """Test _http_scheme without pool"""
|
382 | 794c94e6 | Ilias Tsitsimpis | self._http_scheme(False) |
383 | b2a2fe7a | Ilias Tsitsimpis | |
384 | 794c94e6 | Ilias Tsitsimpis | def test_http_scheme_pool(self): |
385 | 794c94e6 | Ilias Tsitsimpis | """Test _http_scheme using pool"""
|
386 | 794c94e6 | Ilias Tsitsimpis | self._http_scheme(True) |
387 | b2a2fe7a | Ilias Tsitsimpis | |
388 | b2a2fe7a | Ilias Tsitsimpis | # ----------------------------------
|
389 | b2a2fe7a | Ilias Tsitsimpis | # Test the response we get if we use authenticate with POST
|
390 | 794c94e6 | Ilias Tsitsimpis | def _post_authenticate(self, pool): |
391 | b2a2fe7a | Ilias Tsitsimpis | global token_1
|
392 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
393 | b2a2fe7a | Ilias Tsitsimpis | try:
|
394 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
395 | 794c94e6 | Ilias Tsitsimpis | client._call_astakos(token_1, "/im/authenticate", method="POST") |
396 | f93cc364 | Ilias Tsitsimpis | except BadRequest:
|
397 | 8fe6475a | Ilias Tsitsimpis | pass
|
398 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
399 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
400 | b2a2fe7a | Ilias Tsitsimpis | else:
|
401 | b2a2fe7a | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
402 | b2a2fe7a | Ilias Tsitsimpis | |
403 | 794c94e6 | Ilias Tsitsimpis | def test_post_authenticate(self): |
404 | 794c94e6 | Ilias Tsitsimpis | """Test _post_authenticate without pool"""
|
405 | 794c94e6 | Ilias Tsitsimpis | self._post_authenticate(False) |
406 | b2a2fe7a | Ilias Tsitsimpis | |
407 | 794c94e6 | Ilias Tsitsimpis | def test_post_authenticate_pool(self): |
408 | 794c94e6 | Ilias Tsitsimpis | """Test _post_authenticate using pool"""
|
409 | 794c94e6 | Ilias Tsitsimpis | self._post_authenticate(True) |
410 | bc56a641 | Ilias Tsitsimpis | |
411 | d071e6f1 | Ilias Tsitsimpis | # ----------------------------------
|
412 | d071e6f1 | Ilias Tsitsimpis | # Test the response if we request user_catalogs with GET
|
413 | 794c94e6 | Ilias Tsitsimpis | def _get_user_catalogs(self, pool): |
414 | d071e6f1 | Ilias Tsitsimpis | global token_1
|
415 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
416 | d071e6f1 | Ilias Tsitsimpis | try:
|
417 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
418 | 794c94e6 | Ilias Tsitsimpis | client._call_astakos(token_1, "/user_catalogs")
|
419 | f93cc364 | Ilias Tsitsimpis | except BadRequest:
|
420 | 8fe6475a | Ilias Tsitsimpis | pass
|
421 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
422 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
423 | d071e6f1 | Ilias Tsitsimpis | else:
|
424 | d071e6f1 | Ilias Tsitsimpis | self.fail("Should have returned 400 (Method not allowed)") |
425 | d071e6f1 | Ilias Tsitsimpis | |
426 | 794c94e6 | Ilias Tsitsimpis | def test_get_user_catalogs(self): |
427 | 794c94e6 | Ilias Tsitsimpis | """Test _get_user_catalogs without pool"""
|
428 | 794c94e6 | Ilias Tsitsimpis | self._get_user_catalogs(False) |
429 | d071e6f1 | Ilias Tsitsimpis | |
430 | 794c94e6 | Ilias Tsitsimpis | def test_get_user_catalogs_pool(self): |
431 | 794c94e6 | Ilias Tsitsimpis | """Test _get_user_catalogs using pool"""
|
432 | 794c94e6 | Ilias Tsitsimpis | self._get_user_catalogs(True) |
433 | d071e6f1 | Ilias Tsitsimpis | |
434 | bc56a641 | Ilias Tsitsimpis | |
435 | 864eb390 | Ilias Tsitsimpis | class TestAuthenticate(unittest.TestCase): |
436 | f74d2b69 | Ilias Tsitsimpis | """Test cases for function getUserInfo"""
|
437 | 864eb390 | Ilias Tsitsimpis | |
438 | 864eb390 | Ilias Tsitsimpis | # ----------------------------------
|
439 | 864eb390 | Ilias Tsitsimpis | # Test the response we get if we don't have internet access
|
440 | 794c94e6 | Ilias Tsitsimpis | def test_offline(self): |
441 | 864eb390 | Ilias Tsitsimpis | """Test offline after 3 retries"""
|
442 | 864eb390 | Ilias Tsitsimpis | global token_1
|
443 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_offline]) |
444 | 864eb390 | Ilias Tsitsimpis | try:
|
445 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", retry=3) |
446 | 794c94e6 | Ilias Tsitsimpis | client.get_user_info(token_1) |
447 | 864eb390 | Ilias Tsitsimpis | except AstakosClientException:
|
448 | 864eb390 | Ilias Tsitsimpis | pass
|
449 | 864eb390 | Ilias Tsitsimpis | else:
|
450 | 864eb390 | Ilias Tsitsimpis | self.fail("Should have raised AstakosClientException exception") |
451 | 864eb390 | Ilias Tsitsimpis | |
452 | 864eb390 | Ilias Tsitsimpis | # ----------------------------------
|
453 | 864eb390 | Ilias Tsitsimpis | # Test the response we get for invalid token
|
454 | 794c94e6 | Ilias Tsitsimpis | def _invalid_token(self, pool): |
455 | 864eb390 | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
456 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
457 | 864eb390 | Ilias Tsitsimpis | try:
|
458 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
459 | 794c94e6 | Ilias Tsitsimpis | client.get_user_info(token) |
460 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
461 | 8fe6475a | Ilias Tsitsimpis | pass
|
462 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
463 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
464 | 864eb390 | Ilias Tsitsimpis | else:
|
465 | d4789cd4 | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
466 | 864eb390 | Ilias Tsitsimpis | |
467 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_token(self): |
468 | 794c94e6 | Ilias Tsitsimpis | """Test _invalid_token without pool"""
|
469 | 794c94e6 | Ilias Tsitsimpis | self._invalid_token(False) |
470 | 864eb390 | Ilias Tsitsimpis | |
471 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_token_pool(self): |
472 | 794c94e6 | Ilias Tsitsimpis | """Test _invalid_token using pool"""
|
473 | 794c94e6 | Ilias Tsitsimpis | self._invalid_token(True) |
474 | 864eb390 | Ilias Tsitsimpis | |
475 | 864eb390 | Ilias Tsitsimpis | #- ---------------------------------
|
476 | 864eb390 | Ilias Tsitsimpis | # Test response for user 1
|
477 | 794c94e6 | Ilias Tsitsimpis | def _auth_user(self, token, user_info, usage, pool): |
478 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
479 | 864eb390 | Ilias Tsitsimpis | try:
|
480 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", use_pool=pool)
|
481 | 794c94e6 | Ilias Tsitsimpis | auth_info = client.get_user_info(token, usage=usage) |
482 | 864eb390 | Ilias Tsitsimpis | except:
|
483 | 864eb390 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
484 | 864eb390 | Ilias Tsitsimpis | self.assertEqual(user_info, auth_info)
|
485 | 864eb390 | Ilias Tsitsimpis | |
486 | 794c94e6 | Ilias Tsitsimpis | def test_auth_user_one(self): |
487 | 794c94e6 | Ilias Tsitsimpis | """Test _auth_user for User 1 without pool, without usage"""
|
488 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
489 | 864eb390 | Ilias Tsitsimpis | user_info = dict(user_1)
|
490 | 864eb390 | Ilias Tsitsimpis | del user_info['usage'] |
491 | 794c94e6 | Ilias Tsitsimpis | self._auth_user(token_1, user_info, False, False) |
492 | 864eb390 | Ilias Tsitsimpis | |
493 | 794c94e6 | Ilias Tsitsimpis | def test_auth_user_one_usage(self): |
494 | 794c94e6 | Ilias Tsitsimpis | """Test _auth_user for User 1 without pool, with usage"""
|
495 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
496 | 794c94e6 | Ilias Tsitsimpis | self._auth_user(token_1, user_1, True, False) |
497 | 864eb390 | Ilias Tsitsimpis | |
498 | 794c94e6 | Ilias Tsitsimpis | def test_auth_user_one_usage_pool(self): |
499 | 794c94e6 | Ilias Tsitsimpis | """Test _auth_user for User 1 using pool, with usage"""
|
500 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
501 | 794c94e6 | Ilias Tsitsimpis | self._auth_user(token_1, user_1, True, True) |
502 | 864eb390 | Ilias Tsitsimpis | |
503 | 794c94e6 | Ilias Tsitsimpis | def test_auth_user_two(self): |
504 | 794c94e6 | Ilias Tsitsimpis | """Test _auth_user for User 2 without pool, without usage"""
|
505 | 864eb390 | Ilias Tsitsimpis | global token_2, user_2
|
506 | 864eb390 | Ilias Tsitsimpis | user_info = dict(user_2)
|
507 | 864eb390 | Ilias Tsitsimpis | del user_info['usage'] |
508 | 794c94e6 | Ilias Tsitsimpis | self._auth_user(token_2, user_info, False, False) |
509 | 864eb390 | Ilias Tsitsimpis | |
510 | 794c94e6 | Ilias Tsitsimpis | def test_auth_user_two_usage(self): |
511 | 794c94e6 | Ilias Tsitsimpis | """Test _auth_user for User 2 without pool, with usage"""
|
512 | 864eb390 | Ilias Tsitsimpis | global token_2, user_2
|
513 | 794c94e6 | Ilias Tsitsimpis | self._auth_user(token_2, user_2, True, False) |
514 | 864eb390 | Ilias Tsitsimpis | |
515 | 794c94e6 | Ilias Tsitsimpis | def test_auth_user_two_usage_pool(self): |
516 | 794c94e6 | Ilias Tsitsimpis | """Test _auth_user for User 2 using pool, with usage"""
|
517 | 864eb390 | Ilias Tsitsimpis | global token_2, user_2
|
518 | 794c94e6 | Ilias Tsitsimpis | self._auth_user(token_2, user_2, True, True) |
519 | 864eb390 | Ilias Tsitsimpis | |
520 | 864eb390 | Ilias Tsitsimpis | # ----------------------------------
|
521 | 864eb390 | Ilias Tsitsimpis | # Test retry functionality
|
522 | 794c94e6 | Ilias Tsitsimpis | def test_offline_retry(self): |
523 | f74d2b69 | Ilias Tsitsimpis | """Test retry functionality for getUserInfo"""
|
524 | 864eb390 | Ilias Tsitsimpis | global token_1, user_1
|
525 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_offline, _request_offline, _request_ok]) |
526 | 864eb390 | Ilias Tsitsimpis | try:
|
527 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com", retry=2) |
528 | 794c94e6 | Ilias Tsitsimpis | auth_info = client.get_user_info(token_1, usage=True)
|
529 | 864eb390 | Ilias Tsitsimpis | except:
|
530 | 864eb390 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
531 | 864eb390 | Ilias Tsitsimpis | self.assertEqual(user_1, auth_info)
|
532 | 454a1ad4 | Ilias Tsitsimpis | |
533 | 454a1ad4 | Ilias Tsitsimpis | |
534 | d4789cd4 | Ilias Tsitsimpis | class TestDisplayNames(unittest.TestCase): |
535 | d4789cd4 | Ilias Tsitsimpis | """Test cases for functions getDisplayNames/getDisplayName"""
|
536 | d4789cd4 | Ilias Tsitsimpis | |
537 | d4789cd4 | Ilias Tsitsimpis | # ----------------------------------
|
538 | d4789cd4 | Ilias Tsitsimpis | # Test the response we get for invalid token
|
539 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_token(self): |
540 | d4789cd4 | Ilias Tsitsimpis | """Test the response we get for invalid token (without pool)"""
|
541 | d4789cd4 | Ilias Tsitsimpis | global user_1
|
542 | d4789cd4 | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
543 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
544 | d4789cd4 | Ilias Tsitsimpis | try:
|
545 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
546 | 794c94e6 | Ilias Tsitsimpis | client.get_usernames(token, [user_1['uuid']])
|
547 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
548 | 8fe6475a | Ilias Tsitsimpis | pass
|
549 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
550 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
551 | d4789cd4 | Ilias Tsitsimpis | else:
|
552 | d4789cd4 | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
553 | d4789cd4 | Ilias Tsitsimpis | |
554 | d4789cd4 | Ilias Tsitsimpis | # ----------------------------------
|
555 | d4789cd4 | Ilias Tsitsimpis | # Get Info for both users
|
556 | 794c94e6 | Ilias Tsitsimpis | def test_usernames(self): |
557 | 794c94e6 | Ilias Tsitsimpis | """Test get_usernames with both users"""
|
558 | d4789cd4 | Ilias Tsitsimpis | global token_1, user_1, user_2
|
559 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
560 | d4789cd4 | Ilias Tsitsimpis | try:
|
561 | 98752f06 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
562 | 794c94e6 | Ilias Tsitsimpis | catalog = client.get_usernames( |
563 | 98752f06 | Ilias Tsitsimpis | token_1, [user_1['uuid'], user_2['uuid']]) |
564 | d4789cd4 | Ilias Tsitsimpis | except:
|
565 | d4789cd4 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
566 | d4789cd4 | Ilias Tsitsimpis | self.assertEqual(catalog[user_1['uuid']], user_1['username']) |
567 | d4789cd4 | Ilias Tsitsimpis | self.assertEqual(catalog[user_2['uuid']], user_2['username']) |
568 | d4789cd4 | Ilias Tsitsimpis | |
569 | d4789cd4 | Ilias Tsitsimpis | # ----------------------------------
|
570 | d4789cd4 | Ilias Tsitsimpis | # Get info for user 1
|
571 | 794c94e6 | Ilias Tsitsimpis | def test_username_user_one(self): |
572 | 794c94e6 | Ilias Tsitsimpis | """Test get_username for User One"""
|
573 | d4789cd4 | Ilias Tsitsimpis | global token_2, user_1
|
574 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_offline, _request_ok]) |
575 | d4789cd4 | Ilias Tsitsimpis | try:
|
576 | d4789cd4 | Ilias Tsitsimpis | client = AstakosClient( |
577 | 98752f06 | Ilias Tsitsimpis | "https://example.com", use_pool=True, retry=2) |
578 | 794c94e6 | Ilias Tsitsimpis | info = client.get_username(token_2, user_1['uuid'])
|
579 | d4789cd4 | Ilias Tsitsimpis | except:
|
580 | d4789cd4 | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
581 | d4789cd4 | Ilias Tsitsimpis | self.assertEqual(info, user_1['username']) |
582 | d4789cd4 | Ilias Tsitsimpis | |
583 | 2377e7c2 | Ilias Tsitsimpis | # ----------------------------------
|
584 | 2377e7c2 | Ilias Tsitsimpis | # Get info with wrong uuid
|
585 | 794c94e6 | Ilias Tsitsimpis | def test_no_username(self): |
586 | 2377e7c2 | Ilias Tsitsimpis | global token_1
|
587 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
588 | 2377e7c2 | Ilias Tsitsimpis | try:
|
589 | 2377e7c2 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
590 | 794c94e6 | Ilias Tsitsimpis | client.get_username(token_1, "1234")
|
591 | 794c94e6 | Ilias Tsitsimpis | except NoUserName:
|
592 | 2377e7c2 | Ilias Tsitsimpis | pass
|
593 | 2377e7c2 | Ilias Tsitsimpis | except:
|
594 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoDisplayName exception") |
595 | 2377e7c2 | Ilias Tsitsimpis | else:
|
596 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoDisplayName exception") |
597 | 2377e7c2 | Ilias Tsitsimpis | |
598 | d4789cd4 | Ilias Tsitsimpis | |
599 | aaf0a42c | Ilias Tsitsimpis | class TestGetUUIDs(unittest.TestCase): |
600 | aaf0a42c | Ilias Tsitsimpis | """Test cases for functions getUUIDs/getUUID"""
|
601 | aaf0a42c | Ilias Tsitsimpis | |
602 | aaf0a42c | Ilias Tsitsimpis | # ----------------------------------
|
603 | aaf0a42c | Ilias Tsitsimpis | # Test the response we get for invalid token
|
604 | 794c94e6 | Ilias Tsitsimpis | def test_invalid_token(self): |
605 | aaf0a42c | Ilias Tsitsimpis | """Test the response we get for invalid token (using pool)"""
|
606 | aaf0a42c | Ilias Tsitsimpis | global user_1
|
607 | aaf0a42c | Ilias Tsitsimpis | token = "skaksaFlBl+fasFdaf24sx=="
|
608 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
609 | aaf0a42c | Ilias Tsitsimpis | try:
|
610 | aaf0a42c | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
611 | 794c94e6 | Ilias Tsitsimpis | client.get_uuids(token, [user_1['username']])
|
612 | f93cc364 | Ilias Tsitsimpis | except Unauthorized:
|
613 | 8fe6475a | Ilias Tsitsimpis | pass
|
614 | 8fe6475a | Ilias Tsitsimpis | except Exception: |
615 | 8fe6475a | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
616 | aaf0a42c | Ilias Tsitsimpis | else:
|
617 | aaf0a42c | Ilias Tsitsimpis | self.fail("Should have returned 401 (Invalid X-Auth-Token)") |
618 | aaf0a42c | Ilias Tsitsimpis | |
619 | aaf0a42c | Ilias Tsitsimpis | # ----------------------------------
|
620 | aaf0a42c | Ilias Tsitsimpis | # Get info for both users
|
621 | 794c94e6 | Ilias Tsitsimpis | def test_uuids(self): |
622 | 794c94e6 | Ilias Tsitsimpis | """Test get_uuids with both users"""
|
623 | aaf0a42c | Ilias Tsitsimpis | global token_1, user_1, user_2
|
624 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
625 | aaf0a42c | Ilias Tsitsimpis | try:
|
626 | aaf0a42c | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
627 | 794c94e6 | Ilias Tsitsimpis | catalog = client.get_uuids( |
628 | aaf0a42c | Ilias Tsitsimpis | token_1, [user_1['username'], user_2['username']]) |
629 | aaf0a42c | Ilias Tsitsimpis | except:
|
630 | aaf0a42c | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
631 | aaf0a42c | Ilias Tsitsimpis | self.assertEqual(catalog[user_1['username']], user_1['uuid']) |
632 | aaf0a42c | Ilias Tsitsimpis | self.assertEqual(catalog[user_2['username']], user_2['uuid']) |
633 | aaf0a42c | Ilias Tsitsimpis | |
634 | aaf0a42c | Ilias Tsitsimpis | # ----------------------------------
|
635 | aaf0a42c | Ilias Tsitsimpis | # Get uuid for user 2
|
636 | 794c94e6 | Ilias Tsitsimpis | def test_get_uuid_user_two(self): |
637 | 794c94e6 | Ilias Tsitsimpis | """Test get_uuid for User Two"""
|
638 | aaf0a42c | Ilias Tsitsimpis | global token_1, user_2
|
639 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_offline, _request_ok]) |
640 | aaf0a42c | Ilias Tsitsimpis | try:
|
641 | aaf0a42c | Ilias Tsitsimpis | client = AstakosClient("https://example.com", retry=1) |
642 | 794c94e6 | Ilias Tsitsimpis | info = client.get_uuid(token_2, user_1['username'])
|
643 | aaf0a42c | Ilias Tsitsimpis | except:
|
644 | aaf0a42c | Ilias Tsitsimpis | self.fail("Shouldn't raise an Exception") |
645 | aaf0a42c | Ilias Tsitsimpis | self.assertEqual(info, user_1['uuid']) |
646 | aaf0a42c | Ilias Tsitsimpis | |
647 | 2377e7c2 | Ilias Tsitsimpis | # ----------------------------------
|
648 | 2377e7c2 | Ilias Tsitsimpis | # Get uuid with wrong username
|
649 | 794c94e6 | Ilias Tsitsimpis | def test_no_uuid(self): |
650 | 2377e7c2 | Ilias Tsitsimpis | global token_1
|
651 | 794c94e6 | Ilias Tsitsimpis | _mock_request([_request_ok]) |
652 | 2377e7c2 | Ilias Tsitsimpis | try:
|
653 | 2377e7c2 | Ilias Tsitsimpis | client = AstakosClient("https://example.com")
|
654 | 794c94e6 | Ilias Tsitsimpis | client.get_uuid(token_1, "1234")
|
655 | 2377e7c2 | Ilias Tsitsimpis | except NoUUID:
|
656 | 2377e7c2 | Ilias Tsitsimpis | pass
|
657 | 2377e7c2 | Ilias Tsitsimpis | except:
|
658 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoUUID exception") |
659 | 2377e7c2 | Ilias Tsitsimpis | else:
|
660 | 2377e7c2 | Ilias Tsitsimpis | self.fail("Should have raised NoUUID exception") |
661 | 2377e7c2 | Ilias Tsitsimpis | |
662 | aaf0a42c | Ilias Tsitsimpis | |
663 | bc56a641 | Ilias Tsitsimpis | # ----------------------------
|
664 | bc56a641 | Ilias Tsitsimpis | # Run tests
|
665 | bc56a641 | Ilias Tsitsimpis | if __name__ == "__main__": |
666 | bc56a641 | Ilias Tsitsimpis | unittest.main() |