import Foundation import Testing @testable import CoreATProtocol @APActor final class MockNetworking: Networking { var requestedURLs: [URL] = [] var responseData: Data var statusCode: Int init(responseData: Data, statusCode: Int = 200) { self.responseData = responseData self.statusCode = statusCode } func data(for request: URLRequest, delegate: URLSessionTaskDelegate?) async throws -> (Data, URLResponse) { if let url = request.url { requestedURLs.append(url) } let response = HTTPURLResponse(url: request.url ?? URL(string: "https://example.com")!, statusCode: statusCode, httpVersion: nil, headerFields: [:])! return (responseData, response) } } struct MockDNSResolver: DNSResolving { func txtRecords(for host: String) async throws -> [String] { [] } } @Test("Identity resolver fetches PLC DID documents using full identifier path") func identityResolverUsesFullPLCPath() async throws { let documentJSON = """ { "id": "did:plc:identifier", "service": [ { "id": "#atproto_pds", "type": "AtprotoPersonalDataServer", "serviceEndpoint": "https://example.com" } ] } """.data(using: .utf8)! let networking = await MockNetworking(responseData: documentJSON) let httpClient = await OAuthHTTPClient(networking: networking) let resolver = await IdentityResolver(httpClient: httpClient, dnsResolver: MockDNSResolver()) let document = try await resolver.fetchDIDDocument(for: "did:plc:identifier") #expect(document.id == "did:plc:identifier") let requestedPath = await networking.requestedURLs.first?.path #expect(requestedPath == "/did:plc:identifier") }