test: update http credentials tests (#2806)
This commit is contained in:
parent
06957e8ed5
commit
ac2185a9d9
|
|
@ -202,14 +202,6 @@ export class FFBrowserContext extends BrowserContextBase {
|
||||||
return Array.from(this._browser._ffPages.values()).filter(ffPage => ffPage._browserContext === this);
|
return Array.from(this._browser._ffPages.values()).filter(ffPage => ffPage._browserContext === this);
|
||||||
}
|
}
|
||||||
|
|
||||||
setDefaultNavigationTimeout(timeout: number) {
|
|
||||||
this._timeoutSettings.setDefaultNavigationTimeout(timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
setDefaultTimeout(timeout: number) {
|
|
||||||
this._timeoutSettings.setDefaultTimeout(timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
pages(): Page[] {
|
pages(): Page[] {
|
||||||
return this._ffPages().map(ffPage => ffPage._initializedPage).filter(pageOrNull => !!pageOrNull) as Page[];
|
return this._ffPages().map(ffPage => ffPage._initializedPage).filter(pageOrNull => !!pageOrNull) as Page[];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ describe.skip(!process.env.COVERAGE)('**API COVERAGE**', () => {
|
||||||
{
|
{
|
||||||
name: 'Firefox',
|
name: 'Firefox',
|
||||||
events: require('../lib/events').Events,
|
events: require('../lib/events').Events,
|
||||||
missingCoverage: ['browserContext.setGeolocation', 'browserContext.setOffline', 'cDPSession.send', 'cDPSession.detach'],
|
missingCoverage: ['cDPSession.send', 'cDPSession.detach'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'WebKit',
|
name: 'WebKit',
|
||||||
|
|
@ -73,7 +73,12 @@ describe.skip(!process.env.COVERAGE)('**API COVERAGE**', () => {
|
||||||
];
|
];
|
||||||
const browserConfig = BROWSER_CONFIGS.find(config => config.name.toLowerCase() === browserType.name());
|
const browserConfig = BROWSER_CONFIGS.find(config => config.name.toLowerCase() === browserType.name());
|
||||||
const events = browserConfig.events;
|
const events = browserConfig.events;
|
||||||
const api = require('../lib/api');
|
// TODO: we should rethink our api.ts approach to ensure coverage and async stacks.
|
||||||
|
const api = {
|
||||||
|
...require('../lib/api'),
|
||||||
|
Browser: require('../lib/browser').BrowserBase,
|
||||||
|
BrowserContext: require('../lib/browserContext').BrowserContextBase,
|
||||||
|
};
|
||||||
|
|
||||||
const coverage = new Map();
|
const coverage = new Map();
|
||||||
Object.keys(api).forEach(apiName => {
|
Object.keys(api).forEach(apiName => {
|
||||||
|
|
|
||||||
|
|
@ -487,74 +487,43 @@ describe('BrowserContext.route', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('BrowserContext.setHTTPCredentials', function() {
|
describe('BrowserContext({httpCredentials})', function() {
|
||||||
it.fail(CHROMIUM && !HEADLESS)('should work', async({browser, server}) => {
|
it.fail(CHROMIUM && !HEADLESS)('should fail without credentials', async({browser, server}) => {
|
||||||
|
server.setAuth('/empty.html', 'user', 'pass');
|
||||||
|
const context = await browser.newContext();
|
||||||
|
const page = await context.newPage();
|
||||||
|
const response = await page.goto(server.EMPTY_PAGE);
|
||||||
|
expect(response.status()).toBe(401);
|
||||||
|
await context.close();
|
||||||
|
});
|
||||||
|
it.fail(CHROMIUM && !HEADLESS)('should work with setHTTPCredentials', async({browser, server}) => {
|
||||||
server.setAuth('/empty.html', 'user', 'pass');
|
server.setAuth('/empty.html', 'user', 'pass');
|
||||||
const context = await browser.newContext();
|
const context = await browser.newContext();
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
let response = await page.goto(server.EMPTY_PAGE);
|
let response = await page.goto(server.EMPTY_PAGE);
|
||||||
expect(response.status()).toBe(401);
|
expect(response.status()).toBe(401);
|
||||||
await context.setHTTPCredentials({
|
await context.setHTTPCredentials({ username: 'user', password: 'pass' });
|
||||||
username: 'user',
|
|
||||||
password: 'pass'
|
|
||||||
});
|
|
||||||
response = await page.reload();
|
response = await page.reload();
|
||||||
expect(response.status()).toBe(200);
|
expect(response.status()).toBe(200);
|
||||||
await context.close();
|
await context.close();
|
||||||
});
|
});
|
||||||
it('should fail if wrong credentials', async({browser, server}) => {
|
it('should work with correct credentials', async({browser, server}) => {
|
||||||
|
server.setAuth('/empty.html', 'user', 'pass');
|
||||||
|
const context = await browser.newContext({
|
||||||
|
httpCredentials: { username: 'user', password: 'pass' }
|
||||||
|
});
|
||||||
|
const page = await context.newPage();
|
||||||
|
const response = await page.goto(server.EMPTY_PAGE);
|
||||||
|
expect(response.status()).toBe(200);
|
||||||
|
await context.close();
|
||||||
|
});
|
||||||
|
it.fail(CHROMIUM && !HEADLESS)('should fail with wrong credentials', async({browser, server}) => {
|
||||||
server.setAuth('/empty.html', 'user', 'pass');
|
server.setAuth('/empty.html', 'user', 'pass');
|
||||||
const context = await browser.newContext({
|
const context = await browser.newContext({
|
||||||
httpCredentials: { username: 'foo', password: 'bar' }
|
httpCredentials: { username: 'foo', password: 'bar' }
|
||||||
});
|
});
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
let response = await page.goto(server.EMPTY_PAGE);
|
const response = await page.goto(server.EMPTY_PAGE);
|
||||||
expect(response.status()).toBe(401);
|
|
||||||
await context.setHTTPCredentials({
|
|
||||||
username: 'user',
|
|
||||||
password: 'pass'
|
|
||||||
});
|
|
||||||
response = await page.goto(server.EMPTY_PAGE);
|
|
||||||
expect(response.status()).toBe(200);
|
|
||||||
await context.close();
|
|
||||||
});
|
|
||||||
it.fail(CHROMIUM && !HEADLESS)('should allow disable authentication', async({browser, server}) => {
|
|
||||||
server.setAuth('/empty.html', 'user', 'pass');
|
|
||||||
const context = await browser.newContext({
|
|
||||||
httpCredentials: { username: 'user', password: 'pass' }
|
|
||||||
});
|
|
||||||
const page = await context.newPage();
|
|
||||||
let response = await page.goto(server.EMPTY_PAGE);
|
|
||||||
expect(response.status()).toBe(200);
|
|
||||||
await context.setHTTPCredentials(null);
|
|
||||||
// Navigate to a different origin to bust Chromium's credential caching.
|
|
||||||
response = await page.goto(server.CROSS_PROCESS_PREFIX + '/empty.html');
|
|
||||||
expect(response.status()).toBe(401);
|
|
||||||
await context.close();
|
|
||||||
});
|
|
||||||
it.fail(true)('should update', async({browser, server}) => {
|
|
||||||
server.setAuth('/empty.html', 'user', 'pass');
|
|
||||||
const context = await browser.newContext({
|
|
||||||
httpCredentials: { username: 'user', password: 'pass' }
|
|
||||||
});
|
|
||||||
const page = await context.newPage();
|
|
||||||
let response = await page.goto(server.EMPTY_PAGE);
|
|
||||||
expect(response.status()).toBe(200);
|
|
||||||
await context.setHTTPCredentials({ username: 'user', password: 'letmein' });
|
|
||||||
response = await page.goto(server.EMPTY_PAGE);
|
|
||||||
expect(response.status()).toBe(401);
|
|
||||||
await context.close();
|
|
||||||
});
|
|
||||||
it.fail(true)('should update to null', async({browser, server}) => {
|
|
||||||
server.setAuth('/empty.html', 'user', 'pass');
|
|
||||||
const context = await browser.newContext({
|
|
||||||
httpCredentials: { username: 'user', password: 'pass' }
|
|
||||||
});
|
|
||||||
const page = await context.newPage();
|
|
||||||
let response = await page.goto(server.EMPTY_PAGE);
|
|
||||||
expect(response.status()).toBe(200);
|
|
||||||
await context.setHTTPCredentials(null);
|
|
||||||
response = await page.goto(server.EMPTY_PAGE);
|
|
||||||
expect(response.status()).toBe(401);
|
expect(response.status()).toBe(401);
|
||||||
await context.close();
|
await context.close();
|
||||||
});
|
});
|
||||||
|
|
@ -564,7 +533,7 @@ describe('BrowserContext.setHTTPCredentials', function() {
|
||||||
httpCredentials: { username: 'user', password: 'pass' }
|
httpCredentials: { username: 'user', password: 'pass' }
|
||||||
});
|
});
|
||||||
const page = await context.newPage();
|
const page = await context.newPage();
|
||||||
let response = await page.goto(server.PREFIX + '/playground.html');
|
const response = await page.goto(server.PREFIX + '/playground.html');
|
||||||
expect(response.status()).toBe(200);
|
expect(response.status()).toBe(200);
|
||||||
expect(await page.title()).toBe("Playground");
|
expect(await page.title()).toBe("Playground");
|
||||||
expect((await response.body()).toString()).toContain("Playground");
|
expect((await response.body()).toString()).toContain("Playground");
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue