feat(ios): add native app foundation and unsigned ipa build
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import XCTest
|
||||
|
||||
@testable import MultiSimAdmin
|
||||
|
||||
final class InstanceSessionServiceTests: XCTestCase {
|
||||
func testLoginStoresAndClearsSessionCookie() async throws {
|
||||
let store = InstanceSessionStore()
|
||||
let client = MockSessionClient(status: 204)
|
||||
let service = InstanceSessionService(store: store, client: client)
|
||||
let instance = Self.instance()
|
||||
|
||||
let result = try await service.login(instance, password: "secret")
|
||||
XCTAssertTrue(result.authenticated)
|
||||
let cookie = await store.cookie(for: instance.id, origin: instance.origin)
|
||||
XCTAssertEqual(cookie, "simadmin_session=token")
|
||||
|
||||
let rejected = try await service.login(instance, password: "bad")
|
||||
XCTAssertFalse(rejected.authenticated)
|
||||
let removed = await store.cookie(for: instance.id, origin: instance.origin)
|
||||
XCTAssertEqual(removed, nil)
|
||||
}
|
||||
|
||||
private static func instance() -> Instance {
|
||||
Instance(
|
||||
id: UUID(),
|
||||
name: "Session",
|
||||
origin: URL(string: "http://192.168.1.20:3000")!,
|
||||
configRevision: 1,
|
||||
createdAt: Date(),
|
||||
updatedAt: Date()
|
||||
)
|
||||
}
|
||||
|
||||
private struct MockSessionClient: SimAdminClientProtocol {
|
||||
let status: Int
|
||||
|
||||
func send(
|
||||
_ route: UpstreamRoute,
|
||||
baseURL: URL,
|
||||
cookie: String?
|
||||
) async throws -> UpstreamResponse {
|
||||
guard case let .authLogin(submitted) = route else {
|
||||
return UpstreamResponse(status: 200, data: Data("{}.utf8".utf8), setCookie: nil)
|
||||
}
|
||||
let authorized = submitted == "secret"
|
||||
let setCookie = authorized ? "simadmin_session=token; Path=/" : nil
|
||||
return UpstreamResponse(status: authorized ? status : 200, data: Data("{}".utf8), setCookie: setCookie)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user