mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 20:39:24 +00:00
Add support for manually starting SaS verification flows and accepting remotely started ones
This commit is contained in:
committed by
Stefan Ceriu
parent
7888736a4d
commit
956e92a9ac
@@ -33,6 +33,12 @@ class SessionVerificationStateMachineTests: XCTestCase {
|
||||
stateMachine.processEvent(.requestVerification)
|
||||
XCTAssertEqual(stateMachine.state, .requestingVerification)
|
||||
|
||||
stateMachine.processEvent(.didAcceptVerificationRequest)
|
||||
XCTAssertEqual(stateMachine.state, .verificationRequestAccepted)
|
||||
|
||||
stateMachine.processEvent(.didStartSasVerification)
|
||||
XCTAssertEqual(stateMachine.state, .sasVerificationStarted)
|
||||
|
||||
stateMachine.processEvent(.didReceiveChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
@@ -49,6 +55,12 @@ class SessionVerificationStateMachineTests: XCTestCase {
|
||||
stateMachine.processEvent(.requestVerification)
|
||||
XCTAssertEqual(stateMachine.state, .requestingVerification)
|
||||
|
||||
stateMachine.processEvent(.didAcceptVerificationRequest)
|
||||
XCTAssertEqual(stateMachine.state, .verificationRequestAccepted)
|
||||
|
||||
stateMachine.processEvent(.didStartSasVerification)
|
||||
XCTAssertEqual(stateMachine.state, .sasVerificationStarted)
|
||||
|
||||
stateMachine.processEvent(.didReceiveChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
@@ -84,6 +96,12 @@ class SessionVerificationStateMachineTests: XCTestCase {
|
||||
stateMachine.processEvent(.requestVerification)
|
||||
XCTAssertEqual(stateMachine.state, .requestingVerification)
|
||||
|
||||
stateMachine.processEvent(.didAcceptVerificationRequest)
|
||||
XCTAssertEqual(stateMachine.state, .verificationRequestAccepted)
|
||||
|
||||
stateMachine.processEvent(.didStartSasVerification)
|
||||
XCTAssertEqual(stateMachine.state, .sasVerificationStarted)
|
||||
|
||||
stateMachine.processEvent(.didReceiveChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class SessionVerificationViewModelTests: XCTestCase {
|
||||
func testRequestVerification() async {
|
||||
XCTAssertEqual(context.viewState.verificationState, .initial)
|
||||
|
||||
context.send(viewAction: .start)
|
||||
context.send(viewAction: .requestVerification)
|
||||
|
||||
await Task.yield()
|
||||
|
||||
@@ -45,7 +45,7 @@ class SessionVerificationViewModelTests: XCTestCase {
|
||||
func testVerificationCancellation() async throws {
|
||||
XCTAssertEqual(context.viewState.verificationState, .initial)
|
||||
|
||||
context.send(viewAction: .start)
|
||||
context.send(viewAction: .requestVerification)
|
||||
|
||||
context.send(viewAction: .close)
|
||||
|
||||
@@ -125,14 +125,20 @@ class SessionVerificationViewModelTests: XCTestCase {
|
||||
// MARK: - Private
|
||||
|
||||
private func setupChallengeReceived() {
|
||||
let expectation = XCTestExpectation(description: "Wait for challenge")
|
||||
let requestAcceptanceExpectation = XCTestExpectation(description: "Wait for request acceptance")
|
||||
let sasVerificationStartExpectation = XCTestExpectation(description: "Wait for SaS verification start")
|
||||
let verificationDataReceivalExpectation = XCTestExpectation(description: "Wait for Emoji data")
|
||||
|
||||
let cancellable = sessionVerificationController.callbacks
|
||||
.debounce(for: .seconds(2.0), scheduler: DispatchQueue.main)
|
||||
.sink { callback in
|
||||
switch callback {
|
||||
case .acceptedVerificationRequest:
|
||||
requestAcceptanceExpectation.fulfill()
|
||||
case .startedSasVerification:
|
||||
sasVerificationStartExpectation.fulfill()
|
||||
case .receivedVerificationData:
|
||||
expectation.fulfill()
|
||||
verificationDataReceivalExpectation.fulfill()
|
||||
default:
|
||||
break
|
||||
}
|
||||
@@ -142,10 +148,15 @@ class SessionVerificationViewModelTests: XCTestCase {
|
||||
cancellable.cancel()
|
||||
}
|
||||
|
||||
context.send(viewAction: .start)
|
||||
context.send(viewAction: .requestVerification)
|
||||
wait(for: [requestAcceptanceExpectation], timeout: 10.0)
|
||||
XCTAssertEqual(context.viewState.verificationState, .verificationRequestAccepted)
|
||||
|
||||
wait(for: [expectation], timeout: 10.0)
|
||||
context.send(viewAction: .startSasVerification)
|
||||
wait(for: [sasVerificationStartExpectation], timeout: 10.0)
|
||||
XCTAssertEqual(context.viewState.verificationState, .sasVerificationStarted)
|
||||
|
||||
wait(for: [verificationDataReceivalExpectation], timeout: 10.0)
|
||||
XCTAssertEqual(context.viewState.verificationState, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user