Statistics
| Branch: | Tag: | Revision:

root / api / tests_redux.py @ 838c404d

History | View | Annotate | Download (2.9 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 29a59bc1 Giorgos Verigakis
from django.utils import simplejson as json
8 7e2f9d4b Giorgos Verigakis
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 90d90bd2 Giorgos Verigakis
                "flavorRef" : "%(flavorRef)s",
30 90d90bd2 Giorgos Verigakis
                "imageRef" : "%(imageRef)s"
31 7e2f9d4b Giorgos Verigakis
            }
32 7e2f9d4b Giorgos Verigakis
        }
33 7e2f9d4b Giorgos Verigakis
        '''
34 7e2f9d4b Giorgos Verigakis
        
35 90d90bd2 Giorgos Verigakis
        def new_server(imageRef=1, flavorRef=1):
36 7e2f9d4b Giorgos Verigakis
            name = self.create_server_name()
37 90d90bd2 Giorgos Verigakis
            return name, TEMPLATE % dict(name=name, imageRef=imageRef, flavorRef=flavorRef)
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 90d90bd2 Giorgos Verigakis
            assert server['imageRef'] == 1
45 90d90bd2 Giorgos Verigakis
            assert server['flavorRef'] == 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 90d90bd2 Giorgos Verigakis
        name, data = new_server(imageRef=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 90d90bd2 Giorgos Verigakis
        name, data = new_server(flavorRef=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')