test: convert functions to async & eliminate duplicates (#37316)
test: convert functions to async Co-authored-by: Milan Burda <miburda@microsoft.com>
This commit is contained in:
parent
969665eaa2
commit
f97d68c4bf
24 changed files with 225 additions and 343 deletions
|
@ -9,8 +9,7 @@ import * as send from 'send';
|
|||
import * as auth from 'basic-auth';
|
||||
import { closeAllWindows } from './lib/window-helpers';
|
||||
import { emittedOnce } from './lib/events-helpers';
|
||||
import { defer, delay } from './lib/spec-helpers';
|
||||
import { AddressInfo } from 'net';
|
||||
import { defer, delay, listen } from './lib/spec-helpers';
|
||||
|
||||
/* The whole session API doesn't use standard callbacks */
|
||||
/* eslint-disable standard/no-callback-literal */
|
||||
|
@ -51,8 +50,7 @@ describe('session module', () => {
|
|||
res.end('finished');
|
||||
server.close();
|
||||
});
|
||||
await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||
const { port } = server.address() as AddressInfo;
|
||||
const { port } = await listen(server);
|
||||
const w = new BrowserWindow({ show: false });
|
||||
await w.loadURL(`${url}:${port}`);
|
||||
const list = await w.webContents.session.cookies.get({ url });
|
||||
|
@ -275,10 +273,7 @@ describe('session module', () => {
|
|||
res.end(mockFile);
|
||||
downloadServer.close();
|
||||
});
|
||||
await new Promise<void>(resolve => downloadServer.listen(0, '127.0.0.1', resolve));
|
||||
|
||||
const port = (downloadServer.address() as AddressInfo).port;
|
||||
const url = `http://127.0.0.1:${port}/`;
|
||||
const url = (await listen(downloadServer)).url;
|
||||
|
||||
const downloadPrevented: Promise<{itemUrl: string, itemFilename: string, item: Electron.DownloadItem}> = new Promise(resolve => {
|
||||
w.webContents.session.once('will-download', function (e, item) {
|
||||
|
@ -288,7 +283,7 @@ describe('session module', () => {
|
|||
});
|
||||
w.loadURL(url);
|
||||
const { item, itemUrl, itemFilename } = await downloadPrevented;
|
||||
expect(itemUrl).to.equal(url);
|
||||
expect(itemUrl).to.equal(url + '/');
|
||||
expect(itemFilename).to.equal('mockFile.txt');
|
||||
// Delay till the next tick.
|
||||
await new Promise(setImmediate);
|
||||
|
@ -392,15 +387,15 @@ describe('session module', () => {
|
|||
});
|
||||
res.end(pac);
|
||||
});
|
||||
await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||
const { url } = await listen(server);
|
||||
{
|
||||
const config = { pacScript: `http://127.0.0.1:${(server.address() as AddressInfo).port}` };
|
||||
const config = { pacScript: url };
|
||||
await customSession.setProxy(config);
|
||||
const proxy = await customSession.resolveProxy('https://google.com');
|
||||
expect(proxy).to.equal('PROXY myproxy:8132');
|
||||
}
|
||||
{
|
||||
const config = { mode: 'pac_script' as any, pacScript: `http://127.0.0.1:${(server.address() as AddressInfo).port}` };
|
||||
const config = { mode: 'pac_script' as any, pacScript: url };
|
||||
await customSession.setProxy(config);
|
||||
const proxy = await customSession.resolveProxy('https://google.com');
|
||||
expect(proxy).to.equal('PROXY myproxy:8132');
|
||||
|
@ -466,8 +461,8 @@ describe('session module', () => {
|
|||
});
|
||||
res.end(pac);
|
||||
});
|
||||
await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||
const config = { mode: 'pac_script' as any, pacScript: `http://127.0.0.1:${(server.address() as AddressInfo).port}` };
|
||||
const { url } = await listen(server);
|
||||
const config = { mode: 'pac_script' as any, pacScript: url };
|
||||
await customSession.setProxy(config);
|
||||
{
|
||||
const proxy = await customSession.resolveProxy('https://google.com');
|
||||
|
@ -575,8 +570,9 @@ describe('session module', () => {
|
|||
|
||||
describe('ses.setCertificateVerifyProc(callback)', () => {
|
||||
let server: http.Server;
|
||||
let serverUrl: string;
|
||||
|
||||
beforeEach((done) => {
|
||||
beforeEach(async () => {
|
||||
const certPath = path.join(fixtures, 'certificates');
|
||||
const options = {
|
||||
key: fs.readFileSync(path.join(certPath, 'server.key')),
|
||||
|
@ -592,7 +588,7 @@ describe('session module', () => {
|
|||
res.writeHead(200);
|
||||
res.end('<title>hello</title>');
|
||||
});
|
||||
server.listen(0, '127.0.0.1', done);
|
||||
serverUrl = (await listen(server)).url;
|
||||
});
|
||||
|
||||
afterEach((done) => {
|
||||
|
@ -613,7 +609,7 @@ describe('session module', () => {
|
|||
});
|
||||
|
||||
const w = new BrowserWindow({ show: false, webPreferences: { session: ses } });
|
||||
await w.loadURL(`https://127.0.0.1:${(server.address() as AddressInfo).port}`);
|
||||
await w.loadURL(serverUrl);
|
||||
expect(w.webContents.getTitle()).to.equal('hello');
|
||||
expect(validate!).not.to.be.undefined();
|
||||
validate!();
|
||||
|
@ -640,10 +636,9 @@ describe('session module', () => {
|
|||
callback(-2);
|
||||
});
|
||||
|
||||
const url = `https://127.0.0.1:${(server.address() as AddressInfo).port}`;
|
||||
const w = new BrowserWindow({ show: false, webPreferences: { session: ses } });
|
||||
await expect(w.loadURL(url)).to.eventually.be.rejectedWith(/ERR_FAILED/);
|
||||
expect(w.webContents.getTitle()).to.equal(url);
|
||||
await expect(w.loadURL(serverUrl)).to.eventually.be.rejectedWith(/ERR_FAILED/);
|
||||
expect(w.webContents.getTitle()).to.equal(serverUrl);
|
||||
expect(validate!).not.to.be.undefined();
|
||||
validate!();
|
||||
});
|
||||
|
@ -657,12 +652,11 @@ describe('session module', () => {
|
|||
callback(-2);
|
||||
});
|
||||
|
||||
const url = `https://127.0.0.1:${(server.address() as AddressInfo).port}`;
|
||||
const w = new BrowserWindow({ show: false, webPreferences: { session: ses } });
|
||||
await expect(w.loadURL(url), 'first load').to.eventually.be.rejectedWith(/ERR_FAILED/);
|
||||
await expect(w.loadURL(serverUrl), 'first load').to.eventually.be.rejectedWith(/ERR_FAILED/);
|
||||
await emittedOnce(w.webContents, 'did-stop-loading');
|
||||
await expect(w.loadURL(url + '/test'), 'second load').to.eventually.be.rejectedWith(/ERR_FAILED/);
|
||||
expect(w.webContents.getTitle()).to.equal(url + '/test');
|
||||
await expect(w.loadURL(serverUrl + '/test'), 'second load').to.eventually.be.rejectedWith(/ERR_FAILED/);
|
||||
expect(w.webContents.getTitle()).to.equal(serverUrl + '/test');
|
||||
expect(numVerificationRequests).to.equal(1);
|
||||
});
|
||||
|
||||
|
@ -671,8 +665,7 @@ describe('session module', () => {
|
|||
ses1.setCertificateVerifyProc((opts, cb) => cb(0));
|
||||
const ses2 = session.fromPartition(`${Math.random()}`);
|
||||
|
||||
const url = `https://127.0.0.1:${(server.address() as AddressInfo).port}`;
|
||||
const req = net.request({ url, session: ses1, credentials: 'include' });
|
||||
const req = net.request({ url: serverUrl, session: ses1, credentials: 'include' });
|
||||
req.end();
|
||||
setTimeout(() => {
|
||||
ses2.setCertificateVerifyProc((opts, callback) => callback(0));
|
||||
|
@ -701,8 +694,7 @@ describe('session module', () => {
|
|||
res.end('authenticated');
|
||||
}
|
||||
});
|
||||
await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||
const port = (server.address() as AddressInfo).port;
|
||||
const { port } = await listen(server);
|
||||
const fetch = (url: string) => new Promise((resolve, reject) => {
|
||||
const request = net.request({ url, session: ses });
|
||||
request.on('response', (response) => {
|
||||
|
@ -742,7 +734,7 @@ describe('session module', () => {
|
|||
const downloadFilePath = path.join(__dirname, '..', 'fixtures', 'mock.pdf');
|
||||
const protocolName = 'custom-dl';
|
||||
const contentDisposition = 'inline; filename="mock.pdf"';
|
||||
let address: AddressInfo;
|
||||
let port: number;
|
||||
let downloadServer: http.Server;
|
||||
before(async () => {
|
||||
downloadServer = http.createServer((req, res) => {
|
||||
|
@ -753,8 +745,7 @@ describe('session module', () => {
|
|||
});
|
||||
res.end(mockPDF);
|
||||
});
|
||||
await new Promise<void>(resolve => downloadServer.listen(0, '127.0.0.1', resolve));
|
||||
address = downloadServer.address() as AddressInfo;
|
||||
port = (await listen(downloadServer)).port;
|
||||
});
|
||||
after(async () => {
|
||||
await new Promise(resolve => downloadServer.close(resolve));
|
||||
|
@ -772,7 +763,7 @@ describe('session module', () => {
|
|||
if (isCustom) {
|
||||
expect(item.getURL()).to.equal(`${protocolName}://item`);
|
||||
} else {
|
||||
expect(item.getURL()).to.be.equal(`${url}:${address.port}/`);
|
||||
expect(item.getURL()).to.be.equal(`${url}:${port}/`);
|
||||
}
|
||||
expect(item.getMimeType()).to.equal('application/pdf');
|
||||
expect(item.getReceivedBytes()).to.equal(mockPDF.length);
|
||||
|
@ -783,7 +774,6 @@ describe('session module', () => {
|
|||
};
|
||||
|
||||
it('can download using session.downloadURL', (done) => {
|
||||
const port = address.port;
|
||||
session.defaultSession.once('will-download', function (e, item) {
|
||||
item.savePath = downloadFilePath;
|
||||
item.on('done', function (e, state) {
|
||||
|
@ -799,7 +789,6 @@ describe('session module', () => {
|
|||
});
|
||||
|
||||
it('can download using WebContents.downloadURL', (done) => {
|
||||
const port = address.port;
|
||||
const w = new BrowserWindow({ show: false });
|
||||
w.webContents.session.once('will-download', function (e, item) {
|
||||
item.savePath = downloadFilePath;
|
||||
|
@ -817,7 +806,6 @@ describe('session module', () => {
|
|||
|
||||
it('can download from custom protocols using WebContents.downloadURL', (done) => {
|
||||
const protocol = session.defaultSession.protocol;
|
||||
const port = address.port;
|
||||
const handler = (ignoredError: any, callback: Function) => {
|
||||
callback({ url: `${url}:${port}` });
|
||||
};
|
||||
|
@ -838,7 +826,6 @@ describe('session module', () => {
|
|||
});
|
||||
|
||||
it('can download using WebView.downloadURL', async () => {
|
||||
const port = address.port;
|
||||
const w = new BrowserWindow({ show: false, webPreferences: { webviewTag: true } });
|
||||
await w.loadURL('about:blank');
|
||||
function webviewDownload ({ fixtures, url, port }: {fixtures: string, url: string, port: string}) {
|
||||
|
@ -863,7 +850,6 @@ describe('session module', () => {
|
|||
});
|
||||
|
||||
it('can cancel download', (done) => {
|
||||
const port = address.port;
|
||||
const w = new BrowserWindow({ show: false });
|
||||
w.webContents.session.once('will-download', function (e, item) {
|
||||
item.savePath = downloadFilePath;
|
||||
|
@ -892,7 +878,6 @@ describe('session module', () => {
|
|||
return done();
|
||||
}
|
||||
|
||||
const port = address.port;
|
||||
const w = new BrowserWindow({ show: false });
|
||||
w.webContents.session.once('will-download', function (e, item) {
|
||||
item.savePath = downloadFilePath;
|
||||
|
@ -911,7 +896,6 @@ describe('session module', () => {
|
|||
|
||||
it('can set options for the save dialog', (done) => {
|
||||
const filePath = path.join(__dirname, 'fixtures', 'mock.pdf');
|
||||
const port = address.port;
|
||||
const options = {
|
||||
window: null,
|
||||
title: 'title',
|
||||
|
@ -999,8 +983,7 @@ describe('session module', () => {
|
|||
.on('error', (error: any) => { throw error; }).pipe(res);
|
||||
});
|
||||
try {
|
||||
await new Promise<void>(resolve => rangeServer.listen(0, '127.0.0.1', resolve));
|
||||
const port = (rangeServer.address() as AddressInfo).port;
|
||||
const { url } = await listen(rangeServer);
|
||||
const w = new BrowserWindow({ show: false });
|
||||
const downloadCancelled: Promise<Electron.DownloadItem> = new Promise((resolve) => {
|
||||
w.webContents.session.once('will-download', function (e, item) {
|
||||
|
@ -1011,7 +994,7 @@ describe('session module', () => {
|
|||
item.cancel();
|
||||
});
|
||||
});
|
||||
const downloadUrl = `http://127.0.0.1:${port}/assets/logo.png`;
|
||||
const downloadUrl = `${url}/assets/logo.png`;
|
||||
w.webContents.downloadURL(downloadUrl);
|
||||
const item = await downloadCancelled;
|
||||
expect(item.getState()).to.equal('cancelled');
|
||||
|
@ -1062,8 +1045,7 @@ describe('session module', () => {
|
|||
res.setHeader('Content-Type', 'text/html');
|
||||
res.end('');
|
||||
});
|
||||
await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||
serverUrl = `http://localhost:${(server.address() as any).port}`;
|
||||
serverUrl = (await listen(server)).url;
|
||||
});
|
||||
after(() => {
|
||||
server.close();
|
||||
|
@ -1269,8 +1251,8 @@ describe('session module', () => {
|
|||
res.end();
|
||||
server.close();
|
||||
});
|
||||
await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||
await w.loadURL(`http://127.0.0.1:${(server.address() as AddressInfo).port}`);
|
||||
const { url } = await listen(server);
|
||||
await w.loadURL(url);
|
||||
expect(headers!['user-agent']).to.equal(userAgent);
|
||||
expect(headers!['accept-language']).to.equal('en-US,fr;q=0.9,de;q=0.8');
|
||||
});
|
||||
|
@ -1335,9 +1317,8 @@ describe('session module', () => {
|
|||
}, (req, res) => {
|
||||
res.end('hi');
|
||||
});
|
||||
await new Promise<void>(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||
const { port } = await listen(server);
|
||||
defer(() => server.close());
|
||||
const { port } = server.address() as AddressInfo;
|
||||
|
||||
function request () {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue