From 92fdf7ed423f08aec76d6f3c8d49607b720d66ba Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Thu, 20 Jan 2022 10:35:44 +0200 Subject: [PATCH 1/8] added new spec for "app updates older public keys to newer but not vice versa" --- .../apis/attester/attester-endpoints.ts | 29 +++ appium/package.json | 5 +- appium/tests/data/index.ts | 7 + appium/tests/helpers/DataHelper.ts | 5 + appium/tests/screenobjects/all-screens.ts | 4 +- .../contact-public-key.screen.ts | 22 +- .../public-key-details.screen.ts | 112 ++++++++++ .../SelectRecipientByName.spec.ts | 6 +- .../setup/UpdateOlderPubKeyToNewer.spec.ts | 209 ++++++++++++++++++ 9 files changed, 376 insertions(+), 23 deletions(-) create mode 100644 appium/tests/screenobjects/public-key-details.screen.ts create mode 100644 appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts diff --git a/appium/api-mocks/apis/attester/attester-endpoints.ts b/appium/api-mocks/apis/attester/attester-endpoints.ts index fd61b3f48..c0d5f1f55 100644 --- a/appium/api-mocks/apis/attester/attester-endpoints.ts +++ b/appium/api-mocks/apis/attester/attester-endpoints.ts @@ -210,5 +210,34 @@ T/X6OnVQdcOI7SvdQI74SxbaHnEeCLDEk7dOhWLJBLuZwK7M3cT6BX+V2v6Fm7SX0hSpDg1HK0KL qHJuDNEmMUvx3cMUd5HtsOFO9JapCp1iCVo2p49CIXA4NUrLETNM2ZddknhbFm8bsK48tTJEH6l4 Wq3aCVXYGg== =Ldag +-----END PGP PUBLIC KEY BLOCK-----`, + keyOlderVersion: `-----BEGIN PGP PUBLIC KEY BLOCK----- + +xjMEYd8pKhYJKwYBBAHaRw8BAQdAXQ9bBzlYPwy3mQD5MIQSkuOyEomESHHo +AAiUi0enB77NKFVwZGF0aW5nIGtleSA8dXBkYXRpbmcua2V5QGV4YW1wbGUu +dGVzdD7CeAQQFgoAIAUCYd8pKgYLCQcIAwIEFQgKAgQWAgEAAhkBAhsDAh4B +AAoJEMfJkMGi6njd9HUA/0ZdZaaOFy0hM+GpEnzK+A/G3bLe9Kulh4jT8+4j +JqcKAP0V+pga+B1v98aeF8cRlgQPEyWtYUqZLcDLBQ6r3BEfDM44BGHfKSoS +CisGAQQBl1UBBQEBB0BPkVSyVsZ+vsF4e4NbVsq/YNjqL0JQI+t6OHc5YxJS +SgMBCAfCYQQYFggACQUCYd8pKgIbDAAKCRDHyZDBoup43Y+gAQDSVD/EDqCE +dSL33ptMlhwRCKHGiKcVmKwucxYkk6apFQEA018565fZcvtb339L2s/IIxLs +4621FX8Sy6kpR7mAzQo= +=3UnZ +-----END PGP PUBLIC KEY BLOCK-----`, + keyNewerVersion: `-----BEGIN PGP PUBLIC KEY BLOCK----- + +xjMEYd8pKhYJKwYBBAHaRw8BAQdAXQ9bBzlYPwy3mQD5MIQSkuOyEomESHHo +AAiUi0enB77NKFVwZGF0aW5nIGtleSA8dXBkYXRpbmcua2V5QGV4YW1wbGUu +dGVzdD7CeAQQFgoAIAUCYd8pKgYLCQcIAwIEFQgKAgQWAgEAAhkBAhsDAh4B +AAoJEMfJkMGi6njd9HUA/0ZdZaaOFy0hM+GpEnzK+A/G3bLe9Kulh4jT8+4j +JqcKAP0V+pga+B1v98aeF8cRlgQPEyWtYUqZLcDLBQ6r3BEfDM44BGHfKSoS +CisGAQQBl1UBBQEBB0BPkVSyVsZ+vsF4e4NbVsq/YNjqL0JQI+t6OHc5YxJS +SgMBCAfCYQQYFggACQUCYd8pKgIbDAAKCRDHyZDBoup43Y+gAQDSVD/EDqCE +dSL33ptMlhwRCKHGiKcVmKwucxYkk6apFQEA018565fZcvtb339L2s/IIxLs +4621FX8Sy6kpR7mAzQrOOARh3yuYEgorBgEEAZdVAQUBAQdAglzBCJCRj29J +THYvVGaNESiiVKmyrTEnXonGUS58TwMDAQgHwmEEGBYIAAkFAmHfK5gCGwwA +CgkQx8mQwaLqeN3PWwD9ErvC+ufnX0O2AmZDz67QfFH6tA1t1/wUEHgzBXEe +gc8BAMaYm3AlSGbX1rJYgUtCWukkLuURdECIzerG2UuP87ID +=dQen -----END PGP PUBLIC KEY BLOCK-----`, }; diff --git a/appium/package.json b/appium/package.json index ee8dbe7fa..f6f6c8d30 100644 --- a/appium/package.json +++ b/appium/package.json @@ -47,6 +47,7 @@ "ts-node": "^10.4.0", "typescript": "^4.4.4", "wdio-video-reporter": "^3.1.3", - "webdriverio": "^7.16.10" + "webdriverio": "^7.16.10", + "moment": "^2.29.1" } -} \ No newline at end of file +} diff --git a/appium/tests/data/index.ts b/appium/tests/data/index.ts index 16fd4ad3a..e40932ec0 100644 --- a/appium/tests/data/index.ts +++ b/appium/tests/data/index.ts @@ -53,6 +53,13 @@ export const CommonData = { longEmail: { message: '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nText' }, + updateUser: { + email: 'updating.key@example.test', + oldSignatureDate: 'Jan 12, 2022 at 9:16:58 PM', + newSignatureDate: 'Jan 12, 2022 at 9:27:20 PM', + oldFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0', + newFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0, 40E4EE0325E38F717737889AC54F277266650211' + }, keyMismatchEmail: { subject: 'Encrypted message with key mismatch', message: 'Could not decrypt:', diff --git a/appium/tests/helpers/DataHelper.ts b/appium/tests/helpers/DataHelper.ts index c9cf34d7d..e046f78fd 100644 --- a/appium/tests/helpers/DataHelper.ts +++ b/appium/tests/helpers/DataHelper.ts @@ -1,7 +1,12 @@ +import moment from "moment"; + class DataHelper { static uniqueValue() { return Math.random().toString(36).substring(2); } + static convertDateToMSec = async (date: string ) => { + return await Date.parse(moment(date.replace('at', '')).toISOString()) + } } export default DataHelper; diff --git a/appium/tests/screenobjects/all-screens.ts b/appium/tests/screenobjects/all-screens.ts index 7ca7f303a..5bcc3846a 100644 --- a/appium/tests/screenobjects/all-screens.ts +++ b/appium/tests/screenobjects/all-screens.ts @@ -13,6 +13,7 @@ import MailFolderScreen from './mail-folder.screen'; import SearchScreen from './search.screen'; import OldVersionAppScreen from './old-version-app.screen'; import EmailProviderScreen from './email-provider.screen'; +import PublicKeyDetailsScreen from './public-key-details.screen'; export { SplashScreen, @@ -29,5 +30,6 @@ export { MailFolderScreen, SearchScreen, OldVersionAppScreen, - EmailProviderScreen + EmailProviderScreen, + PublicKeyDetailsScreen }; diff --git a/appium/tests/screenobjects/contact-public-key.screen.ts b/appium/tests/screenobjects/contact-public-key.screen.ts index ad05e1dee..de5e804dc 100644 --- a/appium/tests/screenobjects/contact-public-key.screen.ts +++ b/appium/tests/screenobjects/contact-public-key.screen.ts @@ -3,8 +3,6 @@ import ElementHelper from "../helpers/ElementHelper"; const SELECTORS = { BACK_BTN: '~aid-back-button', - KEY: '~Key', - PUBLIC_KEY: '-ios class chain:**/XCUIElementTypeOther/XCUIElementTypeStaticText[2]', FINGERPRINT_VALUE: '~fingerprintValue', CREATED_VALUE: '~createdAtValue', EXPIRES_VALUE: '~expiresValue', @@ -13,7 +11,7 @@ const SELECTORS = { EXPIRES_LABEL: '~Expires:', PGD_USER_ID_LABEL: '~User:', PGD_USER_ID_EMAIL: '~userEmail', - TRASH_BUTTON: '~trash' + TRASH_BUTTON: '~trash', }; class ContactPublicKeyScreen extends BaseScreen { @@ -29,14 +27,6 @@ class ContactPublicKeyScreen extends BaseScreen { return $(SELECTORS.BACK_BTN); } - get key() { - return $(SELECTORS.KEY); - } - - get publicKey() { - return $(SELECTORS.PUBLIC_KEY); - } - get fingerPrintLabel() { return $(SELECTORS.FINGERPRINT_LABEL); } @@ -69,13 +59,6 @@ class ContactPublicKeyScreen extends BaseScreen { return $(SELECTORS.PGD_USER_ID_EMAIL); } - checkPublicKeyNotEmpty = async () => { - await (await this.key).waitForDisplayed(); - const pubkeyEl = await this.publicKey; - await pubkeyEl.waitForExist(); - expect(await pubkeyEl.getAttribute('value')).toBeTruthy(); - } - checkPublicKeyDetailsNotEmpty = async () => { await (await this.fingerPrintLabel).waitForDisplayed(); expect(await (await this.fingerPrintValue).getAttribute('value')).toBeTruthy(); @@ -99,6 +82,9 @@ class ContactPublicKeyScreen extends BaseScreen { await ElementHelper.waitAndClick(await this.backButton); } + clickTrashButton = async () => { + await ElementHelper.waitAndClick(await this.trashButton); + } } export default new ContactPublicKeyScreen(); diff --git a/appium/tests/screenobjects/public-key-details.screen.ts b/appium/tests/screenobjects/public-key-details.screen.ts new file mode 100644 index 000000000..dde5fbb5d --- /dev/null +++ b/appium/tests/screenobjects/public-key-details.screen.ts @@ -0,0 +1,112 @@ +import BaseScreen from './base.screen'; +import ElementHelper from "../helpers/ElementHelper"; + +const SELECTORS = { + BACK_BTN: '~aid-back-button', + SHARE_BUTTON: '~share', + COPY_BUTTON: '~copy', + KEY_LABEL: '~Key', + PUBLIC_KEY_VALUE: '~aid-signature-key', + TRASH_BUTTON: '~trash', + SIGNATURE_LABEL: '~Signature', + SIGNATURE_VALUE: '~aid-signature-date', + LAST_FETCHED_DATE_LABEL: '~Last fetched', + LAST_FETCHED_DATE_VALUE: '~aid-signature-fetched-date', + FINGERPRINTS_VALUE: '~aid-signature-fingerprints', + FINGERPRINTS_LABEL: '~Fingerprints' +}; + +class PublicKeyDetailsScreen extends BaseScreen { + constructor() { + super(SELECTORS.BACK_BTN); + } + + get trashButton() { + return $(SELECTORS.TRASH_BUTTON); + } + + get copyButton() { + return $(SELECTORS.COPY_BUTTON); + } + + get shareButton() { + return $(SELECTORS.SHARE_BUTTON) + } + + get backButton() { + return $(SELECTORS.BACK_BTN); + } + + get keyLabel() { + return $(SELECTORS.KEY_LABEL); + } + + get signatureLabel() { + return $(SELECTORS.SIGNATURE_LABEL) + } + + get signatureValue() { + return $(SELECTORS.SIGNATURE_VALUE); + } + + get publicKeyValue() { + return $(SELECTORS.PUBLIC_KEY_VALUE); + } + + get lastFetchedDateLabel() { + return $(SELECTORS.LAST_FETCHED_DATE_LABEL) + } + + get lastFetchedDateValue() { + return $(SELECTORS.LAST_FETCHED_DATE_VALUE) + } + + get fingerprintsLabel() { + return $(SELECTORS.FINGERPRINTS_LABEL); + } + + get fingerprintsValue() { + return $(SELECTORS.FINGERPRINTS_VALUE) + } + + checkPublicKeyDetailsScreen = async () => { + await (await this.trashButton).waitForDisplayed(); + await (await this.copyButton).waitForDisplayed(); + await (await this.shareButton).waitForDisplayed(); + await expect(await this.keyLabel).toBePresent(); + await expect(await this.signatureLabel).toBePresent(); + await expect(await this.lastFetchedDateLabel).toBePresent(); + await expect(await this.fingerprintsLabel).toBePresent(); + } + + checkPublicKeyNotEmpty = async () => { + const pubkeyEl = await this.publicKeyValue; + await pubkeyEl.waitForExist(); + expect(await pubkeyEl.getAttribute('value')).toBeTruthy(); + } + + checkSignatureDateValue = async (value: string) => { + const signatureValue = await this.signatureValue; + await signatureValue.waitForExist(); + expect(await signatureValue.getValue()).toEqual(value); + } + + getLastFetchedDateValue = async () => { + await (await this.lastFetchedDateLabel).waitForDisplayed(); + const lastFetchedDate = await this.lastFetchedDateValue; + return (await lastFetchedDate.getAttribute('value')); + } + + checkFingerPrintsValue = async (value: string) => { + const fingerprints = await this.fingerprintsValue; + await fingerprints.waitForExist(); + expect(await fingerprints.getAttribute('value')).toEqual(value); + } + + clickBackButton = async () => { + await ElementHelper.waitAndClick(await this.backButton); + } + +} + +export default new PublicKeyDetailsScreen(); diff --git a/appium/tests/specs/live/composeEmail/SelectRecipientByName.spec.ts b/appium/tests/specs/live/composeEmail/SelectRecipientByName.spec.ts index 2c7608763..e21d93a71 100644 --- a/appium/tests/specs/live/composeEmail/SelectRecipientByName.spec.ts +++ b/appium/tests/specs/live/composeEmail/SelectRecipientByName.spec.ts @@ -6,7 +6,8 @@ import { ContactScreen, ContactPublicKeyScreen, SettingsScreen, - MenuBarScreen + MenuBarScreen, + PublicKeyDetailsScreen } from '../../../screenobjects/all-screens'; import { CommonData } from '../../../data'; @@ -73,6 +74,7 @@ describe('COMPOSE EMAIL: ', () => { await ContactPublicKeyScreen.checkPgpUserId(firstContactEmail); await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); await ContactPublicKeyScreen.clickOnFingerPrint(); - await ContactPublicKeyScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); }); }); diff --git a/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts new file mode 100644 index 000000000..1f238ea17 --- /dev/null +++ b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts @@ -0,0 +1,209 @@ +import { MockApi } from 'api-mocks/mock'; +import { + SplashScreen, + SetupKeyScreen, + MailFolderScreen, + NewMessageScreen, + PublicKeyDetailsScreen +} from '../../../screenobjects/all-screens'; +import {attesterPublicKeySamples} from "../../../../api-mocks/apis/attester/attester-endpoints"; +import MenuBarScreen from "../../../screenobjects/menu-bar.screen"; +import SettingsScreen from "../../../screenobjects/settings.screen"; +import ContactScreen from "../../../screenobjects/contacts.screen"; +import ContactPublicKeyScreen from "../../../screenobjects/contact-public-key.screen"; +import {CommonData} from "../../../data"; +import DataHelper from "../../../helpers/DataHelper"; + + +describe('SETUP: ', () => { + + it('app updates older public keys to newer but not vice versa', async () => { + + let firstFetchedDate, secondFetchedDate, thirdFetchedDate, fourthFetchedDate; + + const mockApi = new MockApi(); + + mockApi.fesConfig = { + clientConfiguration: { + flags: ["NO_PRV_CREATE", "NO_PRV_BACKUP", "NO_ATTESTER_SUBMIT", "PRV_AUTOIMPORT_OR_AUTOGEN", "FORBID_STORING_PASS_PHRASE"], + key_manager_url: "https://ekm.flowcrypt.com", + } + }; + mockApi.attesterConfig = { + servedPubkeys: { + 'updating.key@example.test': attesterPublicKeySamples.keyOlderVersion + } + }; + const userEmail = CommonData.updateUser.email; + const oldSignatureDate = CommonData.updateUser.oldSignatureDate; + const oldFingerprintsValue = CommonData.updateUser.oldFingerprints; + const newSignatureDate = CommonData.updateUser.newSignatureDate; + const newFingerprintsValue = CommonData.updateUser.newFingerprints; + + await mockApi.withMockedApis(async () => { + //stage 1 + await SplashScreen.login(); + await SetupKeyScreen.setPassPhrase(); + await MailFolderScreen.checkInboxScreen(); + await MailFolderScreen.clickCreateEmail(); + await NewMessageScreen.setAddRecipient(userEmail); + await NewMessageScreen.checkAddedRecipient(userEmail); + await NewMessageScreen.clickBackButton(); + + // Go to Contacts screen + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.checkUserEmail(); + + await MenuBarScreen.clickSettingsButton(); + await SettingsScreen.checkSettingsScreen(); + await SettingsScreen.clickOnSettingItem('Contacts'); + + await ContactScreen.checkContactScreen(); + await ContactScreen.checkContact(userEmail); + // Go to Contact screen + await ContactScreen.clickOnContact(userEmail); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); + await ContactPublicKeyScreen.clickOnFingerPrint(); + + await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkSignatureDateValue(oldSignatureDate); + firstFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); + await PublicKeyDetailsScreen.checkFingerPrintsValue(oldFingerprintsValue); + + await PublicKeyDetailsScreen.clickBackButton(); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.clickBackButton(); + + await ContactScreen.checkContactScreen(); + await ContactScreen.clickBackButton(); + await SettingsScreen.checkSettingsScreen(); + + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.clickInboxButton(); + //stage 2 + mockApi.attesterConfig = { + servedPubkeys: { + 'updating.key@example.test': attesterPublicKeySamples.keyNewerVersion + } + }; + await MailFolderScreen.checkInboxScreen(); + await MailFolderScreen.clickCreateEmail(); + await NewMessageScreen.setAddRecipient(userEmail); + await NewMessageScreen.checkAddedRecipient(userEmail); + await NewMessageScreen.clickBackButton(); + + // Go to Contacts screen + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.checkUserEmail(); + + await MenuBarScreen.clickSettingsButton(); + await SettingsScreen.checkSettingsScreen(); + await SettingsScreen.clickOnSettingItem('Contacts'); + + await ContactScreen.checkContactScreen(); + await ContactScreen.checkContact(userEmail); + // Go to Contact screen + await ContactScreen.clickOnContact(userEmail); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); + await ContactPublicKeyScreen.clickOnFingerPrint(); + + await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkSignatureDateValue(newSignatureDate); + secondFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); + await PublicKeyDetailsScreen.checkFingerPrintsValue(newFingerprintsValue); + + await expect(firstFetchedDate).toBeLessThan(secondFetchedDate); + + await PublicKeyDetailsScreen.clickBackButton(); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.clickBackButton(); + + await ContactScreen.checkContactScreen(); + await ContactScreen.clickBackButton(); + await SettingsScreen.checkSettingsScreen(); + + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.clickInboxButton(); + //stage 3 + mockApi.attesterConfig = { + servedPubkeys: { + 'updating.key@example.test': attesterPublicKeySamples.keyOlderVersion + } + }; + await MailFolderScreen.checkInboxScreen(); + await MailFolderScreen.clickCreateEmail(); + await NewMessageScreen.setAddRecipient(userEmail); + await NewMessageScreen.checkAddedRecipient(userEmail); + await NewMessageScreen.clickBackButton(); + + // Go to Contacts screen + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.checkUserEmail(); + + await MenuBarScreen.clickSettingsButton(); + await SettingsScreen.checkSettingsScreen(); + await SettingsScreen.clickOnSettingItem('Contacts'); + + await ContactScreen.checkContactScreen(); + await ContactScreen.checkContact(userEmail); + // Go to Contact screen + await ContactScreen.clickOnContact(userEmail); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); + await ContactPublicKeyScreen.clickOnFingerPrint(); + + await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkSignatureDateValue(newSignatureDate); + thirdFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); + await PublicKeyDetailsScreen.checkFingerPrintsValue(newFingerprintsValue); + + await expect(secondFetchedDate).toBeLessThan(thirdFetchedDate); + + await PublicKeyDetailsScreen.clickBackButton(); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.clickTrashButton(); + await ContactScreen.checkContactScreen(); + await ContactScreen.checkEmptyList(); + + await ContactScreen.clickBackButton(); + await SettingsScreen.checkSettingsScreen(); + + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.clickInboxButton(); + + await MailFolderScreen.checkInboxScreen(); + await MailFolderScreen.clickCreateEmail(); + await NewMessageScreen.setAddRecipient(userEmail); + await NewMessageScreen.checkAddedRecipient(userEmail); + await NewMessageScreen.clickBackButton(); + + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.checkUserEmail(); + + await MenuBarScreen.clickSettingsButton(); + await SettingsScreen.checkSettingsScreen(); + await SettingsScreen.clickOnSettingItem('Contacts'); + + await ContactScreen.checkContactScreen(); + await ContactScreen.checkContact(userEmail); + // Go to Contact screen + await ContactScreen.clickOnContact(userEmail); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); + await ContactPublicKeyScreen.clickOnFingerPrint(); + + await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkSignatureDateValue(oldSignatureDate); + fourthFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); + await PublicKeyDetailsScreen.checkFingerPrintsValue(oldFingerprintsValue); + + await expect(thirdFetchedDate).toBeLessThan(fourthFetchedDate); + }); + }); +}); From c660856eae629332be22fe527b937e3c85d231bf Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Thu, 20 Jan 2022 11:31:45 +0200 Subject: [PATCH 2/8] added fixes after testrun --- appium/tests/data/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appium/tests/data/index.ts b/appium/tests/data/index.ts index e40932ec0..09db4fe66 100644 --- a/appium/tests/data/index.ts +++ b/appium/tests/data/index.ts @@ -55,8 +55,8 @@ export const CommonData = { }, updateUser: { email: 'updating.key@example.test', - oldSignatureDate: 'Jan 12, 2022 at 9:16:58 PM', - newSignatureDate: 'Jan 12, 2022 at 9:27:20 PM', + oldSignatureDate: 'Jan 12, 2022 at 11:16:58 AM', + newSignatureDate: 'Jan 12, 2022 at 11:27:20 AM', oldFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0', newFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0, 40E4EE0325E38F717737889AC54F277266650211' }, From f20f2383da6c9951bbdbfb3e41d27a8d1625df76 Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Thu, 20 Jan 2022 11:34:04 +0200 Subject: [PATCH 3/8] added date for local/remote runs --- appium/tests/data/index.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/appium/tests/data/index.ts b/appium/tests/data/index.ts index 09db4fe66..5bea89a48 100644 --- a/appium/tests/data/index.ts +++ b/appium/tests/data/index.ts @@ -55,8 +55,10 @@ export const CommonData = { }, updateUser: { email: 'updating.key@example.test', - oldSignatureDate: 'Jan 12, 2022 at 11:16:58 AM', - newSignatureDate: 'Jan 12, 2022 at 11:27:20 AM', + oldSignatureDate: 'Jan 12, 2022 at 11:16:58 AM',//time for CI runs + newSignatureDate: 'Jan 12, 2022 at 11:27:20 AM',//time for CI runs + // oldSignatureDate: 'Jan 12, 2022 at 9:16:58 PM', - for local run + // newSignatureDate: 'Jan 12, 2022 at 9:27:20 PM', - for local run oldFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0', newFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0, 40E4EE0325E38F717737889AC54F277266650211' }, From a1b55d7884c01e664e9092281413a80831a861f3 Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Thu, 20 Jan 2022 13:12:25 +0200 Subject: [PATCH 4/8] added fixes for update spec --- .../live/update/CheckAppAfterUpdateFromOldVersion.spec.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts b/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts index 38f5c230f..5826f9e4b 100644 --- a/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts +++ b/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts @@ -10,7 +10,8 @@ import { PublicKeyScreen, ContactScreen, ContactPublicKeyScreen, - SearchScreen + SearchScreen, + PublicKeyDetailsScreen } from '../../../screenobjects/all-screens'; import {CommonData} from "../../../data"; @@ -62,7 +63,7 @@ describe('UPDATE: ', () => { await ContactPublicKeyScreen.checkPgpUserId(firstContactEmail); await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); await ContactPublicKeyScreen.clickOnFingerPrint(); - await ContactPublicKeyScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); //close old app version await driver.terminateApp(bundleId); @@ -87,7 +88,7 @@ describe('UPDATE: ', () => { await ContactPublicKeyScreen.checkPgpUserId(firstContactEmail); await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); await ContactPublicKeyScreen.clickOnFingerPrint(); - await ContactPublicKeyScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); await ContactPublicKeyScreen.clickBackButton(); await ContactPublicKeyScreen.checkPgpUserId(firstContactEmail); From 89b21c967913fd62020d62f97e98ec47195770a5 Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Fri, 21 Jan 2022 11:08:23 +0200 Subject: [PATCH 5/8] added fixes for old app version --- appium/tests/screenobjects/old-version-app.screen.ts | 10 ++++++++++ .../update/CheckAppAfterUpdateFromOldVersion.spec.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/appium/tests/screenobjects/old-version-app.screen.ts b/appium/tests/screenobjects/old-version-app.screen.ts index eed1c6081..ad7ae42ef 100644 --- a/appium/tests/screenobjects/old-version-app.screen.ts +++ b/appium/tests/screenobjects/old-version-app.screen.ts @@ -4,6 +4,7 @@ import ElementHelper from "../helpers/ElementHelper"; const SELECTORS = { BACK_BUTTON: '~arrow left c', SENDER_EMAIL: '~messageSenderLabel', + PUBLIC_KEY: '-ios class chain:**/XCUIElementTypeOther/XCUIElementTypeStaticText[2]' }; class OldVersionAppScreen extends BaseScreen { @@ -18,6 +19,9 @@ class OldVersionAppScreen extends BaseScreen { get senderEmail() { return $(SELECTORS.SENDER_EMAIL); } + get publicKeyValue () { + return $(SELECTORS.PUBLIC_KEY); + } clickBackButton = async () => { await ElementHelper.waitAndClick(await this.backButton); @@ -42,6 +46,12 @@ class OldVersionAppScreen extends BaseScreen { await this.checkEmailSubject(subject); await this.checkEmailText(text); } + + checkPublicKeyNotEmpty = async () => { + const pubkeyEl = await this.publicKeyValue; + await pubkeyEl.waitForExist(); + expect(await pubkeyEl.getAttribute('value')).toBeTruthy(); + } } export default new OldVersionAppScreen(); diff --git a/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts b/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts index 5826f9e4b..11789c98e 100644 --- a/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts +++ b/appium/tests/specs/live/update/CheckAppAfterUpdateFromOldVersion.spec.ts @@ -63,7 +63,7 @@ describe('UPDATE: ', () => { await ContactPublicKeyScreen.checkPgpUserId(firstContactEmail); await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); await ContactPublicKeyScreen.clickOnFingerPrint(); - await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); + await OldVersionAppScreen.checkPublicKeyNotEmpty(); //close old app version await driver.terminateApp(bundleId); From 162bc3d4bed36ac24653d654eed574dfd55396e0 Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Fri, 21 Jan 2022 13:50:10 +0200 Subject: [PATCH 6/8] added PubKeyHelper for checking publickey and fingerprints --- appium/tests/data/index.ts | 4 +- appium/tests/helpers/PublicKeyHelper.ts | 39 +++++ .../setup/UpdateOlderPubKeyToNewer.spec.ts | 142 +++--------------- 3 files changed, 66 insertions(+), 119 deletions(-) create mode 100644 appium/tests/helpers/PublicKeyHelper.ts diff --git a/appium/tests/data/index.ts b/appium/tests/data/index.ts index 5bea89a48..c5cca86bb 100644 --- a/appium/tests/data/index.ts +++ b/appium/tests/data/index.ts @@ -57,8 +57,8 @@ export const CommonData = { email: 'updating.key@example.test', oldSignatureDate: 'Jan 12, 2022 at 11:16:58 AM',//time for CI runs newSignatureDate: 'Jan 12, 2022 at 11:27:20 AM',//time for CI runs - // oldSignatureDate: 'Jan 12, 2022 at 9:16:58 PM', - for local run - // newSignatureDate: 'Jan 12, 2022 at 9:27:20 PM', - for local run + // oldSignatureDate: 'Jan 12, 2022 at 9:16:58 PM', //- for local run + // newSignatureDate: 'Jan 12, 2022 at 9:27:20 PM', // for local run oldFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0', newFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0, 40E4EE0325E38F717737889AC54F277266650211' }, diff --git a/appium/tests/helpers/PublicKeyHelper.ts b/appium/tests/helpers/PublicKeyHelper.ts new file mode 100644 index 000000000..5122e239c --- /dev/null +++ b/appium/tests/helpers/PublicKeyHelper.ts @@ -0,0 +1,39 @@ +import MailFolderScreen from "../screenobjects/mail-folder.screen"; +import NewMessageScreen from "../screenobjects/new-message.screen"; +import MenuBarScreen from "../screenobjects/menu-bar.screen"; +import SettingsScreen from "../screenobjects/settings.screen"; +import ContactScreen from "../screenobjects/contacts.screen"; +import ContactPublicKeyScreen from "../screenobjects/contact-public-key.screen"; +import PublicKeyDetailsScreen from "../screenobjects/public-key-details.screen"; + +class PublicKeyHelper { + static checkSignatureAndFingerprints = async (userEmail: string, signatureDate: string , fingerprintsValue: string ) => { + await MailFolderScreen.clickCreateEmail(); + await NewMessageScreen.setAddRecipient(userEmail); + await NewMessageScreen.checkAddedRecipient(userEmail); + await NewMessageScreen.clickBackButton(); + + // Go to Contacts screen + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.checkUserEmail(); + + await MenuBarScreen.clickSettingsButton(); + await SettingsScreen.checkSettingsScreen(); + await SettingsScreen.clickOnSettingItem('Contacts'); + + await ContactScreen.checkContactScreen(); + await ContactScreen.checkContact(userEmail); + + await ContactScreen.clickOnContact(userEmail); + await ContactPublicKeyScreen.checkPgpUserId(userEmail); + await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); + await ContactPublicKeyScreen.clickOnFingerPrint(); + + await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); + await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); + await PublicKeyDetailsScreen.checkSignatureDateValue(signatureDate); + await PublicKeyDetailsScreen.checkFingerPrintsValue(fingerprintsValue); + } +} + +export default PublicKeyHelper; diff --git a/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts index 1f238ea17..3b9f8ecdf 100644 --- a/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts +++ b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts @@ -3,37 +3,37 @@ import { SplashScreen, SetupKeyScreen, MailFolderScreen, - NewMessageScreen, - PublicKeyDetailsScreen + PublicKeyDetailsScreen, + ContactPublicKeyScreen, + MenuBarScreen, + SettingsScreen, + ContactScreen, } from '../../../screenobjects/all-screens'; import {attesterPublicKeySamples} from "../../../../api-mocks/apis/attester/attester-endpoints"; -import MenuBarScreen from "../../../screenobjects/menu-bar.screen"; -import SettingsScreen from "../../../screenobjects/settings.screen"; -import ContactScreen from "../../../screenobjects/contacts.screen"; -import ContactPublicKeyScreen from "../../../screenobjects/contact-public-key.screen"; import {CommonData} from "../../../data"; import DataHelper from "../../../helpers/DataHelper"; +import PublicKeyHelper from "../../../helpers/PublicKeyHelper"; describe('SETUP: ', () => { it('app updates older public keys to newer but not vice versa', async () => { - let firstFetchedDate, secondFetchedDate, thirdFetchedDate, fourthFetchedDate; - - const mockApi = new MockApi(); - - mockApi.fesConfig = { - clientConfiguration: { - flags: ["NO_PRV_CREATE", "NO_PRV_BACKUP", "NO_ATTESTER_SUBMIT", "PRV_AUTOIMPORT_OR_AUTOGEN", "FORBID_STORING_PASS_PHRASE"], - key_manager_url: "https://ekm.flowcrypt.com", - } - }; - mockApi.attesterConfig = { - servedPubkeys: { - 'updating.key@example.test': attesterPublicKeySamples.keyOlderVersion - } - }; + let firstFetchedDate, secondFetchedDate, thirdFetchedDate, fourthFetchedDate; + + const mockApi = new MockApi(); + + mockApi.fesConfig = { + clientConfiguration: { + flags: ["NO_PRV_CREATE", "NO_PRV_BACKUP", "NO_ATTESTER_SUBMIT", "PRV_AUTOIMPORT_OR_AUTOGEN", "FORBID_STORING_PASS_PHRASE"], + key_manager_url: "https://ekm.flowcrypt.com", + } + }; + mockApi.attesterConfig = { + servedPubkeys: { + 'updating.key@example.test': attesterPublicKeySamples.keyOlderVersion + } + }; const userEmail = CommonData.updateUser.email; const oldSignatureDate = CommonData.updateUser.oldSignatureDate; const oldFingerprintsValue = CommonData.updateUser.oldFingerprints; @@ -45,32 +45,9 @@ describe('SETUP: ', () => { await SplashScreen.login(); await SetupKeyScreen.setPassPhrase(); await MailFolderScreen.checkInboxScreen(); - await MailFolderScreen.clickCreateEmail(); - await NewMessageScreen.setAddRecipient(userEmail); - await NewMessageScreen.checkAddedRecipient(userEmail); - await NewMessageScreen.clickBackButton(); - - // Go to Contacts screen - await MenuBarScreen.clickMenuIcon(); - await MenuBarScreen.checkUserEmail(); - - await MenuBarScreen.clickSettingsButton(); - await SettingsScreen.checkSettingsScreen(); - await SettingsScreen.clickOnSettingItem('Contacts'); - await ContactScreen.checkContactScreen(); - await ContactScreen.checkContact(userEmail); - // Go to Contact screen - await ContactScreen.clickOnContact(userEmail); - await ContactPublicKeyScreen.checkPgpUserId(userEmail); - await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); - await ContactPublicKeyScreen.clickOnFingerPrint(); - - await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); - await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); - await PublicKeyDetailsScreen.checkSignatureDateValue(oldSignatureDate); + await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); firstFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); - await PublicKeyDetailsScreen.checkFingerPrintsValue(oldFingerprintsValue); await PublicKeyDetailsScreen.clickBackButton(); await ContactPublicKeyScreen.checkPgpUserId(userEmail); @@ -89,32 +66,9 @@ describe('SETUP: ', () => { } }; await MailFolderScreen.checkInboxScreen(); - await MailFolderScreen.clickCreateEmail(); - await NewMessageScreen.setAddRecipient(userEmail); - await NewMessageScreen.checkAddedRecipient(userEmail); - await NewMessageScreen.clickBackButton(); - - // Go to Contacts screen - await MenuBarScreen.clickMenuIcon(); - await MenuBarScreen.checkUserEmail(); - - await MenuBarScreen.clickSettingsButton(); - await SettingsScreen.checkSettingsScreen(); - await SettingsScreen.clickOnSettingItem('Contacts'); - - await ContactScreen.checkContactScreen(); - await ContactScreen.checkContact(userEmail); - // Go to Contact screen - await ContactScreen.clickOnContact(userEmail); - await ContactPublicKeyScreen.checkPgpUserId(userEmail); - await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); - await ContactPublicKeyScreen.clickOnFingerPrint(); + await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); - await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); - await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); - await PublicKeyDetailsScreen.checkSignatureDateValue(newSignatureDate); secondFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); - await PublicKeyDetailsScreen.checkFingerPrintsValue(newFingerprintsValue); await expect(firstFetchedDate).toBeLessThan(secondFetchedDate); @@ -135,33 +89,9 @@ describe('SETUP: ', () => { } }; await MailFolderScreen.checkInboxScreen(); - await MailFolderScreen.clickCreateEmail(); - await NewMessageScreen.setAddRecipient(userEmail); - await NewMessageScreen.checkAddedRecipient(userEmail); - await NewMessageScreen.clickBackButton(); - - // Go to Contacts screen - await MenuBarScreen.clickMenuIcon(); - await MenuBarScreen.checkUserEmail(); - - await MenuBarScreen.clickSettingsButton(); - await SettingsScreen.checkSettingsScreen(); - await SettingsScreen.clickOnSettingItem('Contacts'); - - await ContactScreen.checkContactScreen(); - await ContactScreen.checkContact(userEmail); - // Go to Contact screen - await ContactScreen.clickOnContact(userEmail); - await ContactPublicKeyScreen.checkPgpUserId(userEmail); - await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); - await ContactPublicKeyScreen.clickOnFingerPrint(); + await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); - await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); - await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); - await PublicKeyDetailsScreen.checkSignatureDateValue(newSignatureDate); thirdFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); - await PublicKeyDetailsScreen.checkFingerPrintsValue(newFingerprintsValue); - await expect(secondFetchedDate).toBeLessThan(thirdFetchedDate); await PublicKeyDetailsScreen.clickBackButton(); @@ -177,31 +107,9 @@ describe('SETUP: ', () => { await MenuBarScreen.clickInboxButton(); await MailFolderScreen.checkInboxScreen(); - await MailFolderScreen.clickCreateEmail(); - await NewMessageScreen.setAddRecipient(userEmail); - await NewMessageScreen.checkAddedRecipient(userEmail); - await NewMessageScreen.clickBackButton(); - - await MenuBarScreen.clickMenuIcon(); - await MenuBarScreen.checkUserEmail(); - - await MenuBarScreen.clickSettingsButton(); - await SettingsScreen.checkSettingsScreen(); - await SettingsScreen.clickOnSettingItem('Contacts'); - - await ContactScreen.checkContactScreen(); - await ContactScreen.checkContact(userEmail); - // Go to Contact screen - await ContactScreen.clickOnContact(userEmail); - await ContactPublicKeyScreen.checkPgpUserId(userEmail); - await ContactPublicKeyScreen.checkPublicKeyDetailsNotEmpty(); - await ContactPublicKeyScreen.clickOnFingerPrint(); + await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); - await PublicKeyDetailsScreen.checkPublicKeyDetailsScreen(); - await PublicKeyDetailsScreen.checkPublicKeyNotEmpty(); - await PublicKeyDetailsScreen.checkSignatureDateValue(oldSignatureDate); fourthFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); - await PublicKeyDetailsScreen.checkFingerPrintsValue(oldFingerprintsValue); await expect(thirdFetchedDate).toBeLessThan(fourthFetchedDate); }); From 687252a9741988bfcb90f0c434fcf0e1eefc52e0 Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Fri, 21 Jan 2022 14:46:33 +0200 Subject: [PATCH 7/8] update for checkSignatureAndFingerprint method --- appium/tests/helpers/PublicKeyHelper.ts | 1 + .../tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/appium/tests/helpers/PublicKeyHelper.ts b/appium/tests/helpers/PublicKeyHelper.ts index 5122e239c..cc59bce71 100644 --- a/appium/tests/helpers/PublicKeyHelper.ts +++ b/appium/tests/helpers/PublicKeyHelper.ts @@ -8,6 +8,7 @@ import PublicKeyDetailsScreen from "../screenobjects/public-key-details.screen"; class PublicKeyHelper { static checkSignatureAndFingerprints = async (userEmail: string, signatureDate: string , fingerprintsValue: string ) => { + await MailFolderScreen.checkInboxScreen(); await MailFolderScreen.clickCreateEmail(); await NewMessageScreen.setAddRecipient(userEmail); await NewMessageScreen.checkAddedRecipient(userEmail); diff --git a/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts index 3b9f8ecdf..99c9d40fd 100644 --- a/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts +++ b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts @@ -2,7 +2,6 @@ import { MockApi } from 'api-mocks/mock'; import { SplashScreen, SetupKeyScreen, - MailFolderScreen, PublicKeyDetailsScreen, ContactPublicKeyScreen, MenuBarScreen, @@ -44,7 +43,6 @@ describe('SETUP: ', () => { //stage 1 await SplashScreen.login(); await SetupKeyScreen.setPassPhrase(); - await MailFolderScreen.checkInboxScreen(); await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); firstFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); @@ -65,7 +63,6 @@ describe('SETUP: ', () => { 'updating.key@example.test': attesterPublicKeySamples.keyNewerVersion } }; - await MailFolderScreen.checkInboxScreen(); await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); secondFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); @@ -88,7 +85,6 @@ describe('SETUP: ', () => { 'updating.key@example.test': attesterPublicKeySamples.keyOlderVersion } }; - await MailFolderScreen.checkInboxScreen(); await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); thirdFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); @@ -106,7 +102,6 @@ describe('SETUP: ', () => { await MenuBarScreen.clickMenuIcon(); await MenuBarScreen.clickInboxButton(); - await MailFolderScreen.checkInboxScreen(); await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); fourthFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); From dcdd8a983166f32d1b23dbc9a485c4824f1bf307 Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Fri, 21 Jan 2022 17:18:14 +0200 Subject: [PATCH 8/8] added fixes after review --- appium/tests/data/index.ts | 2 +- appium/tests/helpers/PublicKeyHelper.ts | 2 +- .../setup/UpdateOlderPubKeyToNewer.spec.ts | 20 +++++++++---------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/appium/tests/data/index.ts b/appium/tests/data/index.ts index c5cca86bb..2ec3ae59c 100644 --- a/appium/tests/data/index.ts +++ b/appium/tests/data/index.ts @@ -53,7 +53,7 @@ export const CommonData = { longEmail: { message: '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nText' }, - updateUser: { + updateRecipientPublicKey: { email: 'updating.key@example.test', oldSignatureDate: 'Jan 12, 2022 at 11:16:58 AM',//time for CI runs newSignatureDate: 'Jan 12, 2022 at 11:27:20 AM',//time for CI runs diff --git a/appium/tests/helpers/PublicKeyHelper.ts b/appium/tests/helpers/PublicKeyHelper.ts index cc59bce71..e107e0dff 100644 --- a/appium/tests/helpers/PublicKeyHelper.ts +++ b/appium/tests/helpers/PublicKeyHelper.ts @@ -7,7 +7,7 @@ import ContactPublicKeyScreen from "../screenobjects/contact-public-key.screen"; import PublicKeyDetailsScreen from "../screenobjects/public-key-details.screen"; class PublicKeyHelper { - static checkSignatureAndFingerprints = async (userEmail: string, signatureDate: string , fingerprintsValue: string ) => { + static loadRecipientInComposeThenCheckSignatureAndFingerprints = async (userEmail: string, signatureDate: string , fingerprintsValue: string ) => { await MailFolderScreen.checkInboxScreen(); await MailFolderScreen.clickCreateEmail(); await NewMessageScreen.setAddRecipient(userEmail); diff --git a/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts index 99c9d40fd..a788a19af 100644 --- a/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts +++ b/appium/tests/specs/mock/setup/UpdateOlderPubKeyToNewer.spec.ts @@ -33,18 +33,18 @@ describe('SETUP: ', () => { 'updating.key@example.test': attesterPublicKeySamples.keyOlderVersion } }; - const userEmail = CommonData.updateUser.email; - const oldSignatureDate = CommonData.updateUser.oldSignatureDate; - const oldFingerprintsValue = CommonData.updateUser.oldFingerprints; - const newSignatureDate = CommonData.updateUser.newSignatureDate; - const newFingerprintsValue = CommonData.updateUser.newFingerprints; + const userEmail = CommonData.updateRecipientPublicKey.email; + const oldSignatureDate = CommonData.updateRecipientPublicKey.oldSignatureDate; + const oldFingerprintsValue = CommonData.updateRecipientPublicKey.oldFingerprints; + const newSignatureDate = CommonData.updateRecipientPublicKey.newSignatureDate; + const newFingerprintsValue = CommonData.updateRecipientPublicKey.newFingerprints; await mockApi.withMockedApis(async () => { //stage 1 await SplashScreen.login(); await SetupKeyScreen.setPassPhrase(); - await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); + await PublicKeyHelper.loadRecipientInComposeThenCheckSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); firstFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); await PublicKeyDetailsScreen.clickBackButton(); @@ -63,7 +63,7 @@ describe('SETUP: ', () => { 'updating.key@example.test': attesterPublicKeySamples.keyNewerVersion } }; - await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); + await PublicKeyHelper.loadRecipientInComposeThenCheckSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); secondFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); @@ -85,11 +85,11 @@ describe('SETUP: ', () => { 'updating.key@example.test': attesterPublicKeySamples.keyOlderVersion } }; - await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); + await PublicKeyHelper.loadRecipientInComposeThenCheckSignatureAndFingerprints(userEmail, newSignatureDate, newFingerprintsValue); thirdFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue()); await expect(secondFetchedDate).toBeLessThan(thirdFetchedDate); - + //stage 4 await PublicKeyDetailsScreen.clickBackButton(); await ContactPublicKeyScreen.checkPgpUserId(userEmail); await ContactPublicKeyScreen.clickTrashButton(); @@ -102,7 +102,7 @@ describe('SETUP: ', () => { await MenuBarScreen.clickMenuIcon(); await MenuBarScreen.clickInboxButton(); - await PublicKeyHelper.checkSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); + await PublicKeyHelper.loadRecipientInComposeThenCheckSignatureAndFingerprints(userEmail, oldSignatureDate, oldFingerprintsValue); fourthFetchedDate = await DataHelper.convertDateToMSec(await PublicKeyDetailsScreen.getLastFetchedDateValue());