vector-im/element-x-ios/issues/31 - Implement simple SaS sesson verification
* vector-im/element-x-ios/issues/31 - Session verification unit and UI tests * Fix ImageAnonymizer tests when running on Apple Silicon * Rename SessionVerification to SessionVerificationScreen
This commit is contained in:
94
UnitTests/Sources/SessionVerificationStateMachineTests.swift
Normal file
94
UnitTests/Sources/SessionVerificationStateMachineTests.swift
Normal file
@@ -0,0 +1,94 @@
|
||||
//
|
||||
// SessionVerificationStateMachineTests.swift
|
||||
// UnitTests
|
||||
//
|
||||
// Created by Stefan Ceriu on 28/06/2022.
|
||||
// Copyright © 2022 Element. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
@testable import ElementX
|
||||
|
||||
@MainActor
|
||||
class SessionVerificationStateMachineTests: XCTestCase {
|
||||
private var stateMachine: SessionVerificationStateMachine!
|
||||
|
||||
@MainActor
|
||||
override func setUpWithError() throws {
|
||||
stateMachine = SessionVerificationStateMachine()
|
||||
}
|
||||
|
||||
func testAcceptChallenge() {
|
||||
XCTAssertEqual(stateMachine.state, .initial)
|
||||
|
||||
stateMachine.processEvent(.requestVerification)
|
||||
XCTAssertEqual(stateMachine.state, .requestingVerification)
|
||||
|
||||
stateMachine.processEvent(.didReceiveChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
stateMachine.processEvent(.acceptChallenge)
|
||||
XCTAssertEqual(stateMachine.state, .acceptingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
stateMachine.processEvent(.didAcceptChallenge)
|
||||
XCTAssertEqual(stateMachine.state, .verified)
|
||||
}
|
||||
|
||||
func testDeclineChallenge() {
|
||||
XCTAssertEqual(stateMachine.state, .initial)
|
||||
|
||||
stateMachine.processEvent(.requestVerification)
|
||||
XCTAssertEqual(stateMachine.state, .requestingVerification)
|
||||
|
||||
stateMachine.processEvent(.didReceiveChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
stateMachine.processEvent(.declineChallenge)
|
||||
XCTAssertEqual(stateMachine.state, .decliningChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
stateMachine.processEvent(.didCancel)
|
||||
XCTAssertEqual(stateMachine.state, .cancelled)
|
||||
|
||||
stateMachine.processEvent(.restart)
|
||||
XCTAssertEqual(stateMachine.state, .initial)
|
||||
}
|
||||
|
||||
func testCancellation() {
|
||||
XCTAssertEqual(stateMachine.state, .initial)
|
||||
|
||||
stateMachine.processEvent(.requestVerification)
|
||||
XCTAssertEqual(stateMachine.state, .requestingVerification)
|
||||
|
||||
stateMachine.processEvent(.cancel)
|
||||
XCTAssertEqual(stateMachine.state, .cancelling)
|
||||
|
||||
stateMachine.processEvent(.didCancel)
|
||||
XCTAssertEqual(stateMachine.state, .cancelled)
|
||||
|
||||
// This duplication is intentional
|
||||
stateMachine.processEvent(.didCancel)
|
||||
XCTAssertEqual(stateMachine.state, .cancelled)
|
||||
|
||||
stateMachine.processEvent(.restart)
|
||||
XCTAssertEqual(stateMachine.state, .initial)
|
||||
|
||||
stateMachine.processEvent(.requestVerification)
|
||||
XCTAssertEqual(stateMachine.state, .requestingVerification)
|
||||
|
||||
stateMachine.processEvent(.didReceiveChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
|
||||
|
||||
stateMachine.processEvent(.cancel)
|
||||
XCTAssertEqual(stateMachine.state, .cancelling)
|
||||
|
||||
stateMachine.processEvent(.didCancel)
|
||||
XCTAssertEqual(stateMachine.state, .cancelled)
|
||||
|
||||
stateMachine.processEvent(.restart)
|
||||
XCTAssertEqual(stateMachine.state, .initial)
|
||||
|
||||
stateMachine.processEvent(.restart)
|
||||
XCTAssertEqual(stateMachine.state, .initial)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user