mirror of
https://github.com/shadowsocks/ShadowsocksX-NG.git
synced 2026-11-14 10:13:54 +00:00
55 lines
2.2 KiB
Swift
55 lines
2.2 KiB
Swift
import Foundation
|
|
import Testing
|
|
|
|
@testable import ShadowsocksX_NG2
|
|
|
|
struct ProxyControlPreferencesTests {
|
|
@Test func freshPreferencesUseFactoryIntentWithoutChangingExistingPreferences() throws {
|
|
let suite = "proxy-control-defaults-\(UUID().uuidString)"
|
|
let defaults = try #require(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
defaults.set(true, forKey: "silentLaunch")
|
|
defaults.set("http://example.com/probe", forKey: "connectivityTestURL")
|
|
|
|
let settings = ProxyRuntimeSettings(
|
|
listen: ProxyListeningConfiguration(),
|
|
preferences: ProxyControlPreferences(defaults: defaults))
|
|
|
|
#expect(settings.preferredMode == .rule)
|
|
#expect(settings.ruleDefaultAction == .proxyWhenUnmatched)
|
|
#expect(!settings.agentEnabled)
|
|
#expect(!settings.systemProxyEnabled)
|
|
#expect(settings.proxyExceptions.isEmpty)
|
|
#expect(defaults.bool(forKey: "silentLaunch"))
|
|
#expect(defaults.string(forKey: "connectivityTestURL") == "http://example.com/probe")
|
|
}
|
|
|
|
@Test func rebuildingSnapshotRestoresIndependentPreferencesAndCurrentListeningConfiguration()
|
|
throws
|
|
{
|
|
let suite = "proxy-control-roundtrip-\(UUID().uuidString)"
|
|
let defaults = try #require(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let preferences = ProxyControlPreferences(defaults: defaults)
|
|
preferences.preferredMode = .direct
|
|
preferences.ruleDefaultAction = .directWhenUnmatched
|
|
preferences.agentEnabled = true
|
|
preferences.systemProxyEnabled = true
|
|
preferences.proxyExceptions = "example.com, localhost"
|
|
var listen = ProxyListeningConfiguration()
|
|
listen.socksPort = 23001
|
|
listen.httpPort = 23002
|
|
|
|
let reopened = ProxyControlPreferences(defaults: try #require(UserDefaults(suiteName: suite)))
|
|
let settings = ProxyRuntimeSettings(listen: listen, preferences: reopened)
|
|
|
|
#expect(settings.preferredMode == .direct)
|
|
#expect(settings.ruleDefaultAction == .directWhenUnmatched)
|
|
#expect(settings.agentEnabled)
|
|
#expect(settings.systemProxyEnabled)
|
|
#expect(settings.proxyExceptionList == ["example.com", "localhost"])
|
|
#expect(settings.listen.socksPort == 23001)
|
|
#expect(settings.listen.httpPort == 23002)
|
|
}
|
|
}
|