realm-object-server
Version:
98 lines • 4.13 kB
JavaScript
;
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