git.iko.soy/parseable-macos
on 2026.02.15.2335 help sign in
parseable-macos/ParseableViewerTests/ConnectionStoreTests.swift
85 lines 3.1 kB history raw
1import XCTest
2@testable import ParseableViewer
4final class ConnectionStoreTests: XCTestCase {
5 private let testSuiteKey = "parseable_connections_test"
7 override func tearDown() {
8 super.tearDown()
9 // Clean up any test data from UserDefaults
10 UserDefaults.standard.removeObject(forKey: "parseable_connections")
11 UserDefaults.standard.removeObject(forKey: "parseable_active_connection_id")
12 }
14 // MARK: - Active connection ID
16 func testSaveAndLoadActiveConnectionID() {
17 let id = UUID()
18 ConnectionStore.saveActiveConnectionID(id)
19 let loaded = ConnectionStore.loadActiveConnectionID()
20 XCTAssertEqual(loaded, id)
21 }
23 func testSaveNilActiveConnectionID() {
24 let id = UUID()
25 ConnectionStore.saveActiveConnectionID(id)
26 ConnectionStore.saveActiveConnectionID(nil)
27 let loaded = ConnectionStore.loadActiveConnectionID()
28 XCTAssertNil(loaded)
29 }
31 func testLoadActiveConnectionIDWhenEmpty() {
32 UserDefaults.standard.removeObject(forKey: "parseable_active_connection_id")
33 let loaded = ConnectionStore.loadActiveConnectionID()
34 XCTAssertNil(loaded)
35 }
37 // MARK: - Connection persistence
39 func testLoadConnectionsWhenEmpty() {
40 UserDefaults.standard.removeObject(forKey: "parseable_connections")
41 let connections = ConnectionStore.loadConnections()
42 XCTAssertTrue(connections.isEmpty)
43 }
45 func testSaveAndLoadConnections() {
46 let connection = ServerConnection(
47 name: "Test Server",
48 url: "https://logs.example.com",
49 username: "admin",
50 password: "secret123"
51 )
52 ConnectionStore.saveConnections([connection])
53 let loaded = ConnectionStore.loadConnections()
54 XCTAssertEqual(loaded.count, 1)
55 XCTAssertEqual(loaded[0].name, "Test Server")
56 XCTAssertEqual(loaded[0].url, "https://logs.example.com")
57 XCTAssertEqual(loaded[0].username, "admin")
58 }
60 func testSaveMultipleConnections() {
61 let c1 = ServerConnection(name: "Prod", url: "https://prod.example.com", username: "admin", password: "p1")
62 let c2 = ServerConnection(name: "Dev", url: "https://dev.example.com", username: "dev", password: "p2")
63 ConnectionStore.saveConnections([c1, c2])
64 let loaded = ConnectionStore.loadConnections()
65 XCTAssertEqual(loaded.count, 2)
66 }
68 func testPasswordNotInUserDefaults() {
69 let connection = ServerConnection(
70 name: "Test",
71 url: "https://example.com",
72 username: "admin",
73 password: "supersecret"
74 )
75 ConnectionStore.saveConnections([connection])
77 // Verify password is NOT in the UserDefaults data
78 if let data = UserDefaults.standard.data(forKey: "parseable_connections"),
79 let jsonString = String(data: data, encoding: .utf8) {
80 XCTAssertFalse(jsonString.contains("supersecret"),
81 "Password should not be stored in UserDefaults JSON")
82 }
83 }