def test__scan_as_non_admin_asserts(self): user = factory.make_User() handler = SubnetHandler(user, {}) subnet = factory.make_Subnet() with ExpectedException(AssertionError, "Permission denied."): handler.scan({ "id": subnet.id, })
def test__scan_fails_if_no_rack_is_configured_with_subnet(self): user = factory.make_admin() handler = SubnetHandler(user, {}) subnet = factory.make_Subnet(version=4) with ExpectedException(ValueError, '.*must be configured on a rack*'): handler.scan({ "id": subnet.id, })
def test__scan_ipv6_fails(self): user = factory.make_admin() handler = SubnetHandler(user, {}) subnet = factory.make_Subnet(version=6) with ExpectedException(ValueError, '.*only IPv4.*'): handler.scan({ "id": subnet.id, })
def test__reloads_user(self): user = factory.make_admin() handler = SubnetHandler(user, {}, None) subnet = factory.make_Subnet() user.is_superuser = False user.save() with ExpectedException(AssertionError, "Permission denied."): handler.scan({"id": subnet.id})
def test__scan_as_admin_logs_the_fact_that_a_scan_happened(self): user = factory.make_admin() handler = SubnetHandler(user, {}, None) subnet = factory.make_Subnet(version=4) rack = factory.make_RackController() factory.make_Interface(node=rack, subnet=subnet) logger = self.useFixture(FakeLogger()) cidr = subnet.get_ipnetwork() handler.scan({"id": subnet.id}) # Use MatchesRegex here rather than DocTestMatches because usernames # can contain characters that confuse DocTestMatches (e.g. periods). self.assertThat( logger.output, MatchesRegex( "User '%s' initiated a neighbour discovery scan against subnet: %s" % (re.escape(user.username), re.escape(str(cidr)))), )
def test__scan_as_admin_succeeds_and_returns_user_friendly_result(self): user = factory.make_admin() handler = SubnetHandler(user, {}) subnet = factory.make_Subnet(version=4) rack = factory.make_RackController() factory.make_Interface(node=rack, subnet=subnet) cidr = subnet.get_ipnetwork() result = handler.scan({ "id": subnet.id, }) self.assertThat(result, Equals(sentinel.result)) self.assertThat(self.scan_all_rack_networks, MockCalledOnceWith(cidrs=[cidr])) self.assertThat(self.user_friendly_scan_results, MockCalledOnceWith(sentinel.rpc_result))