diff --git a/appium/tests/screenobjects/new-message.screen.ts b/appium/tests/screenobjects/new-message.screen.ts index b5ca6cc14..f2f569ac5 100644 --- a/appium/tests/screenobjects/new-message.screen.ts +++ b/appium/tests/screenobjects/new-message.screen.ts @@ -124,7 +124,13 @@ class NewMessageScreen extends BaseScreen { const addedRecipientEl = await this.addedRecipientEmail; const value = await addedRecipientEl.getValue(); expect(value).toEqual(` ${recipient} `); - }; + } + + checkAddedRecipientColor = async (recipient: string, order: number, color: string) => { + const addedRecipientEl = await $(`~aid-to-${order}-${color}`); + const name = await addedRecipientEl.getValue(); + expect(name).toEqual(` ${recipient} `); + } checkAddedAttachment = async (name: string) => { await (await this.deleteAttachmentButton).waitForDisplayed(); diff --git a/appium/tests/specs/mock/setup/CannotFindEmailOnAttesterWithDisallowAttesterSearchForDomain.spec.ts b/appium/tests/specs/mock/setup/CannotFindEmailOnAttesterWithDisallowAttesterSearchForDomain.spec.ts new file mode 100644 index 000000000..86811cc76 --- /dev/null +++ b/appium/tests/specs/mock/setup/CannotFindEmailOnAttesterWithDisallowAttesterSearchForDomain.spec.ts @@ -0,0 +1,38 @@ +import { MockApi } from 'api-mocks/mock'; +import { + SplashScreen, +} from '../../../screenobjects/all-screens'; +import {attesterPublicKeySamples} from "../../../../api-mocks/apis/attester/attester-endpoints"; +import SetupKeyScreen from "../../../screenobjects/setup-key.screen"; +import MailFolderScreen from "../../../screenobjects/mail-folder.screen"; +import NewMessageScreen from "../../../screenobjects/new-message.screen"; + +describe('SETUP: ', () => { + + it('cannot find email on attester with disallow_attester_search_for_domains=*', async () => { + + 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", + disallow_attester_search_for_domains: ["*"] + } + }; + mockApi.attesterConfig = { + servedPubkeys: { + 'available.on@attester.test': attesterPublicKeySamples.valid + } + }; + + await mockApi.withMockedApis(async () => { + await SplashScreen.login(); + await SetupKeyScreen.setPassPhrase(); + await MailFolderScreen.checkInboxScreen(); + await MailFolderScreen.clickCreateEmail(); + await NewMessageScreen.setAddRecipient('available.on@attester.test'); + await NewMessageScreen.checkAddedRecipientColor('available.on@attester.test', 0, 'gray'); + }); + }); +}); diff --git a/appium/tests/specs/mock/setup/FindEmailOnAttester.spec.ts b/appium/tests/specs/mock/setup/FindEmailOnAttester.spec.ts new file mode 100644 index 000000000..a1d59988f --- /dev/null +++ b/appium/tests/specs/mock/setup/FindEmailOnAttester.spec.ts @@ -0,0 +1,34 @@ +import { MockApi } from 'api-mocks/mock'; +import { + SplashScreen, +} from '../../../screenobjects/all-screens'; +import {attesterPublicKeySamples} from "../../../../api-mocks/apis/attester/attester-endpoints"; +import SetupKeyScreen from "../../../screenobjects/setup-key.screen"; +import MailFolderScreen from "../../../screenobjects/mail-folder.screen"; +import NewMessageScreen from "../../../screenobjects/new-message.screen"; + +describe('SETUP: ', () => { + + it('can find email on attester', async () => { + 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: { + 'available.on@attester.test': attesterPublicKeySamples.valid + } + }; + await mockApi.withMockedApis(async () => { + await SplashScreen.login(); + await SetupKeyScreen.setPassPhrase(); + await MailFolderScreen.checkInboxScreen(); + await MailFolderScreen.clickCreateEmail(); + await NewMessageScreen.setAddRecipient('available.on@attester.test'); + await NewMessageScreen.checkAddedRecipientColor('available.on@attester.test', 0, 'green'); + }); + }); +}); diff --git a/appium/tests/specs/mock/setup/RespectsDisallowAttesterSearchForDomainsOnPerDomainBasic.spec.ts b/appium/tests/specs/mock/setup/RespectsDisallowAttesterSearchForDomainsOnPerDomainBasic.spec.ts new file mode 100644 index 000000000..6d1ba49cb --- /dev/null +++ b/appium/tests/specs/mock/setup/RespectsDisallowAttesterSearchForDomainsOnPerDomainBasic.spec.ts @@ -0,0 +1,44 @@ +import { MockApi } from 'api-mocks/mock'; +import { + SplashScreen, +} from '../../../screenobjects/all-screens'; +import {attesterPublicKeySamples} from "../../../../api-mocks/apis/attester/attester-endpoints"; +import SetupKeyScreen from "../../../screenobjects/setup-key.screen"; +import MailFolderScreen from "../../../screenobjects/mail-folder.screen"; +import NewMessageScreen from "../../../screenobjects/new-message.screen"; + +describe('SETUP: ', () => { + + it('respects disallow_attester_search_for_domains on a per-domain basis', async () => { + + 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", + disallow_attester_search_for_domains: ["disabled.test"] + } + }; + mockApi.attesterConfig = { + servedPubkeys: { + 'attester@disabled.test': attesterPublicKeySamples.valid, + 'attester@enabled.test': attesterPublicKeySamples.valid + } + }; + + await mockApi.withMockedApis(async () => { + await SplashScreen.login(); + await SetupKeyScreen.setPassPhrase(); + await MailFolderScreen.checkInboxScreen(); + await MailFolderScreen.clickCreateEmail(); + + // Adding recipients + await NewMessageScreen.setAddRecipient('attester@disabled.test'); + await NewMessageScreen.setAddRecipient('attester@enabled.test'); + + // Checking added recipients color + await NewMessageScreen.checkAddedRecipientColor('attester@disabled.test', 0, 'gray'); + await NewMessageScreen.checkAddedRecipientColor('attester@enabled.test', 1, 'green'); + }); + }); +}); diff --git a/appium/tests/specs/mock/setup/SetupFailsWithInconsistentClientConfiguration.spec.ts b/appium/tests/specs/mock/setup/SetupFailsWithInconsistentClientConfiguration.spec.ts index 7d8b8863e..b523d5ab7 100644 --- a/appium/tests/specs/mock/setup/SetupFailsWithInconsistentClientConfiguration.spec.ts +++ b/appium/tests/specs/mock/setup/SetupFailsWithInconsistentClientConfiguration.spec.ts @@ -9,7 +9,11 @@ describe('SETUP: ', () => { it('app setup fails with bad EKM URL', async () => { const mockApi = new MockApi(); - mockApi.fesConfig = { clientConfiguration: { key_manager_url: 'INTENTIONAL BAD URL' } }; + mockApi.fesConfig = { + clientConfiguration: { + key_manager_url: 'INTENTIONAL BAD URL' + } + }; await mockApi.withMockedApis(async () => { await SplashScreen.login(); await BaseScreen.checkErrorModal('Please check if key manager url set correctly'); diff --git a/appium/tests/specs/mock/setup/SetupShowsMeaningfulErrorFromFES.spec.ts b/appium/tests/specs/mock/setup/SetupShowsMeaningfulErrorFromFES.spec.ts index a1f351239..d9a8a8317 100644 --- a/appium/tests/specs/mock/setup/SetupShowsMeaningfulErrorFromFES.spec.ts +++ b/appium/tests/specs/mock/setup/SetupShowsMeaningfulErrorFromFES.spec.ts @@ -9,7 +9,12 @@ describe('SETUP: ', () => { it('setup shows meaningful error when FES returns 400', async () => { const mockApi = new MockApi(); - mockApi.fesConfig = { returnError: { code: 400, message: "some client err" } }; + mockApi.fesConfig = { + returnError: { + code: 400, + message: "some client err" + } + }; await mockApi.withMockedApis(async () => { await SplashScreen.login(); await BaseScreen.checkErrorModalForFES('EnterpriseServerApi 400 message:some client err get http://127.0.0.1:8001/fes/api/');