Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion appium/api-mocks/apis/attester/attester-endpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export const getMockAttesterEndpoints = (
return {
'/attester/pub/?': async ({ body }, req) => {
const email = req.url!.split('/').pop()!.toLowerCase().trim();
throwErrorIfConfigSaysSo(attesterConfig);
if (isGet(req)) {
const pubkey = (attesterConfig.servedPubkeys || {})[email];
if (pubkey) {
Expand All @@ -52,6 +53,8 @@ export const getMockAttesterEndpoints = (
}
},
'/attester/test/welcome': async ({ body }, req) => {
throwErrorIfConfigSaysSo(attesterConfig);

if (!attesterConfig.enableTestWelcome) {
throw new AttesterErr('Mock Attester received unexpected /test/welcome request', 405);
}
Expand All @@ -69,6 +72,11 @@ export const getMockAttesterEndpoints = (
},
};
}
const throwErrorIfConfigSaysSo = (config: AttesterConfig) => {
if (config.returnError) {
throw new AttesterErr(config.returnError.message, config.returnError.code);
}
}

export const attesterPublicKeySamples = {
valid: `-----BEGIN PGP PUBLIC KEY BLOCK-----
Expand Down Expand Up @@ -224,7 +232,7 @@ dSL33ptMlhwRCKHGiKcVmKwucxYkk6apFQEA018565fZcvtb339L2s/IIxLs
4621FX8Sy6kpR7mAzQo=
=3UnZ
-----END PGP PUBLIC KEY BLOCK-----`,
keyNewerVersion: `-----BEGIN PGP PUBLIC KEY BLOCK-----
keyNewerVersion: `-----BEGIN PGP PUBLIC KEY BLOCK-----

xjMEYd8pKhYJKwYBBAHaRw8BAQdAXQ9bBzlYPwy3mQD5MIQSkuOyEomESHHo
AAiUi0enB77NKFVwZGF0aW5nIGtleSA8dXBkYXRpbmcua2V5QGV4YW1wbGUu
Expand All @@ -240,4 +248,20 @@ CgkQx8mQwaLqeN3PWwD9ErvC+ufnX0O2AmZDz67QfFH6tA1t1/wUEHgzBXEe
gc8BAMaYm3AlSGbX1rJYgUtCWukkLuURdECIzerG2UuP87ID
=dQen
-----END PGP PUBLIC KEY BLOCK-----`,
revoked: `-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: FlowCrypt iOS 0.2 Gmail Encryption
Comment: Seamlessly send and receive encrypted email

xjMEYW8BThYJKwYBBAHaRw8BAQdAYtEoS4d+3cwQWXcs3lvMQueypexTYai7
uXQmxqyOoKrCjAQgFgoAHQUCYW8CLBYhBDkxt0E9uy+mDO+Fzl8Vl4kQoXgK
ACEJEF8Vl4kQoXgKFiEEOTG3QT27L6YM74XOXxWXiRCheAqk5AEApn8X3Oe7
EFgdfo5lkgh6ubpmgyRUpfYHkQE2/S6K+T0BAPGs2py515aUVAgiRy7bJuoY
DKKbOPL1Npd0bgenKgMGzRVyZXZvZWtkQGZsb3djcnlwdC5jb23CXgQTFgoA
BgUCYW8BawAKCRBfFZeJEKF4ChD/AP9gdm4riyAzyGhD4P8ZGW3GtREk56sW
RBB3A/+RUX+qbAEA3FWCs2bUl6pmasXP8QAi0/zoruZiShR2Y2mVAM3T1ATN
FXJldm9rZWRAZmxvd2NyeXB0LmNvbcJeBBMWCgAGBQJhbwFrAAoJEF8Vl4kQ
oXgKecoBALdrD8nkptLlT8Dg4cF+3swfY1urlbdEfEvIjN60HRDLAP4w3qeS
zZ+OyuqPFaw7dM2KOu4++WigtbxRpDhpQ9U8BQ==
=bMwq
-----END PGP PUBLIC KEY BLOCK-----`
};
5 changes: 3 additions & 2 deletions appium/api-mocks/lib/configuration-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ export type FesConfig = {
export type AttesterConfig = {
enableSubmittingPubkeys?: boolean,
enableTestWelcome?: boolean,
servedPubkeys?: Dict<string>
servedPubkeys?: Dict<string>,
returnError?: { code: number, message: string },
};

export type GoogleConfig = {
Expand All @@ -37,4 +38,4 @@ export type GoogleConfig = {

export type WkdConfig = {};

export type EkmConfig = {};
export type EkmConfig = {};
3 changes: 1 addition & 2 deletions appium/tests/constants.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
export const DEFAULT_TIMEOUT = 15000;

export const DEFAULT_TIMEOUT = 15000;
29 changes: 19 additions & 10 deletions appium/tests/data/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,16 @@ export const CommonData = {
senderName: 'Dmitry at FlowCrypt',
firstThreadMessage: 'first message',
secondThreadMessage: 'Second thread rendering message\n' +
'\n' +
'On 04.02.2022 at 11:12 dmitry@flowcrypt.com wrote:\n' +
' > first message',
'\n' +
'On 04.02.2022 at 11:12 dmitry@flowcrypt.com wrote:\n' +
' > first message',
thirdThreadMessage: 'Third thread rendering message\n' +
'\n' +
'On 2022-02-07 at 06:56, e2e.enterprise.test@flowcrypt.com wrote:\n' +
'> Second thread rendering message\n' +
'>\n' +
'> On 04.02.2022 at 11:12 dmitry@flowcrypt.com wrote:\n' +
'> > first message',
'\n' +
'On 2022-02-07 at 06:56, e2e.enterprise.test@flowcrypt.com wrote:\n' +
'> Second thread rendering message\n' +
'>\n' +
'> On 04.02.2022 at 11:12 dmitry@flowcrypt.com wrote:\n' +
'> > first message',
firstDate: 'Feb 04',
secondDate: 'Feb 06',
thirdDate: 'Feb 07',
Expand Down Expand Up @@ -88,7 +88,7 @@ export const CommonData = {
updateRecipientPublicKey: {
email: 'updating.key@example.test',
oldSignatureDate: '12 Jan 2022, 07:16:58 PM',//in UTC
newSignatureDate: '12 Jan 2022, 07:27:20 PM',//in UTC
newSignatureDate: '12 Jan 2022, 07:27:20 PM',//in UTC
oldFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0',
newFingerprints: '7E181662A26EC6748D6FDB1CC7C990C1A2EA78DD, 5C23518345A6595E81EBFEFCA71D94A76202B1D0, 40E4EE0325E38F717737889AC54F277266650211'
},
Expand Down Expand Up @@ -193,5 +193,14 @@ export const CommonData = {
appPath: {
old: path.join(process.cwd(), './FlowCryptOld.app'),
new: path.join(process.cwd(), './FlowCrypt.app')
},
validMockUser: {
email: 'valid@domain.test'
},
expiredMockUser: {
email: 'expired@domain.test'
},
revokedMockUser: {
email: 'revoked@domain.test'
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
SplashScreen
} from '../../../screenobjects/all-screens';

import {CommonData} from '../../../data';
import { CommonData } from '../../../data';

describe('COMPOSE EMAIL: ', () => {

Expand All @@ -16,7 +16,7 @@ describe('COMPOSE EMAIL: ', () => {
const ccRecipientEmail = CommonData.recipientWithExpiredPublicKey.email;
const bccRecipientEmail = CommonData.recipientWithoutPublicKey.email;
const subject = "Test recipient list label subject"
const message= "Test recipient list label message"
const message = "Test recipient list label message"

await SplashScreen.login();
await SetupKeyScreen.setPassPhrase();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import {
SplashScreen,
SetupKeyScreen,
MenuBarScreen,
MailFolderScreen,
EmailScreen,
OldVersionAppScreen,
SettingsScreen,
KeysScreen,
PublicKeyScreen,
ContactScreen,
ContactPublicKeyScreen,
SearchScreen,
PublicKeyDetailsScreen
SplashScreen,
SetupKeyScreen,
MenuBarScreen,
MailFolderScreen,
EmailScreen,
OldVersionAppScreen,
SettingsScreen,
KeysScreen,
PublicKeyScreen,
ContactScreen,
ContactPublicKeyScreen,
SearchScreen,
PublicKeyDetailsScreen
} from '../../../screenobjects/all-screens';
import {CommonData} from "../../../data";
import { CommonData } from "../../../data";

describe('UPDATE: ', () => {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import {
SplashScreen,
SetupKeyScreen,
MailFolderScreen,
NewMessageScreen,
} from '../../../screenobjects/all-screens';
import { CommonData } from '../../../data';
import { MockApi } from "../../../../api-mocks/mock";
import { attesterPublicKeySamples } from "../../../../api-mocks/apis/attester/attester-endpoints";

describe('COMPOSE EMAIL: ', () => {

it('check valid, revoked and expired recipients in offline mode', async () => {

const validEmail = CommonData.validMockUser.email;
const expiredEmail = CommonData.expiredMockUser.email;
const revokedEmail = CommonData.revokedMockUser.email;


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: {
'valid@domain.test': attesterPublicKeySamples.valid,
'expired@domain.test': attesterPublicKeySamples.expired,
'revoked@domain.test': attesterPublicKeySamples.revoked,
}
};

await mockApi.withMockedApis(async () => {
await SplashScreen.login();
await SetupKeyScreen.setPassPhrase();
await MailFolderScreen.checkInboxScreen();

await MailFolderScreen.clickCreateEmail();
await NewMessageScreen.setAddRecipient(validEmail);
await NewMessageScreen.setAddRecipient(expiredEmail);
await NewMessageScreen.setAddRecipient(revokedEmail);

await NewMessageScreen.checkAddedRecipientColor(validEmail, 0, 'green');
await NewMessageScreen.checkAddedRecipientColor(expiredEmail, 1, 'orange');
await NewMessageScreen.checkAddedRecipientColor(revokedEmail, 2, 'red');

await NewMessageScreen.deleteAddedRecipient(2);
await NewMessageScreen.deleteAddedRecipient(1);
await NewMessageScreen.deleteAddedRecipient(0);

mockApi.attesterConfig = {
returnError: {
code: 400,
message: "some client err"
}
};

await NewMessageScreen.setAddRecipient(validEmail);
await NewMessageScreen.setAddRecipient(expiredEmail);
await NewMessageScreen.setAddRecipient(revokedEmail);

await NewMessageScreen.checkAddedRecipientColor(validEmail, 0, 'green');
await NewMessageScreen.checkAddedRecipientColor(expiredEmail, 1, 'red');
await NewMessageScreen.checkAddedRecipientColor(revokedEmail, 2, 'red');
});
});
});
10 changes: 5 additions & 5 deletions appium/tests/specs/mock/setup/FindEmailOnAttester.spec.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { MockApi } from 'api-mocks/mock';
import {
SplashScreen,
SplashScreen,
} from '../../../screenobjects/all-screens';
import {attesterPublicKeySamples} from "../../../../api-mocks/apis/attester/attester-endpoints";
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";
Expand All @@ -18,9 +18,9 @@ describe('SETUP: ', () => {
}
};
mockApi.attesterConfig = {
servedPubkeys: {
'available.on@attester.test': attesterPublicKeySamples.valid
}
servedPubkeys: {
'available.on@attester.test': attesterPublicKeySamples.valid
}
};
await mockApi.withMockedApis(async () => {
await SplashScreen.login();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { MockApi } from 'api-mocks/mock';
import {
SplashScreen,
SplashScreen,
} from '../../../screenobjects/all-screens';
import {attesterPublicKeySamples} from "../../../../api-mocks/apis/attester/attester-endpoints";
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";
Expand All @@ -21,8 +21,8 @@ describe('SETUP: ', () => {
};
mockApi.attesterConfig = {
servedPubkeys: {
'attester@disabled.test': attesterPublicKeySamples.valid,
'attester@enabled.test': attesterPublicKeySamples.valid
'attester@disabled.test': attesterPublicKeySamples.valid,
'attester@enabled.test': attesterPublicKeySamples.valid
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,4 @@ describe('SETUP: ', () => {
await BaseScreen.checkModalMessage('Error\n' + 'Please check if key manager url set correctly');
});
});

});