From e7d04c4861f6c878de5599f56d67eb6220e4bea3 Mon Sep 17 00:00:00 2001 From: Oliver Wiese <oliver.wiese@fu-berlin.de> Date: Sat, 21 Mar 2020 10:50:45 +0100 Subject: [PATCH] fix and add testcases --- enzevalos_iphoneTests/GeneratedMocks.swift | 4 +- .../MailServerConfigurationTest.swift | 3 - enzevalos_iphoneTests/private/accounts.json | 58 +++++++- enzevalos_iphoneUITests/OnboardingTest.swift | 10 +- .../SwiftUIOnboardingUITests.swift | 135 ++++++++++++++++-- 5 files changed, 183 insertions(+), 27 deletions(-) diff --git a/enzevalos_iphoneTests/GeneratedMocks.swift b/enzevalos_iphoneTests/GeneratedMocks.swift index 39ed835c..9617a966 100644 --- a/enzevalos_iphoneTests/GeneratedMocks.swift +++ b/enzevalos_iphoneTests/GeneratedMocks.swift @@ -1,4 +1,4 @@ -// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2020-03-20 18:02:50 +0000 +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationModel.swift at 2020-03-21 09:49:42 +0000 // // AuthenticationModel.swift @@ -654,7 +654,7 @@ import Foundation } -// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2020-03-20 18:02:50 +0000 +// MARK: - Mocks generated from file: enzevalos_iphone/AuthenticationViewModel.swift at 2020-03-21 09:49:42 +0000 // // AuthenticationViewModel.swift diff --git a/enzevalos_iphoneTests/MailServerConfigurationTest.swift b/enzevalos_iphoneTests/MailServerConfigurationTest.swift index c451d6bd..cf107d46 100644 --- a/enzevalos_iphoneTests/MailServerConfigurationTest.swift +++ b/enzevalos_iphoneTests/MailServerConfigurationTest.swift @@ -367,8 +367,6 @@ class MailServerConfigurationTest: XCTestCase, MailSessionListener{ // Test fetching mails! let mailHandler = AppDelegate.getAppDelegate().mailHandler let promise = expectation(description: "Call for mails!") - print(mailHandler.IMAPSession?.username) - print(mailHandler.IMAPSession?.password) mailHandler.loadMailsForInbox(completionCallback: {(error: MailServerConnectionError?) -> () in promise.fulfill() @@ -379,7 +377,6 @@ class MailServerConfigurationTest: XCTestCase, MailSessionListener{ } private func loadMailsCallback(error: MailServerConnectionError?) { - print(error) guard error == nil else { XCTFail("Error! \(String(describing: error)) for \(String(describing: userAdr))") return diff --git a/enzevalos_iphoneTests/private/accounts.json b/enzevalos_iphoneTests/private/accounts.json index 4ab21c4d..77c7470a 100644 --- a/enzevalos_iphoneTests/private/accounts.json +++ b/enzevalos_iphoneTests/private/accounts.json @@ -1,15 +1,59 @@ { - "accounts":[ - { - "id": "1", - "username": "FIX ME", - "password": "FIX ME", + "accounts":[ + { + "id": "1", + "username": "Ullimuelle@web.de", + "password": "dun3bate", "hostIMAP": "imap.web.de", "portIMAP": "993", "conTypeIMAP": "TLS/SSL", "hostSMTP": "smtp.web.de", "portSMTP": "587", "conTypeSMTP": "StartTLS" - } - ] + }, + { + "id": "2", + "username": "Oliver@urgs.org", + "password": "ckwgHry8h6ogrYMc2n", + "hostIMAP": "urgs.org", + "portIMAP": "993", + "conTypeIMAP": "TLS/SSL", + "hostSMTP": "urgs.org", + "portSMTP": "587", + "conTypeSMTP": "StartTLS" + }, + { + "id": "3", + "username": "klausDaimler123@yahoo.ca", + "password": "i8x2uxv4hg6pVkRMPCk2ehmUHiX6", + "hostIMAP": "imap.mail.yahoo.com", + "portIMAP": "993", + "conTypeIMAP": "TLS/SSL", + "hostSMTP": "smtp.mail.yahoo.com", + "portSMTP": "587", + "conTypeSMTP": "StartTLS" + }, + { + "id": "4", + "username": "konradzuse@zedat.fu-berlin.de", + "password": "riwtef-4fefti-ditkyG", + "hostIMAP": "mail.zedat.fu-berlin.de", + "portIMAP": "143", + "conTypeIMAP": "StartTLS", + "hostSMTP": "mail.zedat.fu-berlin.de", + "portSMTP": "587", + "conTypeSMTP": "StartTLS" + }, + { + "id": "5", + "username": "letterbox-test@secuso.org", + "password": "xookeed0Thoo5ahshohR", + "hostIMAP": "imap.strato.de", + "portIMAP": "993", + "conTypeIMAP": "TLS/SSL", + "hostSMTP": "smtp.strato.de", + "portSMTP": "465", + "conTypeSMTP": "TLS/SSL" + } + ] } diff --git a/enzevalos_iphoneUITests/OnboardingTest.swift b/enzevalos_iphoneUITests/OnboardingTest.swift index 28df79fa..3c5912ce 100644 --- a/enzevalos_iphoneUITests/OnboardingTest.swift +++ b/enzevalos_iphoneUITests/OnboardingTest.swift @@ -312,11 +312,13 @@ extension String { extension XCUIElement { func clear(){ guard let stringValue = self.value as? String else { - XCTFail("Tried to clear and enter text into a non string value") return } - self.tap() - let deleteString = String(repeating: XCUIKeyboardKey.delete.rawValue, count: stringValue.count) - self.typeText(deleteString) + var delString = String() + for _ in stringValue { + delString += XCUIKeyboardKey.delete.rawValue + delString += XCUIKeyboardKey.delete.rawValue + } + typeText(delString) } } diff --git a/enzevalos_iphoneUITests/SwiftUIOnboardingUITests.swift b/enzevalos_iphoneUITests/SwiftUIOnboardingUITests.swift index 926f3f67..2600b8b0 100644 --- a/enzevalos_iphoneUITests/SwiftUIOnboardingUITests.swift +++ b/enzevalos_iphoneUITests/SwiftUIOnboardingUITests.swift @@ -102,16 +102,22 @@ class SwiftUIOnboardingUITests: XCTestCase { func testTesds(){ - - let app = XCUIApplication() app.buttons["Login"].tap() - let elementsQuery = app.scrollViews.otherElements - elementsQuery.textFields["Mail address"].tap() - elementsQuery.secureTextFields["Password"].tap() - elementsQuery.buttons["Next"].tap() - elementsQuery.staticTexts["COULDN'T CONNECT TO SERVER. \n YOUR ACCOUNT NAME OR PASSWORD IS WRONG. PLEASE, CHECK THEM."].tap() - + let mailAddressTextField = app.scrollViews.otherElements.textFields["Mail address"] + mailAddressTextField.tap() + mailAddressTextField.tap() + mailAddressTextField.tap() + + let cutStaticText = app/*@START_MENU_TOKEN@*/.staticTexts["Cut"]/*[[".menus",".menuItems[\"Cut\"].staticTexts[\"Cut\"]",".staticTexts[\"Cut\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/ + cutStaticText.tap() + mailAddressTextField.tap() + + app/*@START_MENU_TOKEN@*/.menuItems["Paste"]/*[[".menus.menuItems[\"Paste\"]",".menuItems[\"Paste\"]"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/.tap() + mailAddressTextField.tap() + app/*@START_MENU_TOKEN@*/.staticTexts["Select All"]/*[[".menus",".menuItems[\"Select All\"].staticTexts[\"Select All\"]",".staticTexts[\"Select All\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/.tap() + cutStaticText.tap() + } @@ -135,10 +141,17 @@ class SwiftUIOnboardingUITests: XCTestCase { private func input(text: String, view: XCUIElement){ view.tap() app.typeText(text) + var i = 0 while text != view.value as! String { - view.tap() - view.clear() - app.typeText(text) + view.tap() + view.clear() + app.typeText(text) + i = i + 1 + if i > 100 { + XCTFail("Could not write: \(text) in \(view.description)") + return + } + } } @@ -336,6 +349,106 @@ class SwiftUIOnboardingUITests: XCTestCase { } } + func testWrongEncType1() { + guard let user = accounts["1"] else { + XCTFail("No account with id 1") + return + } + guard user.adr != "FIX ME" else { + XCTFail("Wrong account file loaded!") + return + } + + app.buttons["Login"].tap() + + let scrollViewsQuery = app.scrollViews + let elementsQuery = scrollViewsQuery.otherElements + + + elementsQuery.buttons["eye.slash"].tap() + let mailAddrField = elementsQuery.textFields["Mail address"] + let pwField = elementsQuery.textFields["Password"] + input(text: user.adr, view: mailAddrField) + input(text: user.pw, view: pwField) + + + elementsQuery.buttons["Advanced options"].tap() + let userField = scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").children(matching: .textField).matching(identifier: "Mail address").element(boundBy: 1) + input(text: user.adr, view: userField) + + let imapServerField = elementsQuery.textFields["e.g. imap.web.de"] + let imapPortField = elementsQuery.textFields["e.g. 883"] + let imapEncTypeField = scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").children(matching: .segmentedControl).element(boundBy: 0) + input(text: user.hostIMAP, view: imapServerField) + input(text: user.portIMAP, view: imapPortField) + imapEncTypeField.buttons[user.conTypeIMAP].tap() + + + let smtpServerField = elementsQuery.textFields["e.g. smtp.web.de"] + let smtpPortField = elementsQuery.textFields["e.g. 559"] + let smtpEncTypeField = scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").children(matching: .segmentedControl).element(boundBy: 1) + input(text: user.hostSMTP, view: smtpServerField) + input(text: user.portSMTP, view: smtpPortField) + smtpEncTypeField.buttons["Plaintext"].tap() + + scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").element.swipeUp() + elementsQuery.buttons["Next"].tap() + let exists = elementsQuery.staticTexts["Couldn't connect to server.\n Please check your IMAP server configuration."].waitForExistence(timeout: timeoutShort) + if exists { + XCTFail("No error but wrong port for user: \(user.adr)") + } + } + + func testWrongEncType2() { + guard let user = accounts["1"] else { + XCTFail("No account with id 1") + return + } + guard user.adr != "FIX ME" else { + XCTFail("Wrong account file loaded!") + return + } + + app.buttons["Login"].tap() + + let scrollViewsQuery = app.scrollViews + let elementsQuery = scrollViewsQuery.otherElements + + + elementsQuery.buttons["eye.slash"].tap() + let mailAddrField = elementsQuery.textFields["Mail address"] + let pwField = elementsQuery.textFields["Password"] + input(text: user.adr, view: mailAddrField) + input(text: user.pw, view: pwField) + + + elementsQuery.buttons["Advanced options"].tap() + let userField = scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").children(matching: .textField).matching(identifier: "Mail address").element(boundBy: 1) + input(text: user.adr, view: userField) + + let imapServerField = elementsQuery.textFields["e.g. imap.web.de"] + let imapPortField = elementsQuery.textFields["e.g. 883"] + let imapEncTypeField = scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").children(matching: .segmentedControl).element(boundBy: 0) + input(text: user.hostIMAP, view: imapServerField) + input(text: user.portIMAP, view: imapPortField) + imapEncTypeField.buttons[user.conTypeIMAP].tap() + + + let smtpServerField = elementsQuery.textFields["e.g. smtp.web.de"] + let smtpPortField = elementsQuery.textFields["e.g. 559"] + let smtpEncTypeField = scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").children(matching: .segmentedControl).element(boundBy: 1) + input(text: user.hostSMTP, view: smtpServerField) + input(text: user.portSMTP, view: smtpPortField) + smtpEncTypeField.buttons["StartTLS"].tap() + + scrollViewsQuery.otherElements.containing(.staticText, identifier:"Welcome").element.swipeUp() + elementsQuery.buttons["Next"].tap() + let exists = elementsQuery.staticTexts["Couldn't connect to server.\n Please check your IMAP server configuration."].waitForExistence(timeout: timeoutShort) + if exists { + XCTFail("No error but wrong port for user: \(user.adr)") + } + } + private static func loadAccounts() -> [String:(adr: String, pw: String, hostIMAP: String, portIMAP: String, conTypeIMAP: String, hostSMTP: String, portSMTP: String, conTypeSMTP: String)] { let bundle = Bundle(for: self) var newAccounts = [String:(adr: String, pw: String, hostIMAP: String, portIMAP: String, conTypeIMAP: String, hostSMTP: String, portSMTP: String, conTypeSMTP: String)]() -- GitLab