UNPKG

realm-object-server

Version:

Realm Object Server

98 lines 4.13 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const tmp = require("tmp"); const fs = require("fs-extra"); const path = require("path"); const uuid = require("uuid"); const BasicServer_1 = require("./BasicServer"); const shared_1 = require("./shared"); const realmUtil_1 = require("./shared/realmUtil"); const RealmFactory_1 = require("./RealmFactory"); exports.ignoreOnCIDescribe = process.env.JENKINS_HOME ? describe.skip : describe; class TestServer extends BasicServer_1.BasicServer { constructor() { super(); shared_1.ProcessUtil.ErrorExitCode = -1; } start(params = {}) { const _super = Object.create(null, { start: { get: () => super.start } }); return __awaiter(this, void 0, void 0, function* () { RealmFactory_1.RealmFactory["sessionStopPolicy"] = "immediately"; const tmpDir = tmp.dirSync(); return _super.start.call(this, Object.assign({ autoKeyGenBits: 512, dataPath: tmpDir.name, logLevel: process.env.LOG_LEVEL || "fatal", address: "127.0.0.1", httpsAddress: "127.0.0.1", port: 0, privateKeyPath: path.join(__dirname, "..", "fixtures", "keys", "auth.key"), publicKeyPath: path.join(__dirname, "..", "fixtures", "keys", "auth.pub"), permissionServiceConfigOverride: (config) => { config.enableManagementRealmReflection = false; config.enablePermissionRealmReflection = false; } }, params)); }); } shutdown(shouldCleanup = true) { const _super = Object.create(null, { shutdown: { get: () => super.shutdown } }); return __awaiter(this, void 0, void 0, function* () { yield realmUtil_1.Realm.Sync.removeAllListeners(); yield _super.shutdown.call(this); if (shouldCleanup) { yield clearTestState(); yield fs.remove("./realm-object-server"); yield fs.mkdirs("./realm-object-server/io.realm.object-server-utility/metadata/"); } }); } get url() { return `http://${this.address}`; } get secureUrl() { return `https://${this.secureAddress}`; } getStatsSink() { return this.statsSink; } createSignedAdminToken() { return __awaiter(this, void 0, void 0, function* () { const userId = uuid.v4(); const isAdmin = true; const authService = this.services.find(s => s.constructor.serviceName === "auth"); const user = yield authService.createOrUpdateUser(userId, "TestServerProvider", isAdmin, {}, userId); const token = new shared_1.RefreshToken({ isAdmin, identity: user.userId, appId: "io.realm.Test", expires: Math.round(Date.now() / 1000) + 60, }); return token.sign(this.privateKey); }); } } exports.TestServer = TestServer; function clearTestState() { return __awaiter(this, void 0, void 0, function* () { let retries = 0; while (++retries < 50 && realmUtil_1.Realm.Sync._hasExistingSessions()) { yield shared_1.delay(50); } realmUtil_1.Realm.clearTestState(); }); } exports.clearTestState = clearTestState; //# sourceMappingURL=TestServer.js.map