mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-11 13:59:13 +00:00

* 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
95 lines
3.5 KiB
Swift
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)
|
|
}
|
|
}
|