Beispiel #1
0
 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,
         })
Beispiel #2
0
 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,
         })
Beispiel #3
0
 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,
         })
Beispiel #4
0
 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})
Beispiel #5
0
 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)))),
     )
Beispiel #6
0
 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))