legacy/routes/dictionary.js (543 lines of code) (raw):
var express = require("express");
var router = express.Router();
var util = require("util");
var _ = require("underscore");
var utils = require("../util/utils");
var dictionary = function (coverage) {
router.put("/:scenario", function (req, res, next) {
if (req.params.scenario === "empty") {
if (util.inspect(req.body) !== "{}") {
utils.send400(res, next, "Did not like empty dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryEmpty"]++;
res.status(200).end();
}
} else {
utils.send400(res, next, "Request path must contain empty");
}
});
router.get("/:scenario", function (req, res, next) {
if (req.params.scenario === "null") {
coverage["getDictionaryNull"]++;
res.status(200).end();
} else if (req.params.scenario === "empty") {
coverage["getDictionaryEmpty"]++;
res.status(200).type("json").end("{}");
} else if (req.params.scenario === "invalid") {
coverage["getDictionaryInvalid"]++;
res.status(200).type("json").end('{"key1": "val1", "key2", "val2"');
} else if (req.params.scenario === "nullvalue") {
coverage["getDictionaryNullValue"]++;
res.status(200).type("json").end('{"key1" : null}');
} else if (req.params.scenario === "nullkey") {
coverage["getDictionaryNullkey"]++;
res.status(200).type("json").end('{null : "val1"}');
} else if (req.params.scenario === "keyemptystring") {
coverage["getDictionaryKeyEmptyString"]++;
res.status(200).type("json").end('{"" : "val1"}');
} else {
res.status(400).send("Request path must contain null or empty or invalid");
}
});
router.get("/prim/:type/:scenario", function (req, res, next) {
if (req.params.type == "boolean") {
if (req.params.scenario === "tfft") {
coverage["getDictionaryBooleanValid"]++;
res.status(200).type("json").end('{"0": true, "1": false, "2": false, "3": true }');
} else if (req.params.scenario === "true.null.false") {
coverage["getDictionaryBooleanWithNull"]++;
res.status(200).type("json").end('{"0": true, "1": null, "2": false }');
} else if (req.params.scenario === "true.boolean.false") {
coverage["getDictionaryBooleanWithString"]++;
res.status(200).type("json").end('{"0": true, "1": "boolean", "2": false}');
} else {
res
.status(400)
.send(
"Request scenario for boolean primitive type must contain tfft or true.null.false or true.boolean.false",
);
}
} else if (req.params.type == "integer") {
if (req.params.scenario === "1.-1.3.300") {
coverage["getDictionaryIntegerValid"]++;
res.status(200).type("json").end('{"0": 1, "1": -1, "2": 3, "3": 300}');
} else if (req.params.scenario === "1.null.zero") {
coverage["getDictionaryIntegerWithNull"]++;
res.status(200).type("json").end('{"0": 1, "1": null, "2": 0}');
} else if (req.params.scenario === "1.integer.0") {
coverage["getDictionaryIntegerWithString"]++;
res.status(200).type("json").end('{"0": 1, "1": "integer", "2": 0}');
} else {
res
.status(400)
.send("Request scenario for integer primitive type must contain 1.-1.3.300 or 1.null.zero or 1.boolean.0");
}
} else if (req.params.type == "long") {
if (req.params.scenario === "1.-1.3.300") {
coverage["getDictionaryLongValid"]++;
res.status(200).type("json").end('{"0": 1, "1": -1, "2": 3, "3": 300}');
} else if (req.params.scenario === "1.null.zero") {
coverage["getDictionaryLongWithNull"]++;
res.status(200).type("json").end('{"0": 1, "1": null, "2": 0}');
} else if (req.params.scenario === "1.integer.0") {
coverage["getDictionaryLongWithString"]++;
res.status(200).type("json").end('{"0": 1, "1": "integer", "2": 0}');
} else {
res
.status(400)
.send("Request scenario for long primitive type must contain 1.-1.3.300 or 1.null.zero or 1.boolean.0");
}
} else if (req.params.type == "float") {
if (req.params.scenario === "0--0.01-1.2e20") {
coverage["getDictionaryFloatValid"]++;
res.status(200).type("json").end('{"0": 0, "1": -0.01, "2": -1.2e20}');
} else if (req.params.scenario === "0.0-null-1.2e20") {
coverage["getDictionaryFloatWithNull"]++;
res.status(200).type("json").end('{"0": 0.0, "1": null, "2": -1.2e20}');
} else if (req.params.scenario === "1.number.0") {
coverage["getDictionaryFloatWithString"]++;
res.status(200).type("json").end('{"0": 1, "1": "number", "2": 0}');
} else {
res
.status(400)
.send(
"Request scenario for float primitive type must contain 0--0.01-1.2e20 or 0.0-null-1.2e20 or 1.number.0",
);
}
} else if (req.params.type == "double") {
if (req.params.scenario === "0--0.01-1.2e20") {
coverage["getDictionaryDoubleValid"]++;
res.status(200).type("json").end('{"0": 0, "1": -0.01, "2": -1.2e20}');
} else if (req.params.scenario === "0.0-null-1.2e20") {
coverage["getDictionaryDoubleWithNull"]++;
res.status(200).type("json").end('{"0": 0.0, "1": null, "2": -1.2e20}');
} else if (req.params.scenario === "1.number.0") {
coverage["getDictionaryDoubleWithString"]++;
res.status(200).type("json").end('{"0": 1, "1": "number", "2": 0}');
} else {
res
.status(400)
.send(
"Request scenario for double primitive type must contain 0--0.01-1.2e20 or 0.0-null-1.2e20 or 1.number.0",
);
}
} else if (req.params.type == "string") {
if (req.params.scenario === "foo1.foo2.foo3") {
coverage["getDictionaryStringValid"]++;
res.status(200).type("json").end('{"0": "foo1", "1": "foo2", "2": "foo3"}');
} else if (req.params.scenario === "foo.null.foo2") {
coverage["getDictionaryStringWithNull"]++;
res.status(200).type("json").end('{"0": "foo", "1": null, "2": "foo2" }');
} else if (req.params.scenario === "foo.123.foo2") {
coverage["getDictionaryStringWithNumber"]++;
res.status(200).type("json").end('{"0": "foo", "1": 123, "2": "foo2"}');
} else {
res
.status(400)
.send(
"Request scenario for float primitive type must contain foo1.foo2.foo3 or foo.null.foo2 or foo.123.foo2",
);
}
} else if (req.params.type == "date") {
if (req.params.scenario === "valid") {
coverage["getDictionaryDateValid"]++;
res.status(200).type("json").end('{"0": "2000-12-01", "1": "1980-01-02", "2": "1492-10-12"}');
} else if (req.params.scenario === "invalidnull") {
coverage["getDictionaryDateWithNull"]++;
res.status(200).type("json").end('{"0": "2012-01-01", "1": null, "2": "1776-07-04"}');
} else if (req.params.scenario === "invalidchars") {
coverage["getDictionaryDateWithInvalidChars"]++;
res.status(200).type("json").end('{"0": "2011-03-22", "1": "date"}');
} else {
res
.status(400)
.send("Request scenario for date primitive type must contain valid or invalidnull or invalidchars");
}
} else if (req.params.type == "date-time") {
if (req.params.scenario === "valid") {
coverage["getDictionaryDateTimeValid"]++;
res
.status(200)
.type("json")
.end('{"0": "2000-12-01t00:00:01z", "1": "1980-01-02T00:11:35+01:00", "2": "1492-10-12T10:15:01-08:00"}');
} else if (req.params.scenario === "invalidnull") {
coverage["getDictionaryDateTimeWithNull"]++;
res.status(200).type("json").end('{"0": "2000-12-01t00:00:01z", "1": null}');
} else if (req.params.scenario === "invalidchars") {
coverage["getDictionaryDateTimeWithInvalidChars"]++;
res.status(200).type("json").end('{"0": "2000-12-01t00:00:01z", "1": "date-time"}');
} else {
res
.status(400)
.send("Request scenario for date-time primitive type must contain valid or invalidnull or invalidchars");
}
} else if (req.params.type == "date-time-rfc1123") {
if (req.params.scenario === "valid") {
coverage["getDictionaryDateTimeRfc1123Valid"]++;
res
.status(200)
.type("json")
.end(
'{"0": "Fri, 01 Dec 2000 00:00:01 GMT", "1": "Wed, 02 Jan 1980 00:11:35 GMT", "2": "Wed, 12 Oct 1492 10:15:01 GMT"}',
);
} else {
res.status(400).send("Request scenario for date-time-rfc1123 primitive type must contain valid");
}
} else if (req.params.type == "duration") {
if (req.params.scenario === "valid") {
coverage["getDictionaryDurationValid"]++;
res.status(200).type("json").end('{"0": "P123DT22H14M12.011S", "1": "P5DT1H"}');
} else {
res.status(400).send("Request scenario for duration primitive type must contain valid");
}
} else if (req.params.type == "byte") {
if (req.params.scenario === "valid") {
var bytes1 = new Buffer([255, 255, 255, 250]);
var bytes2 = new Buffer([1, 2, 3]);
var bytes3 = new Buffer([37, 41, 67]);
coverage["getDictionaryByteValid"]++;
res
.status(200)
.type("json")
.end(
'{"0": "' +
bytes1.toString("base64") +
'", "1": "' +
bytes2.toString("base64") +
'", "2": "' +
bytes3.toString("base64") +
'"}',
);
} else if (req.params.scenario === "invalidnull") {
var bytesNull = new Buffer([171, 172, 173]);
coverage["getDictionaryByteWithNull"]++;
res
.status(200)
.type("json")
.end('{"0": "' + bytesNull.toString("base64") + '", "1": null}');
} else {
res.status(400).send("Request scenario for byte primitive type must contain valid or invalidnull");
}
} else if (req.params.type == "base64url") {
if (req.params.scenario === "valid") {
coverage["getDictionaryBase64Url"]++;
res
.status(200)
.type("json")
.end(
'{"0": "YSBzdHJpbmcgdGhhdCBnZXRzIGVuY29kZWQgd2l0aCBiYXNlNjR1cmw", "1": "dGVzdCBzdHJpbmc", "2": "TG9yZW0gaXBzdW0"}',
);
} else {
res.status(400).send("Request scenario for base64url type must contain valid");
}
} else {
res
.status(400)
.send(
"Request path must contain boolean or integer or float or double or string or date or date-time or byte or base64url",
);
}
});
router.put("/prim/:type/:scenario", function (req, res, next) {
if (req.params.type == "boolean") {
if (req.params.scenario === "tfft") {
if (!_.isEqual(req.body, { 0: true, 1: false, 2: false, 3: true })) {
utils.send400(res, next, "Did not like empty req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryBooleanValid"]++;
res.status(200).end();
}
} else {
res
.status(400)
.send(
"Request scenario for boolean primitive type must contain tfft or true.null.false or true.boolean.false",
);
}
} else if (req.params.type == "integer") {
if (req.params.scenario === "1.-1.3.300") {
if (!_.isEqual(req.body, { 0: 1, 1: -1, 2: 3, 3: 300 })) {
utils.send400(res, next, "Did not like integer dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryIntegerValid"]++;
res.status(200).end();
}
} else {
res.status(400).send("Request scenario for integer primitive type must contain 1.-1.3.300");
}
} else if (req.params.type == "long") {
if (req.params.scenario === "1.-1.3.300") {
if (!_.isEqual(req.body, { 0: 1, 1: -1, 2: 3, 3: 300 })) {
utils.send400(res, next, "Did not like long dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryLongValid"]++;
res.status(200).end();
}
} else {
res.status(400).send("Request scenario for long primitive type must contain 1.-1.3.300");
}
} else if (req.params.type == "float") {
if (req.params.scenario === "0--0.01-1.2e20") {
if (!_.isEqual(req.body, { 0: 0, 1: -0.01, 2: -1.2e20 })) {
utils.send400(res, next, "Did not like float dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryFloatValid"]++;
res.status(200).end();
}
} else {
res.status(400).send("Request scenario for float primitive type must contain 0--0.01-1.2e20 ");
}
} else if (req.params.type == "double") {
if (req.params.scenario === "0--0.01-1.2e20") {
if (!_.isEqual(req.body, { 0: 0, 1: -0.01, 2: -1.2e20 })) {
utils.send400(res, next, "Did not like double dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryDoubleValid"]++;
res.status(200).end();
}
} else {
res.status(400).send("Request scenario for double primitive type must contain 0--0.01-1.2e20 ");
}
} else if (req.params.type == "string") {
if (req.params.scenario === "foo1.foo2.foo3") {
if (!_.isEqual(req.body, { 0: "foo1", 1: "foo2", 2: "foo3" })) {
utils.send400(res, next, "Did not like string dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryStringValid"]++;
res.status(200).end();
}
} else {
res.status(400).send("Request scenario for string primitive type must contain foo1.foo2.foo3");
}
} else if (req.params.type == "date") {
if (req.params.scenario === "valid") {
if (!_.isEqual(req.body, { 0: "2000-12-01", 1: "1980-01-02", 2: "1492-10-12" })) {
utils.send400(res, next, "Did not like date dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryDateValid"]++;
res.status(200).end();
}
} else {
res.status(400).send("Request scenario for date primitive type must contain valid");
}
} else if (req.params.type == "date-time") {
if (req.params.scenario === "valid") {
if (
_.isEqual(utils.coerceDate(req.body), {
0: "2000-12-01T00:00:01Z",
1: "1980-01-01T23:11:35Z",
2: "1492-10-12T18:15:01Z",
})
) {
coverage["putDictionaryDateTimeValid"]++;
res.status(200).end();
} else {
utils.send400(res, next, "Did not like date-time dictionary req '" + util.inspect(req.body) + "'");
}
} else {
res.status(400).send("Request scenario for date-time primitive type must contain valid");
}
} else if (req.params.type == "date-time-rfc1123") {
if (req.params.scenario === "valid") {
if (
_.isEqual(req.body, {
0: "Fri, 01 Dec 2000 00:00:01 GMT",
1: "Wed, 02 Jan 1980 00:11:35 GMT",
2: "Wed, 12 Oct 1492 10:15:01 GMT",
})
) {
coverage["putDictionaryDateTimeRfc1123Valid"]++;
res.status(200).end();
} else {
utils.send400(res, next, "Did not like date-time-rfc1123 dictionary req '" + util.inspect(req.body) + "'");
}
} else {
res.status(400).send("Request scenario for date-time-rfc1123 primitive type must contain valid");
}
} else if (req.params.type == "duration") {
if (req.params.scenario === "valid") {
if (
_.isEqual(req.body, { 0: "P123DT22H14M12.011S", 1: "P5DT1H" }) ||
_.isEqual(req.body, { 0: "P123DT22H14M12.010999999998603S", 1: "P5DT1H" })
) {
coverage["putDictionaryDurationValid"]++;
res.status(200).end();
} else {
utils.send400(res, next, "Did not like duration dictionary req '" + util.inspect(req.body) + "'");
}
} else {
res.status(400).send("Request scenario for duration primitive type must contain valid");
}
} else if (req.params.type == "byte") {
if (req.params.scenario === "valid") {
var bytes1 = new Buffer([255, 255, 255, 250]);
var bytes2 = new Buffer([1, 2, 3]);
var bytes3 = new Buffer([37, 41, 67]);
if (
!_.isEqual(req.body, {
0: bytes1.toString("base64"),
1: bytes2.toString("base64"),
2: bytes3.toString("base64"),
})
) {
utils.send400(res, next, "Did not like byte[] dictionary req '" + util.inspect(req.body) + "'");
} else {
coverage["putDictionaryByteValid"]++;
res.status(200).end();
}
} else {
res.status(400).send("Request scenario for byte primitive type must contain valid ");
}
} else {
res
.status(400)
.send("Request path must contain boolean or integer or float or double or string or date or date-time or byte");
}
});
router.get("/complex/:scenario", function (req, res, next) {
if (req.params.scenario === "null") {
coverage["getDictionaryComplexNull"]++;
res.status(200).end();
} else if (req.params.scenario === "empty") {
coverage["getDictionaryComplexEmpty"]++;
res.status(200).type("json").end("{}");
} else if (req.params.scenario === "itemnull") {
coverage["getDictionaryComplexItemNull"]++;
res
.status(200)
.type("json")
.end('{"0": {"integer": 1, "string": "2"}, "1": null, "2": {"integer": 5, "string": "6"}}');
} else if (req.params.scenario === "itemempty") {
coverage["getDictionaryComplexItemEmpty"]++;
res
.status(200)
.type("json")
.end('{"0": {"integer": 1, "string": "2"}, "1": {}, "2": {"integer": 5, "string": "6"}}');
} else if (req.params.scenario === "valid") {
coverage["getDictionaryComplexValid"]++;
res
.status(200)
.type("json")
.end(
'{"0": {"integer": 1, "string": "2"}, "1": {"integer": 3, "string": "4"}, "2": {"integer": 5, "string": "6"}}',
);
} else {
utils.send400(
res,
next,
"Request path must contain null, empty, itemnull, itemempty, or valid for complex dictionary get scenarios.",
);
}
});
router.put("/complex/:scenario", function (req, res, next) {
if (req.params.scenario === "valid") {
if (
_.isEqual(req.body, {
0: { integer: 1, string: "2" },
1: { integer: 3, string: "4" },
2: { integer: 5, string: "6" },
})
) {
coverage["putDictionaryComplexValid"]++;
res.status(200).end();
} else {
utils.send400(res, next, "Did not like complex dictionary req '" + util.inspect(req.body) + "'");
}
} else {
utils.send400(res, next, "Request path must contain valid for complex dictionary put scenarios.");
}
});
router.get("/array/:scenario", function (req, res, next) {
if (req.params.scenario === "null") {
coverage["getDictionaryArrayNull"]++;
res.status(200).end();
} else if (req.params.scenario === "empty") {
coverage["getDictionaryArrayEmpty"]++;
res.status(200).type("json").end("{}");
} else if (req.params.scenario === "itemnull") {
coverage["getDictionaryArrayItemNull"]++;
res.status(200).type("json").end('{"0": ["1", "2", "3"], "1": null, "2": ["7", "8", "9"]}');
} else if (req.params.scenario === "itemempty") {
coverage["getDictionaryArrayItemEmpty"]++;
res.status(200).type("json").end('{"0": ["1", "2", "3"], "1": [], "2": ["7", "8", "9"]}');
} else if (req.params.scenario === "valid") {
coverage["getDictionaryArrayValid"]++;
res.status(200).type("json").end('{"0": ["1", "2", "3"], "1": ["4", "5", "6"], "2": ["7", "8", "9"]}');
} else {
utils.send400(
res,
next,
"Request path must contain null, empty, itemnull, itemempty, or valid for dictionary of array get scenarios.",
);
}
});
router.put("/array/:scenario", function (req, res, next) {
if (req.params.scenario === "valid") {
if (_.isEqual(req.body, { 0: ["1", "2", "3"], 1: ["4", "5", "6"], 2: ["7", "8", "9"] })) {
coverage["putDictionaryArrayValid"]++;
res.status(200).end();
} else {
utils.send400(res, next, "Did not like dictionary of array req '" + util.inspect(req.body) + "'");
}
} else {
utils.send400(res, next, "Request path must contain valid for dictionary of array put scenarios.");
}
});
router.get("/dictionary/:scenario", function (req, res, next) {
if (req.params.scenario === "null") {
coverage["getDictionaryDictionaryNull"]++;
res.status(200).end();
} else if (req.params.scenario === "empty") {
coverage["getDictionaryDictionaryEmpty"]++;
res.status(200).type("json").end("{}");
} else if (req.params.scenario === "itemnull") {
coverage["getDictionaryDictionaryItemNull"]++;
res
.status(200)
.type("json")
.end(
'{"0": {"1": "one", "2": "two", "3": "three"}, "1": null, "2": {"7": "seven", "8": "eight", "9": "nine"}}',
);
} else if (req.params.scenario === "itemempty") {
coverage["getDictionaryDictionaryItemEmpty"]++;
res
.status(200)
.type("json")
.end('{"0": {"1": "one", "2": "two", "3": "three"}, "1": {}, "2": {"7": "seven", "8": "eight", "9": "nine"}}');
} else if (req.params.scenario === "valid") {
coverage["getDictionaryDictionaryValid"]++;
res
.status(200)
.type("json")
.end(
'{"0": {"1": "one", "2": "two", "3": "three"}, "1": {"4": "four", "5": "five", "6": "six"}, "2": {"7": "seven", "8": "eight", "9": "nine"}}',
);
} else {
utils.send400(
res,
next,
"Request path must contain null, empty, itemnull, itemempty, or valid for dictionary dictionary get scenarios.",
);
}
});
router.put("/dictionary/:scenario", function (req, res, next) {
if (req.params.scenario === "valid") {
if (
_.isEqual(req.body, {
0: { 1: "one", 2: "two", 3: "three" },
1: { 4: "four", 5: "five", 6: "six" },
2: { 7: "seven", 8: "eight", 9: "nine" },
})
) {
coverage["putDictionaryDictionaryValid"]++;
res.status(200).end();
} else {
utils.send400(res, next, "Did not like dictionary dictionary req '" + util.inspect(req.body) + "'");
}
} else {
utils.send400(res, next, "Request path must contain valid for dictionary dictionary put scenarios.");
}
});
};
dictionary.prototype.router = router;
module.exports = dictionary;