50 lines
1.8 KiB
Swift
50 lines
1.8 KiB
Swift
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"
|
|
))
|
|
}
|
|
}
|