Add support for account deactivation when not using OIDC. (#3295)

This commit is contained in:
Doug
2024-09-17 20:08:35 +01:00
committed by GitHub
parent 8660a22b3e
commit 5625e78fc9
41 changed files with 822 additions and 35 deletions
@@ -47,6 +47,7 @@ extension ClientProxyMock {
isOnlyDeviceLeftReturnValue = .success(false)
accountURLActionReturnValue = "https://matrix.org/account"
canDeactivateAccount = false
directRoomForUserIDReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
createDirectRoomWithExpectedRoomNameReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
createRoomNameTopicIsRoomPrivateUserIDsAvatarURLReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
@@ -1947,6 +1947,11 @@ class ClientProxyMock: ClientProxyProtocol {
}
var underlyingAvailableSlidingSyncVersions: [SlidingSyncVersion]!
var availableSlidingSyncVersionsClosure: (() async -> [SlidingSyncVersion])?
var canDeactivateAccount: Bool {
get { return underlyingCanDeactivateAccount }
set(value) { underlyingCanDeactivateAccount = value }
}
var underlyingCanDeactivateAccount: Bool!
var userIDServerName: String?
var userDisplayNamePublisher: CurrentValuePublisher<String?, Never> {
get { return underlyingUserDisplayNamePublisher }
@@ -3209,6 +3214,76 @@ class ClientProxyMock: ClientProxyProtocol {
return sessionVerificationControllerProxyReturnValue
}
}
//MARK: - deactivateAccount
var deactivateAccountPasswordEraseDataUnderlyingCallsCount = 0
var deactivateAccountPasswordEraseDataCallsCount: Int {
get {
if Thread.isMainThread {
return deactivateAccountPasswordEraseDataUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = deactivateAccountPasswordEraseDataUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
deactivateAccountPasswordEraseDataUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
deactivateAccountPasswordEraseDataUnderlyingCallsCount = newValue
}
}
}
}
var deactivateAccountPasswordEraseDataCalled: Bool {
return deactivateAccountPasswordEraseDataCallsCount > 0
}
var deactivateAccountPasswordEraseDataReceivedArguments: (password: String?, eraseData: Bool)?
var deactivateAccountPasswordEraseDataReceivedInvocations: [(password: String?, eraseData: Bool)] = []
var deactivateAccountPasswordEraseDataUnderlyingReturnValue: Result<Void, ClientProxyError>!
var deactivateAccountPasswordEraseDataReturnValue: Result<Void, ClientProxyError>! {
get {
if Thread.isMainThread {
return deactivateAccountPasswordEraseDataUnderlyingReturnValue
} else {
var returnValue: Result<Void, ClientProxyError>? = nil
DispatchQueue.main.sync {
returnValue = deactivateAccountPasswordEraseDataUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
deactivateAccountPasswordEraseDataUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
deactivateAccountPasswordEraseDataUnderlyingReturnValue = newValue
}
}
}
}
var deactivateAccountPasswordEraseDataClosure: ((String?, Bool) async -> Result<Void, ClientProxyError>)?
func deactivateAccount(password: String?, eraseData: Bool) async -> Result<Void, ClientProxyError> {
deactivateAccountPasswordEraseDataCallsCount += 1
deactivateAccountPasswordEraseDataReceivedArguments = (password: password, eraseData: eraseData)
DispatchQueue.main.async {
self.deactivateAccountPasswordEraseDataReceivedInvocations.append((password: password, eraseData: eraseData))
}
if let deactivateAccountPasswordEraseDataClosure = deactivateAccountPasswordEraseDataClosure {
return await deactivateAccountPasswordEraseDataClosure(password, eraseData)
} else {
return deactivateAccountPasswordEraseDataReturnValue
}
}
//MARK: - logout
var logoutUnderlyingCallsCount = 0
@@ -485,6 +485,71 @@ open class ClientSDKMock: MatrixRustSDK.Client {
}
}
//MARK: - canDeactivateAccount
var canDeactivateAccountUnderlyingCallsCount = 0
open var canDeactivateAccountCallsCount: Int {
get {
if Thread.isMainThread {
return canDeactivateAccountUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = canDeactivateAccountUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
canDeactivateAccountUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
canDeactivateAccountUnderlyingCallsCount = newValue
}
}
}
}
open var canDeactivateAccountCalled: Bool {
return canDeactivateAccountCallsCount > 0
}
var canDeactivateAccountUnderlyingReturnValue: Bool!
open var canDeactivateAccountReturnValue: Bool! {
get {
if Thread.isMainThread {
return canDeactivateAccountUnderlyingReturnValue
} else {
var returnValue: Bool? = nil
DispatchQueue.main.sync {
returnValue = canDeactivateAccountUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
canDeactivateAccountUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
canDeactivateAccountUnderlyingReturnValue = newValue
}
}
}
}
open var canDeactivateAccountClosure: (() -> Bool)?
open override func canDeactivateAccount() -> Bool {
canDeactivateAccountCallsCount += 1
if let canDeactivateAccountClosure = canDeactivateAccountClosure {
return canDeactivateAccountClosure()
} else {
return canDeactivateAccountReturnValue
}
}
//MARK: - createRoom
open var createRoomRequestThrowableError: Error?
@@ -560,6 +625,52 @@ open class ClientSDKMock: MatrixRustSDK.Client {
}
}
//MARK: - deactivateAccount
open var deactivateAccountAuthDataEraseDataThrowableError: Error?
var deactivateAccountAuthDataEraseDataUnderlyingCallsCount = 0
open var deactivateAccountAuthDataEraseDataCallsCount: Int {
get {
if Thread.isMainThread {
return deactivateAccountAuthDataEraseDataUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = deactivateAccountAuthDataEraseDataUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
deactivateAccountAuthDataEraseDataUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
deactivateAccountAuthDataEraseDataUnderlyingCallsCount = newValue
}
}
}
}
open var deactivateAccountAuthDataEraseDataCalled: Bool {
return deactivateAccountAuthDataEraseDataCallsCount > 0
}
open var deactivateAccountAuthDataEraseDataReceivedArguments: (authData: AuthData?, eraseData: Bool)?
open var deactivateAccountAuthDataEraseDataReceivedInvocations: [(authData: AuthData?, eraseData: Bool)] = []
open var deactivateAccountAuthDataEraseDataClosure: ((AuthData?, Bool) async throws -> Void)?
open override func deactivateAccount(authData: AuthData?, eraseData: Bool) async throws {
if let error = deactivateAccountAuthDataEraseDataThrowableError {
throw error
}
deactivateAccountAuthDataEraseDataCallsCount += 1
deactivateAccountAuthDataEraseDataReceivedArguments = (authData: authData, eraseData: eraseData)
DispatchQueue.main.async {
self.deactivateAccountAuthDataEraseDataReceivedInvocations.append((authData: authData, eraseData: eraseData))
}
try await deactivateAccountAuthDataEraseDataClosure?(authData, eraseData)
}
//MARK: - deletePusher
open var deletePusherIdentifiersThrowableError: Error?