SyncCredentialsStoreTest.swift
81 lignes · 2443 octets
import XCTest @testable import Card2vcf final class SyncCredentialsStoreTest: XCTestCase { private var store: SyncCredentialsStore! override func setUp() { super.setUp() // Keychain is not reliably available in the test environment: back the // store with the injected in-memory storage (same public semantics). store = SyncCredentialsStore(storage: InMemoryCredentialsStorage()) } override func tearDown() { store.clear() super.tearDown() } func testInitiallyNotConfigured() { XCTAssertFalse(store.isConfigured()) XCTAssertNil(store.baseUrl) XCTAssertNil(store.apiKey) XCTAssertNil(store.userName) } func testSaveRoundTrip() { store.save( baseUrl: "https://api.example.com", apiKey: "secret-bearer-token", userName: "alice" ) XCTAssertTrue(store.isConfigured()) XCTAssertEqual("https://api.example.com", store.baseUrl) XCTAssertEqual("secret-bearer-token", store.apiKey) XCTAssertEqual("alice", store.userName) } func testPropertySettersRoundTrip() { store.baseUrl = "https://sync.test" store.apiKey = "key-123" store.userName = "bob" XCTAssertTrue(store.isConfigured()) XCTAssertEqual("https://sync.test", store.baseUrl) XCTAssertEqual("key-123", store.apiKey) XCTAssertEqual("bob", store.userName) } func testClearRemovesAllCredentials() { store.save( baseUrl: "https://api.example.com", apiKey: "secret-bearer-token", userName: "alice" ) store.allowCleartextHttp = true store.clear() XCTAssertFalse(store.isConfigured()) XCTAssertNil(store.baseUrl) XCTAssertNil(store.apiKey) XCTAssertNil(store.userName) XCTAssertTrue(store.allowCleartextHttp) } func testAllowCleartextHttp_defaultsFalse_andRoundTrips() { XCTAssertFalse(store.allowCleartextHttp) store.allowCleartextHttp = true XCTAssertTrue(store.allowCleartextHttp) store.allowCleartextHttp = false XCTAssertFalse(store.allowCleartextHttp) } func testBlankValuesAreNotConfigured() { store.save(baseUrl: " ", apiKey: "key", userName: "alice") XCTAssertFalse(store.isConfigured()) XCTAssertNil(store.baseUrl) } }
GitRust