mirror of
https://github.com/morten-olsen/parcel.git
synced 2026-02-08 01:36:24 +01:00
feat: Add E2E tests (#4)
This commit is contained in:
76
tests/encryption.test.ts
Normal file
76
tests/encryption.test.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import puppeteer, { Browser, Page } from 'puppeteer';
|
||||
import path from 'path';
|
||||
import fs from 'fs-extra';
|
||||
import { nanoid } from 'nanoid';
|
||||
import openpgp, { key, message } from 'openpgp';
|
||||
|
||||
const sleep = (time: number) => new Promise((resolve) => setTimeout(resolve, time));
|
||||
|
||||
describe('encryption', () => {
|
||||
let browser: Browser;
|
||||
let page: Page;
|
||||
let tmpDir: string;
|
||||
let keys: key.KeyResult;
|
||||
|
||||
const getText = async (elm: any) => {
|
||||
const text = await page.evaluate(el => el.textContent, elm);
|
||||
return text;
|
||||
}
|
||||
|
||||
beforeAll(async () => {
|
||||
tmpDir = path.resolve(`.tmp/${nanoid}`);
|
||||
await fs.mkdirp(tmpDir);
|
||||
const data = await fs.readFile(
|
||||
path.join(__dirname, '..', 'test-assets', 'key'),
|
||||
'utf-8',
|
||||
);
|
||||
keys = await key.readArmored(data);
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
browser = await puppeteer.launch({
|
||||
args: [
|
||||
'--no-sandbox',
|
||||
'--disable-setuid-sandbox',
|
||||
]
|
||||
});
|
||||
page = await browser.newPage();
|
||||
(page as any)._client.send('Page.setDownloadBehavior', {
|
||||
behavior: 'allow',
|
||||
downloadPath: tmpDir,
|
||||
});
|
||||
await page.goto(testUrl, {
|
||||
waitUntil: 'networkidle2',
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await browser.close();
|
||||
});
|
||||
|
||||
it('should be able to encrypt a text', async () => {
|
||||
await page.click('.send-btn');
|
||||
await page.click('.add-text-tab');
|
||||
await page.type('.msg-title', 'Foo');
|
||||
await page.type('.msg-body', 'Bar');
|
||||
await page.click('.msg-add');
|
||||
await sleep(300);
|
||||
const items = await page.$$('.msg-item');
|
||||
expect(items.length).toBe(1);
|
||||
const [item] = items;
|
||||
const title = await item.$('.ant-list-item-meta-title');
|
||||
const titleText = await getText(title);
|
||||
expect(titleText).toBe('Foo.txt.asc');
|
||||
await page.click('.msg-download');
|
||||
await sleep(300);
|
||||
const downloadPath = path.join(tmpDir, 'Foo.txt.asc');
|
||||
expect(fs.existsSync(downloadPath)).toBe(true);
|
||||
const data = await fs.readFile(downloadPath, 'utf-8');
|
||||
|
||||
const decrypted = await openpgp.decrypt({
|
||||
message: await message.readArmored(data),
|
||||
privateKeys: keys.keys[0],
|
||||
});
|
||||
expect(decrypted.data).toBe('Bar');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user