UNPKG

appium-xcuitest-driver

Version:

Appium driver for iOS using XCUITest for backend

131 lines 5.57 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const bluebird_1 = __importDefault(require("bluebird")); const https_1 = __importDefault(require("https")); const ports_1 = require("../helpers/ports"); const os_1 = __importDefault(require("os")); const pem_1 = __importDefault(require("pem")); const desired_1 = require("../desired"); const session_1 = require("../helpers/session"); const helpers_1 = require("./helpers"); const asyncbox_1 = require("asyncbox"); const chai_1 = __importDefault(require("chai")); const chai_as_promised_1 = __importDefault(require("chai-as-promised")); chai_1.default.use(chai_as_promised_1.default); const pem = bluebird_1.default.promisifyAll(pem_1.default); let caps; let pemCertificate; describe('Safari SSL', function () { this.timeout(session_1.MOCHA_TIMEOUT); /** @type {import('node:https').Server} */ let sslServer; let driver; /** @type {string} */ let localHttpsUrl; before(async function () { // Create a random pem certificate const privateKey = await pem.createPrivateKeyAsync(); const keys = await pem.createCertificateAsync({ days: 1, selfSigned: true, serviceKey: privateKey.key, altNames: ['localhost'], }); pemCertificate = keys.certificate; const port = await (0, ports_1.getFreePort)(); localHttpsUrl = `https://localhost:${port}/`; // Host an SSL server that uses that certificate const serverOpts = { key: keys.serviceKey, cert: pemCertificate }; sslServer = https_1.default .createServer(serverOpts, (req, res) => { res.end('Arbitrary text'); }) .listen(port); caps = (0, desired_1.amendCapabilities)(desired_1.SAFARI_CAPS, { 'appium:safariInitialUrl': localHttpsUrl, 'appium:noReset': true, 'appium:customSSLCert': pemCertificate + os_1.default.EOL, }); }); after(async function () { await (0, session_1.deleteSession)(); if (sslServer) { await sslServer.close(); } }); it('should open pages with untrusted certs if the cert was provided in desired capabilities', async function () { const assertPageSource = async () => { await (0, asyncbox_1.waitForCondition)(async () => (await driver.getPageSource()).includes('Arbitrary text'), { waitMs: 10000, intervalMs: 500, }); }; try { driver = await (0, session_1.initSession)(caps); await assertPageSource(); } finally { await (0, session_1.deleteSession)(); } await bluebird_1.default.delay(100); // Now do another session using the same cert to verify that it still works try { driver = await (0, session_1.initSession)(caps); await driver.url(localHttpsUrl); await assertPageSource(); } finally { await (0, session_1.deleteSession)(); } }); describe('cookies', function () { const secureCookie = { ...helpers_1.newCookie, secure: true, name: 'securecookie', value: 'this is a secure cookie', }; before(async function () { driver = await (0, session_1.initSession)(caps); }); beforeEach(async function () { await driver.url(localHttpsUrl); await driver.setCookies([helpers_1.oldCookie1]); await driver.deleteCookie(secureCookie.name); }); it('should be able to set a secure cookie', async function () { let cookies = await driver.getCookies(); (0, helpers_1.doesNotIncludeCookie)(cookies, secureCookie); await driver.setCookies([secureCookie]); cookies = await driver.getCookies(); (0, helpers_1.doesIncludeCookie)(cookies, secureCookie); }); it('should not delete an old cookie after setting a secure cookie', async function () { let cookies = await driver.getCookies(); (0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1); await driver.setCookies([secureCookie]); cookies = await driver.getCookies(); (0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1); }); it('should be able to delete a secure cookie', async function () { await driver.setCookies([secureCookie]); let cookies = await driver.getCookies(); (0, helpers_1.doesIncludeCookie)(cookies, secureCookie); await driver.deleteCookie(secureCookie.name); cookies = await driver.getCookies(); (0, helpers_1.doesNotIncludeCookie)(cookies, secureCookie); }); it('should not delete a cookie after deleting a secure cookie', async function () { await driver.setCookies([secureCookie]); let cookies = await driver.getCookies(); (0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1); await driver.deleteCookie(secureCookie.name); cookies = await driver.getCookies(); (0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1); }); }); }); //# sourceMappingURL=safari-ssl-e2e-specs.js.map