~ttx/nova/d4-merge

« back to all changes in this revision

Viewing changes to nova/tests/api/openstack/test_flavors_extra_specs.py

  • Committer: Thierry Carrez
  • Date: 2011-08-23 12:23:07 UTC
  • mfrom: (1130.75.258 nova)
  • Revision ID: thierry@openstack.org-20110823122307-f0vtuyg1ikc14n87
Merge diablo-4 development from trunk (rev1479)

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
import json
19
19
import stubout
20
 
import unittest
21
20
import webob
22
21
import os.path
23
22
 
24
23
 
25
 
from nova import flags
 
24
from nova import test
26
25
from nova.api import openstack
27
 
from nova.api.openstack import auth
28
26
from nova.api.openstack import extensions
29
27
from nova.tests.api.openstack import fakes
30
28
import nova.wsgi
31
29
 
32
 
FLAGS = flags.FLAGS
33
 
 
34
30
 
35
31
def return_create_flavor_extra_specs(context, flavor_id, extra_specs):
36
32
    return stub_flavor_extra_specs()
40
36
    return stub_flavor_extra_specs()
41
37
 
42
38
 
43
 
def return_flavor_extra_specs(context, flavor_id):
44
 
    return stub_flavor_extra_specs()
45
 
 
46
 
 
47
39
def return_empty_flavor_extra_specs(context, flavor_id):
48
40
    return {}
49
41
 
62
54
    return specs
63
55
 
64
56
 
65
 
class FlavorsExtraSpecsTest(unittest.TestCase):
 
57
class FlavorsExtraSpecsTest(test.TestCase):
66
58
 
67
59
    def setUp(self):
68
60
        super(FlavorsExtraSpecsTest, self).setUp()
69
 
        FLAGS.osapi_extensions_path = os.path.join(os.path.dirname(__file__),
70
 
                                                    "extensions")
71
 
        self.stubs = stubout.StubOutForTesting()
72
 
        fakes.FakeAuthManager.auth_data = {}
73
 
        fakes.FakeAuthDatabase.data = {}
74
 
        fakes.stub_out_auth(self.stubs)
75
61
        fakes.stub_out_key_pair_funcs(self.stubs)
76
 
        self.mware = auth.AuthMiddleware(
77
 
                      extensions.ExtensionMiddleware(
78
 
                      openstack.APIRouterV11()))
79
 
 
80
 
    def tearDown(self):
81
 
        self.stubs.UnsetAll()
82
 
        super(FlavorsExtraSpecsTest, self).tearDown()
83
62
 
84
63
    def test_index(self):
85
64
        self.stubs.Set(nova.db.api, 'instance_type_extra_specs_get',
86
65
                       return_flavor_extra_specs)
87
 
        request = webob.Request.blank('/flavors/1/os-extra_specs')
88
 
        res = request.get_response(self.mware)
 
66
        request = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs')
 
67
        res = request.get_response(fakes.wsgi_app())
89
68
        self.assertEqual(200, res.status_int)
90
69
        res_dict = json.loads(res.body)
91
70
        self.assertEqual('application/json', res.headers['Content-Type'])
94
73
    def test_index_no_data(self):
95
74
        self.stubs.Set(nova.db.api, 'instance_type_extra_specs_get',
96
75
                       return_empty_flavor_extra_specs)
97
 
        req = webob.Request.blank('/flavors/1/os-extra_specs')
98
 
        res = req.get_response(self.mware)
 
76
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs')
 
77
        res = req.get_response(fakes.wsgi_app())
99
78
        res_dict = json.loads(res.body)
100
79
        self.assertEqual(200, res.status_int)
101
80
        self.assertEqual('application/json', res.headers['Content-Type'])
104
83
    def test_show(self):
105
84
        self.stubs.Set(nova.db.api, 'instance_type_extra_specs_get',
106
85
                       return_flavor_extra_specs)
107
 
        req = webob.Request.blank('/flavors/1/os-extra_specs/key5')
108
 
        res = req.get_response(self.mware)
 
86
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs/key5')
 
87
        res = req.get_response(fakes.wsgi_app())
109
88
        self.assertEqual(200, res.status_int)
110
89
        res_dict = json.loads(res.body)
111
90
        self.assertEqual('application/json', res.headers['Content-Type'])
114
93
    def test_show_spec_not_found(self):
115
94
        self.stubs.Set(nova.db.api, 'instance_type_extra_specs_get',
116
95
                       return_empty_flavor_extra_specs)
117
 
        req = webob.Request.blank('/flavors/1/os-extra_specs/key6')
118
 
        res = req.get_response(self.mware)
 
96
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs/key6')
 
97
        res = req.get_response(fakes.wsgi_app())
