root / api / tests_redux.py @ c36934a7
History | View | Annotate | Download (2.8 kB)
1 | 7e2f9d4b | Giorgos Verigakis | #
|
---|---|---|---|
2 | 7e2f9d4b | Giorgos Verigakis | # Copyright (c) 2010 Greek Research and Technology Network
|
3 | 7e2f9d4b | Giorgos Verigakis | #
|
4 | 7e2f9d4b | Giorgos Verigakis | |
5 | 7e2f9d4b | Giorgos Verigakis | from django.test import TestCase |
6 | 7e2f9d4b | Giorgos Verigakis | from django.test.client import Client |
7 | 7e2f9d4b | Giorgos Verigakis | |
8 | 7e2f9d4b | Giorgos Verigakis | import json |
9 | 7e2f9d4b | Giorgos Verigakis | |
10 | 7e2f9d4b | Giorgos Verigakis | API = 'v1.1redux'
|
11 | 7e2f9d4b | Giorgos Verigakis | |
12 | 7e2f9d4b | Giorgos Verigakis | |
13 | 7e2f9d4b | Giorgos Verigakis | class APIReduxTestCase(TestCase): |
14 | 7e2f9d4b | Giorgos Verigakis | fixtures = [ 'api_redux_test_data' ]
|
15 | 7e2f9d4b | Giorgos Verigakis | |
16 | 7e2f9d4b | Giorgos Verigakis | def setUp(self): |
17 | 7e2f9d4b | Giorgos Verigakis | self.client = Client()
|
18 | 7e2f9d4b | Giorgos Verigakis | self.server_id = 0 |
19 | 7e2f9d4b | Giorgos Verigakis | |
20 | 7e2f9d4b | Giorgos Verigakis | def create_server_name(self): |
21 | 7e2f9d4b | Giorgos Verigakis | self.server_id += 1 |
22 | 7e2f9d4b | Giorgos Verigakis | return 'server%d' % self.server_id |
23 | 7e2f9d4b | Giorgos Verigakis | |
24 | 7e2f9d4b | Giorgos Verigakis | def test_create_server_json(self): |
25 | 7e2f9d4b | Giorgos Verigakis | TEMPLATE = '''
|
26 | 7e2f9d4b | Giorgos Verigakis | {
|
27 | 7e2f9d4b | Giorgos Verigakis | "server" : {
|
28 | 7e2f9d4b | Giorgos Verigakis | "name" : "%(name)s",
|
29 | 7e2f9d4b | Giorgos Verigakis | "flavorId" : "%(flavorId)s",
|
30 | 7e2f9d4b | Giorgos Verigakis | "imageId" : "%(imageId)s"
|
31 | 7e2f9d4b | Giorgos Verigakis | }
|
32 | 7e2f9d4b | Giorgos Verigakis | }
|
33 | 7e2f9d4b | Giorgos Verigakis | '''
|
34 | 7e2f9d4b | Giorgos Verigakis | |
35 | 7e2f9d4b | Giorgos Verigakis | def new_server(imageId=1, flavorId=1): |
36 | 7e2f9d4b | Giorgos Verigakis | name = self.create_server_name()
|
37 | 7e2f9d4b | Giorgos Verigakis | return name, TEMPLATE % dict(name=name, imageId=imageId, flavorId=flavorId) |
38 | 7e2f9d4b | Giorgos Verigakis | |
39 | 7e2f9d4b | Giorgos Verigakis | def verify_response(response, name): |
40 | 7e2f9d4b | Giorgos Verigakis | assert response.status_code == 202 |
41 | 7e2f9d4b | Giorgos Verigakis | reply = json.loads(response.content) |
42 | 7e2f9d4b | Giorgos Verigakis | server = reply['server']
|
43 | 7e2f9d4b | Giorgos Verigakis | assert server['name'] == name |
44 | 7e2f9d4b | Giorgos Verigakis | assert server['imageId'] == 1 |
45 | 7e2f9d4b | Giorgos Verigakis | assert server['flavorId'] == 1 |
46 | 7e2f9d4b | Giorgos Verigakis | assert server['status'] == 'BUILD' |
47 | 7e2f9d4b | Giorgos Verigakis | assert server['adminPass'] |
48 | 7e2f9d4b | Giorgos Verigakis | assert server['addresses'] |
49 | 7e2f9d4b | Giorgos Verigakis | |
50 | 7e2f9d4b | Giorgos Verigakis | def verify_error(response, code, name): |
51 | 7e2f9d4b | Giorgos Verigakis | assert response.status_code == code
|
52 | 7e2f9d4b | Giorgos Verigakis | reply = json.loads(response.content) |
53 | 7e2f9d4b | Giorgos Verigakis | assert name in reply |
54 | 7e2f9d4b | Giorgos Verigakis | assert reply[name]['code'] == code |
55 | 7e2f9d4b | Giorgos Verigakis | |
56 | 7e2f9d4b | Giorgos Verigakis | name, data = new_server() |
57 | 7e2f9d4b | Giorgos Verigakis | url = '/api/%s/servers' % API
|
58 | 7e2f9d4b | Giorgos Verigakis | response = self.client.post(url, content_type='application/json', data=data) |
59 | 7e2f9d4b | Giorgos Verigakis | verify_response(response, name) |
60 | 7e2f9d4b | Giorgos Verigakis | |
61 | 7e2f9d4b | Giorgos Verigakis | name, data = new_server() |
62 | 7e2f9d4b | Giorgos Verigakis | url = '/api/%s/servers.json' % API
|
63 | 7e2f9d4b | Giorgos Verigakis | response = self.client.post(url, content_type='application/json', data=data) |
64 | 7e2f9d4b | Giorgos Verigakis | verify_response(response, name) |
65 | 7e2f9d4b | Giorgos Verigakis | |
66 | 7e2f9d4b | Giorgos Verigakis | name, data = new_server() |
67 | 7e2f9d4b | Giorgos Verigakis | url = '/api/%s/servers.json' % API
|
68 | 7e2f9d4b | Giorgos Verigakis | response = self.client.post(url, content_type='application/json', data=data, |
69 | 7e2f9d4b | Giorgos Verigakis | HTTP_ACCEPT='application/xml')
|
70 | 7e2f9d4b | Giorgos Verigakis | verify_response(response, name) |
71 | 7e2f9d4b | Giorgos Verigakis | |
72 | 7e2f9d4b | Giorgos Verigakis | name, data = new_server(imageId=0)
|
73 | 7e2f9d4b | Giorgos Verigakis | url = '/api/%s/servers' % API
|
74 | 7e2f9d4b | Giorgos Verigakis | response = self.client.post(url, content_type='application/json', data=data) |
75 | 7e2f9d4b | Giorgos Verigakis | verify_error(response, 404, 'itemNotFound') |
76 | 7e2f9d4b | Giorgos Verigakis | |
77 | 7e2f9d4b | Giorgos Verigakis | name, data = new_server(flavorId=0)
|
78 | 7e2f9d4b | Giorgos Verigakis | url = '/api/%s/servers' % API
|
79 | 7e2f9d4b | Giorgos Verigakis | response = self.client.post(url, content_type='application/json', data=data) |
80 | 7e2f9d4b | Giorgos Verigakis | verify_error(response, 404, 'itemNotFound') |
81 | 7e2f9d4b | Giorgos Verigakis | |
82 | 7e2f9d4b | Giorgos Verigakis | url = '/api/%s/servers' % API
|
83 | 7e2f9d4b | Giorgos Verigakis | response = self.client.post(url, content_type='application/json', data='INVALID') |
84 | 7e2f9d4b | Giorgos Verigakis | verify_error(response, 400, 'badRequest') |