def request_connected_macs(self, subnet): """Request and return the MAC addresses attached to `subnet`.""" url = reverse("network_handler", args=[convert_to_network_name(subnet)]) response = self.client.get(url, {"op": "list_connected_macs"}) self.assertEqual(http.client.OK, response.status_code) return json_load_bytes(response.content)
def test_GET_sorts_by_name(self): subnets = [ factory.make_Subnet(name=factory.make_name("subnet").lower()) for _ in range(3) ] response = self.client.get(reverse('networks_handler')) self.assertEqual(http.client.OK, response.status_code, response.content) self.assertEqual( sorted(convert_to_network_name(subnet) for subnet in subnets), [network['name'] for network in json_load_bytes(response.content)])
def test_GET_ignores_duplicates(self): subnet = factory.make_Subnet() interface = self.make_interface(subnets=[subnet]) node = interface.node response = self.client.get(reverse('networks_handler'), {'node': [node.system_id, node.system_id]}) self.assertEqual(http.client.OK, response.status_code, response.content) self.assertEqual( {convert_to_network_name(subnet)}, {network['name'] for network in json_load_bytes(response.content)})
def test_GET_filters_by_node(self): subnets = [factory.make_Subnet() for _ in range(5)] interface = self.make_interface(subnets=subnets[1:3]) node = interface.node response = self.client.get(reverse('networks_handler'), {'node': [node.system_id]}) self.assertEqual(http.client.OK, response.status_code, response.content) self.assertEqual( {convert_to_network_name(subnet) for subnet in subnets[1:3]}, {network['name'] for network in json_load_bytes(response.content)})
def test_GET_combines_node_filters_as_intersection_of_networks(self): subnets = [factory.make_Subnet() for _ in range(5)] interface1 = self.make_interface(subnets=subnets[1:3]) interface2 = self.make_interface(subnets=subnets[2:4]) node1 = interface1.node node2 = interface2.node # Attach another interface to node1. self.make_interface(subnets=subnets[1:2], node=node1) response = self.client.get( reverse('networks_handler'), {'node': [node1.system_id, node2.system_id]}) self.assertEqual(http.client.OK, response.status_code, response.content) self.assertEqual( {convert_to_network_name(subnets[2])}, {network['name'] for network in json_load_bytes(response.content)})