legacy/routes/datetime.js (208 lines of code) (raw):
var express = require("express");
var router = express.Router();
var util = require("util");
var utils = require("../util/utils");
var datetime = function (coverage, optionalCoverage) {
coverage["getDateTimeMinLocalNoOffset"] = 0;
optionalCoverage["putDateTimeMaxUtc7MS"] = 0;
optionalCoverage["getDateTimeMaxUtc7MSUppercase"] = 0;
optionalCoverage["putDateTimeMaxLocalPositiveOffset"] = 0;
optionalCoverage["putDateTimeMaxLocalNegativeOffset"] = 0;
optionalCoverage["putDateTimeMinLocalPositiveOffset"] = 0;
optionalCoverage["putDateTimeMinLocalNegativeOffset"] = 0;
router.put("/max/:type", function (req, res, next) {
if (req.params.type === "utc") {
if (new Date(req.body).toISOString() === new Date("9999-12-31T23:59:59.999Z").toISOString()) {
coverage["putDateTimeMaxUtc"]++;
res.status(200).end();
} else {
utils.send400(
res,
next,
"Did not like the value provided for max datetime in the req " + util.inspect(req.body),
);
}
} else if (req.params.type === "utc7ms") {
if (
new Date(req.body).toISOString() === new Date("9999-12-31T23:59:59.9999999Z").toISOString() &&
req.body.endsWith(".9999999Z")
) {
optionalCoverage["putDateTimeMaxUtc7MS"]++;
res.status(200).end();
} else {
utils.send400(
res,
next,
"Did not like the value provided for max datetime in the req " + util.inspect(req.body),
);
}
} else if (req.params.type === "localpositiveoffset") {
if (new Date(req.body).toISOString() === new Date("9999-12-31T09:59:59.999Z").toISOString()) {
optionalCoverage["putDateTimeMaxLocalPositiveOffset"]++;
res.status(200).end();
} else {
utils.send400(
res,
next,
"Did not like the value provided for max datetime in the req " + util.inspect(req.body),
);
}
} else if (req.params.type === "localnegativeoffset") {
if (new Date(req.body).toISOString() === new Date("9999-12-31T23:59:59.999-14:00").toISOString()) {
optionalCoverage["putDateTimeMaxLocalNegativeOffset"]++;
res.status(200).end();
} else {
utils.send400(
res,
next,
"Did not like the value provided for max datetime in the req " + util.inspect(req.body),
);
}
} else {
utils.send400(
res,
next,
"Please provide a valid datetime type 'utc', " +
"'localpositiveoffset', 'localnegativeoffset' and not " +
util.inspect(req.params.type),
);
}
});
router.get("/max/:type/:case", function (req, res, next) {
var ret;
var scenario;
if (req.params.type === "utc") {
scenario = "getDateTimeMaxUtc";
ret = '"9999-12-31T23:59:59.999Z"';
} else if (req.params.type === "utc7ms") {
scenario = "getDateTimeMaxUtc7MS";
ret = '"9999-12-31T23:59:59.9999999Z"';
} else if (req.params.type === "localpositiveoffset") {
scenario = "getDateTimeMaxLocalPositiveOffset";
ret = '"9999-12-31T23:59:59.999+14:00"';
} else if (req.params.type === "localnegativeoffset") {
scenario = "getDateTimeMaxLocalNegativeOffset";
ret = '"9999-12-31T23:59:59.999-14:00"';
} else {
utils.send400(
res,
next,
"Please provide a valid datetime type 'utc', " +
"'localpositiveoffset', 'localnegativeoffset' and not " +
util.inspect(req.params.type),
);
}
if (req.params.case === "lowercase") {
coverage[scenario + "Lowercase"]++;
ret = ret.toLowerCase();
} else if (req.params.case === "uppercase") {
if (scenario == "getDateTimeMaxUtc7MS") {
optionalCoverage[scenario + "Uppercase"]++;
} else {
coverage[scenario + "Uppercase"]++;
}
ret = ret.toUpperCase();
} else {
utils.send400(
res,
next,
"Please provide a valid case for datetime case " +
"'uppercase', 'lowercase' and not " +
util.inspect(req.params.case),
);
}
res.status(200).type("json").end(ret);
});
router.put("/min/:type", function (req, res, next) {
if (req.params.type === "utc") {
if (new Date(req.body).toISOString() === new Date("0001-01-01T00:00:00Z").toISOString()) {
coverage["putDateTimeMinUtc"]++;
res.status(200).end();
} else {
utils.send400(
res,
next,
"Did not like the value provided for min datetime in the req " + util.inspect(req.body),
);
}
} else if (req.params.type === "localpositiveoffset") {
if (new Date(req.body).toISOString() === new Date("0001-01-01T00:00:00+14:00").toISOString()) {
optionalCoverage["putDateTimeMinLocalPositiveOffset"]++;
res.status(200).end();
} else {
utils.send400(
res,
next,
"Did not like the value provided for min datetime in the req " + util.inspect(req.body),
);
}
} else if (req.params.type === "localnegativeoffset") {
if (new Date(req.body).toISOString() === new Date("0001-01-01T14:00:00Z").toISOString()) {
optionalCoverage["putDateTimeMinLocalNegativeOffset"]++;
res.status(200).end();
} else {
utils.send400(
res,
next,
"Did not like the value provided for min datetime in the req " + util.inspect(req.body),
);
}
} else {
utils.send400(
res,
next,
"Please provide a valid datetime type 'utc', " +
"'localpositiveoffset', 'localnegativeoffset' and not " +
util.inspect(req.params.type),
);
}
});
router.get("/min/:type", function (req, res, next) {
if (req.params.type === "utc") {
coverage["getDateTimeMinUtc"]++;
res.status(200).type("json").end('"0001-01-01T00:00:00Z"');
} else if (req.params.type === "localpositiveoffset") {
coverage["getDateTimeMinLocalPositiveOffset"]++;
res.status(200).type("json").end('"0001-01-01T00:00:00+14:00"');
} else if (req.params.type === "localnegativeoffset") {
coverage["getDateTimeMinLocalNegativeOffset"]++;
res.status(200).type("json").end('"0001-01-01T00:00:00-14:00"');
} else if (req.params.type === "localnooffset") {
coverage["getDateTimeMinLocalNoOffset"]++;
res.status(200).type("json").end('"0001-01-01T00:00:00"');
} else {
utils.send400(
res,
next,
"Please provide a valid datetime type 'utc', " +
"'localpositiveoffset', 'localnegativeoffset' and not " +
util.inspect(req.params.type),
);
}
});
router.get("/:scenario", function (req, res, next) {
if (req.params.scenario === "null") {
coverage["getDateTimeNull"]++;
res.status(200).end();
} else if (req.params.scenario === "invalid") {
coverage["getDateTimeInvalid"]++;
res.status(200).type("json").end('"201O-18-90D00:89:56.9AX"');
} else if (req.params.scenario === "overflow") {
coverage["getDateTimeOverflow"]++;
res.status(200).type("json").end('"9999-12-31T23:59:59.999-14:00"');
} else if (req.params.scenario === "underflow") {
coverage["getDateTimeUnderflow"]++;
res.status(200).type("json").end('"0000-00-00T00:00:00.000+00:00"');
} else {
res
.status(400)
.send(
"Request path must contain a valid scenario: " +
'"null", "invaliddate", "overflowdate", "underflowdate". Provided value is : ',
+util.inspect(req.params.scenario),
);
}
});
};
datetime.prototype.router = router;
module.exports = datetime;