this repo has no description
at ai_oauth 53 lines 1.8 kB view raw
1import Foundation 2import Testing 3@testable import CoreATProtocol 4 5@APActor 6final class MockNetworking: Networking { 7 var requestedURLs: [URL] = [] 8 var responseData: Data 9 var statusCode: Int 10 11 init(responseData: Data, statusCode: Int = 200) { 12 self.responseData = responseData 13 self.statusCode = statusCode 14 } 15 16 func data(for request: URLRequest, delegate: URLSessionTaskDelegate?) async throws -> (Data, URLResponse) { 17 if let url = request.url { 18 requestedURLs.append(url) 19 } 20 let response = HTTPURLResponse(url: request.url ?? URL(string: "https://example.com")!, statusCode: statusCode, httpVersion: nil, headerFields: [:])! 21 return (responseData, response) 22 } 23} 24 25struct MockDNSResolver: DNSResolving { 26 func txtRecords(for host: String) async throws -> [String] { [] } 27} 28 29@Test("Identity resolver fetches PLC DID documents using full identifier path") 30func identityResolverUsesFullPLCPath() async throws { 31 let documentJSON = """ 32 { 33 "id": "did:plc:identifier", 34 "service": [ 35 { 36 "id": "#atproto_pds", 37 "type": "AtprotoPersonalDataServer", 38 "serviceEndpoint": "https://example.com" 39 } 40 ] 41 } 42 """.data(using: .utf8)! 43 44 let networking = await MockNetworking(responseData: documentJSON) 45 let httpClient = await OAuthHTTPClient(networking: networking) 46 let resolver = await IdentityResolver(httpClient: httpClient, dnsResolver: MockDNSResolver()) 47 48 let document = try await resolver.fetchDIDDocument(for: "did:plc:identifier") 49 #expect(document.id == "did:plc:identifier") 50 51 let requestedPath = await networking.requestedURLs.first?.path 52 #expect(requestedPath == "/did:plc:identifier") 53}