39 lines
1.8 KiB
Swift
39 lines
1.8 KiB
Swift
import Foundation
|
|
import XCTest
|
|
@testable import Luma
|
|
|
|
final class EncryptionPreferenceTests: XCTestCase {
|
|
func testResolutionUsesGlobalDefaultAndPerChatOverride() {
|
|
XCTAssertTrue(EncryptionPreference.inheritGlobal.resolved(globalEnabled: true))
|
|
XCTAssertFalse(EncryptionPreference.inheritGlobal.resolved(globalEnabled: false))
|
|
XCTAssertTrue(EncryptionPreference.enabled.resolved(globalEnabled: false))
|
|
XCTAssertFalse(EncryptionPreference.disabled.resolved(globalEnabled: true))
|
|
}
|
|
|
|
func testConversationWithoutEncryptionFieldStillDecodes() throws {
|
|
let conversation = Conversation(jid: "bob@example.org", displayName: "Bob")
|
|
let encoded = try JSONEncoder().encode(conversation)
|
|
var object = try XCTUnwrap(JSONSerialization.jsonObject(with: encoded) as? [String: Any])
|
|
object.removeValue(forKey: "encryptionPreference")
|
|
let legacyData = try JSONSerialization.data(withJSONObject: object)
|
|
|
|
let decoded = try JSONDecoder().decode(Conversation.self, from: legacyData)
|
|
|
|
XCTAssertEqual(decoded.encryptionPreference, .inheritGlobal)
|
|
XCTAssertEqual(decoded.jid, conversation.jid)
|
|
}
|
|
|
|
func testGlobalSettingIsStoredPerAccount() throws {
|
|
let suite = "LumaTests.\(UUID().uuidString)"
|
|
let defaults = try XCTUnwrap(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let preferences = AccountPreferences(defaults: defaults)
|
|
|
|
XCTAssertTrue(preferences.encryptionEnabled(for: "alice@example.org"))
|
|
preferences.setEncryptionEnabled(false, for: "alice@example.org")
|
|
|
|
XCTAssertFalse(preferences.encryptionEnabled(for: "alice@example.org"))
|
|
XCTAssertTrue(preferences.encryptionEnabled(for: "bob@example.org"))
|
|
}
|
|
}
|