import XCTest @testable import NetworkCityCore final class OrgClassifierTests: XCTestCase { func testRegistrableDomainSimple() { XCTAssertEqual(OrgClassifier.registrableDomain("cdn.gstatic.com"), "gstatic.com") XCTAssertEqual(OrgClassifier.registrableDomain("a.b.c.example.org"), "example.org") } func testRegistrableDomainMultiPartSuffix() { XCTAssertEqual(OrgClassifier.registrableDomain("www.bbc.co.uk"), "bbc.co.uk") XCTAssertEqual(OrgClassifier.registrableDomain("shop.foo.com.au"), "foo.com.au") } func testRegistrableDomainHandlesTrailingDot() { XCTAssertEqual(OrgClassifier.registrableDomain("host.apple.com."), "apple.com") } func testKnownOrgsCollapseToOneDistrict() { // Different registrable domains, same owner -> same key. let a = OrgClassifier.classify(ip: "1", ptr: "cdn.gstatic.com") let b = OrgClassifier.classify(ip: "2", ptr: "lb.1e100.net") XCTAssertEqual(a.key, "google") XCTAssertEqual(b.key, "google") XCTAssertEqual(a.name, "Google") } func testAppleFamilyCollapses() { XCTAssertEqual(OrgClassifier.classify(ip: "1", ptr: "x.icloud.com").key, "apple") XCTAssertEqual(OrgClassifier.classify(ip: "2", ptr: "y.aaplimg.com").key, "apple") } func testUnknownDomainGetsPrettyName() { let org = OrgClassifier.classify(ip: "9.9.9.9", ptr: "resolver.quad9.net") XCTAssertEqual(org.key, "quad9.net") XCTAssertEqual(org.name, "Quad9") } func testNoPTRFallsBackToIP() { let org = OrgClassifier.classify(ip: "203.0.113.7", ptr: nil) XCTAssertEqual(org.key, "203.0.113.7") XCTAssertEqual(org.name, "203.0.113.7") XCTAssertNil(org.resolvedHost) } }