Closer/iphone/CloserTests/CryptoTests/DeviceKeyStatusTests.swift

50 lines
1.8 KiB
Swift
Raw Normal View History

import XCTest
@testable import Closer
final class DeviceKeyStatusTests: XCTestCase {
func testStatusReportsHasKeyWhenStored() throws {
let store = InMemoryCoupleKeyStore()
let key = CoupleKeyMaterial(rawBytes: Data(repeating: 0xAB, count: 32))
try store.storeCoupleKey(key, for: "couple-status-1")
let status = try DeviceKeyStatusReporter.currentStatus(
keyStore: store,
coupleId: "couple-status-1",
currentUserId: "user-status-1"
)
XCTAssertTrue(status.hasLocalKey)
XCTAssertEqual(status.coupleId, "couple-status-1")
XCTAssertEqual(status.userId, "user-status-1")
}
func testStatusReportsMissingKeyWhenAbsent() throws {
let store = InMemoryCoupleKeyStore()
let status = try DeviceKeyStatusReporter.currentStatus(
keyStore: store,
coupleId: "couple-status-missing",
currentUserId: "user-status-2"
)
XCTAssertFalse(status.hasLocalKey)
XCTAssertEqual(status.coupleId, "couple-status-missing")
XCTAssertEqual(status.userId, "user-status-2")
}
func testNeedsRecoveryPhraseWhenKeyMissing() throws {
let store = InMemoryCoupleKeyStore()
XCTAssertTrue(try DeviceKeyStatusReporter.needsRecoveryPhrase(
keyStore: store,
coupleId: "couple-missing"
))
}
func testNeedsRecoveryPhraseFalseWhenKeyPresent() throws {
let store = InMemoryCoupleKeyStore()
let key = CoupleKeyMaterial(rawBytes: Data(repeating: 0xCD, count: 32))
try store.storeCoupleKey(key, for: "couple-present")
XCTAssertFalse(try DeviceKeyStatusReporter.needsRecoveryPhrase(
keyStore: store,
coupleId: "couple-present"
))
}
}