~ubuntu-branches/ubuntu/vivid/horizon/vivid-proposed

« back to all changes in this revision

Viewing changes to openstack_dashboard/dashboards/admin/flavors/extras/tests.py

  • Committer: Package Import Robot
  • Author(s): James Page, Chris Johnston, James Page
  • Date: 2014-10-03 17:54:18 UTC
  • mfrom: (0.3.1) (1.2.2)
  • Revision ID: package-import@ubuntu.com-20141003175418-wuk513xcytndqft7
Tags: 1:2014.2~rc1-0ubuntu1
[ Chris Johnston ]
* d/theme/css/ubuntu.css: Fix Ubuntu theme for Instances "more" dropdown
  (LP: #1308651).

[ James Page ]
* New upstream release candidate:
  - d/p/*: Refresh.
* d/watch: Use tarballs.openstack.org for upstream releases. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Licensed under the Apache License, Version 2.0 (the "License"); you may
2
 
# not use this file except in compliance with the License. You may obtain
3
 
# a copy of the License at
4
 
#
5
 
#      http://www.apache.org/licenses/LICENSE-2.0
6
 
#
7
 
# Unless required by applicable law or agreed to in writing, software
8
 
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
 
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10
 
# License for the specific language governing permissions and limitations
11
 
# under the License.
12
 
 
13
 
from django.core.urlresolvers import reverse
14
 
from django import http
15
 
 
16
 
from mox import IsA  # noqa
17
 
 
18
 
from openstack_dashboard import api
19
 
from openstack_dashboard.test import helpers as test
20
 
 
21
 
 
22
 
class FlavorExtrasTests(test.BaseAdminViewTests):
23
 
 
24
 
    @test.create_stubs({api.nova: ('flavor_get_extras',
25
 
                                   'flavor_get'), })
26
 
    def test_list_extras_when_none_exists(self):
27
 
        flavor = self.flavors.first()
28
 
        extras = [api.nova.FlavorExtraSpec(flavor.id, 'k1', 'v1')]
29
 
 
30
 
        # GET -- to determine correctness of output
31
 
        api.nova.flavor_get(IsA(http.HttpRequest), flavor.id).AndReturn(flavor)
32
 
        api.nova.flavor_get_extras(IsA(http.HttpRequest),
33
 
                                 flavor.id).AndReturn(extras)
34
 
        self.mox.ReplayAll()
35
 
        url = reverse('horizon:admin:flavors:extras:index', args=[flavor.id])
36
 
        resp = self.client.get(url)
37
 
        self.assertEqual(resp.status_code, 200)
38
 
        self.assertTemplateUsed(resp, "admin/flavors/extras/index.html")
39
 
 
40
 
    @test.create_stubs({api.nova: ('flavor_extra_set', ), })
41
 
    def _generic_extra_create_post(self, key_name):
42
 
        flavor = self.flavors.first()
43
 
        create_url = reverse('horizon:admin:flavors:extras:create',
44
 
                             args=[flavor.id])
45
 
        index_url = reverse('horizon:admin:flavors:extras:index',
46
 
                            args=[flavor.id])
47
 
 
48
 
        # GET to display the flavor_name
49
 
        api.nova.flavor_extra_set(IsA(http.HttpRequest),
50
 
                                  flavor.id,
51
 
                                  {key_name: 'v1'})
52
 
        self.mox.ReplayAll()
53
 
 
54
 
        data = {'flavor_id': flavor.id,
55
 
                'keys': 'custom',
56
 
                'key': key_name,
57
 
                'value': 'v1'}
58
 
        resp = self.client.post(create_url, data)
59
 
        self.assertNoFormErrors(resp)
60
 
        self.assertRedirectsNoFollow(resp, index_url)
61
 
        self.mox.UnsetStubs()
62
 
 
63
 
    @test.create_stubs({api.nova: ('flavor_extra_set', ), })
64
 
    def test_extra_create_with_template(self):
65
 
        flavor = self.flavors.first()
66
 
        create_url = reverse('horizon:admin:flavors:extras:create',
67
 
                             args=[flavor.id])
68
 
        index_url = reverse('horizon:admin:flavors:extras:index',
69
 
                            args=[flavor.id])
70
 
 
71
 
        # GET to display the flavor_name
72
 
        api.nova.flavor_extra_set(IsA(http.HttpRequest),
73
 
                                  flavor.id,
74
 
                                  {'quota:disk_read_bytes_sec': '1000'})
75
 
        self.mox.ReplayAll()
76
 
 
77
 
        data = {'flavor_id': flavor.id,
78
 
                'keys': 'quota:disk_read_bytes_sec',
79
 
                'value': '1000'}
80
 
        resp = self.client.post(create_url, data)
81
 
        self.assertNoFormErrors(resp)
82
 
        self.assertRedirectsNoFollow(resp, index_url)
83
 
 
84
 
    @test.create_stubs({api.nova: ('flavor_get', ), })
85
 
    def test_extra_create_get(self):
86
 
        flavor = self.flavors.first()
87
 
        create_url = reverse('horizon:admin:flavors:extras:create',
88
 
                             args=[flavor.id])
89
 
 
90
 
        api.nova.flavor_get(IsA(http.HttpRequest), flavor.id).AndReturn(flavor)
91
 
        self.mox.ReplayAll()
92
 
 
93
 
        resp = self.client.get(create_url)
94
 
        self.assertEqual(resp.status_code, 200)
95
 
        self.assertTemplateUsed(resp,
96
 
                                'admin/flavors/extras/create.html')
97
 
 
98
 
    @test.create_stubs({api.nova: ('flavor_get', ), })
99
 
    def _generic_extra_create_names_format_fail(self, key_name):
100
 
        flavor = self.flavors.first()
101
 
        create_url = reverse('horizon:admin:flavors:extras:create',
102
 
                             args=[flavor.id])
103
 
        api.nova.flavor_get(IsA(http.HttpRequest), flavor.id).AndReturn(flavor)
104
 
 
105
 
        self.mox.ReplayAll()
106
 
 
107
 
        data = {'flavor_id': flavor.id,
108
 
                'keys': 'custom',
109
 
                'key': key_name,
110
 
                'value': 'v1'}
111
 
 
112
 
        resp = self.client.post(create_url, data)
113
 
        msg = ('Name may only contain letters, numbers, underscores, periods, '
114
 
              'colons, spaces and hyphens.')
115
 
 
116
 
        self.assertFormErrors(resp, 1, msg)
117
 
        self.mox.UnsetStubs()
118
 
 
119
 
    def test_create_extra_key_names_valid_formats(self):
120
 
        valid_keys = ("key1", "month.price", "I-Am:AK-ey. 22-")
121
 
        for x in valid_keys:
122
 
            self._generic_extra_create_post(key_name=x)
123
 
 
124
 
    def test_create_extra_key_names_invalid_formats(self):
125
 
        invalid_keys = ("key1/", "<key>", "$$akey$", "!akey")
126
 
        for x in invalid_keys:
127
 
            self._generic_extra_create_names_format_fail(key_name=x)