UNPKG

@microsoft.azure/autorest.testserver

Version:

This project contains a set of OpenAPI definitions and a server implementing the corresponding API. Use this to test compliance of AutoRest generators.

157 lines (148 loc) 7.97 kB
var express = require('express'); var router = express.Router(); var util = require('util'); var utils = require('../util/utils') var datetime = function(coverage, optionalCoverage) { 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 { 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;