def test_add_valid_ips(self): # test adding valid ip addresses # should be able to do both ipv4 and ipv6 # spacing should not matter form_data = { 'whitelist': '127.0.0.1, 2003:dead:beef:4dad:23:46:bb:101', 'blacklist': ' 18.244.1.5 , 2002:c0a8:101::42, 18.36.22.1' } form = IPFilterForm(data=form_data) self.assertTrue(form.is_valid()) form.save() whitelist = IPFilter.current().whitelist_ips blacklist = IPFilter.current().blacklist_ips for addr in '127.0.0.1, 2003:dead:beef:4dad:23:46:bb:101'.split(','): self.assertIn(addr.strip(), whitelist) for addr in '18.244.1.5, 2002:c0a8:101::42, 18.36.22.1'.split(','): self.assertIn(addr.strip(), blacklist) # Test clearing by adding an empty list is OK too form_data = {'whitelist': '', 'blacklist': ''} form = IPFilterForm(data=form_data) self.assertTrue(form.is_valid()) form.save() self.assertTrue(len(IPFilter.current().whitelist) == 0) self.assertTrue(len(IPFilter.current().blacklist) == 0)
def test_add_invalid_ips(self): # test adding invalid ip addresses form_data = { 'whitelist': '.0.0.1, :dead:beef:::, 1.0.0.0/55', 'blacklist': ' 18.244.* , 999999:c0a8:101::42, 1.0.0.0/' } form = IPFilterForm(data=form_data) self.assertFalse(form.is_valid()) wmsg = "Invalid IP Address(es): [u'.0.0.1', u':dead:beef:::', u'1.0.0.0/55'] Please fix the error(s) and try again." self.assertEquals(wmsg, form._errors['whitelist'][0]) # pylint: disable=protected-access bmsg = "Invalid IP Address(es): [u'18.244.*', u'999999:c0a8:101::42', u'1.0.0.0/'] Please fix the error(s) and try again." self.assertEquals(bmsg, form._errors['blacklist'][0]) # pylint: disable=protected-access with self.assertRaisesRegexp(ValueError, "The IPFilter could not be created because the data didn't validate."): form.save()