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