Beam/UnitTests/Sources/SessionVerificationStateMachineTests.swift
Stefan Ceriu a6f9d1ba89
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
2022-07-01 13:56:52 +03:00

95 lines
3.5 KiB
Swift

//
// 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)
}
}