* Expose logout method from SDK

* Use logout from SDK, refactor logging out states

* Add some strings

* Introduce `initialDisplayName` on `UIDevice`

* Implement soft logout screen

* Add `softLogout` test screen identifier

* Add new fields into the client proxy and implement new delegate methods

* Add new fields into the user session and observe new client callbacks

* Implement updated login method

* Add remote logout state and event into the state machine

* Implement refreshing restore token on `UserSessionStore`

* Update app coordinator with new states and display soft logout screen when appropriate

* Add reference screenshots for soft logout screen

* Disable auto requesting photos access on screenshot detection

* Make initial device name optional, generate project file

* Add changelog

* Use logout from SDK, refactor logging out states

* Implement soft logout screen

* Implement updated login method

* Make initial device name optional, generate project file

* Fix renamed event

* Fix logout race

* Remove redundant strings

* Reuse existing strings

* Confirm clear all data

* Expose logout method from SDK

* Use logout from SDK, refactor logging out states

* Add some strings

* Introduce `initialDisplayName` on `UIDevice`

* Implement soft logout screen

* Add `softLogout` test screen identifier

* Add new fields into the client proxy and implement new delegate methods

* Add new fields into the user session and observe new client callbacks

* Implement updated login method

* Add remote logout state and event into the state machine

* Implement refreshing restore token on `UserSessionStore`

* Update app coordinator with new states and display soft logout screen when appropriate

* Add reference screenshots for soft logout screen

* Disable auto requesting photos access on screenshot detection

* Make initial device name optional, generate project file

* Add changelog

* Use logout from SDK, refactor logging out states

* Implement soft logout screen

* Implement updated login method

* Make initial device name optional, generate project file

* Fix renamed event

* Fix logout race

* Remove redundant strings

* Reuse existing strings

* Confirm clear all data

* Comment out new apis for now

* Make the PR compile
This commit is contained in:
ismailgulek
2022-09-15 12:41:37 +03:00
committed by GitHub
parent 8967891e65
commit bf3c7e900f
37 changed files with 1237 additions and 63 deletions
+57
View File
@@ -0,0 +1,57 @@
//
// Copyright 2022 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 ElementX
import XCTest
@MainActor
class SoftLogoutUITests: XCTestCase {
var app: XCUIApplication!
@MainActor
override func setUp() async throws {
app = nil
}
func testInitialState() {
app = Application.launch()
app.goToScreenWithIdentifier(.softLogout)
XCTAssertTrue(app.staticTexts["titleLabel"].exists, "The title should be shown.")
XCTAssertTrue(app.staticTexts["messageLabel1"].exists, "The message 1 should be shown.")
XCTAssertTrue(app.staticTexts["clearDataTitleLabel"].exists, "The clear data title should be shown.")
XCTAssertTrue(app.staticTexts["clearDataMessageLabel"].exists, "The clear data message should be shown.")
let passwordTextField = app.secureTextFields["passwordTextField"]
XCTAssertTrue(passwordTextField.exists, "The password text field should be shown.")
XCTAssertTrue(passwordTextField.label.isEmpty, "The password text field text should be empty before text is input.")
XCTAssertEqual(passwordTextField.placeholderValue, ElementL10n.loginSignupPasswordHint, "The password text field should be showing the placeholder before text is input.")
let nextButton = app.buttons["nextButton"]
XCTAssertTrue(nextButton.exists, "The next button should be shown.")
XCTAssertFalse(nextButton.isEnabled, "The next button should be disabled before text is input.")
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 clearDataButton = app.buttons["clearDataButton"]
XCTAssertTrue(clearDataButton.exists, "The clear data button should be shown.")
XCTAssertTrue(clearDataButton.isEnabled, "The clear data button should be enabled.")
app.assertScreenshot(.softLogout)
}
}
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:251a91df282cc57f5014657fd72babd14dfd6b052943d33651d2ec2bffd363f6
size 125943
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6f3f78efc97f56080f8c10e411104ae24ead1872316be3bf88cd4d5cecdd6e9c
size 162578
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bb7fa08f6d0bef9fd94ea9b40b39724ffbdf27b0ffb0e84eabe8fe00903e2d3f
size 125863
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d4c99d6c7f66150e73b8d12381c2161f8bc681b2488cbb042b26623805994738
size 162369
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ca80888ec562d5f0dc82133ba690e4b8a4dd9f546013662b43b301ed8168ab03
size 127108
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d76e249f29ab646ac6d911aea1277495b0670e7dffd8e0271170fa60fe08ab0a
size 163890