359
363
"end": expected_last_address,
360
364
"num_addresses": second_range_size,
368
class TestSubnetStatisticsAPI(APITestCase):
370
def test__default_does_not_include_ranges(self):
371
subnet = factory.make_Subnet()
372
factory.make_StaticIPAddress(
373
alloc_type=IPADDRESS_TYPE.USER_RESERVED, subnet=subnet)
374
response = self.client.get(
375
get_subnet_uri(subnet), {
379
httplib.OK, response.status_code,
380
explain_unexpected_response(httplib.OK, response))
381
result = json.loads(response.content)
382
full_iprange = subnet.get_iprange_usage()
383
statistics = IPRangeStatistics(full_iprange)
384
expected_result = statistics.render_json(include_ranges=False)
385
self.assertThat(result, Equals(expected_result))
387
def test__with_include_ranges(self):
388
subnet = factory.make_Subnet()
389
factory.make_StaticIPAddress(
390
alloc_type=IPADDRESS_TYPE.USER_RESERVED, subnet=subnet)
391
response = self.client.get(
392
get_subnet_uri(subnet), {
394
'include_ranges': 'true'
397
httplib.OK, response.status_code,
398
explain_unexpected_response(httplib.OK, response))
399
result = json.loads(response.content)
400
full_iprange = subnet.get_iprange_usage()
401
statistics = IPRangeStatistics(full_iprange)
402
expected_result = statistics.render_json(include_ranges=True)
403
self.assertThat(result, Equals(expected_result))
405
def test__without_include_ranges(self):
406
subnet = factory.make_Subnet()
407
factory.make_StaticIPAddress(
408
alloc_type=IPADDRESS_TYPE.USER_RESERVED, subnet=subnet)
409
response = self.client.get(
410
get_subnet_uri(subnet), {
412
'include_ranges': 'false'
415
httplib.OK, response.status_code,
416
explain_unexpected_response(httplib.OK, response))
417
result = json.loads(response.content)
418
full_iprange = subnet.get_iprange_usage()
419
statistics = IPRangeStatistics(full_iprange)
420
expected_result = statistics.render_json(include_ranges=False)
421
self.assertThat(result, Equals(expected_result))
424
class TestSubnetIPAddressesAPI(APITestCase):
426
def test__default_parameters(self):
427
subnet = factory.make_Subnet()
428
user = factory.make_User()
429
node = factory.make_Node_with_Interface_on_Subnet(
430
subnet=subnet, status=NODE_STATUS.READY)
431
factory.make_StaticIPAddress(
432
alloc_type=IPADDRESS_TYPE.USER_RESERVED, subnet=subnet, user=user)
433
factory.make_StaticIPAddress(
434
alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet, user=user,
435
interface=node.get_boot_interface())
436
response = self.client.get(
437
get_subnet_uri(subnet), {
438
'op': 'ip_addresses',
441
httplib.OK, response.status_code,
442
explain_unexpected_response(httplib.OK, response))
443
result = json.loads(response.content)
444
expected_result = subnet.render_json_for_related_ips(
445
with_username=True, with_node_summary=True)
446
self.assertThat(result, Equals(expected_result))
448
def test__with_username_false(self):
449
subnet = factory.make_Subnet()
450
user = factory.make_User()
451
node = factory.make_Node_with_Interface_on_Subnet(
452
subnet=subnet, status=NODE_STATUS.READY)
453
factory.make_StaticIPAddress(
454
alloc_type=IPADDRESS_TYPE.USER_RESERVED, subnet=subnet, user=user)
455
factory.make_StaticIPAddress(
456
alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet, user=user,
457
interface=node.get_boot_interface())
458
response = self.client.get(
459
get_subnet_uri(subnet), {
460
'op': 'ip_addresses',
461
'with_username': 'false',
464
httplib.OK, response.status_code,
465
explain_unexpected_response(httplib.OK, response))
466
result = json.loads(response.content)
467
expected_result = subnet.render_json_for_related_ips(
468
with_username=False, with_node_summary=True)
469
self.assertThat(result, Equals(expected_result))
471
def test__with_node_summary_false(self):
472
subnet = factory.make_Subnet()
473
user = factory.make_User()
474
node = factory.make_Node_with_Interface_on_Subnet(
475
subnet=subnet, status=NODE_STATUS.READY)
476
factory.make_StaticIPAddress(
477
alloc_type=IPADDRESS_TYPE.USER_RESERVED, subnet=subnet, user=user)
478
factory.make_StaticIPAddress(
479
alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet, user=user,
480
interface=node.get_boot_interface())
481
response = self.client.get(
482
get_subnet_uri(subnet), {
483
'op': 'ip_addresses',
484
'with_node_summary': 'false',
487
httplib.OK, response.status_code,
488
explain_unexpected_response(httplib.OK, response))
489
result = json.loads(response.content)
490
expected_result = subnet.render_json_for_related_ips(
491
with_username=True, with_node_summary=False)
492
self.assertThat(result, Equals(expected_result))