@@ -491,6 +491,7 @@ def _verify_whois_details(instance, ip_address):
491491
492492 with self .subTest (
493493 "Test WHOIS create & deletion of old record when last ip is updated"
494+ " when no other devices are linked to the old ip address"
494495 ):
495496 old_ip_address = device .last_ip
496497 device .last_ip = "172.217.22.10"
@@ -508,12 +509,61 @@ def _verify_whois_details(instance, ip_address):
508509 WHOISInfo .objects .filter (ip_address = old_ip_address ).count (), 0
509510 )
510511
511- with self .subTest ("Test WHOIS delete when device is deleted" ):
512+ with self .subTest (
513+ "Test WHOIS create & deletion of old record when last ip is updated"
514+ " when other devices are linked to the old ip address"
515+ ):
516+ old_ip_address = device .last_ip
517+ self ._create_device (
518+ name = "11:22:33:44:55:66" ,
519+ mac_address = "11:22:33:44:55:66" ,
520+ last_ip = "172.217.22.11" ,
521+ )
522+ device .last_ip = "172.217.22.11"
523+ device .save ()
524+ self .assertEqual (mock_info .call_count , 1 )
525+ mock_info .reset_mock ()
526+ device .refresh_from_db ()
527+
528+ _verify_whois_details (
529+ device .whois_service .get_device_whois_info (), device .last_ip
530+ )
531+
532+ # details related to old ip address should be not be deleted
533+ self .assertEqual (
534+ WHOISInfo .objects .filter (ip_address = old_ip_address ).count (), 1
535+ )
536+
537+ with self .subTest (
538+ "Test WHOIS not deleted when device is deleted and"
539+ " other active devices are linked to the last_ip"
540+ ):
512541 ip_address = device .last_ip
513542 device .delete (check_deactivated = False )
514543 self .assertEqual (mock_info .call_count , 0 )
515544 mock_info .reset_mock ()
516545
546+ # WHOIS related to the device's last_ip should be deleted
547+ self .assertEqual (WHOISInfo .objects .filter (ip_address = ip_address ).count (), 1 )
548+
549+ Device .objects .all ().delete ()
550+ with self .subTest (
551+ "Test WHOIS deleted when device is deleted and"
552+ " no other active devices are linked to the last_ip"
553+ ):
554+ device1 = self ._create_device (last_ip = "172.217.22.11" )
555+ device2 = self ._create_device (
556+ name = "11:22:33:44:55:66" ,
557+ mac_address = "11:22:33:44:55:66" ,
558+ last_ip = "172.217.22.11" ,
559+ )
560+ device2 .deactivate ()
561+ mock_info .reset_mock ()
562+ ip_address = device1 .last_ip
563+ device1 .delete (check_deactivated = False )
564+ self .assertEqual (mock_info .call_count , 0 )
565+ mock_info .reset_mock ()
566+
517567 # WHOIS related to the device's last_ip should be deleted
518568 self .assertEqual (WHOISInfo .objects .filter (ip_address = ip_address ).count (), 0 )
519569
0 commit comments