import CodexBarCoreimport Foundationimport Testing @Suite(.serialized)struct FactoryStatusProbeFetchTests { @Test func fetchesSnapshotUsingCookieHeaderOverride() async throws { let registered = URLProtocol.registerClass(FactoryStubURLProtocol.self) defer { if registered { URLProtocol.unregisterClass(FactoryStubURLProtocol.self) } FactoryStubURLProtocol.handler = nil } FactoryStubURLProtocol.handler = { request in guard let url = request.url else { throw URLError(.badURL) } let path = url.path if path == "/api/app/auth/me" { let body = """ { "organization": { "id": "org_1", "name": "Acme", "subscription": { "factoryTier": "team", "orbSubscription": { "plan": { "name": "Team", "id": "plan_1" }, "status": "active" } } } } """ return Self.makeResponse(url: url, body: body) } if path == "/api/organization/subscription/usage" { let body = """ { "usage": { "startDate": 1700000000000, "endDate": 1700003600000, "standard": { "userTokens": 100, "orgTotalTokensUsed": 250, "totalAllowance": 1000, "usedRatio": 0.10 }, "premium": { "userTokens": 10, "orgTotalTokensUsed": 20, "totalAllowance": 100, "usedRatio": 0.10 } }, "userId": "user-1" } """ return Self.makeResponse(url: url, body: body) } return Self.makeResponse(url: url, body: "{}", statusCode: 404) } let probe = FactoryStatusProbe(browserDetection: BrowserDetection(cacheTTL: 0)) let snapshot = try await probe.fetch(cookieHeaderOverride: "access-token=test.jwt.token; session=abc") #expect(snapshot.standardUserTokens == 100) #expect(snapshot.standardAllowance == 1000) #expect(snapshot.standardUsedRatio == 0.10) #expect(snapshot.premiumUserTokens == 10) #expect(snapshot.premiumUsedRatio == 0.10) #expect(snapshot.userId == "user-1") #expect(snapshot.planName == "Team") let usage = snapshot.toUsageSnapshot() #expect(usage.primary?.usedPercent == 10) #expect(usage.secondary?.usedPercent == 10) } private static func makeResponse( url: URL, body: String, statusCode: Int = 200) -> (HTTPURLResponse, Data) { let response = HTTPURLResponse( url: url, statusCode: statusCode, httpVersion: "HTTP/1.1", headerFields: ["Content-Type": "application/json"])! return (response, Data(body.utf8)) }} final class FactoryStubURLProtocol: URLProtocol { nonisolated(unsafe) static var handler: ((URLRequest) throws -> (HTTPURLResponse, Data))? override static func canInit(with request: URLRequest) -> Bool { guard let host = request.url?.host else { return false } return host.hasSuffix("factory.ai") || host == "api.workos.com" } override static func canonicalRequest(for request: URLRequest) -> URLRequest { request } override func startLoading() { guard let handler = Self.handler else { self.client?.urlProtocol(self, didFailWithError: URLError(.badServerResponse)) return } do { let (response, data) = try handler(self.request) self.client?.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed) self.client?.urlProtocol(self, didLoad: data) self.client?.urlProtocolDidFinishLoading(self) } catch { self.client?.urlProtocol(self, didFailWithError: error) } } override func stopLoading() {}}
import CodexBarCore
import Foundation
import Testing
@Suite(.serialized)
struct FactoryStatusProbeFetchTests {
@Test
func fetchesSnapshotUsingCookieHeaderOverride() async throws {
let registered = URLProtocol.registerClass(FactoryStubURLProtocol.self)
defer {
if registered {
URLProtocol.unregisterClass(FactoryStubURLProtocol.self)
}
FactoryStubURLProtocol.handler = nil
}
FactoryStubURLProtocol.handler = { request in
guard let url = request.url else { throw URLError(.badURL) }
let path = url.path
if path == "/api/app/auth/me" {
let body = """
{
"organization": {
"id": "org_1",
"name": "Acme",
"subscription": {
"factoryTier": "team",
"orbSubscription": {
"plan": { "name": "Team", "id": "plan_1" },
"status": "active"
}
}
}
}
"""
return Self.makeResponse(url: url, body: body)
}
if path == "/api/organization/subscription/usage" {
let body = """
{
"usage": {
"startDate": 1700000000000,
"endDate": 1700003600000,
"standard": {
"userTokens": 100,
"orgTotalTokensUsed": 250,
"totalAllowance": 1000,
"usedRatio": 0.10
},
"premium": {
"userTokens": 10,
"orgTotalTokensUsed": 20,
"totalAllowance": 100,
"usedRatio": 0.10
}
},
"userId": "user-1"
}
"""
return Self.makeResponse(url: url, body: body)
}
return Self.makeResponse(url: url, body: "{}", statusCode: 404)
}
let probe = FactoryStatusProbe(browserDetection: BrowserDetection(cacheTTL: 0))
let snapshot = try await probe.fetch(cookieHeaderOverride: "access-token=test.jwt.token; session=abc")
#expect(snapshot.standardUserTokens == 100)
#expect(snapshot.standardAllowance == 1000)
#expect(snapshot.standardUsedRatio == 0.10)
#expect(snapshot.premiumUserTokens == 10)
#expect(snapshot.premiumUsedRatio == 0.10)
#expect(snapshot.userId == "user-1")
#expect(snapshot.planName == "Team")
let usage = snapshot.toUsageSnapshot()
#expect(usage.primary?.usedPercent == 10)
#expect(usage.secondary?.usedPercent == 10)
}
private static func makeResponse(
url: URL,
body: String,
statusCode: Int = 200) -> (HTTPURLResponse, Data)
{
let response = HTTPURLResponse(
url: url,
statusCode: statusCode,
httpVersion: "HTTP/1.1",
headerFields: ["Content-Type": "application/json"])!
return (response, Data(body.utf8))
}
}
final class FactoryStubURLProtocol: URLProtocol {
nonisolated(unsafe) static var handler: ((URLRequest) throws -> (HTTPURLResponse, Data))?
override static func canInit(with request: URLRequest) -> Bool {
guard let host = request.url?.host else { return false }
return host.hasSuffix("factory.ai") || host == "api.workos.com"
}
override static func canonicalRequest(for request: URLRequest) -> URLRequest {
request
}
override func startLoading() {
guard let handler = Self.handler else {
self.client?.urlProtocol(self, didFailWithError: URLError(.badServerResponse))
return
}
do {
let (response, data) = try handler(self.request)
self.client?.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed)
self.client?.urlProtocol(self, didLoad: data)
self.client?.urlProtocolDidFinishLoading(self)
} catch {
self.client?.urlProtocol(self, didFailWithError: error)
}
}
override func stopLoading() {}
}