80
80
self.assertEqual([], json.loads(response.content))
82
82
def test_GET_sorts_by_name(self):
83
original_names = [factory.make_name('net').lower() for _ in range(3)]
84
for name in original_names:
85
factory.make_network(name=name)
83
networks = factory.make_networks(3, sortable_name=True)
87
84
response = self.client.get(reverse('networks_handler'))
88
85
self.assertEqual(httplib.OK, response.status_code, response.content)
91
sorted(original_names),
88
sorted(network.name for network in networks),
92
89
[network['name'] for network in json.loads(response.content)])
94
91
def test_GET_filters_by_node(self):
95
networks = [factory.make_network() for _ in range(5)]
96
node = factory.make_node(networks=networks[1:3])
92
networks = factory.make_networks(5)
93
mac = factory.make_mac_address(networks=networks[1:3])
98
95
response = self.client.get(
99
96
reverse('networks_handler'),
100
97
{'node': [node.system_id]})
101
98
self.assertEqual(httplib.OK, response.status_code, response.content)
103
100
self.assertEqual(
104
{network.name for network in node.networks.all()},
101
{network.name for network in mac.networks.all()},
105
102
{network['name'] for network in json.loads(response.content)})
107
104
def test_GET_combines_node_filters_as_intersection_of_networks(self):
108
networks = [factory.make_network() for _ in range(5)]
109
node1 = factory.make_node(networks=networks[1:3])
110
node2 = factory.make_node(networks=networks[2:4])
105
networks = factory.make_networks(5)
106
mac1 = factory.make_mac_address(networks=networks[1:3])
107
mac2 = factory.make_mac_address(networks=networks[2:4])
109
# Attach another MAC address to node1.
110
factory.make_mac_address(networks=networks[1:2], node=node1)
112
113
response = self.client.get(
113
114
reverse('networks_handler'),
131
132
def test_GET_ignores_duplicates(self):
132
133
factory.make_network()
133
node = factory.make_node(networks=[factory.make_network()])
134
mac = factory.make_mac_address(networks=[factory.make_network()])
134
136
response = self.client.get(
135
137
reverse('networks_handler'),
136
138
{'node': [node.system_id, node.system_id]})
137
139
self.assertEqual(httplib.OK, response.status_code, response.content)
138
140
self.assertEqual(
139
{network.name for network in node.networks.all()},
141
{network.name for network in mac.networks.all()},
140
142
{network['name'] for network in json.loads(response.content)})