TeraDiagnosticPolicyTests.swift (3225B)
1 import Foundation 2 import RadrootsKit 3 @testable import TeraApp 4 import XCTest 5 6 final class TeraDiagnosticPolicyTests: XCTestCase { 7 func testAllSinksReceiveOnlyClosedFieldsAndNoRawMessageCategoryOrValues() async throws { 8 let capture = DiagnosticSink() 9 let buffer = TeraDiagnosticsBuffer() 10 let telemetry = TeraSanitizedTelemetry(sink: RadrootsMultiplexTelemetry([capture, buffer])) 11 let canary = "ordinary private text 49.123456,-123.987654 Bearer CANARY_TOKEN /Users/private/file" 12 let event = try RadrootsTelemetryEvent( 13 name: "ios.lifecycle.operation_completed", category: "private_category", message: canary, 14 fields: [ 15 .string("operation", "start"), .string("phase", "running"), 16 .string("code", canary), .string("authorization", canary), 17 .string("plain", canary), .integer("count", 7), .integer("id", 123_456_789), 18 .stringList("list", [canary]), .double("latitude", 49.123456), 19 ] 20 ) 21 await telemetry.record(event) 22 let observed = await capture.events 23 let safe = try XCTUnwrap(observed.first) 24 XCTAssertNil(safe.message) 25 XCTAssertEqual(safe.category, "ios_lifecycle") 26 XCTAssertEqual(safe.fields.map(\.key), ["operation", "phase", "count"]) 27 XCTAssertFalse(String(describing: safe).contains(canary)) 28 let records = await buffer.records() 29 XCTAssertEqual(records.first?.fields, ["operation": "start", "phase": "running", "count": "7"]) 30 XCTAssertEqual(TeraDiagnosticPolicy.sanitized(safe), safe) 31 } 32 33 func testDirectBufferRejectsUnknownNamesKeysAndHighCardinalityValues() async throws { 34 let buffer = TeraDiagnosticsBuffer(capacity: 16) 35 for index in 0 ..< 40 { 36 let event = try RadrootsTelemetryEvent( 37 name: "private.post.\(index)", category: "private_location", 38 message: "Raw private content", fields: [.string("unknown", "Bearer canary")] 39 ) 40 await buffer.record(event) 41 } 42 let records = await buffer.records() 43 XCTAssertEqual(records.count, 16) 44 XCTAssertTrue(records.allSatisfy { $0.name == "ios.diagnostics.redacted" && $0.category == "ios_lifecycle" && $0.fields.isEmpty }) 45 let event = try RadrootsTelemetryEvent(name: "ios.lifecycle.active", fields: [ 46 .integer("count", Int64.max), .integer("schema", -1), .string("phase", "secret"), 47 ]) 48 await buffer.record(event) 49 let final = await buffer.records() 50 XCTAssertEqual(final.last?.fields, [:]) 51 } 52 53 func testMetadataUsesFiniteCodesAndBoundedNumericBuilds() { 54 let canary = "public key or private content /Users/person/file" 55 XCTAssertEqual(TeraDiagnosticPolicy.version(canary), "unavailable") 56 XCTAssertEqual(TeraDiagnosticPolicy.version("0.1.0-alpha"), "0.1.0-alpha") 57 XCTAssertEqual(TeraDiagnosticPolicy.build(canary), "unavailable") 58 XCTAssertEqual(TeraDiagnosticPolicy.build(String(repeating: "1", count: 11)), "unavailable") 59 XCTAssertEqual(TeraDiagnosticPolicy.build("1"), "1") 60 XCTAssertEqual(TeraDiagnosticPolicy.code(canary, allowed: TeraDiagnosticPolicy.phases), "unavailable") 61 } 62 } 63 64 private actor DiagnosticSink: RadrootsTelemetry { 65 var events: [RadrootsTelemetryEvent] = [] 66 func record(_ event: RadrootsTelemetryEvent) { 67 events.append(event) 68 } 69 }