root / api / tests.py @ b016b476
History | View | Annotate | Download (18.4 kB)
1 | 894f6b7e | Dimitris Moraitis | #
|
---|---|---|---|
2 | 894f6b7e | Dimitris Moraitis | # Unit Tests for api
|
3 | 894f6b7e | Dimitris Moraitis | #
|
4 | 285a1fa8 | Dimitris Moraitis | # Provides automated tests for api module
|
5 | 894f6b7e | Dimitris Moraitis | #
|
6 | 285a1fa8 | Dimitris Moraitis | # Copyright 2011 Greek Research and Technology Network
|
7 | 894f6b7e | Dimitris Moraitis | #
|
8 | 894f6b7e | Dimitris Moraitis | |
9 | 894f6b7e | Dimitris Moraitis | from django.test import TestCase |
10 | 894f6b7e | Dimitris Moraitis | from django.test.client import Client |
11 | 7de0c985 | Dimitris Moraitis | import simplejson as json |
12 | a8acbbac | Markos Gogoulos | from synnefo.db.models import VirtualMachine, Flavor, Image, VirtualMachineGroup |
13 | 7e2f9d4b | Giorgos Verigakis | from synnefo.api.tests_redux import APIReduxTestCase |
14 | 7e2f9d4b | Giorgos Verigakis | |
15 | 894f6b7e | Dimitris Moraitis | |
16 | 894f6b7e | Dimitris Moraitis | class APITestCase(TestCase): |
17 | 6781c0d0 | Dimitris Moraitis | fixtures = [ 'api_test_data' ]
|
18 | d2e5f1d1 | Markos Gogoulos | test_server_id = 1001
|
19 | d2e5f1d1 | Markos Gogoulos | test_image_id = 1
|
20 | d2e5f1d1 | Markos Gogoulos | test_flavor_id = 1
|
21 | a8acbbac | Markos Gogoulos | test_group_id = 1
|
22 | d2e5f1d1 | Markos Gogoulos | test_wrong_server_id = 99999999
|
23 | d2e5f1d1 | Markos Gogoulos | test_wrong_image_id = 99999999
|
24 | d2e5f1d1 | Markos Gogoulos | test_wrong_flavor_id = 99999999
|
25 | a8acbbac | Markos Gogoulos | test_wrong_group_id = 99999999
|
26 | d2e5f1d1 | Markos Gogoulos | #make the testing with these id's
|
27 | d2e5f1d1 | Markos Gogoulos | |
28 | 6781c0d0 | Dimitris Moraitis | |
29 | 894f6b7e | Dimitris Moraitis | def setUp(self): |
30 | 7de0c985 | Dimitris Moraitis | self.client = Client()
|
31 | 894f6b7e | Dimitris Moraitis | |
32 | 894f6b7e | Dimitris Moraitis | def testAPIVersion(self): |
33 | 285a1fa8 | Dimitris Moraitis | """ check rackspace cloud servers API version
|
34 | 6781c0d0 | Dimitris Moraitis | """
|
35 | 7de0c985 | Dimitris Moraitis | response = self.client.get('/api/v1.0/') |
36 | 894f6b7e | Dimitris Moraitis | # Check that the response is 200 OK.
|
37 | 894f6b7e | Dimitris Moraitis | self.assertEqual(response.status_code, 200) |
38 | 54c30633 | Markos Gogoulos | api_version = json.loads(response.content)['version']
|
39 | 54c30633 | Markos Gogoulos | self.assertEqual(api_version['status'], 'CURRENT') |
40 | 54c30633 | Markos Gogoulos | self.assertEqual(api_version['wadl'], 'http://docs.rackspacecloud.com/servers/api/v1.0/application.wadl') |
41 | 54c30633 | Markos Gogoulos | self.assertEqual(api_version['docURL'], 'http://docs.rackspacecloud.com/servers/api/v1.0/cs-devguide-20110112.pdf') |
42 | 54c30633 | Markos Gogoulos | self.assertEqual(api_version['id'], 'v1.0') |
43 | 54c30633 | Markos Gogoulos | |
44 | 54c30633 | Markos Gogoulos | |
45 | 6781c0d0 | Dimitris Moraitis | def testServerList(self): |
46 | 6781c0d0 | Dimitris Moraitis | """ test if the expected list of servers is returned by the API
|
47 | 6781c0d0 | Dimitris Moraitis | """
|
48 | 7de0c985 | Dimitris Moraitis | response = self.client.get('/api/v1.0/servers') |
49 | 6781c0d0 | Dimitris Moraitis | vms_from_api = json.loads(response.content)['servers']
|
50 | 668c1361 | Markos Gogoulos | vms_from_db = VirtualMachine.objects.filter(deleted=False)
|
51 | 6781c0d0 | Dimitris Moraitis | self.assertEqual(len(vms_from_api), len(vms_from_db)) |
52 | 7de0c985 | Dimitris Moraitis | self.assertTrue(response.status_code in [200,203]) |
53 | 54c30633 | Markos Gogoulos | for vm_from_api in vms_from_api: |
54 | 54c30633 | Markos Gogoulos | vm_from_db = VirtualMachine.objects.get(id=vm_from_api['id'])
|
55 | 54c30633 | Markos Gogoulos | self.assertEqual(vm_from_api['id'], vm_from_db.id) |
56 | 54c30633 | Markos Gogoulos | self.assertEqual(vm_from_api['name'], vm_from_db.name) |
57 | 54c30633 | Markos Gogoulos | |
58 | 7de0c985 | Dimitris Moraitis | |
59 | 668c1361 | Markos Gogoulos | def testServerDetails(self): |
60 | 668c1361 | Markos Gogoulos | """ test if the expected server is returned by the API
|
61 | 668c1361 | Markos Gogoulos | """
|
62 | d2e5f1d1 | Markos Gogoulos | response = self.client.get('/api/v1.0/servers/' + str(self.test_server_id)) |
63 | 668c1361 | Markos Gogoulos | vm_from_api = json.loads(response.content)['server']
|
64 | d2e5f1d1 | Markos Gogoulos | vm_from_db = VirtualMachine.objects.get(id=self.test_server_id)
|
65 | b335768e | Markos Gogoulos | self.assertEqual(vm_from_api['flavorRef'], vm_from_db.flavor.id) |
66 | 668c1361 | Markos Gogoulos | self.assertEqual(vm_from_api['hostId'], vm_from_db.hostid) |
67 | 668c1361 | Markos Gogoulos | self.assertEqual(vm_from_api['id'], vm_from_db.id) |
68 | b335768e | Markos Gogoulos | self.assertEqual(vm_from_api['imageRef'], vm_from_db.flavor.id) |
69 | 668c1361 | Markos Gogoulos | self.assertEqual(vm_from_api['name'], vm_from_db.name) |
70 | 668c1361 | Markos Gogoulos | self.assertEqual(vm_from_api['status'], vm_from_db.rsapi_state) |
71 | 668c1361 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
72 | 668c1361 | Markos Gogoulos | |
73 | 54c30633 | Markos Gogoulos | |
74 | 685ab2b6 | Markos Gogoulos | def testServersDetails(self): |
75 | 685ab2b6 | Markos Gogoulos | """ test if the servers details are returned by the API
|
76 | 685ab2b6 | Markos Gogoulos | """
|
77 | 685ab2b6 | Markos Gogoulos | response = self.client.get('/api/v1.0/servers/detail') |
78 | 54c30633 | Markos Gogoulos | vms_from_db = VirtualMachine.objects.filter(deleted=False)
|
79 | 54c30633 | Markos Gogoulos | id_list = [vm.id for vm in vms_from_db] |
80 | 685ab2b6 | Markos Gogoulos | number = 0
|
81 | 685ab2b6 | Markos Gogoulos | for vm_id in id_list: |
82 | 685ab2b6 | Markos Gogoulos | vm_from_api = json.loads(response.content)['servers'][number]
|
83 | 685ab2b6 | Markos Gogoulos | vm_from_db = VirtualMachine.objects.get(id=vm_id) |
84 | b335768e | Markos Gogoulos | self.assertEqual(vm_from_api['flavorRef'], vm_from_db.flavor.id) |
85 | 685ab2b6 | Markos Gogoulos | self.assertEqual(vm_from_api['hostId'], vm_from_db.hostid) |
86 | 685ab2b6 | Markos Gogoulos | self.assertEqual(vm_from_api['id'], vm_from_db.id) |
87 | b335768e | Markos Gogoulos | self.assertEqual(vm_from_api['imageRef'], vm_from_db.flavor.id) |
88 | 685ab2b6 | Markos Gogoulos | self.assertEqual(vm_from_api['name'], vm_from_db.name) |
89 | 685ab2b6 | Markos Gogoulos | self.assertEqual(vm_from_api['status'], vm_from_db.rsapi_state) |
90 | 685ab2b6 | Markos Gogoulos | number += 1
|
91 | 54c30633 | Markos Gogoulos | vms_from_api = json.loads(response.content)['servers']
|
92 | 54c30633 | Markos Gogoulos | for vm_from_api in vms_from_api: |
93 | 54c30633 | Markos Gogoulos | vm_from_db = VirtualMachine.objects.get(id=vm_from_api['id'])
|
94 | b335768e | Markos Gogoulos | self.assertEqual(vm_from_api['flavorRef'], vm_from_db.flavor.id) |
95 | 54c30633 | Markos Gogoulos | self.assertEqual(vm_from_api['hostId'], vm_from_db.hostid) |
96 | 54c30633 | Markos Gogoulos | self.assertEqual(vm_from_api['id'], vm_from_db.id) |
97 | b335768e | Markos Gogoulos | self.assertEqual(vm_from_api['imageRef'], vm_from_db.flavor.id) |
98 | 54c30633 | Markos Gogoulos | self.assertEqual(vm_from_api['name'], vm_from_db.name) |
99 | 54c30633 | Markos Gogoulos | self.assertEqual(vm_from_api['status'], vm_from_db.rsapi_state) |
100 | 685ab2b6 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
101 | 685ab2b6 | Markos Gogoulos | |
102 | 54c30633 | Markos Gogoulos | |
103 | 685ab2b6 | Markos Gogoulos | def testWrongServer(self): |
104 | 685ab2b6 | Markos Gogoulos | """ test if a non existent server is asked, if a 404 itemNotFound returned
|
105 | 685ab2b6 | Markos Gogoulos | """
|
106 | d2e5f1d1 | Markos Gogoulos | response = self.client.get('/api/v1.0/servers/' + str(self.test_wrong_server_id)) |
107 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
108 | 685ab2b6 | Markos Gogoulos | |
109 | 54c30633 | Markos Gogoulos | |
110 | 7de0c985 | Dimitris Moraitis | def testCreateServerEmpty(self): |
111 | 7de0c985 | Dimitris Moraitis | """ test if the create server call returns a 400 badRequest if no
|
112 | 7de0c985 | Dimitris Moraitis | attributes are specified
|
113 | 7de0c985 | Dimitris Moraitis | """
|
114 | 7de0c985 | Dimitris Moraitis | response = self.client.post('/api/v1.0/servers',{}) |
115 | 7de0c985 | Dimitris Moraitis | self.assertEqual(response.status_code, 400) |
116 | 54c30633 | Markos Gogoulos | |
117 | 54c30633 | Markos Gogoulos | |
118 | 7de0c985 | Dimitris Moraitis | def testCreateServer(self): |
119 | 685ab2b6 | Markos Gogoulos | """ test if the create server call returns the expected response
|
120 | 685ab2b6 | Markos Gogoulos | if a valid request has been speficied
|
121 | 7de0c985 | Dimitris Moraitis | """
|
122 | 7de0c985 | Dimitris Moraitis | request = { |
123 | 285a1fa8 | Dimitris Moraitis | "server": {
|
124 | 285a1fa8 | Dimitris Moraitis | "name" : "new-server-test", |
125 | b335768e | Markos Gogoulos | "imageRef" : 1, |
126 | b335768e | Markos Gogoulos | "flavorRef" : 1, |
127 | 285a1fa8 | Dimitris Moraitis | "metadata" : {
|
128 | 285a1fa8 | Dimitris Moraitis | "My Server Name": "Apache1" |
129 | 285a1fa8 | Dimitris Moraitis | }, |
130 | 285a1fa8 | Dimitris Moraitis | "personality" : []
|
131 | 285a1fa8 | Dimitris Moraitis | } |
132 | 7de0c985 | Dimitris Moraitis | } |
133 | 685ab2b6 | Markos Gogoulos | response = self.client.post('/api/v1.0/servers', |
134 | 685ab2b6 | Markos Gogoulos | json.dumps(request), |
135 | 685ab2b6 | Markos Gogoulos | content_type='application/json')
|
136 | 285a1fa8 | Dimitris Moraitis | self.assertEqual(response.status_code, 202) |
137 | 668c1361 | Markos Gogoulos | #TODO: check response.content
|
138 | 668c1361 | Markos Gogoulos | #TODO: check create server with wrong options (eg flavor that not exist)
|
139 | 668c1361 | Markos Gogoulos | |
140 | 668c1361 | Markos Gogoulos | |
141 | 668c1361 | Markos Gogoulos | def testRebootServer(self): |
142 | 668c1361 | Markos Gogoulos | """ test if the specified server is rebooted
|
143 | 668c1361 | Markos Gogoulos | """
|
144 | 685ab2b6 | Markos Gogoulos | request = { |
145 | 685ab2b6 | Markos Gogoulos | "reboot": '{"type" : "HARD"}' |
146 | 685ab2b6 | Markos Gogoulos | } |
147 | d2e5f1d1 | Markos Gogoulos | response = self.client.post('/api/v1.0/servers/' + str(self.test_server_id) + '/action', |
148 | 685ab2b6 | Markos Gogoulos | json.dumps(request), |
149 | 685ab2b6 | Markos Gogoulos | content_type='application/json')
|
150 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 202) |
151 | 685ab2b6 | Markos Gogoulos | #server id that does not exist
|
152 | d2e5f1d1 | Markos Gogoulos | response = self.client.post('/api/v1.0/servers/' + str(self.test_wrong_server_id) + '/action', |
153 | 685ab2b6 | Markos Gogoulos | json.dumps(request), |
154 | 685ab2b6 | Markos Gogoulos | content_type='application/json')
|
155 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
156 | 668c1361 | Markos Gogoulos | |
157 | 668c1361 | Markos Gogoulos | |
158 | 668c1361 | Markos Gogoulos | def testShutdownServer(self): |
159 | 668c1361 | Markos Gogoulos | """ test if the specified server is shutdown
|
160 | 668c1361 | Markos Gogoulos | """
|
161 | 685ab2b6 | Markos Gogoulos | request = { |
162 | 685ab2b6 | Markos Gogoulos | "shutdown": {"timeout" : "5"} |
163 | 685ab2b6 | Markos Gogoulos | } |
164 | d2e5f1d1 | Markos Gogoulos | response = self.client.post('/api/v1.0/servers/' + str(self.test_server_id) + '/action', |
165 | 685ab2b6 | Markos Gogoulos | json.dumps(request), |
166 | 685ab2b6 | Markos Gogoulos | content_type='application/json')
|
167 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 202) |
168 | 685ab2b6 | Markos Gogoulos | #server id that does not exist
|
169 | d2e5f1d1 | Markos Gogoulos | response = self.client.post('/api/v1.0/servers/' + str(self.test_wrong_server_id) + '/action', |
170 | 685ab2b6 | Markos Gogoulos | json.dumps(request), |
171 | 685ab2b6 | Markos Gogoulos | content_type='application/json')
|
172 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
173 | 668c1361 | Markos Gogoulos | |
174 | 668c1361 | Markos Gogoulos | |
175 | 668c1361 | Markos Gogoulos | def testStartServer(self): |
176 | 668c1361 | Markos Gogoulos | """ test if the specified server is started
|
177 | 668c1361 | Markos Gogoulos | """
|
178 | 685ab2b6 | Markos Gogoulos | request = { |
179 | 685ab2b6 | Markos Gogoulos | "start": {"type" : "NORMAL"} |
180 | 685ab2b6 | Markos Gogoulos | } |
181 | d2e5f1d1 | Markos Gogoulos | response = self.client.post('/api/v1.0/servers/' + str(self.test_server_id) + '/action', |
182 | 685ab2b6 | Markos Gogoulos | json.dumps(request), |
183 | 685ab2b6 | Markos Gogoulos | content_type='application/json')
|
184 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 202) |
185 | 685ab2b6 | Markos Gogoulos | #server id that does not exist
|
186 | d2e5f1d1 | Markos Gogoulos | response = self.client.post('/api/v1.0/servers/' + str(self.test_wrong_server_id) + '/action', |
187 | 685ab2b6 | Markos Gogoulos | json.dumps(request), |
188 | 685ab2b6 | Markos Gogoulos | content_type='application/json')
|
189 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
190 | 668c1361 | Markos Gogoulos | |
191 | 668c1361 | Markos Gogoulos | def testDeleteServer(self): |
192 | 668c1361 | Markos Gogoulos | """ test if the specified server is deleted
|
193 | 668c1361 | Markos Gogoulos | """
|
194 | d2e5f1d1 | Markos Gogoulos | response = self.client.delete('/api/v1.0/servers/' + str(self.test_server_id)) |
195 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 202) |
196 | 685ab2b6 | Markos Gogoulos | #server id that does not exist
|
197 | d2e5f1d1 | Markos Gogoulos | response = self.client.delete('/api/v1.0/servers/' + str(self.test_wrong_server_id)) |
198 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
199 | 668c1361 | Markos Gogoulos | |
200 | 668c1361 | Markos Gogoulos | |
201 | 668c1361 | Markos Gogoulos | def testFlavorList(self): |
202 | 668c1361 | Markos Gogoulos | """ test if the expected list of flavors is returned by the API
|
203 | 668c1361 | Markos Gogoulos | """
|
204 | 668c1361 | Markos Gogoulos | response = self.client.get('/api/v1.0/flavors') |
205 | 668c1361 | Markos Gogoulos | flavors_from_api = json.loads(response.content)['flavors']
|
206 | 668c1361 | Markos Gogoulos | flavors_from_db = Flavor.objects.all() |
207 | 668c1361 | Markos Gogoulos | self.assertEqual(len(flavors_from_api), len(flavors_from_db)) |
208 | 668c1361 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
209 | 54c30633 | Markos Gogoulos | for flavor_from_api in flavors_from_api: |
210 | 54c30633 | Markos Gogoulos | flavor_from_db = Flavor.objects.get(id=flavor_from_api['id'])
|
211 | 54c30633 | Markos Gogoulos | self.assertEqual(flavor_from_api['id'], flavor_from_db.id) |
212 | 54c30633 | Markos Gogoulos | self.assertEqual(flavor_from_api['name'], flavor_from_db.name) |
213 | 668c1361 | Markos Gogoulos | |
214 | 668c1361 | Markos Gogoulos | |
215 | 685ab2b6 | Markos Gogoulos | def testFlavorsDetails(self): |
216 | 685ab2b6 | Markos Gogoulos | """ test if the flavors details are returned by the API
|
217 | 668c1361 | Markos Gogoulos | """
|
218 | f3af8b40 | Dimitris Moraitis | response = self.client.get('/api/v1.0/flavors/detail') |
219 | f3af8b40 | Dimitris Moraitis | flavors_from_db = Flavor.objects.all() |
220 | f3af8b40 | Dimitris Moraitis | flavors_from_api = json.loads(response.content)['flavors']
|
221 | f3af8b40 | Dimitris Moraitis | |
222 | f3af8b40 | Dimitris Moraitis | # Assert that all flavors in the db appear inthe API call result
|
223 | f3af8b40 | Dimitris Moraitis | for i in range(0, len(flavors_from_db)): |
224 | f3af8b40 | Dimitris Moraitis | flavor_from_api = flavors_from_api[i] |
225 | f3af8b40 | Dimitris Moraitis | flavor_from_db = Flavor.objects.get(id=flavors_from_db[i].id) |
226 | 685ab2b6 | Markos Gogoulos | self.assertEqual(flavor_from_api['cpu'], flavor_from_db.cpu) |
227 | 685ab2b6 | Markos Gogoulos | self.assertEqual(flavor_from_api['id'], flavor_from_db.id) |
228 | 685ab2b6 | Markos Gogoulos | self.assertEqual(flavor_from_api['disk'], flavor_from_db.disk) |
229 | 685ab2b6 | Markos Gogoulos | self.assertEqual(flavor_from_api['name'], flavor_from_db.name) |
230 | 685ab2b6 | Markos Gogoulos | self.assertEqual(flavor_from_api['ram'], flavor_from_db.ram) |
231 | f3af8b40 | Dimitris Moraitis | |
232 | f3af8b40 | Dimitris Moraitis | # Assert that all flavors that appear in the API call result are also in the db
|
233 | 54c30633 | Markos Gogoulos | for flavor_from_api in flavors_from_api: |
234 | 54c30633 | Markos Gogoulos | flavor_from_db = Flavor.objects.get(id=flavor_from_api['id'])
|
235 | 54c30633 | Markos Gogoulos | self.assertEqual(flavor_from_api['cpu'], flavor_from_db.cpu) |
236 | 54c30633 | Markos Gogoulos | self.assertEqual(flavor_from_api['id'], flavor_from_db.id) |
237 | 54c30633 | Markos Gogoulos | self.assertEqual(flavor_from_api['disk'], flavor_from_db.disk) |
238 | 54c30633 | Markos Gogoulos | self.assertEqual(flavor_from_api['name'], flavor_from_db.name) |
239 | 54c30633 | Markos Gogoulos | self.assertEqual(flavor_from_api['ram'], flavor_from_db.ram) |
240 | f3af8b40 | Dimitris Moraitis | |
241 | f3af8b40 | Dimitris Moraitis | # Check if we have the right status_code
|
242 | 685ab2b6 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
243 | 7de0c985 | Dimitris Moraitis | |
244 | 7de0c985 | Dimitris Moraitis | |
245 | 685ab2b6 | Markos Gogoulos | def testFlavorDetails(self): |
246 | 685ab2b6 | Markos Gogoulos | """ test if the expected flavor is returned by the API
|
247 | 668c1361 | Markos Gogoulos | """
|
248 | d2e5f1d1 | Markos Gogoulos | response = self.client.get('/api/v1.0/flavors/' + str(self.test_flavor_id)) |
249 | 668c1361 | Markos Gogoulos | flavor_from_api = json.loads(response.content)['flavor']
|
250 | d2e5f1d1 | Markos Gogoulos | flavor_from_db = Flavor.objects.get(id=self.test_flavor_id)
|
251 | 668c1361 | Markos Gogoulos | self.assertEqual(flavor_from_api['cpu'], flavor_from_db.cpu) |
252 | 668c1361 | Markos Gogoulos | self.assertEqual(flavor_from_api['id'], flavor_from_db.id) |
253 | 668c1361 | Markos Gogoulos | self.assertEqual(flavor_from_api['disk'], flavor_from_db.disk) |
254 | 668c1361 | Markos Gogoulos | self.assertEqual(flavor_from_api['name'], flavor_from_db.name) |
255 | 668c1361 | Markos Gogoulos | self.assertEqual(flavor_from_api['ram'], flavor_from_db.ram) |
256 | 668c1361 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
257 | 668c1361 | Markos Gogoulos | |
258 | 668c1361 | Markos Gogoulos | |
259 | 668c1361 | Markos Gogoulos | def testWrongFlavor(self): |
260 | 668c1361 | Markos Gogoulos | """ test if a non existent flavor is asked, if a 404 itemNotFound returned
|
261 | 668c1361 | Markos Gogoulos | """
|
262 | d2e5f1d1 | Markos Gogoulos | response = self.client.get('/api/v1.0/flavors/' + str(self.test_wrong_flavor_id)) |
263 | ffffd5fe | Markos Gogoulos | self.assertTrue(response.status_code in [404, 503]) |
264 | 668c1361 | Markos Gogoulos | |
265 | 668c1361 | Markos Gogoulos | def testImageList(self): |
266 | 668c1361 | Markos Gogoulos | """ test if the expected list of images is returned by the API
|
267 | 668c1361 | Markos Gogoulos | """
|
268 | 668c1361 | Markos Gogoulos | response = self.client.get('/api/v1.0/images') |
269 | 668c1361 | Markos Gogoulos | images_from_api = json.loads(response.content)['images']
|
270 | 668c1361 | Markos Gogoulos | images_from_db = Image.objects.all() |
271 | 668c1361 | Markos Gogoulos | self.assertEqual(len(images_from_api), len(images_from_db)) |
272 | 668c1361 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
273 | 54c30633 | Markos Gogoulos | for image_from_api in images_from_api: |
274 | 54c30633 | Markos Gogoulos | image_from_db = Image.objects.get(id=image_from_api['id'])
|
275 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['id'], image_from_db.id) |
276 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['name'], image_from_db.name) |
277 | 668c1361 | Markos Gogoulos | |
278 | 668c1361 | Markos Gogoulos | |
279 | 668c1361 | Markos Gogoulos | def testImageDetails(self): |
280 | 668c1361 | Markos Gogoulos | """ test if the expected image is returned by the API
|
281 | 668c1361 | Markos Gogoulos | """
|
282 | d2e5f1d1 | Markos Gogoulos | response = self.client.get('/api/v1.0/images/' + str(self.test_image_id)) |
283 | 668c1361 | Markos Gogoulos | image_from_api = json.loads(response.content)['image']
|
284 | d2e5f1d1 | Markos Gogoulos | image_from_db = Image.objects.get(id=self.test_image_id)
|
285 | 668c1361 | Markos Gogoulos | self.assertEqual(image_from_api['name'], image_from_db.name) |
286 | 668c1361 | Markos Gogoulos | self.assertEqual(image_from_api['id'], image_from_db.id) |
287 | 668c1361 | Markos Gogoulos | self.assertEqual(image_from_api['serverId'], image_from_db.sourcevm and image_from_db.sourcevm.id or "") |
288 | 668c1361 | Markos Gogoulos | self.assertEqual(image_from_api['size'], image_from_db.size) |
289 | 668c1361 | Markos Gogoulos | self.assertEqual(image_from_api['status'], image_from_db.state) |
290 | 668c1361 | Markos Gogoulos | self.assertEqual(image_from_api['description'], image_from_db.description) |
291 | 668c1361 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
292 | 668c1361 | Markos Gogoulos | |
293 | 668c1361 | Markos Gogoulos | |
294 | 668c1361 | Markos Gogoulos | def testImagesDetails(self): |
295 | 668c1361 | Markos Gogoulos | """ test if the images details are returned by the API
|
296 | 668c1361 | Markos Gogoulos | """
|
297 | f3af8b40 | Dimitris Moraitis | response = self.client.get('/api/v1.0/images/detail') |
298 | f3af8b40 | Dimitris Moraitis | images_from_api = json.loads(response.content)['images']
|
299 | f3af8b40 | Dimitris Moraitis | images_from_db = Image.objects.all() |
300 | f3af8b40 | Dimitris Moraitis | for i in range(0, len(images_from_db)): |
301 | f3af8b40 | Dimitris Moraitis | image_from_db = Image.objects.get(id=images_from_db[i].id) |
302 | f3af8b40 | Dimitris Moraitis | image_from_api = images_from_api[i] |
303 | 685ab2b6 | Markos Gogoulos | self.assertEqual(image_from_api['name'], image_from_db.name) |
304 | 685ab2b6 | Markos Gogoulos | self.assertEqual(image_from_api['id'], image_from_db.id) |
305 | 685ab2b6 | Markos Gogoulos | self.assertEqual(image_from_api['serverId'], image_from_db.sourcevm and image_from_db.sourcevm.id or "") |
306 | 685ab2b6 | Markos Gogoulos | self.assertEqual(image_from_api['size'], image_from_db.size) |
307 | 685ab2b6 | Markos Gogoulos | self.assertEqual(image_from_api['status'], image_from_db.state) |
308 | 685ab2b6 | Markos Gogoulos | self.assertEqual(image_from_api['description'], image_from_db.description) |
309 | f3af8b40 | Dimitris Moraitis | |
310 | 54c30633 | Markos Gogoulos | for image_from_api in images_from_api: |
311 | 54c30633 | Markos Gogoulos | image_from_db = Image.objects.get(id=image_from_api['id'])
|
312 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['name'], image_from_db.name) |
313 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['id'], image_from_db.id) |
314 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['serverId'], image_from_db.sourcevm and image_from_db.sourcevm.id or "") |
315 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['size'], image_from_db.size) |
316 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['status'], image_from_db.state) |
317 | 54c30633 | Markos Gogoulos | self.assertEqual(image_from_api['description'], image_from_db.description) |
318 | f3af8b40 | Dimitris Moraitis | |
319 | 685ab2b6 | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
320 | 685ab2b6 | Markos Gogoulos | |
321 | 668c1361 | Markos Gogoulos | |
322 | 668c1361 | Markos Gogoulos | def testWrongImage(self): |
323 | 668c1361 | Markos Gogoulos | """ test if a non existent image is asked, if a 404 itemNotFound returned
|
324 | 668c1361 | Markos Gogoulos | """
|
325 | d2e5f1d1 | Markos Gogoulos | response = self.client.get('/api/v1.0/images/' + str(self.test_wrong_image_id)) |
326 | 685ab2b6 | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
327 | 73469364 | Markos Gogoulos | |
328 | 73469364 | Markos Gogoulos | |
329 | 73469364 | Markos Gogoulos | def testServerMetadata(self): |
330 | 73469364 | Markos Gogoulos | """ test server's metadata (add, edit)
|
331 | 73469364 | Markos Gogoulos | """
|
332 | 73469364 | Markos Gogoulos | request = { |
333 | 73469364 | Markos Gogoulos | "metadata": {"metadata_key" : "name", "metadata_value" : "a fancy name"} |
334 | 73469364 | Markos Gogoulos | } |
335 | 73469364 | Markos Gogoulos | response = self.client.put('/api/v1.0/servers' + str(self.test_server_id), |
336 | 73469364 | Markos Gogoulos | json.dumps(request), |
337 | 73469364 | Markos Gogoulos | content_type='application/json')
|
338 | 73469364 | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
339 | 73469364 | Markos Gogoulos | #TODO: not working atm, due to problem with django piston and PUT
|
340 | a8acbbac | Markos Gogoulos | |
341 | a8acbbac | Markos Gogoulos | def testVMgroupList(self): |
342 | a8acbbac | Markos Gogoulos | """ test if the expected list of groups is returned by the API
|
343 | a8acbbac | Markos Gogoulos | """
|
344 | a8acbbac | Markos Gogoulos | response = self.client.get('/api/v1.0/groups') |
345 | a8acbbac | Markos Gogoulos | groups_from_api = json.loads(response.content)['groups']
|
346 | a8acbbac | Markos Gogoulos | groups_from_db = VirtualMachineGroup.objects.all() |
347 | a8acbbac | Markos Gogoulos | self.assertEqual(len(groups_from_api), len(groups_from_db)) |
348 | a8acbbac | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
349 | a8acbbac | Markos Gogoulos | for group_from_api in groups_from_api: |
350 | a8acbbac | Markos Gogoulos | group_from_db = VirtualMachineGroup.objects.get(id=group_from_api['id'])
|
351 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['id'], group_from_db.id) |
352 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['name'], group_from_db.name) |
353 | a8acbbac | Markos Gogoulos | |
354 | a8acbbac | Markos Gogoulos | def testVMgroupDetails(self): |
355 | a8acbbac | Markos Gogoulos | """ test if the expected virtual machine group is returned by the API
|
356 | a8acbbac | Markos Gogoulos | """
|
357 | a8acbbac | Markos Gogoulos | response = self.client.get('/api/v1.0/groups/' + str(self.test_group_id)) |
358 | a8acbbac | Markos Gogoulos | group_from_api = json.loads(response.content)['group']
|
359 | a8acbbac | Markos Gogoulos | group_from_db = VirtualMachineGroup.objects.get(id=self.test_group_id)
|
360 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['name'], group_from_db.name) |
361 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['id'], group_from_db.id) |
362 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['server_id'], [machine.id for machine in group_from_db.machines.all()]) |
363 | a8acbbac | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |
364 | a8acbbac | Markos Gogoulos | |
365 | a8acbbac | Markos Gogoulos | def testWrongVMgroup(self): |
366 | a8acbbac | Markos Gogoulos | """ test if a non existent VMgroup is asked, if a 404 itemNotFound returned
|
367 | a8acbbac | Markos Gogoulos | """
|
368 | a8acbbac | Markos Gogoulos | response = self.client.get('/api/v1.0/groups/' + str(self.test_wrong_group_id)) |
369 | a8acbbac | Markos Gogoulos | self.assertEqual(response.status_code, 404) |
370 | a8acbbac | Markos Gogoulos | |
371 | a8acbbac | Markos Gogoulos | def testgroupsDetails(self): |
372 | a8acbbac | Markos Gogoulos | """ test if the groups details are returned by the API
|
373 | a8acbbac | Markos Gogoulos | """
|
374 | a8acbbac | Markos Gogoulos | response = self.client.get('/api/v1.0/groups/detail') |
375 | a8acbbac | Markos Gogoulos | groups_from_api = json.loads(response.content)['groups']
|
376 | a8acbbac | Markos Gogoulos | groups_from_db = VirtualMachineGroup.objects.all() |
377 | a8acbbac | Markos Gogoulos | for i in range(0, len(groups_from_db)): |
378 | a8acbbac | Markos Gogoulos | group_from_db = VirtualMachineGroup.objects.get(id=groups_from_db[i].id) |
379 | a8acbbac | Markos Gogoulos | group_from_api = groups_from_api[i] |
380 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['name'], group_from_db.name) |
381 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['id'], group_from_db.id) |
382 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['server_id'], [machine.id for machine in group_from_db.machines.all()]) |
383 | a8acbbac | Markos Gogoulos | for group_from_api in groups_from_api: |
384 | a8acbbac | Markos Gogoulos | group_from_db = VirtualMachineGroup.objects.get(id=group_from_api['id'])
|
385 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['name'], group_from_db.name) |
386 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['id'], group_from_db.id) |
387 | a8acbbac | Markos Gogoulos | self.assertEqual(group_from_api['server_id'], [machine.id for machine in group_from_db.machines.all()]) |
388 | a8acbbac | Markos Gogoulos | self.assertTrue(response.status_code in [200,203]) |