Merge ~d0ugal/maas:assert-form-valid into maas:master

Proposed by Dougal Matthews
Status: Merged
Approved by: Dougal Matthews
Approved revision: 8ed13ebbe2019317d864008658eb46f1b077a4fa
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~d0ugal/maas:assert-form-valid
Merge into: maas:master
Diff against target: 372 lines (+37/-37)
11 files modified
src/maasserver/forms/tests/test_clone.py (+1/-1)
src/maasserver/forms/tests/test_machinewithmacaddresses.py (+7/-7)
src/maasserver/forms/tests/test_parameters.py (+11/-11)
src/maasserver/forms/tests/test_partition.py (+4/-4)
src/maasserver/forms/tests/test_pods.py (+2/-2)
src/maasserver/forms/tests/test_script.py (+4/-4)
src/maasserver/forms/tests/test_user.py (+2/-2)
src/maasserver/forms/tests/test_vlan.py (+1/-1)
src/maasserver/forms/tests/test_zone.py (+1/-1)
src/maasserver/tests/test_config_forms.py (+3/-3)
src/maasserver/tests/test_node_constraint_filter_forms.py (+1/-1)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Björn Tillenius Approve
Review via email: mp+394344@code.launchpad.net

Commit message

Improve the error message on tests that verify a form is valid

Without this change the error is something like "False is not True" and
provides you with no other context. This will include the form error
messages in the failure.

To post a comment you must log in.
Revision history for this message
Björn Tillenius (bjornt) wrote :

