testcafe-browser-provider-browserstack
Version:
Browserstack TestCafe browser provider plugin.
75 lines • 7.67 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const node_fetch_1 = __importDefault(require("node-fetch"));
const https_proxy_agent_1 = require("https-proxy-agent");
const ERROR_MESSAGES = __importStar(require("../templates/error-messages"));
async function default_1(apiPath, params = {}) {
if (!process.env['BROWSERSTACK_USERNAME'] || !process.env['BROWSERSTACK_ACCESS_KEY'])
throw new Error(ERROR_MESSAGES.BROWSERSTACK_AUTHENTICATION_FAILED());
const { body } = params, queryParams = __rest(params, ["body"]);
const urlObj = new URL(apiPath.url);
for (const [key, value] of Object.entries(queryParams))
urlObj.searchParams.append(key, value);
const url = urlObj.toString();
const user = process.env['BROWSERSTACK_USERNAME'];
const pass = process.env['BROWSERSTACK_ACCESS_KEY'];
const options = {
method: apiPath.method || 'GET',
headers: {
'Authorization': `Basic ${Buffer.from(user + ':' + pass).toString('base64')}`,
'User-Agent': 'testcafe-browserstack',
},
};
const proxy = process.env['BROWSERSTACK_PROXY'];
if (proxy)
options.agent = new https_proxy_agent_1.HttpsProxyAgent(`http://${proxy}`);
if (body) {
options.body = JSON.stringify(body);
options.headers['Content-Type'] = 'application/json';
}
const res = await (0, node_fetch_1.default)(url, options);
if (res.status === 401)
throw new Error(ERROR_MESSAGES.BROWSERSTACK_AUTHENTICATION_FAILED());
if (apiPath.encoding === null)
return Buffer.from(await res.arrayBuffer());
return res.json();
}
exports.default = default_1;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVxdWVzdC1hcGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNERBQStCO0FBQy9CLHlEQUFvRDtBQUNwRCw0RUFBOEQ7QUFFL0MsS0FBSyxvQkFBVyxPQUFPLEVBQUUsTUFBTSxHQUFHLEVBQUU7SUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7UUFDaEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDO0lBRXpFLE1BQU0sRUFBRSxJQUFJLEtBQXFCLE1BQU0sRUFBdEIsV0FBVyxVQUFLLE1BQU0sRUFBakMsUUFBd0IsQ0FBUyxDQUFDO0lBRXhDLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVwQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDbEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUU5QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRXBELE1BQU0sT0FBTyxHQUFHO1FBQ1osTUFBTSxFQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSztRQUNoQyxPQUFPLEVBQUU7WUFDTCxlQUFlLEVBQUUsU0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdFLFlBQVksRUFBSyx1QkFBdUI7U0FDM0M7S0FDSixDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRWhELElBQUksS0FBSztRQUNMLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxtQ0FBZSxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLElBQUksRUFBRTtRQUNOLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO0tBQ3hEO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLG9CQUFLLEVBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLGtDQUFrQyxFQUFFLENBQUMsQ0FBQztJQUV6RSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSTtRQUN6QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUVoRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixDQUFDO0FBM0NELDRCQTJDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IEh0dHBzUHJveHlBZ2VudCB9IGZyb20gJ2h0dHBzLXByb3h5LWFnZW50JztcbmltcG9ydCAqIGFzIEVSUk9SX01FU1NBR0VTIGZyb20gJy4uL3RlbXBsYXRlcy9lcnJvci1tZXNzYWdlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIChhcGlQYXRoLCBwYXJhbXMgPSB7fSkge1xuICAgIGlmICghcHJvY2Vzcy5lbnZbJ0JST1dTRVJTVEFDS19VU0VSTkFNRSddIHx8ICFwcm9jZXNzLmVudlsnQlJPV1NFUlNUQUNLX0FDQ0VTU19LRVknXSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01FU1NBR0VTLkJST1dTRVJTVEFDS19BVVRIRU5USUNBVElPTl9GQUlMRUQoKSk7XG5cbiAgICBjb25zdCB7IGJvZHksIC4uLnF1ZXJ5UGFyYW1zIH0gPSBwYXJhbXM7XG5cbiAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKGFwaVBhdGgudXJsKTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHF1ZXJ5UGFyYW1zKSlcbiAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG5cbiAgICBjb25zdCB1cmwgPSB1cmxPYmoudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHVzZXIgPSBwcm9jZXNzLmVudlsnQlJPV1NFUlNUQUNLX1VTRVJOQU1FJ107XG4gICAgY29uc3QgcGFzcyA9IHByb2Nlc3MuZW52WydCUk9XU0VSU1RBQ0tfQUNDRVNTX0tFWSddO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAgYXBpUGF0aC5tZXRob2QgfHwgJ0dFVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7QnVmZmVyLmZyb20odXNlciArICc6JyArIHBhc3MpLnRvU3RyaW5nKCdiYXNlNjQnKX1gLFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAgICAndGVzdGNhZmUtYnJvd3NlcnN0YWNrJyxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcHJveHkgPSBwcm9jZXNzLmVudlsnQlJPV1NFUlNUQUNLX1BST1hZJ107XG5cbiAgICBpZiAocHJveHkpXG4gICAgICAgIG9wdGlvbnMuYWdlbnQgPSBuZXcgSHR0cHNQcm94eUFnZW50KGBodHRwOi8vJHtwcm94eX1gKTtcblxuICAgIGlmIChib2R5KSB7XG4gICAgICAgIG9wdGlvbnMuYm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgb3B0aW9ucyk7XG5cbiAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDAxKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTUVTU0FHRVMuQlJPV1NFUlNUQUNLX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRCgpKTtcblxuICAgIGlmIChhcGlQYXRoLmVuY29kaW5nID09PSBudWxsKVxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oYXdhaXQgcmVzLmFycmF5QnVmZmVyKCkpO1xuXG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG59XG4iXX0=