Don’t wrap PreKeyManager mocks in Tasks

This commit is contained in:
Max Radermacher 2026-05-29 13:29:34 -05:00 committed by GitHub
parent 65f577efed
commit 8f60728454
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 53 deletions

View File

@ -345,11 +345,10 @@ public class RegistrationCoordinatorTest {
// It needs an apns token to register.
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// It needs prekeys as well.
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
// And will finalize prekeys after success.
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
let identityResponse = Stubs.accountIdentityResponse()
@ -389,7 +388,6 @@ public class RegistrationCoordinatorTest {
// When registered, we should create pre-keys.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
if wasReglockEnabled {
@ -504,11 +502,10 @@ public class RegistrationCoordinatorTest {
// It needs an apns token to register.
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// Every time we register we also ask for prekeys.
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
// And we finalize them after.
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
let identityResponse = Stubs.accountIdentityResponse()
@ -541,7 +538,6 @@ public class RegistrationCoordinatorTest {
// When registered, we should create pre-keys.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
// We haven't done a SVR backup; that should happen now.
@ -647,18 +643,16 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// Every time we register we also ask for prekeys.
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
// And we finalize them after.
// Set up a list of mocks that should be returned in order
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed.negated)
return Task {}
}
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
// Fail the request; the reg recovery pw is invalid.
@ -753,17 +747,15 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed.negated)
return Task {}
}
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed.negated)
return Task {}
}
// Fail the first request; the reglock is invalid.
@ -851,17 +843,15 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// Every time we register we also ask for prekeys.
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
// And we finalize them after.
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed.negated)
return Task {}
}
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
// Fail the request with a network error.
@ -911,7 +901,6 @@ public class RegistrationCoordinatorTest {
// When registered, it should try and sync pre-keys.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
// We haven't done a SVR backup; that should happen.
@ -1068,11 +1057,11 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addFinalizePreKeyMock({ _ in Task {} })
preKeyManagerMock.addFinalizePreKeyMock({ _ in Task {} })
preKeyManagerMock.addFinalizePreKeyMock({ _ in })
preKeyManagerMock.addFinalizePreKeyMock({ _ in })
// Fail the first request;
let expectedRecoveryPwRequest = createAccountWithRecoveryPw(masterKey)
@ -1222,16 +1211,14 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed.negated)
return Task {}
}
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
// Fail the first request; the reglock is invalid.
@ -1275,7 +1262,6 @@ public class RegistrationCoordinatorTest {
// When registered, we should create pre-keys.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
// If we had reglock before registration, it should be re-enabled.
@ -1437,13 +1423,13 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
preKeyManagerMock.addFinalizePreKeyMock({ _ in Task {} })
preKeyManagerMock.addFinalizePreKeyMock({ _ in Task {} })
preKeyManagerMock.addFinalizePreKeyMock({ _ in Task {} })
preKeyManagerMock.addFinalizePreKeyMock({ _ in })
preKeyManagerMock.addFinalizePreKeyMock({ _ in })
preKeyManagerMock.addFinalizePreKeyMock({ _ in })
// Fail the first request; the local key is invalid.
let expectedRecoveryPwRequest = createAccountWithRecoveryPw(masterKey)
@ -1567,12 +1553,11 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// Every time we register we also ask for prekeys.
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
// And we finalize them after.
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
// Now still at it should make a reg recovery pw request
@ -1604,7 +1589,6 @@ public class RegistrationCoordinatorTest {
// When registered, it should try and create pre-keys.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
// Once we create pre-keys, we should back up to svr.
@ -1882,7 +1866,7 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// It should also fetch the prekeys for account creation
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
let expectedRequest = createAccountWithSession(newMasterKey)
mockURLSession.addResponse(
@ -1909,14 +1893,12 @@ public class RegistrationCoordinatorTest {
// Once we are registered, we should finalize prekeys.
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
// Then we should try and create one time pre-keys
// with the credentials we got in the identity response.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
// Finish the validation.
@ -2913,7 +2895,7 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// It should also fetch the prekeys for account creation
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
let expectedRequest = createAccountWithSession(newMasterKey)
mockURLSession.addResponse(
@ -2944,14 +2926,12 @@ public class RegistrationCoordinatorTest {
// Once we are registered, we should finalize prekeys.
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
// Then we should try and create one time pre-keys
// with the credentials we got in the identity response.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
// When we skip the pin, it should skip any SVR backups.
@ -3048,7 +3028,7 @@ public class RegistrationCoordinatorTest {
pushRegistrationManagerMock.addRequestPushTokenMock({ .success(Stubs.apnsRegistrationId) })
// It should also fetch the prekeys for account creation
preKeyManagerMock.addCreatePreKeysMock({ Task { Stubs.prekeyBundles() } })
preKeyManagerMock.addCreatePreKeysMock({ Stubs.prekeyBundles() })
let expectedRequest = createAccountWithSession(newMasterKey)
mockURLSession.addResponse(
@ -3075,14 +3055,12 @@ public class RegistrationCoordinatorTest {
// Once we are registered, we should finalize prekeys.
preKeyManagerMock.addFinalizePreKeyMock { didSucceed in
#expect(didSucceed)
return Task {}
}
// Then we should try and create one time pre-keys
// with the credentials we got in the identity response.
preKeyManagerMock.addRotateOneTimePreKeyMock({ auth in
#expect(auth == expectedAuthedAccount().chatServiceAuth)
return Task {}
})
// When we skip the pin, it should skip any SVR backups.

View File

@ -173,28 +173,28 @@ public class _RegistrationCoordinator_PreKeyManagerMock: PreKeyManager {
public func rotateSignedPreKeysIfNeeded() async throws { fatalError() }
public func refreshOneTimePreKeys(forIdentity identity: OWSIdentity, alsoRefreshSignedPreKey shouldRefreshSignedPreKey: Bool) async throws { fatalError() }
public typealias CreatePreKeysMock = () -> Task<RegistrationPreKeyUploadBundles, Never>
public typealias CreatePreKeysMock = () async -> RegistrationPreKeyUploadBundles
private var createPreKeysMocks = [CreatePreKeysMock]()
public func addCreatePreKeysMock(_ mock: @escaping CreatePreKeysMock) { createPreKeysMocks.append(mock) }
public func createPreKeysForRegistration() async -> RegistrationPreKeyUploadBundles {
run.addObservedStep(.createPreKeys)
return await createPreKeysMocks.removeFirst()().value
return await createPreKeysMocks.removeFirst()()
}
public typealias FinalizePreKeysMock = (Bool) -> Task<Void, Never>
public typealias FinalizePreKeysMock = (Bool) async -> Void
private var finalizePreKeysMocks = [FinalizePreKeysMock]()
public func addFinalizePreKeyMock(_ mock: @escaping FinalizePreKeysMock) { finalizePreKeysMocks.append(mock) }
public func finalizeRegistrationPreKeys(_ bundles: RegistrationPreKeyUploadBundles, uploadDidSucceed: Bool) async {
run.addObservedStep(.finalizePreKeys)
await finalizePreKeysMocks.removeFirst()(uploadDidSucceed).value
await finalizePreKeysMocks.removeFirst()(uploadDidSucceed)
}
public typealias RotateOneTimePreKeysMock = (ChatServiceAuth) -> Task<Void, any Error>
public typealias RotateOneTimePreKeysMock = (ChatServiceAuth) async throws -> Void
private var rotateOneTimePreKeysMocks = [RotateOneTimePreKeysMock]()
public func addRotateOneTimePreKeyMock(_ mock: @escaping RotateOneTimePreKeysMock) { rotateOneTimePreKeysMocks.append(mock) }
public func rotateOneTimePreKeysForRegistration(auth: ChatServiceAuth) async throws {
run.addObservedStep(.rotateOneTimePreKeys)
return try await rotateOneTimePreKeysMocks.removeFirst()(auth).value
return try await rotateOneTimePreKeysMocks.removeFirst()(auth)
}
public func setIsChangingNumber(_ isChangingNumber: Bool) {