43 lines
1.3 KiB
Swift
43 lines
1.3 KiB
Swift
import XCTest
|
|
|
|
@testable import Omnigent
|
|
|
|
@MainActor
|
|
final class SettingsStoreTests: XCTestCase {
|
|
private var suiteName: String!
|
|
private var defaults: UserDefaults!
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
suiteName = "SettingsStoreTests.\(UUID().uuidString)"
|
|
defaults = UserDefaults(suiteName: suiteName)
|
|
defaults.removePersistentDomain(forName: suiteName)
|
|
}
|
|
|
|
override func tearDown() {
|
|
defaults.removePersistentDomain(forName: suiteName)
|
|
defaults = nil
|
|
suiteName = nil
|
|
super.tearDown()
|
|
}
|
|
|
|
func testRecentServersAreDedupedAndCapped() {
|
|
let store = SettingsStore(defaults: defaults)
|
|
for host in ["a", "b", "c", "d", "e", "f", "c"] {
|
|
store.rememberRecentServer(URL(string: "https://\(host).example.com")!)
|
|
}
|
|
|
|
XCTAssertEqual(store.recentServers.count, 5)
|
|
XCTAssertEqual(store.recentServers.first, "https://c.example.com")
|
|
XCTAssertFalse(store.recentServers.contains("https://a.example.com"))
|
|
}
|
|
|
|
func testProtocolGrantsAreScopedByOrigin() {
|
|
let store = SettingsStore(defaults: defaults)
|
|
store.allowProtocol("vscode", from: "https://one.example.com")
|
|
|
|
XCTAssertTrue(store.isProtocolAllowed("vscode", from: "https://one.example.com"))
|
|
XCTAssertFalse(store.isProtocolAllowed("vscode", from: "https://two.example.com"))
|
|
}
|
|
}
|