Add flavor name regex validation to match nova.
Fixes bug 1148372 Change-Id: Ia1f4d974ddac6cd22c0b8979e98b2ea8f31deb21
This commit is contained in:
parent
704c5a52f3
commit
a1012242d7
@ -33,7 +33,12 @@ LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CreateFlavor(forms.SelfHandlingForm):
|
||||
name = forms.CharField(max_length="25", label=_("Name"))
|
||||
name = forms.RegexField(label=_("Name"),
|
||||
max_length=25,
|
||||
regex=r'^[\w\.\- ]+$',
|
||||
error_messages={'invalid': _('Name may only '
|
||||
'contain letters, numbers, underscores, '
|
||||
'periods and hyphens.')})
|
||||
vcpus = forms.IntegerField(label=_("VCPUs"))
|
||||
memory_mb = forms.IntegerField(label=_("RAM MB"))
|
||||
disk_gb = forms.IntegerField(label=_("Root Disk GB"))
|
||||
|
@ -159,6 +159,43 @@ class FlavorsTests(test.BaseAdminViewTests):
|
||||
self.assertRedirectsNoFollow(resp,
|
||||
reverse("horizon:admin:flavors:index"))
|
||||
|
||||
@test.create_stubs({api.nova: ('flavor_list',
|
||||
'flavor_get'), })
|
||||
def test_edit_flavor_set_invalid_name(self):
|
||||
flavor_a = self.flavors.list()[0]
|
||||
flavor_b = self.flavors.list()[1]
|
||||
eph = getattr(flavor_a, 'OS-FLV-EXT-DATA:ephemeral')
|
||||
invalid_flavor_name = "m1.tiny()"
|
||||
|
||||
# GET
|
||||
api.nova.flavor_get(IsA(http.HttpRequest),
|
||||
flavor_a.id).AndReturn(flavor_a)
|
||||
|
||||
# POST
|
||||
api.nova.flavor_list(IsA(http.HttpRequest)) \
|
||||
.AndReturn(self.flavors.list())
|
||||
api.nova.flavor_get(IsA(http.HttpRequest),
|
||||
flavor_a.id).AndReturn(flavor_a)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
# get_test
|
||||
url = reverse('horizon:admin:flavors:edit', args=[flavor_a.id])
|
||||
resp = self.client.get(url)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertTemplateUsed(resp, "admin/flavors/edit.html")
|
||||
|
||||
# post test
|
||||
data = {'flavor_id': flavor_a.id,
|
||||
'name': invalid_flavor_name,
|
||||
'vcpus': flavor_a.vcpus + 1,
|
||||
'memory_mb': flavor_a.ram,
|
||||
'disk_gb': flavor_a.disk,
|
||||
'swap_mb': flavor_a.swap,
|
||||
'eph_gb': eph}
|
||||
resp = self.client.post(url, data)
|
||||
self.assertFormErrors(resp, 1, 'Name may only contain letters, '
|
||||
'numbers, underscores, periods and hyphens.')
|
||||
|
||||
@test.create_stubs({api.nova: ('flavor_list',
|
||||
'flavor_get'), })
|
||||
def test_edit_flavor_set_existing_name(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user