Repository URL to install this package:
|
Version:
0.15.4 ▾
|
@truesparrow/content
/
test-router.js
|
|---|
"use strict";
/** Defines the TestRouter. */
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 });
/** Imports. Also so typedoc works correctly. */
const async_middleware_1 = require("async-middleware");
const compression = require("compression");
const express = require("express");
const HttpStatus = require("http-status-codes");
const raynor_1 = require("raynor");
const common_server_js_1 = require("@truesparrow/common-server-js");
const dtos_1 = require("@truesparrow/content-sdk-js/dtos");
const server_1 = require("@truesparrow/identity-sdk-js/server");
/**
* Construct a TestRouter. This is a fully formed and independent {@link express.Router}
* which implements a bunch of test-only code for the content service. The aim is to easily be able
* to do some high-level operations, such as clearing out test data, or creating fake events etc.
* @note The router has the following paths exposed:
* @path /clear-out POST
* @param config - the application configuration.
* @param repository - a repository.
* @param identityClient - a client for the identity service.
* @return A {link express.Router} doing the above.
*/
function newTestRouter(config, repository, identityClient) {
const updateEventRequestMarshaller = new (raynor_1.MarshalFrom(dtos_1.UpdateEventRequest))();
const privateEventResponseMarshaller = new dtos_1.PrivateEventResponseMarshaller();
const testRouter = express.Router();
testRouter.use(common_server_js_1.newLocalCommonServerMiddleware(config.name, config.env, config.forceDisableLogging));
testRouter.use(compression({ threshold: 0 }));
testRouter.use(common_server_js_1.newCommonApiServerMiddleware());
testRouter.post('/clear-out', async_middleware_1.wrap((req, res) => __awaiter(this, void 0, void 0, function* () {
try {
yield repository.testClearOut();
res.status(HttpStatus.OK);
res.end();
}
catch (e) {
req.log.error(e);
req.errorLog.error(e);
res.status(HttpStatus.INTERNAL_SERVER_ERROR);
res.end();
}
})));
testRouter.post('/add-event', [
server_1.newSessionMiddleware(server_1.SessionLevel.SessionAndUser, server_1.SessionInfoSource.Header, config.env, identityClient)
], async_middleware_1.wrap((req, res) => __awaiter(this, void 0, void 0, function* () {
let eventDetails = null;
try {
eventDetails = updateEventRequestMarshaller.extract(req.body);
}
catch (e) {
console.log(e);
req.log.warn('Could not decode creation request');
res.status(HttpStatus.BAD_REQUEST);
res.end();
return;
}
try {
const event = yield repository.testAddEvent(req.session.user, eventDetails, req.requestTime);
const privateEventResponse = new dtos_1.PrivateEventResponse();
privateEventResponse.eventIsRemoved = false;
privateEventResponse.event = event;
res.write(JSON.stringify(privateEventResponseMarshaller.pack(privateEventResponse)));
res.status(HttpStatus.OK);
res.end();
}
catch (e) {
req.log.error(e);
req.errorLog.error(e);
res.status(HttpStatus.INTERNAL_SERVER_ERROR);
res.end();
}
})));
return testRouter;
}
exports.newTestRouter = newTestRouter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVzdC1yb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhCQUE4Qjs7Ozs7Ozs7OztBQUU5QixnREFBZ0Q7QUFDaEQsdURBQXVDO0FBQ3ZDLDJDQUEwQztBQUMxQyxtQ0FBa0M7QUFDbEMsZ0RBQStDO0FBQy9DLG1DQUFvQztBQUVwQyxvRUFJc0M7QUFDdEMsMkRBSXlDO0FBR3pDLGdFQUk0QztBQU01Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsdUJBQThCLE1BQWlCLEVBQUUsVUFBc0IsRUFBRSxjQUE4QjtJQUNuRyxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQyxvQkFBVyxDQUFDLHlCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzdFLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxxQ0FBOEIsRUFBRSxDQUFDO0lBRTVFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUVwQyxVQUFVLENBQUMsR0FBRyxDQUFDLGlEQUE4QixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxVQUFVLENBQUMsR0FBRyxDQUFDLCtDQUE0QixFQUFFLENBQUMsQ0FBQztJQUUvQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSx1QkFBSSxDQUFDLENBQU8sR0FBWSxFQUFFLEdBQXFCLEVBQUUsRUFBRTtRQUM3RSxJQUFJLENBQUM7WUFDRCxNQUFNLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUVoQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNULEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDN0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNMLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQztJQUVKLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQzFCLDZCQUFvQixDQUFDLHFCQUFZLENBQUMsY0FBYyxFQUFFLDBCQUFpQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQztLQUFDLEVBQ3hHLHVCQUFJLENBQUMsQ0FBTyxHQUF3QixFQUFFLEdBQXFCLEVBQUUsRUFBRTtRQUMzRCxJQUFJLFlBQVksR0FBOEIsSUFBSSxDQUFDO1FBQ25ELElBQUksQ0FBQztZQUNELFlBQVksR0FBRyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDbEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbkMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQztZQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQVksRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXJHLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSwyQkFBb0IsRUFBRSxDQUFDO1lBQ3hELG9CQUFvQixDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUVuQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM3QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0wsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO0lBRVIsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUN0QixDQUFDO0FBekRELHNDQXlEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBEZWZpbmVzIHRoZSBUZXN0Um91dGVyLiAqL1xuXG4vKiogSW1wb3J0cy4gQWxzbyBzbyB0eXBlZG9jIHdvcmtzIGNvcnJlY3RseS4gKi9cbmltcG9ydCB7IHdyYXAgfSBmcm9tICdhc3luYy1taWRkbGV3YXJlJ1xuaW1wb3J0ICogYXMgY29tcHJlc3Npb24gZnJvbSAnY29tcHJlc3Npb24nXG5pbXBvcnQgKiBhcyBleHByZXNzIGZyb20gJ2V4cHJlc3MnXG5pbXBvcnQgKiBhcyBIdHRwU3RhdHVzIGZyb20gJ2h0dHAtc3RhdHVzLWNvZGVzJ1xuaW1wb3J0IHsgTWFyc2hhbEZyb20gfSBmcm9tICdyYXlub3InXG5cbmltcG9ydCB7XG4gICAgbmV3Q29tbW9uQXBpU2VydmVyTWlkZGxld2FyZSxcbiAgICBuZXdMb2NhbENvbW1vblNlcnZlck1pZGRsZXdhcmUsXG4gICAgUmVxdWVzdFxufSBmcm9tICdAdHJ1ZXNwYXJyb3cvY29tbW9uLXNlcnZlci1qcydcbmltcG9ydCB7XG4gICAgUHJpdmF0ZUV2ZW50UmVzcG9uc2UsXG4gICAgUHJpdmF0ZUV2ZW50UmVzcG9uc2VNYXJzaGFsbGVyLFxuICAgIFVwZGF0ZUV2ZW50UmVxdWVzdFxufSBmcm9tICdAdHJ1ZXNwYXJyb3cvY29udGVudC1zZGstanMvZHRvcydcbmltcG9ydCB7IElkZW50aXR5Q2xpZW50LCBVc2VyIH0gZnJvbSAnQHRydWVzcGFycm93L2lkZW50aXR5LXNkay1qcydcbmltcG9ydCB7IFJlcXVlc3RXaXRoSWRlbnRpdHkgfSBmcm9tICdAdHJ1ZXNwYXJyb3cvaWRlbnRpdHktc2RrLWpzL3JlcXVlc3QnXG5pbXBvcnQge1xuICAgIG5ld1Nlc3Npb25NaWRkbGV3YXJlLFxuICAgIFNlc3Npb25JbmZvU291cmNlLFxuICAgIFNlc3Npb25MZXZlbFxufSBmcm9tICdAdHJ1ZXNwYXJyb3cvaWRlbnRpdHktc2RrLWpzL3NlcnZlcidcblxuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi9hcHAtY29uZmlnJ1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeSdcblxuXG4vKipcbiAqIENvbnN0cnVjdCBhIFRlc3RSb3V0ZXIuIFRoaXMgaXMgYSBmdWxseSBmb3JtZWQgYW5kIGluZGVwZW5kZW50IHtAbGluayBleHByZXNzLlJvdXRlcn1cbiAqIHdoaWNoIGltcGxlbWVudHMgYSBidW5jaCBvZiB0ZXN0LW9ubHkgY29kZSBmb3IgdGhlIGNvbnRlbnQgc2VydmljZS4gVGhlIGFpbSBpcyB0byBlYXNpbHkgYmUgYWJsZVxuICogdG8gZG8gc29tZSBoaWdoLWxldmVsIG9wZXJhdGlvbnMsIHN1Y2ggYXMgY2xlYXJpbmcgb3V0IHRlc3QgZGF0YSwgb3IgY3JlYXRpbmcgZmFrZSBldmVudHMgZXRjLlxuICogQG5vdGUgVGhlIHJvdXRlciBoYXMgdGhlIGZvbGxvd2luZyBwYXRocyBleHBvc2VkOlxuICogICAgIEBwYXRoIC9jbGVhci1vdXQgUE9TVFxuICogQHBhcmFtIGNvbmZpZyAtIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHJlcG9zaXRvcnkgLSBhIHJlcG9zaXRvcnkuXG4gKiBAcGFyYW0gaWRlbnRpdHlDbGllbnQgLSBhIGNsaWVudCBmb3IgdGhlIGlkZW50aXR5IHNlcnZpY2UuXG4gKiBAcmV0dXJuIEEge2xpbmsgZXhwcmVzcy5Sb3V0ZXJ9IGRvaW5nIHRoZSBhYm92ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ld1Rlc3RSb3V0ZXIoY29uZmlnOiBBcHBDb25maWcsIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnksIGlkZW50aXR5Q2xpZW50OiBJZGVudGl0eUNsaWVudCk6IGV4cHJlc3MuUm91dGVyIHtcbiAgICBjb25zdCB1cGRhdGVFdmVudFJlcXVlc3RNYXJzaGFsbGVyID0gbmV3IChNYXJzaGFsRnJvbShVcGRhdGVFdmVudFJlcXVlc3QpKSgpO1xuICAgIGNvbnN0IHByaXZhdGVFdmVudFJlc3BvbnNlTWFyc2hhbGxlciA9IG5ldyBQcml2YXRlRXZlbnRSZXNwb25zZU1hcnNoYWxsZXIoKTtcblxuICAgIGNvbnN0IHRlc3RSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG4gICAgdGVzdFJvdXRlci51c2UobmV3TG9jYWxDb21tb25TZXJ2ZXJNaWRkbGV3YXJlKGNvbmZpZy5uYW1lLCBjb25maWcuZW52LCBjb25maWcuZm9yY2VEaXNhYmxlTG9nZ2luZykpO1xuICAgIHRlc3RSb3V0ZXIudXNlKGNvbXByZXNzaW9uKHsgdGhyZXNob2xkOiAwIH0pKTtcbiAgICB0ZXN0Um91dGVyLnVzZShuZXdDb21tb25BcGlTZXJ2ZXJNaWRkbGV3YXJlKCkpO1xuXG4gICAgdGVzdFJvdXRlci5wb3N0KCcvY2xlYXItb3V0Jywgd3JhcChhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IGV4cHJlc3MuUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkudGVzdENsZWFyT3V0KCk7XG5cbiAgICAgICAgICAgIHJlcy5zdGF0dXMoSHR0cFN0YXR1cy5PSyk7XG4gICAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlcS5sb2cuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXEuZXJyb3JMb2cuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXMuc3RhdHVzKEh0dHBTdGF0dXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SKTtcbiAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRlc3RSb3V0ZXIucG9zdCgnL2FkZC1ldmVudCcsIFtcbiAgICAgICAgbmV3U2Vzc2lvbk1pZGRsZXdhcmUoU2Vzc2lvbkxldmVsLlNlc3Npb25BbmRVc2VyLCBTZXNzaW9uSW5mb1NvdXJjZS5IZWFkZXIsIGNvbmZpZy5lbnYsIGlkZW50aXR5Q2xpZW50KV0sXG4gICAgICAgIHdyYXAoYXN5bmMgKHJlcTogUmVxdWVzdFdpdGhJZGVudGl0eSwgcmVzOiBleHByZXNzLlJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBsZXQgZXZlbnREZXRhaWxzOiBVcGRhdGVFdmVudFJlcXVlc3QgfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZXZlbnREZXRhaWxzID0gdXBkYXRlRXZlbnRSZXF1ZXN0TWFyc2hhbGxlci5leHRyYWN0KHJlcS5ib2R5KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgICAgICByZXEubG9nLndhcm4oJ0NvdWxkIG5vdCBkZWNvZGUgY3JlYXRpb24gcmVxdWVzdCcpO1xuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXMoSHR0cFN0YXR1cy5CQURfUkVRVUVTVCk7XG4gICAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudCA9IGF3YWl0IHJlcG9zaXRvcnkudGVzdEFkZEV2ZW50KHJlcS5zZXNzaW9uLnVzZXIgYXMgVXNlciwgZXZlbnREZXRhaWxzLCByZXEucmVxdWVzdFRpbWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcHJpdmF0ZUV2ZW50UmVzcG9uc2UgPSBuZXcgUHJpdmF0ZUV2ZW50UmVzcG9uc2UoKTtcbiAgICAgICAgICAgICAgICBwcml2YXRlRXZlbnRSZXNwb25zZS5ldmVudElzUmVtb3ZlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHByaXZhdGVFdmVudFJlc3BvbnNlLmV2ZW50ID0gZXZlbnQ7XG5cbiAgICAgICAgICAgICAgICByZXMud3JpdGUoSlNPTi5zdHJpbmdpZnkocHJpdmF0ZUV2ZW50UmVzcG9uc2VNYXJzaGFsbGVyLnBhY2socHJpdmF0ZUV2ZW50UmVzcG9uc2UpKSk7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1cyhIdHRwU3RhdHVzLk9LKTtcbiAgICAgICAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmVxLmxvZy5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICByZXEuZXJyb3JMb2cuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1cyhIdHRwU3RhdHVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUik7XG4gICAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICByZXR1cm4gdGVzdFJvdXRlcjtcbn1cbiJdfQ==