overleaf/services/real-time/test/acceptance/coffee/helpers/FixturesManager.js

73 lines
No EOL
2.4 KiB
JavaScript

/* eslint-disable
camelcase,
handle-callback-err,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
let FixturesManager;
const RealTimeClient = require("./RealTimeClient");
const MockWebServer = require("./MockWebServer");
const MockDocUpdaterServer = require("./MockDocUpdaterServer");
module.exports = (FixturesManager = {
setUpProject(options, callback) {
if (options == null) { options = {}; }
if (callback == null) { callback = function(error, data) {}; }
if (!options.user_id) { options.user_id = FixturesManager.getRandomId(); }
if (!options.project_id) { options.project_id = FixturesManager.getRandomId(); }
if (!options.project) { options.project = { name: "Test Project" }; }
const {project_id, user_id, privilegeLevel, project, publicAccess} = options;
const privileges = {};
privileges[user_id] = privilegeLevel;
if (publicAccess) {
privileges["anonymous-user"] = publicAccess;
}
MockWebServer.createMockProject(project_id, privileges, project);
return MockWebServer.run(error => {
if (error != null) { throw error; }
return RealTimeClient.setSession({
user: {
_id: user_id,
first_name: "Joe",
last_name: "Bloggs"
}
}, error => {
if (error != null) { throw error; }
return callback(null, {project_id, user_id, privilegeLevel, project});
});
});
},
setUpDoc(project_id, options, callback) {
if (options == null) { options = {}; }
if (callback == null) { callback = function(error, data) {}; }
if (!options.doc_id) { options.doc_id = FixturesManager.getRandomId(); }
if (!options.lines) { options.lines = ["doc", "lines"]; }
if (!options.version) { options.version = 42; }
if (!options.ops) { options.ops = ["mock", "ops"]; }
const {doc_id, lines, version, ops, ranges} = options;
MockDocUpdaterServer.createMockDoc(project_id, doc_id, {lines, version, ops, ranges});
return MockDocUpdaterServer.run(error => {
if (error != null) { throw error; }
return callback(null, {project_id, doc_id, lines, version, ops});
});
},
getRandomId() {
return require("crypto")
.createHash("sha1")
.update(Math.random().toString())
.digest("hex")
.slice(0,24);
}
});