155
156
res = self.client.post(url, form_data)
156
157
self.assertRedirectsNoFollow(res, INDEX_URL)
159
@test.create_stubs({api.heat: ('stack_create', 'template_validate')})
160
def test_launch_stackwith_environment(self):
161
template = self.stack_templates.first()
162
environment = self.stack_environments.first()
163
stack = self.stacks.first()
165
api.heat.template_validate(IsA(http.HttpRequest),
166
template=template.data) \
167
.AndReturn(json.loads(template.validate))
169
api.heat.stack_create(IsA(http.HttpRequest),
170
stack_name=stack.stack_name,
172
disable_rollback=True,
173
template=template.data,
174
environment=environment.data,
175
parameters=IsA(dict),
180
url = reverse('horizon:project:stacks:select_template')
181
res = self.client.get(url)
182
self.assertTemplateUsed(res, 'project/stacks/select_template.html')
184
form_data = {'template_source': 'raw',
185
'template_data': template.data,
186
'environment_source': 'raw',
187
'environment_data': environment.data,
188
'method': forms.TemplateForm.__name__}
189
res = self.client.post(url, form_data)
190
self.assertTemplateUsed(res, 'project/stacks/create.html')
192
url = reverse('horizon:project:stacks:launch')
193
form_data = {'template_source': 'raw',
194
'template_data': template.data,
195
'environment_source': 'raw',
196
'environment_data': environment.data,
197
'password': 'password',
198
'parameters': template.validate,
199
'stack_name': stack.stack_name,
201
"disable_rollback": True,
202
"__param_DBUsername": "admin",
203
"__param_LinuxDistribution": "F17",
204
"__param_InstanceType": "m1.small",
205
"__param_KeyName": "test",
206
"__param_DBPassword": "admin",
207
"__param_DBRootPassword": "admin",
208
"__param_DBName": "wordpress",
209
'method': forms.CreateStackForm.__name__}
210
res = self.client.post(url, form_data)
211
self.assertRedirectsNoFollow(res, INDEX_URL)
158
213
@test.create_stubs({api.heat: ('stack_update', 'stack_get',
159
214
'template_get', 'template_validate')})
160
215
def test_edit_stack_template(self):
299
362
msg = forms.exception_to_validation_msg(json_error)
300
363
self.assertIsNone(msg)
365
def test_create_upload_form_attributes(self):
366
attrs = forms.create_upload_form_attributes(
367
'env', 'url', 'Environment')
368
self.assertEqual(attrs['data-envsource-url'], 'Environment')
370
def test_clean_file_upload_form_url(self):
371
kwargs = {'next_view': 'Launch Stack'}
372
t = forms.TemplateForm({}, **kwargs)
374
'template_url': 'http://templateurl.com',
376
t.clean_uploaded_files('template', 'template', precleaned, {})
378
self.assertEqual(precleaned['template_url'], 'http://templateurl.com')
380
def test_clean_file_upload_form_multiple(self):
381
kwargs = {'next_view': 'Launch Stack'}
382
t = forms.TemplateForm({}, **kwargs)
384
'template_url': 'http://templateurl.com',
385
'template_data': 'http://templateurl.com',
388
exceptions.ValidationError,
389
t.clean_uploaded_files,
395
def test_clean_file_upload_form_invalid_json(self):
396
kwargs = {'next_view': 'Launch Stack'}
397
t = forms.TemplateForm({}, **kwargs)
399
'template_data': 'http://templateurl.com',
401
json_str = '{notvalidjson::::::json/////json'
402
files = {'template_upload':
403
self.SimpleFile('template_name', json_str)}
406
exceptions.ValidationError,
407
t.clean_uploaded_files,
413
def test_clean_file_upload_form_valid_data(self):
414
kwargs = {'next_view': 'Launch Stack'}
415
t = forms.TemplateForm({}, **kwargs)
417
'template_data': 'http://templateurl.com',
420
json_str = '{"isvalid":"json"}'
421
files = {'template_upload':
422
self.SimpleFile('template_name', json_str)}
424
t.clean_uploaded_files('template', 'template', precleaned, files)
427
precleaned['template_data'])