2022-06-07 16:22:24 +00:00
|
|
|
//
|
|
|
|
// Copyright 2021 New Vector Ltd
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the License at
|
|
|
|
//
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
//
|
|
|
|
|
|
|
|
import XCTest
|
|
|
|
import RiotSwiftUI
|
|
|
|
|
|
|
|
class AuthenticationSoftLogoutUITests: MockScreenTest {
|
|
|
|
|
|
|
|
override class var screenType: MockScreenState.Type {
|
|
|
|
return MockAuthenticationSoftLogoutScreenState.self
|
|
|
|
}
|
|
|
|
|
|
|
|
override class func createTest() -> MockScreenTest {
|
|
|
|
return AuthenticationSoftLogoutUITests(selector: #selector(verifyAuthenticationSoftLogoutScreen))
|
|
|
|
}
|
|
|
|
|
|
|
|
func verifyAuthenticationSoftLogoutScreen() throws {
|
|
|
|
guard let screenState = screenState as? MockAuthenticationSoftLogoutScreenState else { fatalError("no screen") }
|
|
|
|
switch screenState {
|
|
|
|
case .emptyPassword:
|
|
|
|
verifyEmptyPassword()
|
2022-06-08 13:00:25 +00:00
|
|
|
case .enteredPassword:
|
|
|
|
verifyEnteredPassword()
|
|
|
|
case .ssoOnly:
|
|
|
|
verifySSOOnly()
|
|
|
|
case .noSSO:
|
|
|
|
verifyNoSSO()
|
|
|
|
case .fallback:
|
|
|
|
verifyFallback()
|
2022-06-08 14:39:51 +00:00
|
|
|
case .noKeyBackup:
|
|
|
|
verifyNoKeyBackup()
|
2022-06-07 16:22:24 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func verifyEmptyPassword() {
|
|
|
|
XCTAssertTrue(app.staticTexts["titleLabel"].exists, "The title should be shown.")
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel1"].exists, "The message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel2"].exists, "The message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataTitleLabel"].exists, "The clear data title should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage1Label"].exists, "The clear data message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage2Label"].exists, "The clear data message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["orLabel"].exists, "The or label for SSO should be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
|
|
|
let passwordTextField = app.secureTextFields["passwordTextField"]
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertTrue(passwordTextField.exists, "The password text field should be shown.")
|
|
|
|
XCTAssertEqual(passwordTextField.label, "Password", "The password text field should be showing the placeholder before text is input.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let loginButton = app.buttons["loginButton"]
|
|
|
|
XCTAssertTrue(loginButton.exists, "The login button should be shown.")
|
|
|
|
XCTAssertFalse(loginButton.isEnabled, "The login button should be disabled before text is input.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let forgotPasswordButton = app.buttons["forgotPasswordButton"]
|
|
|
|
XCTAssertTrue(forgotPasswordButton.exists, "The forgot password button should be shown.")
|
|
|
|
XCTAssertTrue(forgotPasswordButton.isEnabled, "The forgot password button should be enabled.")
|
|
|
|
|
|
|
|
let fallbackButton = app.buttons["fallbackButton"]
|
|
|
|
XCTAssertFalse(fallbackButton.exists, "The fallback button should not be shown.")
|
|
|
|
|
|
|
|
let clearDataButton = app.buttons["clearDataButton"]
|
|
|
|
XCTAssertTrue(clearDataButton.exists, "The clear data button should be shown.")
|
|
|
|
XCTAssertTrue(clearDataButton.isEnabled, "The clear data button should be enabled.")
|
|
|
|
|
|
|
|
let ssoButtons = app.buttons.matching(identifier: "ssoButton")
|
|
|
|
XCTAssertGreaterThan(ssoButtons.count, 0, "There should be at least 1 SSO button shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
}
|
2022-06-08 13:00:25 +00:00
|
|
|
|
|
|
|
func verifyEnteredPassword() {
|
2022-06-07 16:22:24 +00:00
|
|
|
XCTAssertTrue(app.staticTexts["titleLabel"].exists, "The title should be shown.")
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel1"].exists, "The message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel2"].exists, "The message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataTitleLabel"].exists, "The clear data title should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage1Label"].exists, "The clear data message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage2Label"].exists, "The clear data message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["orLabel"].exists, "The or label for SSO should be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
|
|
|
let passwordTextField = app.secureTextFields["passwordTextField"]
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertTrue(passwordTextField.exists, "The password text field should be shown.")
|
|
|
|
XCTAssertEqual(passwordTextField.value as? String, "••••••••", "The text field should be showing the placeholder before text is input.")
|
|
|
|
|
|
|
|
let loginButton = app.buttons["loginButton"]
|
|
|
|
XCTAssertTrue(loginButton.exists, "The login button should be shown.")
|
|
|
|
XCTAssertTrue(loginButton.isEnabled, "The login button should be enabled after text is input.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let forgotPasswordButton = app.buttons["forgotPasswordButton"]
|
|
|
|
XCTAssertTrue(forgotPasswordButton.exists, "The forgot password button should be shown.")
|
|
|
|
XCTAssertTrue(forgotPasswordButton.isEnabled, "The forgot password button should be enabled.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let fallbackButton = app.buttons["fallbackButton"]
|
|
|
|
XCTAssertFalse(fallbackButton.exists, "The fallback button should not be shown.")
|
|
|
|
|
|
|
|
let clearDataButton = app.buttons["clearDataButton"]
|
|
|
|
XCTAssertTrue(clearDataButton.exists, "The clear data button should be shown.")
|
|
|
|
XCTAssertTrue(clearDataButton.isEnabled, "The clear data button should be enabled.")
|
|
|
|
|
|
|
|
let ssoButtons = app.buttons.matching(identifier: "ssoButton")
|
|
|
|
XCTAssertGreaterThan(ssoButtons.count, 0, "There should be at least 1 SSO button shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
}
|
2022-06-08 13:00:25 +00:00
|
|
|
|
|
|
|
func verifySSOOnly() {
|
2022-06-07 16:22:24 +00:00
|
|
|
XCTAssertTrue(app.staticTexts["titleLabel"].exists, "The title should be shown.")
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel1"].exists, "The message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel2"].exists, "The message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataTitleLabel"].exists, "The clear data title should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage1Label"].exists, "The clear data message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage2Label"].exists, "The clear data message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["orLabel"].exists, "The or label for SSO should be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
|
|
|
let passwordTextField = app.secureTextFields["passwordTextField"]
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertFalse(passwordTextField.exists, "The password text field should not be shown.")
|
|
|
|
|
|
|
|
let loginButton = app.buttons["loginButton"]
|
|
|
|
XCTAssertFalse(loginButton.exists, "The login button should not be shown.")
|
|
|
|
|
|
|
|
let forgotPasswordButton = app.buttons["forgotPasswordButton"]
|
|
|
|
XCTAssertFalse(forgotPasswordButton.exists, "The forgot password button should not be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let fallbackButton = app.buttons["fallbackButton"]
|
|
|
|
XCTAssertFalse(fallbackButton.exists, "The fallback button should not be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let clearDataButton = app.buttons["clearDataButton"]
|
|
|
|
XCTAssertTrue(clearDataButton.exists, "The clear data button should be shown.")
|
|
|
|
XCTAssertTrue(clearDataButton.isEnabled, "The clear data button should be enabled.")
|
|
|
|
|
|
|
|
let ssoButtons = app.buttons.matching(identifier: "ssoButton")
|
|
|
|
XCTAssertGreaterThan(ssoButtons.count, 0, "There should be at least 1 SSO button shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
}
|
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
func verifyNoSSO() {
|
2022-06-07 16:22:24 +00:00
|
|
|
XCTAssertTrue(app.staticTexts["titleLabel"].exists, "The title should be shown.")
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel1"].exists, "The message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel2"].exists, "The message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataTitleLabel"].exists, "The clear data title should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage1Label"].exists, "The clear data message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage2Label"].exists, "The clear data message 2 should be shown.")
|
|
|
|
XCTAssertFalse(app.staticTexts["orLabel"].exists, "The or label for SSO should not be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
|
|
|
let passwordTextField = app.secureTextFields["passwordTextField"]
|
2022-06-08 13:00:25 +00:00
|
|
|
XCTAssertTrue(passwordTextField.exists, "The password text field should be shown.")
|
|
|
|
|
|
|
|
let loginButton = app.buttons["loginButton"]
|
|
|
|
XCTAssertTrue(loginButton.exists, "The login button should be shown.")
|
|
|
|
|
|
|
|
let forgotPasswordButton = app.buttons["forgotPasswordButton"]
|
|
|
|
XCTAssertTrue(forgotPasswordButton.exists, "The forgot password button should be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let fallbackButton = app.buttons["fallbackButton"]
|
|
|
|
XCTAssertFalse(fallbackButton.exists, "The fallback button should not be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let clearDataButton = app.buttons["clearDataButton"]
|
|
|
|
XCTAssertTrue(clearDataButton.exists, "The clear data button should be shown.")
|
|
|
|
XCTAssertTrue(clearDataButton.isEnabled, "The clear data button should be enabled.")
|
|
|
|
|
|
|
|
let ssoButtons = app.buttons.matching(identifier: "ssoButton")
|
|
|
|
XCTAssertEqual(ssoButtons.count, 0, "There should be no SSO button shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
}
|
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
func verifyFallback() {
|
|
|
|
XCTAssertTrue(app.staticTexts["titleLabel"].exists, "The title should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel1"].exists, "The message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["messageLabel2"].exists, "The message 2 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataTitleLabel"].exists, "The clear data title should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage1Label"].exists, "The clear data message 1 should be shown.")
|
|
|
|
XCTAssertTrue(app.staticTexts["clearDataMessage2Label"].exists, "The clear data message 2 should be shown.")
|
|
|
|
XCTAssertFalse(app.staticTexts["orLabel"].exists, "The or label for SSO should not be shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
|
2022-06-08 13:00:25 +00:00
|
|
|
let passwordTextField = app.secureTextFields["passwordTextField"]
|
|
|
|
XCTAssertFalse(passwordTextField.exists, "The password text field should not be shown.")
|
|
|
|
|
|
|
|
let loginButton = app.buttons["loginButton"]
|
|
|
|
XCTAssertFalse(loginButton.exists, "The login button should not be shown.")
|
|
|
|
|
|
|
|
let forgotPasswordButton = app.buttons["forgotPasswordButton"]
|
|
|
|
XCTAssertFalse(forgotPasswordButton.exists, "The forgot password button should not be shown.")
|
|
|
|
|
|
|
|
let fallbackButton = app.buttons["fallbackButton"]
|
|
|
|
XCTAssertTrue(fallbackButton.exists, "The fallback button should be shown.")
|
|
|
|
XCTAssertTrue(fallbackButton.isEnabled, "The fallback button should be enabled.")
|
|
|
|
|
|
|
|
let clearDataButton = app.buttons["clearDataButton"]
|
|
|
|
XCTAssertTrue(clearDataButton.exists, "The clear data button should be shown.")
|
|
|
|
XCTAssertTrue(clearDataButton.isEnabled, "The clear data button should be enabled.")
|
|
|
|
|
|
|
|
let ssoButtons = app.buttons.matching(identifier: "ssoButton")
|
|
|
|
XCTAssertEqual(ssoButtons.count, 0, "There should be no SSO button shown.")
|
2022-06-07 16:22:24 +00:00
|
|
|
}
|
2022-06-08 13:00:25 +00:00
|
|
|
|
2022-06-08 14:39:51 +00:00
|
|
|
func verifyNoKeyBackup() {
|
|
|
|
XCTAssertFalse(app.staticTexts["messageLabel2"].exists, "The message 2 should not be shown.")
|
|
|
|
}
|
|
|
|
|
2022-06-07 16:22:24 +00:00
|
|
|
}
|