UNPKG

@mytmpvpn/mytmpvpn-client

Version:

MyTmpVpn Client Library

116 lines (115 loc) 4.88 kB
"use strict"; 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteCleanUpAllAndDeleteAuthUser = exports.createAuthUser = exports.cleanUp = exports.cleanUpAll = exports.getMaxPeanutsConfig = exports.getGoodPeanutsConfig = exports.getMinPeanutsConfig = exports.getTooManyPeanutsConfig = exports.getTooFewPeanutsConfig = exports.VPN_GEONAMES_ID = void 0; const loglevel_1 = __importDefault(require("loglevel")); const util = __importStar(require("util")); const vpnlib = __importStar(require("@mytmpvpn/mytmpvpn-common/models/vpn")); const lib = __importStar(require("../src/")); // This GeoNames ID corresponds to Portland, USA (us-west-2 region) // GeoNames ID should always be available in the test environment exports.VPN_GEONAMES_ID = 5746545; function getTooFewPeanutsConfig(vpnConfigLimits) { return { type: vpnlib.VpnType.WireGuard, // We divide by 2 because this make sure it remains positive maxPeanuts: vpnConfigLimits.maxPeanutsFieldMinValue / 2 }; } exports.getTooFewPeanutsConfig = getTooFewPeanutsConfig; function getTooManyPeanutsConfig(vpnConfigLimits) { return { type: vpnlib.VpnType.WireGuard, maxPeanuts: vpnConfigLimits.maxPeanutsFieldMaxValue * 2 }; } exports.getTooManyPeanutsConfig = getTooManyPeanutsConfig; function getMinPeanutsConfig(vpnConfigLimits) { return { type: vpnlib.VpnType.WireGuard, maxPeanuts: vpnConfigLimits.maxPeanutsFieldMinValue }; } exports.getMinPeanutsConfig = getMinPeanutsConfig; function getGoodPeanutsConfig(vpnConfigLimits) { // We don't need more than 1 peanut for testing purpose // Let's make sure it's in the range const maxPeanuts = Math.min(vpnConfigLimits.maxPeanutsFieldMaxValue, Math.max(1, vpnConfigLimits.maxPeanutsFieldMinValue)); return { type: vpnlib.VpnType.WireGuard, maxPeanuts }; } exports.getGoodPeanutsConfig = getGoodPeanutsConfig; function getMaxPeanutsConfig(vpnConfigLimits) { // Though the given parameter is useless, we keep it for API consistency return { type: vpnlib.VpnType.WireGuard, maxPeanuts: -1 // By convention, this means use all available peanuts }; } exports.getMaxPeanutsConfig = getMaxPeanutsConfig; async function cleanUpAll(client) { const vpns = await client.listVpns(); const deleted = await client.waitAndDeleteAll(vpns.map(vpn => vpn.vpnId)); } exports.cleanUpAll = cleanUpAll; async function cleanUp(client, vpn) { await client.waitAndDeleteVpn(vpn.vpnId); } exports.cleanUp = cleanUp; async function createAuthUser(appConfig, userProfile) { const user = await lib.registerUser(appConfig, userProfile); loglevel_1.default.debug(`User ${JSON.stringify(user)} registered`); return await lib.getLoggedInClient(appConfig, userProfile); } exports.createAuthUser = createAuthUser; async function deleteCleanUpAllAndDeleteAuthUser(client, appConfig, userProfile) { const user = client.getUser(); if (user == null) { client = await lib.getLoggedInClient(appConfig, userProfile); } try { // We try our best to clean up in each individual test // but here we do it for sure await cleanUpAll(client); } catch (err) { console.error(`Error while cleaning up: ${err}`); throw err; } finally { const user = client.getUser(); if (user != null) { const deleteUser = util.promisify(user.deleteUser).bind(user); const result = await deleteUser(); loglevel_1.default.debug(`User deleted: ${JSON.stringify(result)}`); } } } exports.deleteCleanUpAllAndDeleteAuthUser = deleteCleanUpAllAndDeleteAuthUser;