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.
This commit is contained in:
Stefan Ceriu
2026-09-23 16:01:17 +03:00
parent b1923b418f
commit df3bdb992a
3 changed files with 18 additions and 13 deletions
@@ -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")
@@ -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
@@ -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)
}