Files
Luma/Tests/EncryptionPreferenceTests.swift
2026-07-30 20:07:51 +07:00

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"))
}
}