119
98
        res_dict = json.loads(res.body)
120
99
        self.assertEqual(404, res.status_int)
121
100
 
122
101
    def test_delete(self):
123
102
        self.stubs.Set(nova.db.api, 'instance_type_extra_specs_delete',
124
103
                       delete_flavor_extra_specs)
125
 
        req = webob.Request.blank('/flavors/1/os-extra_specs/key5')
 
104
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs/key5')
126
105
        req.method = 'DELETE'
127
 
        res = req.get_response(self.mware)
 
106
        res = req.get_response(fakes.wsgi_app())
128
107
        self.assertEqual(200, res.status_int)
129
108
 
130
109
    def test_create(self):
131
110
        self.stubs.Set(nova.db.api,
132
111
                       'instance_type_extra_specs_update_or_create',
133
112
                       return_create_flavor_extra_specs)
134
 
        req = webob.Request.blank('/flavors/1/os-extra_specs')
 
113
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs')
135
114
        req.method = 'POST'
136
115
        req.body = '{"extra_specs": {"key1": "value1"}}'
137
116
        req.headers["content-type"] = "application/json"
138
 
        res = req.get_response(self.mware)
 
117
        res = req.get_response(fakes.wsgi_app())
139
118
        res_dict = json.loads(res.body)
140
119
        self.assertEqual(200, res.status_int)
141
120
        self.assertEqual('application/json', res.headers['Content-Type'])
145
124
        self.stubs.Set(nova.db.api,
146
125
                       'instance_type_extra_specs_update_or_create',
147
126
                       return_create_flavor_extra_specs)
148
 
        req = webob.Request.blank('/flavors/1/os-extra_specs')
 
127
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs')
149
128
        req.method = 'POST'
150
129
        req.headers["content-type"] = "application/json"
151
 
        res = req.get_response(self.mware)
 
130
        res = req.get_response(fakes.wsgi_app())
152
131
        self.assertEqual(400, res.status_int)
153
132
 
154
133
    def test_update_item(self):
155
134
        self.stubs.Set(nova.db.api,
156
135
                       'instance_type_extra_specs_update_or_create',
157
136
                       return_create_flavor_extra_specs)
158
 
        req = webob.Request.blank('/flavors/1/os-extra_specs/key1')
 
137
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs/key1')
159
138
        req.method = 'PUT'
160
139
        req.body = '{"key1": "value1"}'
161
140
        req.headers["content-type"] = "application/json"
162
 
        res = req.get_response(self.mware)
 
141
        res = req.get_response(fakes.wsgi_app())
163
142
        self.assertEqual(200, res.status_int)
164
143
        self.assertEqual('application/json', res.headers['Content-Type'])
165
144
        res_dict = json.loads(res.body)
169
148
        self.stubs.Set(nova.db.api,
170
149
                       'instance_type_extra_specs_update_or_create',
171
150
                       return_create_flavor_extra_specs)
172
 
        req = webob.Request.blank('/flavors/1/os-extra_specs/key1')
 
151
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs/key1')
173
152
        req.method = 'PUT'
174
153
        req.headers["content-type"] = "application/json"
175
 
        res = req.get_response(self.mware)
 
154
        res = req.get_response(fakes.wsgi_app())
176
155
        self.assertEqual(400, res.status_int)
177
156
 
178
157
    def test_update_item_too_many_keys(self):
179
158
        self.stubs.Set(nova.db.api,
180
159
                       'instance_type_extra_specs_update_or_create',
181
160
                       return_create_flavor_extra_specs)
182
 
        req = webob.Request.blank('/flavors/1/os-extra_specs/key1')
 
161
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs/key1')
183
162
        req.method = 'PUT'
184
163
        req.body = '{"key1": "value1", "key2": "value2"}'
185
164
        req.headers["content-type"] = "application/json"
186
 
        res = req.get_response(self.mware)
 
165
        res = req.get_response(fakes.wsgi_app())
187
166
        self.assertEqual(400, res.status_int)
188
167
 
189
168
    def test_update_item_body_uri_mismatch(self):
190
169
        self.stubs.Set(nova.db.api,
191
170
                       'instance_type_extra_specs_update_or_create',
192
171
                       return_create_flavor_extra_specs)
193
 
        req = webob.Request.blank('/flavors/1/os-extra_specs/bad')
 
172
        req = webob.Request.blank('/v1.1/123/flavors/1/os-extra_specs/bad')
194
173
        req.method = 'PUT'
195
174
        req.body = '{"key1": "value1"}'
196
175
        req.headers["content-type"] = "application/json"
197
 
        res = req.get_response(self.mware)
 
176
        res = req.get_response(fakes.wsgi_app())
198
177
        self.assertEqual(400, res.status_int)