Add support for initiating and responding to user verification requests (#3759)

This commit is contained in:
Stefan Ceriu
2025-02-10 20:07:11 +02:00
committed by GitHub
parent 22d0fae423
commit 8680d8437b
94 changed files with 528 additions and 208 deletions
@@ -14105,17 +14105,17 @@ class SessionVerificationControllerProxyMock: SessionVerificationControllerProxy
return acceptVerificationRequestReturnValue
}
}
//MARK: - requestVerification
//MARK: - requestDeviceVerification
var requestVerificationUnderlyingCallsCount = 0
var requestVerificationCallsCount: Int {
var requestDeviceVerificationUnderlyingCallsCount = 0
var requestDeviceVerificationCallsCount: Int {
get {
if Thread.isMainThread {
return requestVerificationUnderlyingCallsCount
return requestDeviceVerificationUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = requestVerificationUnderlyingCallsCount
returnValue = requestDeviceVerificationUnderlyingCallsCount
}
return returnValue!
@@ -14123,27 +14123,27 @@ class SessionVerificationControllerProxyMock: SessionVerificationControllerProxy
}
set {
if Thread.isMainThread {
requestVerificationUnderlyingCallsCount = newValue
requestDeviceVerificationUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
requestVerificationUnderlyingCallsCount = newValue
requestDeviceVerificationUnderlyingCallsCount = newValue
}
}
}
}
var requestVerificationCalled: Bool {
return requestVerificationCallsCount > 0
var requestDeviceVerificationCalled: Bool {
return requestDeviceVerificationCallsCount > 0
}
var requestVerificationUnderlyingReturnValue: Result<Void, SessionVerificationControllerProxyError>!
var requestVerificationReturnValue: Result<Void, SessionVerificationControllerProxyError>! {
var requestDeviceVerificationUnderlyingReturnValue: Result<Void, SessionVerificationControllerProxyError>!
var requestDeviceVerificationReturnValue: Result<Void, SessionVerificationControllerProxyError>! {
get {
if Thread.isMainThread {
return requestVerificationUnderlyingReturnValue
return requestDeviceVerificationUnderlyingReturnValue
} else {
var returnValue: Result<Void, SessionVerificationControllerProxyError>? = nil
DispatchQueue.main.sync {
returnValue = requestVerificationUnderlyingReturnValue
returnValue = requestDeviceVerificationUnderlyingReturnValue
}
return returnValue!
@@ -14151,22 +14151,92 @@ class SessionVerificationControllerProxyMock: SessionVerificationControllerProxy
}
set {
if Thread.isMainThread {
requestVerificationUnderlyingReturnValue = newValue
requestDeviceVerificationUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
requestVerificationUnderlyingReturnValue = newValue
requestDeviceVerificationUnderlyingReturnValue = newValue
}
}
}
}
var requestVerificationClosure: (() async -> Result<Void, SessionVerificationControllerProxyError>)?
var requestDeviceVerificationClosure: (() async -> Result<Void, SessionVerificationControllerProxyError>)?
func requestVerification() async -> Result<Void, SessionVerificationControllerProxyError> {
requestVerificationCallsCount += 1
if let requestVerificationClosure = requestVerificationClosure {
return await requestVerificationClosure()
func requestDeviceVerification() async -> Result<Void, SessionVerificationControllerProxyError> {
requestDeviceVerificationCallsCount += 1
if let requestDeviceVerificationClosure = requestDeviceVerificationClosure {
return await requestDeviceVerificationClosure()
} else {
return requestVerificationReturnValue
return requestDeviceVerificationReturnValue
}
}
//MARK: - requestUserVerification
var requestUserVerificationUnderlyingCallsCount = 0
var requestUserVerificationCallsCount: Int {
get {
if Thread.isMainThread {
return requestUserVerificationUnderlyingCallsCount
} else {
var returnValue: Int? = nil
DispatchQueue.main.sync {
returnValue = requestUserVerificationUnderlyingCallsCount
}
return returnValue!
}
}
set {
if Thread.isMainThread {
requestUserVerificationUnderlyingCallsCount = newValue
} else {
DispatchQueue.main.sync {
requestUserVerificationUnderlyingCallsCount = newValue
}
}
}
}
var requestUserVerificationCalled: Bool {
return requestUserVerificationCallsCount > 0
}
var requestUserVerificationReceivedUserID: String?
var requestUserVerificationReceivedInvocations: [String] = []
var requestUserVerificationUnderlyingReturnValue: Result<Void, SessionVerificationControllerProxyError>!
var requestUserVerificationReturnValue: Result<Void, SessionVerificationControllerProxyError>! {
get {
if Thread.isMainThread {
return requestUserVerificationUnderlyingReturnValue
} else {
var returnValue: Result<Void, SessionVerificationControllerProxyError>? = nil
DispatchQueue.main.sync {
returnValue = requestUserVerificationUnderlyingReturnValue
}
return returnValue!
}
}
set {
if Thread.isMainThread {
requestUserVerificationUnderlyingReturnValue = newValue
} else {
DispatchQueue.main.sync {
requestUserVerificationUnderlyingReturnValue = newValue
}
}
}
}
var requestUserVerificationClosure: ((String) async -> Result<Void, SessionVerificationControllerProxyError>)?
func requestUserVerification(_ userID: String) async -> Result<Void, SessionVerificationControllerProxyError> {
requestUserVerificationCallsCount += 1
requestUserVerificationReceivedUserID = userID
DispatchQueue.main.async {
self.requestUserVerificationReceivedInvocations.append(userID)
}
if let requestUserVerificationClosure = requestUserVerificationClosure {
return await requestUserVerificationClosure(userID)
} else {
return requestUserVerificationReturnValue
}
}
//MARK: - startSasVerification
@@ -24,7 +24,7 @@ extension SessionVerificationControllerProxyMock {
mock.acknowledgeVerificationRequestDetailsReturnValue = .success(())
mock.requestVerificationClosure = { [unowned mock] in
mock.requestDeviceVerificationClosure = { [unowned mock] in
Task.detached {
try await Task.sleep(for: requestDelay)
mock.actions.send(.acceptedVerificationRequest)