+1

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b assert-form-valid lp:~d0ugal/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 8ed13ebbe2019317d864008658eb46f1b077a4fa

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/forms/tests/test_clone.py b/src/maasserver/forms/tests/test_clone.py
2index 83b7035..7868ea8 100644
3--- a/src/maasserver/forms/tests/test_clone.py
4+++ b/src/maasserver/forms/tests/test_clone.py
5@@ -195,6 +195,6 @@ class TestCloneForm(MAASServerTestCase):
6 "interfaces": True,
7 },
8 )
9- self.assertTrue(form.is_valid())
10+ self.assertTrue(form.is_valid(), form.errors)
11 # An exception here will cause the test to fail.
12 form.save()
13diff --git a/src/maasserver/forms/tests/test_machinewithmacaddresses.py b/src/maasserver/forms/tests/test_machinewithmacaddresses.py
14index f851adf..716cc25 100644
15--- a/src/maasserver/forms/tests/test_machinewithmacaddresses.py
16+++ b/src/maasserver/forms/tests/test_machinewithmacaddresses.py
17@@ -157,7 +157,7 @@ class MachineWithMACAddressesFormTest(MAASServerTestCase):
18 )
19 )
20
21- self.assertTrue(form.is_valid())
22+ self.assertTrue(form.is_valid(), form.errors)
23
24 def test_mac_address_is_required(self):
25 form = MachineWithMACAddressesForm(
26@@ -176,14 +176,14 @@ class MachineWithMACAddressesFormTest(MAASServerTestCase):
27 params["architecture"] = None
28 params["power_type"] = "ipmi"
29 form = MachineWithMACAddressesForm(data=params)
30- self.assertTrue(form.is_valid())
31+ self.assertTrue(form.is_valid(), form.errors)
32
33 def test_save(self):
34 macs = ["aa:bb:cc:dd:ee:ff", "9a:bb:c3:33:e5:7f"]
35 form = MachineWithMACAddressesForm(
36 data=self.make_params(mac_addresses=macs)
37 )
38- self.assertTrue(form.is_valid())
39+ self.assertTrue(form.is_valid(), form.errors)
40 node = form.save()
41
42 self.assertIsNotNone(node.id) # The node is persisted.
43@@ -194,7 +194,7 @@ class MachineWithMACAddressesFormTest(MAASServerTestCase):
44
45 def test_form_without_hostname_generates_hostname(self):
46 form = MachineWithMACAddressesForm(data=self.make_params(hostname=""))
47- self.assertTrue(form.is_valid())
48+ self.assertTrue(form.is_valid(), form.errors)
49 node = form.save()
50 self.assertTrue(len(node.hostname) > 0)
51
52@@ -203,7 +203,7 @@ class MachineWithMACAddressesFormTest(MAASServerTestCase):
53 form = MachineWithMACAddressesForm(
54 data=self.make_params(hostname=ip_based_hostname)
55 )
56- self.assertTrue(form.is_valid())
57+ self.assertTrue(form.is_valid(), form.errors)
58 node = form.save()
59 self.assertNotEqual("192-168-12-10", node.hostname)
60
61@@ -212,7 +212,7 @@ class MachineWithMACAddressesFormTest(MAASServerTestCase):
62 form = MachineWithMACAddressesForm(
63 data=self.make_params(hostname=ip_prefixed_hostname)
64 )
65- self.assertTrue(form.is_valid())
66+ self.assertTrue(form.is_valid(), form.errors)
67 node = form.save()
68 self.assertEqual("192-168-12-10-extra", node.hostname)
69
70@@ -220,7 +220,7 @@ class MachineWithMACAddressesFormTest(MAASServerTestCase):
71 form = MachineWithMACAddressesForm(
72 data={"commission": True, **self.make_params()}
73 )
74- self.assertTrue(form.is_valid())
75+ self.assertTrue(form.is_valid(), form.errors)
76 machine = form.save()
77 self.assertEquals(NODE_STATUS.COMMISSIONING, machine.status)
78 self.assertIsNotNone(machine.current_commissioning_script_set)
79diff --git a/src/maasserver/forms/tests/test_parameters.py b/src/maasserver/forms/tests/test_parameters.py
80index 57dc716..ac3eed3 100644
81--- a/src/maasserver/forms/tests/test_parameters.py
82+++ b/src/maasserver/forms/tests/test_parameters.py
83@@ -237,7 +237,7 @@ class TestParametersForm(MAASServerTestCase):
84 "runtime": {"type": "runtime"},
85 }
86 )
87- self.assertTrue(form.is_valid())
88+ self.assertTrue(form.is_valid(), form.errors)
89
90 def test_validates_against_unsupported_parameter_types(self):
91 unsupported_type = factory.make_name("unsupported")
92@@ -258,7 +258,7 @@ class TestParametersForm(MAASServerTestCase):
93 form = ParametersForm(
94 data={"storage": {"type": unsupported_type, "required": False}}
95 )
96- self.assertTrue(form.is_valid())
97+ self.assertTrue(form.is_valid(), form.errors)
98
99 def test_validates_storage_interface_type_has_no_min_or_max(self):
100 ptype = random.choice(["storage", "interface"])
101@@ -902,7 +902,7 @@ class TestParametersForm(MAASServerTestCase):
102 def test_input_url_defaults_empty_with_no_input(self):
103 script = factory.make_Script(parameters={"url": {"type": "url"}})
104 form = ParametersForm(data={}, script=script, node=factory.make_Node())
105- self.assertTrue(form.is_valid())
106+ self.assertTrue(form.is_valid(), form.errors)
107 self.assertDictEqual({}, form.cleaned_data["input"][0])
108
109 def test_input_url_allows_ipv4(self):
110@@ -1074,7 +1074,7 @@ class TestParametersForm(MAASServerTestCase):
111 data={param_type: input}, script=script, node=factory.make_Node()
112 )
113
114- self.assertTrue(form.is_valid())
115+ self.assertTrue(form.is_valid(), form.errors)
116 self.assertEqual(
117 input, form.cleaned_data["input"][0][param_type]["value"]
118 )
119@@ -1091,7 +1091,7 @@ class TestParametersForm(MAASServerTestCase):
120 data={param_type: input}, script=script, node=factory.make_Node()
121 )
122
123- self.assertTrue(form.is_valid())
124+ self.assertTrue(form.is_valid(), form.errors)
125 self.assertEqual(
126 input, form.cleaned_data["input"][0][param_type]["value"]
127 )
128@@ -1106,7 +1106,7 @@ class TestParametersForm(MAASServerTestCase):
129
130 form = ParametersForm(data={}, script=script, node=factory.make_Node())
131
132- self.assertTrue(form.is_valid())
133+ self.assertTrue(form.is_valid(), form.errors)
134 self.assertEqual(
135 default, form.cleaned_data["input"][0][param_type]["value"]
136 )
137@@ -1120,7 +1120,7 @@ class TestParametersForm(MAASServerTestCase):
138
139 form = ParametersForm(data={}, script=script, node=factory.make_Node())
140
141- self.assertTrue(form.is_valid())
142+ self.assertTrue(form.is_valid(), form.errors)
143 self.assertEqual(
144 maas_auto_ipmi_user,
145 form.cleaned_data["input"][0]["maas_auto_ipmi_user"]["value"],
146@@ -1139,7 +1139,7 @@ class TestParametersForm(MAASServerTestCase):
147
148 form = ParametersForm(data={}, script=script, node=factory.make_Node())
149
150- self.assertTrue(form.is_valid())
151+ self.assertTrue(form.is_valid(), form.errors)
152 self.assertEqual(
153 maas_auto_ipmi_k_g_bmc_key,
154 form.cleaned_data["input"][0]["maas_auto_ipmi_k_g_bmc_key"][
155@@ -1203,7 +1203,7 @@ class TestParametersForm(MAASServerTestCase):
156 data={"choice": choice}, script=script, node=factory.make_Node()
157 )
158
159- self.assertTrue(form.is_valid())
160+ self.assertTrue(form.is_valid(), form.errors)
161 self.assertEqual(
162 choice, form.cleaned_data["input"][0]["choice"]["value"]
163 )
164@@ -1223,7 +1223,7 @@ class TestParametersForm(MAASServerTestCase):
165 data={"choice": choice}, script=script, node=factory.make_Node()
166 )
167
168- self.assertTrue(form.is_valid())
169+ self.assertTrue(form.is_valid(), form.errors)
170 self.assertEqual(
171 choice, form.cleaned_data["input"][0]["choice"]["value"]
172 )
173@@ -1247,7 +1247,7 @@ class TestParametersForm(MAASServerTestCase):
174
175 form = ParametersForm(data={}, script=script, node=factory.make_Node())
176
177- self.assertTrue(form.is_valid())
178+ self.assertTrue(form.is_valid(), form.errors)
179 self.assertEqual(
180 default, form.cleaned_data["input"][0]["choice"]["value"]
181 )
182diff --git a/src/maasserver/forms/tests/test_partition.py b/src/maasserver/forms/tests/test_partition.py
183index f1a7494..ee378d0 100644
184--- a/src/maasserver/forms/tests/test_partition.py
185+++ b/src/maasserver/forms/tests/test_partition.py
186@@ -78,7 +78,7 @@ class TestAddPartitionForm(MAASServerTestCase):
187 )
188 data = {"size": size}
189 form = AddPartitionForm(block_device, data=data)
190- self.assertTrue(form.is_valid())
191+ self.assertTrue(form.is_valid(), form.errors)
192 partition = form.save()
193 self.assertEqual(rounded_size, partition.size)
194
195@@ -87,7 +87,7 @@ class TestAddPartitionForm(MAASServerTestCase):
196 part_uuid = "%s" % uuid.uuid4()
197 data = {"size": MIN_BLOCK_DEVICE_SIZE, "uuid": part_uuid}
198 form = AddPartitionForm(block_device, data=data)
199- self.assertTrue(form.is_valid())
200+ self.assertTrue(form.is_valid(), form.errors)
201 partition = form.save()
202 self.assertEqual(part_uuid, partition.uuid)
203
204@@ -95,7 +95,7 @@ class TestAddPartitionForm(MAASServerTestCase):
205 block_device = factory.make_PhysicalBlockDevice()
206 data = {"size": MIN_BLOCK_DEVICE_SIZE, "bootable": True}
207 form = AddPartitionForm(block_device, data=data)
208- self.assertTrue(form.is_valid())
209+ self.assertTrue(form.is_valid(), form.errors)
210 partition = form.save()
211 self.assertTrue(partition.bootable, "Partition should be bootable.")
212
213@@ -109,7 +109,7 @@ class TestAddPartitionForm(MAASServerTestCase):
214 )
215 data = {"uuid": str(uuid.uuid4())}
216 form = AddPartitionForm(block_device, data=data)
217- self.assertTrue(form.is_valid())
218+ self.assertTrue(form.is_valid(), form.errors)
219 partition = form.save()
220 self.assertEqual(
221 partition.size, partition_table.get_size() - first_partition.size
222diff --git a/src/maasserver/forms/tests/test_pods.py b/src/maasserver/forms/tests/test_pods.py
223index b47d412..fe04080 100644
224--- a/src/maasserver/forms/tests/test_pods.py
225+++ b/src/maasserver/forms/tests/test_pods.py
226@@ -1001,7 +1001,7 @@ class TestComposeMachineForm(MAASTransactionServerTestCase):
227 request = MagicMock()
228 pod = make_pod_with_hints()
229 form = ComposeMachineForm(data={}, request=request, pod=pod)
230- self.assertTrue(form.is_valid())
231+ self.assertTrue(form.is_valid(), form.errors)
232 request_machine = form.get_requested_machine(
233 get_known_host_interfaces(pod)
234 )
235@@ -2067,7 +2067,7 @@ class TestComposeMachineForm(MAASTransactionServerTestCase):
236 mock_commissioning = self.patch(Machine, "start_commissioning")
237
238 form = ComposeMachineForm(data={}, request=request, pod=pod)
239- self.assertTrue(form.is_valid())
240+ self.assertTrue(form.is_valid(), form.errors)
241 created_machine = form.compose()
242 self.assertThat(
243 created_machine,
244diff --git a/src/maasserver/forms/tests/test_script.py b/src/maasserver/forms/tests/test_script.py
245index cc6efb7..13df30f 100644
246--- a/src/maasserver/forms/tests/test_script.py
247+++ b/src/maasserver/forms/tests/test_script.py
248@@ -151,7 +151,7 @@ class TestScriptForm(MAASServerTestCase):
249 "default": True,
250 }
251 )
252- self.assertTrue(form.is_valid())
253+ self.assertTrue(form.is_valid(), form.errors)
254 script = form.save()
255 self.assertFalse(script.default)
256
257@@ -317,7 +317,7 @@ class TestScriptForm(MAASServerTestCase):
258 data={"tags": ",".join(tags), "timeout": str(timeout)},
259 instance=script,
260 )
261- self.assertTrue(form.is_valid())
262+ self.assertTrue(form.is_valid(), form.errors)
263 script = form.save()
264
265 self.assertThat(script.tags, ContainsAll(tags))
266@@ -596,7 +596,7 @@ class TestScriptForm(MAASServerTestCase):
267 "type": script_type,
268 }
269 )
270- self.assertTrue(form.is_valid())
271+ self.assertTrue(form.is_valid(), form.errors)
272 script = form.save()
273 self.assertEquals(script_type, script.script_type)
274
275@@ -698,7 +698,7 @@ class TestScriptForm(MAASServerTestCase):
276 ),
277 }
278 )
279- self.assertTrue(form.is_valid())
280+ self.assertTrue(form.is_valid(), form.errors)
281
282 def test_errors_on_bad_yaml(self):
283 form = ScriptForm(
284diff --git a/src/maasserver/forms/tests/test_user.py b/src/maasserver/forms/tests/test_user.py
285index 0cb8f75..8cf451b 100644
286--- a/src/maasserver/forms/tests/test_user.py
287+++ b/src/maasserver/forms/tests/test_user.py
288@@ -38,7 +38,7 @@ class TestUniqueEmailForms(MAASServerTestCase):
289 email = "%s@example.com" % factory.make_string()
290 user = factory.make_User(email=email)
291 form = ProfileForm(instance=user, data={"email": email})
292- self.assertTrue(form.is_valid())
293+ self.assertTrue(form.is_valid(), form.errors)
294
295 def test_NewUserCreationForm_fails_validation_if_email_taken(self):
296 email = "%s@example.com" % factory.make_string()
297@@ -70,7 +70,7 @@ class TestUniqueEmailForms(MAASServerTestCase):
298 instance=user,
299 data={"email": email, "username": factory.make_string()},
300 )
301- self.assertTrue(form.is_valid())
302+ self.assertTrue(form.is_valid(), form.errors)
303
304
305 class TestNewUserCreationForm(MAASServerTestCase):
306diff --git a/src/maasserver/forms/tests/test_vlan.py b/src/maasserver/forms/tests/test_vlan.py
307index 0b91be7..1f25e3a 100644
308--- a/src/maasserver/forms/tests/test_vlan.py
309+++ b/src/maasserver/forms/tests/test_vlan.py
310@@ -248,7 +248,7 @@ class TestVLANForm(MAASServerTestCase):
311 form = VLANForm(
312 instance=vlan, data={"secondary_rack": second_rack.system_id}
313 )
314- self.assertTrue(form.is_valid())
315+ self.assertTrue(form.is_valid(), form.errors)
316 form.save()
317 vlan = reload_object(vlan)
318 self.assertEqual(second_rack, vlan.secondary_rack)
319diff --git a/src/maasserver/forms/tests/test_zone.py b/src/maasserver/forms/tests/test_zone.py
320index da2f041..859e156 100644
321--- a/src/maasserver/forms/tests/test_zone.py
322+++ b/src/maasserver/forms/tests/test_zone.py
323@@ -54,4 +54,4 @@ class TestZoneForm(MAASServerTestCase):
324 form = ZoneForm(
325 data={"name": factory.make_name("zone")}, instance=zone
326 )
327- self.assertTrue(form.is_valid())
328+ self.assertTrue(form.is_valid(), form.errors)
329diff --git a/src/maasserver/tests/test_config_forms.py b/src/maasserver/tests/test_config_forms.py
330index 896bcab..53f2508 100644
331--- a/src/maasserver/tests/test_config_forms.py
332+++ b/src/maasserver/tests/test_config_forms.py
333@@ -83,7 +83,7 @@ class TestFormWithDictCharField(MAASServerTestCase):
334
335 form = FakeForm(data)
336
337- self.assertTrue(form.is_valid())
338+ self.assertTrue(form.is_valid(), form.errors)
339 self.assertEqual(
340 {"field_a": fielda_value, "field_b": "", "field_c": fieldc_value},
341 form.cleaned_data["multi_field"],
342@@ -139,7 +139,7 @@ class TestFormWithDictCharField(MAASServerTestCase):
343
344 form = FakeFormSkip(data)
345
346- self.assertTrue(form.is_valid())
347+ self.assertTrue(form.is_valid(), form.errors)
348 self.assertEqual(
349 {field_name: field_value}, form.cleaned_data["multi_field"]
350 )
351@@ -191,7 +191,7 @@ class TestFormWithDictCharField(MAASServerTestCase):
352 char_value = factory.make_string(10)
353 data = QueryDict("char_field=%s" % char_value)
354 form = FakeFormRequiredFalse(data)
355- self.assertTrue(form.is_valid())
356+ self.assertTrue(form.is_valid(), form.errors)
357 self.assertEqual(
358 {"char_field": char_value, "multi_field": None}, form.cleaned_data
359 )
360diff --git a/src/maasserver/tests/test_node_constraint_filter_forms.py b/src/maasserver/tests/test_node_constraint_filter_forms.py
361index d58df42..96dd0a6 100644
362--- a/src/maasserver/tests/test_node_constraint_filter_forms.py
363+++ b/src/maasserver/tests/test_node_constraint_filter_forms.py
364@@ -262,7 +262,7 @@ class TestFilterNodeForm(MAASServerTestCase, FilterConstraintsMixin):
365 def test_no_constraints(self):
366 nodes = [factory.make_Node() for _ in range(3)]
367 form = FilterNodeForm(data={})
368- self.assertTrue(form.is_valid())
369+ self.assertTrue(form.is_valid(), form.errors)
370 self.assertItemsEqual(nodes, Machine.objects.all())
371
372 def test_subnets_filters_by_name(self):

Subscribers

People subscribed via source and target branches