From d0af22dfa159ca720e4491536713762616de0fce Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Tue, 20 Jan 2026 09:18:56 -0800 Subject: [PATCH] Add anonymizer property tests for IPAddress model Co-Authored-By: Claude Opus 4.5 --- tests/data/factors-response.json | 11 +++++++++++ tests/data/insights-response.json | 11 +++++++++++ tests/test_models.py | 23 +++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/tests/data/factors-response.json b/tests/data/factors-response.json index 3867e20..1aee01f 100644 --- a/tests/data/factors-response.json +++ b/tests/data/factors-response.json @@ -19,6 +19,17 @@ "reason": "Suspicious activity has been seen on this IP address across minFraud customers." } ], + "anonymizer": { + "confidence": 99, + "is_anonymous": true, + "is_anonymous_vpn": true, + "is_hosting_provider": true, + "is_public_proxy": true, + "is_residential_proxy": true, + "is_tor_exit_node": true, + "network_last_seen": "2025-01-15", + "provider_name": "TestVPN" + }, "city": { "confidence": 42, "geoname_id": 2643743, diff --git a/tests/data/insights-response.json b/tests/data/insights-response.json index 4a3f5ca..14a4152 100644 --- a/tests/data/insights-response.json +++ b/tests/data/insights-response.json @@ -19,6 +19,17 @@ "reason": "Suspicious activity has been seen on this IP address across minFraud customers." } ], + "anonymizer": { + "confidence": 99, + "is_anonymous": true, + "is_anonymous_vpn": true, + "is_hosting_provider": true, + "is_public_proxy": true, + "is_residential_proxy": true, + "is_tor_exit_node": true, + "network_last_seen": "2025-01-15", + "provider_name": "TestVPN" + }, "city": { "confidence": 42, "geoname_id": 2643743, diff --git a/tests/test_models.py b/tests/test_models.py index 920c071..b7fa6c8 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,5 +1,6 @@ from __future__ import annotations +import datetime import unittest from typing import Any @@ -187,6 +188,16 @@ def test_ip_address(self) -> None: "across minFraud customers.", }, ], + anonymizer={ + "confidence": 99, + "is_anonymous": True, + "is_anonymous_vpn": True, + "is_hosting_provider": True, + "is_public_proxy": True, + "is_tor_exit_node": True, + "network_last_seen": "2025-01-15", + "provider_name": "TestVPN", + }, traits={ "is_anonymous": True, "is_anonymous_proxy": True, @@ -215,6 +226,18 @@ def test_ip_address(self) -> None: self.assertEqual("310", address.traits.mobile_country_code) self.assertEqual("004", address.traits.mobile_network_code) + # Test anonymizer attribute + self.assertEqual(99, address.anonymizer.confidence) + self.assertEqual(True, address.anonymizer.is_anonymous) + self.assertEqual(True, address.anonymizer.is_anonymous_vpn) + self.assertEqual(True, address.anonymizer.is_hosting_provider) + self.assertEqual(True, address.anonymizer.is_public_proxy) + self.assertEqual(True, address.anonymizer.is_tor_exit_node) + self.assertEqual( + datetime.date(2025, 1, 15), address.anonymizer.network_last_seen + ) + self.assertEqual("TestVPN", address.anonymizer.provider_name) + self.assertEqual("ANONYMOUS_IP", address.risk_reasons[0].code) self.assertEqual( "The IP address belongs to an anonymous network. "