From df3bdb992a0550a13dcbc5a1569967ac084110d3 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Wed, 23 Sep 2026 16:01:17 +0300 Subject: [PATCH] Share the test passphrase through a RestorationTokenFixtures enum. The legacy restoration token formats store the passphrase as a base64 string whereas the current one exposes Data, so keep both representations of the same value in one place instead of repeating the conversions in every test. --- UnitTests/Sources/KeychainControllerTests.swift | 10 +++++----- UnitTests/Sources/RestorationTokenTests.swift | 13 +++++++++---- UnitTests/Sources/UserSessionStoreTests.swift | 8 ++++---- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/UnitTests/Sources/KeychainControllerTests.swift b/UnitTests/Sources/KeychainControllerTests.swift index 65fba15e8..addd79193 100644 --- a/UnitTests/Sources/KeychainControllerTests.swift +++ b/UnitTests/Sources/KeychainControllerTests.swift @@ -36,7 +36,7 @@ struct KeychainControllerTests { oauthData: "oauthData", slidingSyncVersion: .native), sessionDirectories: .init(), - passphrase: Data("passphrase".utf8), + passphrase: RestorationTokenFixtures.passphrase, pusherNotificationClientIdentifier: "pusherClientID") keychain.setRestorationToken(restorationToken, forUsername: username) @@ -56,7 +56,7 @@ struct KeychainControllerTests { oauthData: "oauthData", slidingSyncVersion: .native), sessionDirectories: .init(), - passphrase: Data("passphrase".utf8), + passphrase: RestorationTokenFixtures.passphrase, pusherNotificationClientIdentifier: "pusherClientID") keychain.setRestorationToken(restorationToken, forUsername: username) #expect(keychain.restorationTokens().count == 1, "The keychain should have 1 restoration token.") @@ -82,7 +82,7 @@ struct KeychainControllerTests { oauthData: "oauthData", slidingSyncVersion: .native), sessionDirectories: .init(), - passphrase: Data("passphrase".utf8), + passphrase: RestorationTokenFixtures.passphrase, pusherNotificationClientIdentifier: "pusherClientID") keychain.setRestorationToken(restorationToken, forUsername: "@test\(index):example.com") } @@ -107,7 +107,7 @@ struct KeychainControllerTests { oauthData: "oauthData", slidingSyncVersion: .native), sessionDirectories: .init(), - passphrase: Data("passphrase".utf8), + passphrase: RestorationTokenFixtures.passphrase, pusherNotificationClientIdentifier: "pusherClientID") keychain.setRestorationToken(restorationToken, forUsername: "@test\(index):example.com") } @@ -141,7 +141,7 @@ struct KeychainControllerTests { oidcData: nil, slidingSyncVersion: .proxy(url: "https://sync.example.com")), sessionDirectory: .sessionsBaseDirectory.appending(component: UUID().uuidString), - passphrase: Data("passphrase".utf8).base64EncodedString(), + passphrase: RestorationTokenFixtures.base64Passphrase, pusherNotificationClientIdentifier: "pusherClientID") let tokenData = try JSONEncoder().encode(unsupportedToken) try underlyingKeychain.set(tokenData, key: "@test:example.com") diff --git a/UnitTests/Sources/RestorationTokenTests.swift b/UnitTests/Sources/RestorationTokenTests.swift index c5f2f3d56..4e193191e 100644 --- a/UnitTests/Sources/RestorationTokenTests.swift +++ b/UnitTests/Sources/RestorationTokenTests.swift @@ -23,7 +23,7 @@ struct RestorationTokenTests { oidcData: "data-from-mas", slidingSyncVersion: .proxy(url: "https://sync.example.com")), sessionDirectory: .sessionsBaseDirectory.appending(component: UUID().uuidString), - passphrase: Data("passphrase".utf8).base64EncodedString(), + passphrase: RestorationTokenFixtures.base64Passphrase, pusherNotificationClientIdentifier: "pusher-identifier") let data = try JSONEncoder().encode(originalToken) @@ -46,7 +46,7 @@ struct RestorationTokenTests { oidcData: "data-from-mas", slidingSyncVersion: .native), sessionDirectory: .sessionsBaseDirectory.appending(component: sessionDirectoryName), - passphrase: Data("passphrase".utf8).base64EncodedString(), + passphrase: RestorationTokenFixtures.base64Passphrase, pusherNotificationClientIdentifier: "pusher-identifier") let data = try JSONEncoder().encode(originalToken) @@ -77,7 +77,7 @@ struct RestorationTokenTests { slidingSyncVersion: .native), sessionDirectory: .sessionsBaseDirectory.appending(component: sessionDirectoryName), cacheDirectory: .sessionCachesBaseDirectory.appending(component: sessionDirectoryName), - passphrase: Data("passphrase".utf8).base64EncodedString(), + passphrase: RestorationTokenFixtures.base64Passphrase, pusherNotificationClientIdentifier: "pusher-identifier") let data = try JSONEncoder().encode(originalToken) @@ -106,7 +106,7 @@ struct RestorationTokenTests { oauthData: "data-from-mas", slidingSyncVersion: .native), sessionDirectories: .init(), - passphrase: Data("passphrase".utf8), + passphrase: RestorationTokenFixtures.passphrase, pusherNotificationClientIdentifier: "pusher-identifier") let data = try JSONEncoder().encode(originalToken) @@ -129,6 +129,11 @@ struct RestorationTokenTests { // MARK: - Token formats +enum RestorationTokenFixtures { + static let passphrase = Data("passphrase".utf8) + static let base64Passphrase = passphrase.base64EncodedString() +} + struct RestorationTokenV4: Equatable, Codable { let session: SessionV1 let sessionDirectory: URL diff --git a/UnitTests/Sources/UserSessionStoreTests.swift b/UnitTests/Sources/UserSessionStoreTests.swift index a972fd74f..1d8fb27ef 100644 --- a/UnitTests/Sources/UserSessionStoreTests.swift +++ b/UnitTests/Sources/UserSessionStoreTests.swift @@ -114,7 +114,7 @@ struct UserSessionStoreTests { let sessionDirectories = SessionDirectories() // When creating a user session for it. - guard case .success(let userSession) = await store.userSession(for: client, sessionDirectories: sessionDirectories, passphrase: Data("passphrase".utf8)) else { + guard case .success(let userSession) = await store.userSession(for: client, sessionDirectories: sessionDirectories, passphrase: RestorationTokenFixtures.passphrase) else { Issue.record("Creating the session should succeed.") return } @@ -122,7 +122,7 @@ struct UserSessionStoreTests { // Then the session should be built and its restoration token persisted. #expect(userSession.clientProxy.userID == "@alice:matrix.org") #expect(keychainController.setRestorationTokenForUsernameReceivedArguments?.forUsername == "@alice:matrix.org") - #expect(keychainController.setRestorationTokenForUsernameReceivedArguments?.restorationToken.passphrase == Data("passphrase".utf8)) + #expect(keychainController.setRestorationTokenForUsernameReceivedArguments?.restorationToken.passphrase == RestorationTokenFixtures.passphrase) } @Test @@ -132,7 +132,7 @@ struct UserSessionStoreTests { client.sessionThrowableError = TestError.generic // When creating a user session for it. - guard case .failure(.failedSettingUpSession) = await store.userSession(for: client, sessionDirectories: .init(), passphrase: Data("passphrase".utf8)) else { + guard case .failure(.failedSettingUpSession) = await store.userSession(for: client, sessionDirectories: .init(), passphrase: RestorationTokenFixtures.passphrase) else { Issue.record("Creating the session should fail.") return } @@ -177,7 +177,7 @@ struct UserSessionStoreTests { slidingSyncVersion: .native) let restorationToken = RestorationToken(session: session, sessionDirectories: sessionDirectories, - passphrase: Data("passphrase".utf8), + passphrase: RestorationTokenFixtures.passphrase, pusherNotificationClientIdentifier: nil) return KeychainCredentials(userID: userID, restorationToken: restorationToken) }