Revision fdb15edb
b/snf-cyclades-app/synnefo/plankton/tests.py | ||
---|---|---|
37 | 37 |
from functools import wraps |
38 | 38 |
from copy import deepcopy |
39 | 39 |
from snf_django.utils.testing import BaseAPITest |
40 |
from synnefo.cyclades_settings import cyclades_services |
|
41 |
from synnefo.lib.services import get_service_path |
|
42 |
from synnefo.lib import join_urls |
|
43 |
|
|
44 |
|
|
45 |
class PlanktonAPITest(BaseAPITest): |
|
46 |
def setUp(self, *args, **kwargs): |
|
47 |
super(PlanktonAPITest, self).setUp(*args, **kwargs) |
|
48 |
self.compute_path = get_service_path(cyclades_services, 'image', |
|
49 |
version='v1.0') |
|
50 |
def myget(self, path, *args, **kwargs): |
|
51 |
path = join_urls(self.compute_path, path) |
|
52 |
return self.get(path, *args, **kwargs) |
|
53 |
|
|
54 |
def myput(self, path, *args, **kwargs): |
|
55 |
path = join_urls(self.compute_path, path) |
|
56 |
return self.put(path, *args, **kwargs) |
|
57 |
|
|
58 |
def mypost(self, path, *args, **kwargs): |
|
59 |
path = join_urls(self.compute_path, path) |
|
60 |
return self.post(path, *args, **kwargs) |
|
61 |
|
|
62 |
def mydelete(self, path, *args, **kwargs): |
|
63 |
path = join_urls(self.compute_path, path) |
|
64 |
return self.delete(path, *args, **kwargs) |
|
40 | 65 |
|
41 | 66 |
|
42 | 67 |
FILTERS = ('name', 'container_format', 'disk_format', 'status', 'size_min', |
... | ... | |
128 | 153 |
|
129 | 154 |
|
130 | 155 |
@patch("synnefo.plankton.backend.ImageBackend") |
131 |
class PlanktonTest(BaseAPITest):
|
|
156 |
class PlanktonTest(PlanktonAPITest):
|
|
132 | 157 |
@assert_backend_closed |
133 | 158 |
def test_list_images(self, backend): |
134 | 159 |
backend.return_value.list_images.return_value =\ |
135 | 160 |
deepcopy(DummyImages).values() |
136 |
response = self.get("/plankton/images/")
|
|
161 |
response = self.myget("images/")
|
|
137 | 162 |
self.assertSuccess(response) |
138 | 163 |
images = json.loads(response.content) |
139 | 164 |
for api_image in images: |
... | ... | |
150 | 175 |
def test_list_images_detail(self, backend): |
151 | 176 |
backend.return_value.list_images.return_value =\ |
152 | 177 |
deepcopy(DummyImages).values() |
153 |
response = self.get("/plankton/images/detail")
|
|
178 |
response = self.myget("images/detail")
|
|
154 | 179 |
self.assertSuccess(response) |
155 | 180 |
images = json.loads(response.content) |
156 | 181 |
for api_image in images: |
... | ... | |
167 | 192 |
def test_list_images_filters(self, backend): |
168 | 193 |
backend.return_value.list_images.return_value =\ |
169 | 194 |
deepcopy(DummyImages).values() |
170 |
response = self.get("/plankton/images/?size_max=1000")
|
|
195 |
response = self.myget("images/?size_max=1000")
|
|
171 | 196 |
self.assertSuccess(response) |
172 | 197 |
backend.return_value\ |
173 | 198 |
.list_images.assert_called_once_with({'size_max': 1000}, |
... | ... | |
176 | 201 |
|
177 | 202 |
@assert_backend_closed |
178 | 203 |
def test_list_images_filters_error_1(self, backend): |
179 |
response = self.get("/plankton/images/?size_max=")
|
|
204 |
response = self.myget("images/?size_max=")
|
|
180 | 205 |
self.assertBadRequest(response) |
181 | 206 |
|
182 | 207 |
@assert_backend_closed |
183 | 208 |
def test_list_images_filters_error_2(self, backend): |
184 |
response = self.get("/plankton/images/?size_min=foo")
|
|
209 |
response = self.myget("images/?size_min=foo")
|
|
185 | 210 |
self.assertBadRequest(response) |
186 | 211 |
|
187 | 212 |
@assert_backend_closed |
188 | 213 |
def test_update_image(self, backend): |
189 | 214 |
db_image = DummyImages.values()[0] |
190 |
response = self.put("/plankton/images/%s" % db_image['id'],
|
|
191 |
json.dumps({}), |
|
192 |
'json', HTTP_X_IMAGE_META_OWNER='user2') |
|
215 |
response = self.myput("images/%s" % db_image['id'],
|
|
216 |
json.dumps({}),
|
|
217 |
'json', HTTP_X_IMAGE_META_OWNER='user2')
|
|
193 | 218 |
self.assertSuccess(response) |
194 | 219 |
backend.return_value.update_metadata.assert_called_once_with(db_image['id'], |
195 | 220 |
{"owner": "user2"}) |
... | ... | |
197 | 222 |
@assert_backend_closed |
198 | 223 |
def test_add_image_member(self, backend): |
199 | 224 |
image_id = DummyImages.values()[0]['id'] |
200 |
response = self.put("/plankton/images/%s/members/user3" % image_id,
|
|
201 |
json.dumps({}), 'json') |
|
225 |
response = self.myput("images/%s/members/user3" % image_id,
|
|
226 |
json.dumps({}), 'json')
|
|
202 | 227 |
self.assertSuccess(response) |
203 | 228 |
backend.return_value.add_user.assert_called_once_with(image_id, |
204 | 229 |
'user3') |
... | ... | |
206 | 231 |
@assert_backend_closed |
207 | 232 |
def test_remove_image_member(self, backend): |
208 | 233 |
image_id = DummyImages.values()[0]['id'] |
209 |
response = self.delete("/plankton/images/%s/members/user3" % image_id)
|
|
234 |
response = self.mydelete("images/%s/members/user3" % image_id)
|
|
210 | 235 |
self.assertSuccess(response) |
211 | 236 |
backend.return_value.remove_user.assert_called_once_with(image_id, |
212 | 237 |
'user3') |
... | ... | |
214 | 239 |
@assert_backend_closed |
215 | 240 |
def test_add_image(self, backend): |
216 | 241 |
location = "pithos://uuid/container/name/" |
217 |
response = self.post("/plankton/images/",
|
|
218 |
json.dumps({}), |
|
219 |
'json', |
|
220 |
HTTP_X_IMAGE_META_NAME='dummy_name', |
|
221 |
HTTP_X_IMAGE_META_OWNER='dummy_owner', |
|
222 |
HTTP_X_IMAGE_META_LOCATION=location) |
|
242 |
response = self.mypost("images/",
|
|
243 |
json.dumps({}),
|
|
244 |
'json',
|
|
245 |
HTTP_X_IMAGE_META_NAME='dummy_name',
|
|
246 |
HTTP_X_IMAGE_META_OWNER='dummy_owner',
|
|
247 |
HTTP_X_IMAGE_META_LOCATION=location)
|
|
223 | 248 |
self.assertSuccess(response) |
224 | 249 |
backend.return_value.register.assert_called_once_with('dummy_name', |
225 | 250 |
location, |
... | ... | |
227 | 252 |
|
228 | 253 |
@assert_backend_closed |
229 | 254 |
def test_get_image(self, backend): |
230 |
response = self.get("/plankton/images/123")
|
|
255 |
response = self.myget("images/123")
|
|
231 | 256 |
self.assertEqual(response.status_code, 501) |
232 | 257 |
|
233 | 258 |
@assert_backend_closed |
234 | 259 |
def test_delete_image(self, backend): |
235 |
response = self.delete("/plankton/images/123")
|
|
260 |
response = self.mydelete("images/123")
|
|
236 | 261 |
self.assertEqual(response.status_code, 204) |
237 | 262 |
backend.return_value.unregister.assert_called_once_with('123') |
238 | 263 |
backend.return_value._delete.assert_not_called() |
Also available in: Unified diff