From b0dd6ddf4647abaed9d6d84fad5b8e3d30f29286 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:51:59 +0100 Subject: [PATCH] Update the SDK to fix a sync performance regression. (#4324) --- ElementX.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 +- .../Mocks/Generated/SDKGeneratedMocks.swift | 52 +++++++++---------- .../Sources/Mocks/SDK/ClientSDKMock.swift | 2 +- .../AuthenticationService.swift | 3 +- ...henticationStartScreenViewModelTests.swift | 24 ++++----- ...rverConfirmationScreenViewModelTests.swift | 48 ++++++++--------- project.yml | 2 +- 8 files changed, 69 insertions(+), 68 deletions(-) diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 6b2c8929a..a09ce1bfc 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -8771,7 +8771,7 @@ repositoryURL = "https://github.com/element-hq/matrix-rust-components-swift"; requirement = { kind = exactVersion; - version = "25.07.14-2"; + version = 25.07.15; }; }; 701C7BEF8F70F7A83E852DCC /* XCRemoteSwiftPackageReference "GZIP" */ = { diff --git a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 0b49e0855..ffa4194e2 100644 --- a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -158,8 +158,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/element-hq/matrix-rust-components-swift", "state" : { - "revision" : "08ec4eaad53ca384e41bcb72bc198f26d7b17bd5", - "version" : "25.7.14-2" + "revision" : "1c896dcca3bd302b492a71b3d020f50d8407fea0", + "version" : "25.7.15" } }, { diff --git a/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift b/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift index 680191a64..38d53af36 100644 --- a/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift +++ b/ElementX/Sources/Mocks/Generated/SDKGeneratedMocks.swift @@ -5108,16 +5108,16 @@ open class ClientSDKMock: MatrixRustSDK.Client, @unchecked Sendable { //MARK: - urlForOidc - open var urlForOidcOidcConfigurationPromptLoginHintThrowableError: Error? - var urlForOidcOidcConfigurationPromptLoginHintUnderlyingCallsCount = 0 - open var urlForOidcOidcConfigurationPromptLoginHintCallsCount: Int { + open var urlForOidcOidcConfigurationPromptLoginHintDeviceIdThrowableError: Error? + var urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingCallsCount = 0 + open var urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount: Int { get { if Thread.isMainThread { - return urlForOidcOidcConfigurationPromptLoginHintUnderlyingCallsCount + return urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingCallsCount } else { var returnValue: Int? = nil DispatchQueue.main.sync { - returnValue = urlForOidcOidcConfigurationPromptLoginHintUnderlyingCallsCount + returnValue = urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingCallsCount } return returnValue! @@ -5125,29 +5125,29 @@ open class ClientSDKMock: MatrixRustSDK.Client, @unchecked Sendable { } set { if Thread.isMainThread { - urlForOidcOidcConfigurationPromptLoginHintUnderlyingCallsCount = newValue + urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingCallsCount = newValue } else { DispatchQueue.main.sync { - urlForOidcOidcConfigurationPromptLoginHintUnderlyingCallsCount = newValue + urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingCallsCount = newValue } } } } - open var urlForOidcOidcConfigurationPromptLoginHintCalled: Bool { - return urlForOidcOidcConfigurationPromptLoginHintCallsCount > 0 + open var urlForOidcOidcConfigurationPromptLoginHintDeviceIdCalled: Bool { + return urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount > 0 } - open var urlForOidcOidcConfigurationPromptLoginHintReceivedArguments: (oidcConfiguration: OidcConfiguration, prompt: OidcPrompt?, loginHint: String?)? - open var urlForOidcOidcConfigurationPromptLoginHintReceivedInvocations: [(oidcConfiguration: OidcConfiguration, prompt: OidcPrompt?, loginHint: String?)] = [] + open var urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments: (oidcConfiguration: OidcConfiguration, prompt: OidcPrompt?, loginHint: String?, deviceId: String?)? + open var urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedInvocations: [(oidcConfiguration: OidcConfiguration, prompt: OidcPrompt?, loginHint: String?, deviceId: String?)] = [] - var urlForOidcOidcConfigurationPromptLoginHintUnderlyingReturnValue: OAuthAuthorizationData! - open var urlForOidcOidcConfigurationPromptLoginHintReturnValue: OAuthAuthorizationData! { + var urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingReturnValue: OAuthAuthorizationData! + open var urlForOidcOidcConfigurationPromptLoginHintDeviceIdReturnValue: OAuthAuthorizationData! { get { if Thread.isMainThread { - return urlForOidcOidcConfigurationPromptLoginHintUnderlyingReturnValue + return urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingReturnValue } else { var returnValue: OAuthAuthorizationData? = nil DispatchQueue.main.sync { - returnValue = urlForOidcOidcConfigurationPromptLoginHintUnderlyingReturnValue + returnValue = urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingReturnValue } return returnValue! @@ -5155,29 +5155,29 @@ open class ClientSDKMock: MatrixRustSDK.Client, @unchecked Sendable { } set { if Thread.isMainThread { - urlForOidcOidcConfigurationPromptLoginHintUnderlyingReturnValue = newValue + urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingReturnValue = newValue } else { DispatchQueue.main.sync { - urlForOidcOidcConfigurationPromptLoginHintUnderlyingReturnValue = newValue + urlForOidcOidcConfigurationPromptLoginHintDeviceIdUnderlyingReturnValue = newValue } } } } - open var urlForOidcOidcConfigurationPromptLoginHintClosure: ((OidcConfiguration, OidcPrompt?, String?) async throws -> OAuthAuthorizationData)? + open var urlForOidcOidcConfigurationPromptLoginHintDeviceIdClosure: ((OidcConfiguration, OidcPrompt?, String?, String?) async throws -> OAuthAuthorizationData)? - open override func urlForOidc(oidcConfiguration: OidcConfiguration, prompt: OidcPrompt?, loginHint: String?) async throws -> OAuthAuthorizationData { - if let error = urlForOidcOidcConfigurationPromptLoginHintThrowableError { + open override func urlForOidc(oidcConfiguration: OidcConfiguration, prompt: OidcPrompt?, loginHint: String?, deviceId: String?) async throws -> OAuthAuthorizationData { + if let error = urlForOidcOidcConfigurationPromptLoginHintDeviceIdThrowableError { throw error } - urlForOidcOidcConfigurationPromptLoginHintCallsCount += 1 - urlForOidcOidcConfigurationPromptLoginHintReceivedArguments = (oidcConfiguration: oidcConfiguration, prompt: prompt, loginHint: loginHint) + urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount += 1 + urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments = (oidcConfiguration: oidcConfiguration, prompt: prompt, loginHint: loginHint, deviceId: deviceId) DispatchQueue.main.async { - self.urlForOidcOidcConfigurationPromptLoginHintReceivedInvocations.append((oidcConfiguration: oidcConfiguration, prompt: prompt, loginHint: loginHint)) + self.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedInvocations.append((oidcConfiguration: oidcConfiguration, prompt: prompt, loginHint: loginHint, deviceId: deviceId)) } - if let urlForOidcOidcConfigurationPromptLoginHintClosure = urlForOidcOidcConfigurationPromptLoginHintClosure { - return try await urlForOidcOidcConfigurationPromptLoginHintClosure(oidcConfiguration, prompt, loginHint) + if let urlForOidcOidcConfigurationPromptLoginHintDeviceIdClosure = urlForOidcOidcConfigurationPromptLoginHintDeviceIdClosure { + return try await urlForOidcOidcConfigurationPromptLoginHintDeviceIdClosure(oidcConfiguration, prompt, loginHint, deviceId) } else { - return urlForOidcOidcConfigurationPromptLoginHintReturnValue + return urlForOidcOidcConfigurationPromptLoginHintDeviceIdReturnValue } } diff --git a/ElementX/Sources/Mocks/SDK/ClientSDKMock.swift b/ElementX/Sources/Mocks/SDK/ClientSDKMock.swift index b8bc58cee..67a08cb97 100644 --- a/ElementX/Sources/Mocks/SDK/ClientSDKMock.swift +++ b/ElementX/Sources/Mocks/SDK/ClientSDKMock.swift @@ -41,7 +41,7 @@ extension ClientSDKMock { slidingSyncVersionReturnValue = configuration.slidingSyncVersion userIdServerNameThrowableError = MockError.generic serverReturnValue = "https://\(configuration.serverAddress)" - urlForOidcOidcConfigurationPromptLoginHintReturnValue = OAuthAuthorizationDataSDKMock(configuration: configuration) + urlForOidcOidcConfigurationPromptLoginHintDeviceIdReturnValue = OAuthAuthorizationDataSDKMock(configuration: configuration) loginUsernamePasswordInitialDeviceNameDeviceIdClosure = { username, password, _, _ in guard username == configuration.validCredentials.username, password == configuration.validCredentials.password else { diff --git a/ElementX/Sources/Services/Authentication/AuthenticationService.swift b/ElementX/Sources/Services/Authentication/AuthenticationService.swift index c16aaf3ba..8fbccce81 100644 --- a/ElementX/Sources/Services/Authentication/AuthenticationService.swift +++ b/ElementX/Sources/Services/Authentication/AuthenticationService.swift @@ -89,7 +89,8 @@ class AuthenticationService: AuthenticationServiceProtocol { // let prompt: OidcPrompt = flow == .register ? .create : .consent let oidcData = try await client.urlForOidc(oidcConfiguration: appSettings.oidcConfiguration.rustValue, prompt: .consent, - loginHint: loginHint) + loginHint: loginHint, + deviceId: nil) return .success(OIDCAuthorizationDataProxy(underlyingData: oidcData)) } catch { MXLog.error("Failed to get URL for OIDC login: \(error)") diff --git a/UnitTests/Sources/AuthenticationStartScreenViewModelTests.swift b/UnitTests/Sources/AuthenticationStartScreenViewModelTests.swift index 7aead3e0c..4604453d5 100644 --- a/UnitTests/Sources/AuthenticationStartScreenViewModelTests.swift +++ b/UnitTests/Sources/AuthenticationStartScreenViewModelTests.swift @@ -34,7 +34,7 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { // Given a view model that has no provisioning parameters. setupViewModel() XCTAssertEqual(authenticationService.homeserver.value.loginMode, .unknown) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When tapping any of the buttons on the screen let actions: [(AuthenticationStartScreenViewAction, AuthenticationStartScreenViewModelAction)] = [ @@ -51,7 +51,7 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { // Then the authentication service should not be used yet. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 0) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) XCTAssertEqual(authenticationService.homeserver.value.loginMode, .unknown) } } @@ -60,7 +60,7 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { // Given a view model that has been provisioned with a server that supports OIDC. setupViewModel(provisioningParameters: .init(accountProvider: "company.com", loginHint: "user@company.com")) XCTAssertEqual(authenticationService.homeserver.value.loginMode, .unknown) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When tapping the login button the authentication service should be used and the screen // should request to continue the flow without any server selection needed. @@ -69,9 +69,9 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { try await deferred.fulfill() XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.prompt, .consent) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.loginHint, "user@company.com") + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.prompt, .consent) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.loginHint, "user@company.com") XCTAssertEqual(authenticationService.homeserver.value.loginMode, .oidc(supportsCreatePrompt: false)) } @@ -79,7 +79,7 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { // Given a view model that has been provisioned with a server that does not support OIDC. setupViewModel(provisioningParameters: .init(accountProvider: "company.com", loginHint: "user@company.com"), supportsOIDC: false) XCTAssertEqual(authenticationService.homeserver.value.loginMode, .unknown) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When tapping the login button the authentication service should be used and the screen // should request to continue the flow without any server selection needed. @@ -97,7 +97,7 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { setAllowedAccountProviders(["company.com"]) setupViewModel() XCTAssertEqual(authenticationService.homeserver.value.loginMode, .unknown) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When tapping the login button the authentication service should be used and the screen // should request to continue the flow without any server selection needed. @@ -106,9 +106,9 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { try await deferred.fulfill() XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.prompt, .consent) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.loginHint, nil) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.prompt, .consent) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.loginHint, nil) XCTAssertEqual(authenticationService.homeserver.value.loginMode, .oidc(supportsCreatePrompt: false)) } @@ -117,7 +117,7 @@ class AuthenticationStartScreenViewModelTests: XCTestCase { setAllowedAccountProviders(["company.com"]) setupViewModel(supportsOIDC: false) XCTAssertEqual(authenticationService.homeserver.value.loginMode, .unknown) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When tapping the login button the authentication service should be used and the screen // should request to continue the flow without any server selection needed. diff --git a/UnitTests/Sources/ServerConfirmationScreenViewModelTests.swift b/UnitTests/Sources/ServerConfirmationScreenViewModelTests.swift index 621ab402c..bdf9ce636 100644 --- a/UnitTests/Sources/ServerConfirmationScreenViewModelTests.swift +++ b/UnitTests/Sources/ServerConfirmationScreenViewModelTests.swift @@ -38,7 +38,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .unknown) XCTAssertEqual(context.viewState.mode, .confirmation(service.homeserver.value.address)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 0) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithOIDC } @@ -47,8 +47,8 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then a call to configure service should be made. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.prompt, .consent) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.prompt, .consent) XCTAssertEqual(service.homeserver.value.loginMode, .oidc(supportsCreatePrompt: true)) } @@ -62,7 +62,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .oidc(supportsCreatePrompt: true)) XCTAssertEqual(context.viewState.mode, .confirmation(service.homeserver.value.address)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithOIDC } @@ -71,8 +71,8 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then the configured homeserver should be used and no additional client should be built. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.prompt, .consent) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.prompt, .consent) } func testConfirmRegisterWithoutConfiguration() async throws { @@ -81,7 +81,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .unknown) XCTAssertEqual(context.viewState.mode, .confirmation(service.homeserver.value.address)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 0) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithOIDC } @@ -90,7 +90,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then a call to configure service should be made. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) // The create prompt is broken: https://github.com/element-hq/matrix-authentication-service/issues/3429 // XCTAssertEqual(client.urlForOidcOidcConfigurationPromptReceivedArguments?.prompt, .create) XCTAssertEqual(service.homeserver.value.loginMode, .oidc(supportsCreatePrompt: true)) @@ -106,7 +106,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .oidc(supportsCreatePrompt: true)) XCTAssertEqual(context.viewState.mode, .confirmation(service.homeserver.value.address)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithOIDC } @@ -117,7 +117,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) // The create prompt is broken: https://github.com/element-hq/matrix-authentication-service/issues/3429 // XCTAssertEqual(client.urlForOidcOidcConfigurationPromptReceivedArguments?.prompt, .create) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) } func testConfirmPasswordLoginWithoutConfiguration() async throws { @@ -126,7 +126,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .unknown) XCTAssertEqual(context.viewState.mode, .confirmation(service.homeserver.value.address)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 0) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithPassword } @@ -135,7 +135,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then a call to configure service should be made, but not for the OIDC URL. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) XCTAssertEqual(service.homeserver.value.loginMode, .password) } @@ -149,7 +149,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .password) XCTAssertEqual(context.viewState.mode, .confirmation(service.homeserver.value.address)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithPassword } @@ -158,7 +158,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then the configured homeserver should be used and no additional client should be built, nor a call to get the OIDC URL. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) } func testRegistrationNotSupportedAlert() async throws { @@ -204,7 +204,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .unknown) XCTAssertEqual(context.viewState.mode, .picker(appSettings.accountProviders)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 0) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithOIDC } @@ -213,8 +213,8 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then a call to configure service should be made. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.prompt, .consent) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.prompt, .consent) XCTAssertEqual(service.homeserver.value.loginMode, .oidc(supportsCreatePrompt: true)) } @@ -228,7 +228,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .oidc(supportsCreatePrompt: true)) XCTAssertEqual(context.viewState.mode, .picker(appSettings.accountProviders)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithOIDC } @@ -237,8 +237,8 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then the configured homeserver should be used and no additional client should be built. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintReceivedArguments?.prompt, .consent) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 1) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdReceivedArguments?.prompt, .consent) } func testPickerForPasswordLoginWithoutConfiguration() async throws { @@ -247,7 +247,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .unknown) XCTAssertEqual(context.viewState.mode, .picker(appSettings.accountProviders)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 0) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithPassword } @@ -256,7 +256,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then a call to configure service should be made, but not for the OIDC URL. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) XCTAssertEqual(service.homeserver.value.loginMode, .password) } @@ -270,7 +270,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { XCTAssertEqual(service.homeserver.value.loginMode, .password) XCTAssertEqual(context.viewState.mode, .picker(appSettings.accountProviders)) XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) // When continuing from the confirmation screen. let deferred = deferFulfillment(viewModel.actions) { $0.isContinueWithPassword } @@ -279,7 +279,7 @@ class ServerConfirmationScreenViewModelTests: XCTestCase { // Then the configured homeserver should be used and no additional client should be built, nor a call to get the OIDC URL. XCTAssertEqual(clientBuilderFactory.makeBuilderSessionDirectoriesPassphraseClientSessionDelegateAppSettingsAppHooksCallsCount, 1) - XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintCallsCount, 0) + XCTAssertEqual(client.urlForOidcOidcConfigurationPromptLoginHintDeviceIdCallsCount, 0) } // MARK: - Helpers diff --git a/project.yml b/project.yml index c237f1b56..10f9445e0 100644 --- a/project.yml +++ b/project.yml @@ -65,7 +65,7 @@ packages: # Element/Matrix dependencies MatrixRustSDK: url: https://github.com/element-hq/matrix-rust-components-swift - exactVersion: 25.07.14-2 + exactVersion: 25.07.15 # path: ../matrix-rust-sdk Compound: url: https://github.com/element-hq/compound-ios