var header = function()

in legacy/routes/header.js [7:388]


var header = function (coverage, optionalCoverage) {
  optionalCoverage["HeaderParameterProtectedKey"] = 1; // NOT A THING
  optionalCoverage["CustomHeaderInRequest"] = 0;
  router.post("/param/:scenario", function (req, res, next) {
    if (req.params.scenario === "existingkey") {
      if (req.get("User-Agent") === "overwrite") {
        coverage["HeaderParameterExistingKey"]++;
        res.status(200).end();
      } else {
        utils.send400(
          res,
          next,
          'Did not like scenario "' + req.params.scenario + '" with value ' + req.get("User-Agent"),
        );
      }
    } else if (req.params.scenario === "protectedkey") {
      //We are making this change in the test server because for data plane we have to support scenarios where the user can override
      //the protected header like Content-Type by providing one.
      if (req.get("Content-Type") === "text/html") {
        optionalCoverage["HeaderParameterProtectedKey"]++;
        res.status(200).end();
      } else {
        utils.send400(
          res,
          next,
          'Did not like scenario "' + req.params.scenario + '" with value ' + req.get("Content-Type"),
        );
      }
    } else {
      utils.send400(res, next, 'Did not like scenario "' + req.params.scenario);
    }
  });

  router.post("/custom/x-ms-client-request-id/9C4D50EE-2D56-4CD3-8152-34347DC9F2B0", function (req, res, next) {
    if (req.get("x-ms-client-request-id").toLowerCase() === "9C4D50EE-2D56-4CD3-8152-34347DC9F2B0".toLowerCase()) {
      optionalCoverage["CustomHeaderInRequest"]++;
      res.status(200).end();
    } else {
      utils.send400(res, next, 'Did not like client request id "' + req.get("x-ms-client-request-id"));
    }
  });

  router.post("/response/:scenario", function (req, res, next) {
    if (req.params.scenario === "existingkey") {
      coverage["HeaderResponseExistingKey"]++;
      res.status(200).set("User-Agent", "overwrite").end();
    } else if (req.params.scenario === "protectedkey") {
      coverage["HeaderResponseProtectedKey"]++;
      res.status(200).set("Content-Type", "text/html").end();
    } else {
      utils.send400(res, next, 'Did not like scenario "' + req.params.scenario);
    }
  });

  router.post("/param/prim/:type", function (req, res, next) {
    var scenario = req.get("scenario");
    var value = req.get("value");
    switch (req.params.type) {
      case "integer":
        if (scenario === "positive") {
          if (parseInt(value) === 1) {
            coverage["HeaderParameterIntegerPositive"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "negative") {
          if (parseInt(value) === -2) {
            coverage["HeaderParameterIntegerNegative"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like integer scenario "' + scenario + '" with value ' + value);
      case "long":
        if (scenario === "positive") {
          if (parseInt(value) === 105) {
            coverage["HeaderParameterLongPositive"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "negative") {
          if (parseInt(value) === -2) {
            coverage["HeaderParameterLongNegative"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like long scenario "' + scenario + '" with value ' + value);
      case "float":
        if (scenario === "positive") {
          if (parseFloat(value) === 0.07) {
            coverage["HeaderParameterFloatPositive"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "negative") {
          if (parseFloat(value) === -3.0) {
            coverage["HeaderParameterFloatNegative"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like float scenario "' + scenario + '" with value ' + value);
      case "double":
        if (scenario === "positive") {
          if (parseFloat(value) === 7e120) {
            coverage["HeaderParameterDoublePositive"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "negative") {
          if (parseFloat(value) === -3.0) {
            coverage["HeaderParameterDoubleNegative"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like double scenario "' + scenario + '" with value ' + value);
      case "bool":
        if (scenario === "true") {
          if (value === "true") {
            coverage["HeaderParameterBoolTrue"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "false") {
          if (value === "false") {
            coverage["HeaderParameterBoolFalse"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like bool scenario "' + scenario + '" with value ' + value);
      case "string":
        if (scenario === "valid") {
          if (value === "The quick brown fox jumps over the lazy dog") {
            coverage["HeaderParameterStringValid"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "null") {
          if (value === null || value === undefined) {
            coverage["HeaderParameterStringNull"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "empty") {
          if (value === "" || value === null || value === undefined) {
            coverage["HeaderParameterStringEmpty"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like string scenario "' + scenario + '" with value ' + value);
      case "enum":
        if (scenario === "valid") {
          if (value === "GREY") {
            coverage["HeaderParameterEnumValid"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "null") {
          if (value === null || value === undefined) {
            coverage["HeaderParameterEnumNull"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like string scenario "' + scenario + '" with value ' + value);
      case "date":
        if (scenario === "valid") {
          if (value === "2010-01-01") {
            coverage["HeaderParameterDateValid"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "min") {
          if (value === "0001-01-01") {
            coverage["HeaderParameterDateMin"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like date scenario "' + scenario + '" with value ' + value);
      case "datetime":
        if (scenario === "valid") {
          if (utils.coerceDate(value) === "2010-01-01T12:34:56Z") {
            coverage["HeaderParameterDateTimeValid"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "min") {
          if (utils.coerceDate(value) === "0001-01-01T00:00:00Z") {
            coverage["HeaderParameterDateTimeMin"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like datetime scenario "' + scenario + '" with value ' + value);
      case "datetimerfc1123":
        if (scenario === "valid") {
          if (value === "Fri, 01 Jan 2010 12:34:56 GMT") {
            coverage["HeaderParameterDateTimeRfc1123Valid"]++;
            res.status(200).end();
            break;
          }
        } else if (scenario === "min") {
          if (
            value === "Mon, 01 Jan 0001 00:00:00 GMT" ||
            value == "Mon, 01 Jan 1 00:00:00 GMT" ||
            value == "Mon, 01 Jan    1 00:00:00 GMT"
          ) {
            coverage["HeaderParameterDateTimeRfc1123Min"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like datetimerfc1123 scenario "' + scenario + '" with value ' + value);
      case "duration":
        if (scenario === "valid") {
          //For some reason moment.js doesn't quite get the right time value out (due to what looks like floating point issues)
          //so we have to check for two possible times
          if (value === "P123DT22H14M12.011S" || value == "P123DT22H14M12.010999999998603S") {
            coverage["HeaderParameterDurationValid"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like duration scenario "' + scenario + '" with value ' + value);
      case "byte":
        var bytes = new Buffer(constants.MULTIBYTE_BUFFER);
        if (scenario === "valid") {
          if (value === bytes.toString("base64")) {
            coverage["HeaderParameterBytesValid"]++;
            res.status(200).end();
            break;
          }
        }
        utils.send400(res, next, 'Did not like byte scenario "' + scenario + '" with value ' + value);
      default:
        utils.send400(res, next, "Must provide a valid primitive type.");
    }
  });

  router.post("/response/prim/:type", function (req, res, next) {
    var scenario = req.get("scenario");
    var value = req.get("value");
    switch (req.params.type) {
      case "integer":
        if (scenario === "positive") {
          coverage["HeaderResponseIntegerPositive"]++;
          res.status(200).set("value", 1).end();
          break;
        } else if (scenario === "negative") {
          coverage["HeaderResponseIntegerNegative"]++;
          res.status(200).set("value", -2).end();
          break;
        }
        utils.send400(res, next, 'Did not like integer scenario "' + scenario + '" with value ' + value);
      case "long":
        if (scenario === "positive") {
          coverage["HeaderResponseLongPositive"]++;
          res.status(200).set("value", 105).end();
          break;
        } else if (scenario === "negative") {
          coverage["HeaderResponseLongNegative"]++;
          res.status(200).set("value", -2).end();
          break;
        }
        utils.send400(res, next, 'Did not like long scenario "' + scenario + '" with value ' + value);
      case "float":
        if (scenario === "positive") {
          coverage["HeaderResponseFloatPositive"]++;
          res.status(200).set("value", 0.07).end();
          break;
        } else if (scenario === "negative") {
          coverage["HeaderResponseFloatNegative"]++;
          res.status(200).set("value", -3.0).end();
          break;
        }
        utils.send400(res, next, 'Did not like float scenario "' + scenario + '" with value ' + value);
      case "double":
        if (scenario === "positive") {
          coverage["HeaderResponseDoublePositive"]++;
          res.status(200).set("value", 7e120).end();
          break;
        } else if (scenario === "negative") {
          coverage["HeaderResponseDoubleNegative"]++;
          res.status(200).set("value", -3.0).end();
          break;
        }
        utils.send400(res, next, 'Did not like double scenario "' + scenario + '" with value ' + value);
      case "bool":
        if (scenario === "true") {
          coverage["HeaderResponseBoolTrue"]++;
          res.status(200).set("value", true).end();
          break;
        } else if (scenario === "false") {
          coverage["HeaderResponseBoolFalse"]++;
          res.status(200).set("value", false).end();
          break;
        }
        utils.send400(res, next, 'Did not like bool scenario "' + scenario + '" with value ' + value);
      case "string":
        if (scenario === "valid") {
          coverage["HeaderResponseStringValid"]++;
          res.status(200).set("value", "The quick brown fox jumps over the lazy dog").end();
          break;
        } else if (scenario === "null") {
          coverage["HeaderResponseStringNull"]++;
          res.status(200).set("value", null).end();
          break;
        } else if (scenario === "empty") {
          coverage["HeaderResponseStringEmpty"]++;
          res.status(200).set("value", "").end();
          break;
        }
        utils.send400(res, next, 'Did not like string scenario "' + scenario + '" with value ' + value);
      case "enum":
        if (scenario === "valid") {
          coverage["HeaderResponseEnumValid"]++;
          res.status(200).set("value", "GREY").end();
          break;
        } else if (scenario === "null") {
          coverage["HeaderResponseEnumNull"]++;
          res.status(200).set("value", "").end();
          break;
        }
        utils.send400(res, next, 'Did not like enum scenario "' + scenario + '" with value ' + value);
      case "date":
        if (scenario === "valid") {
          coverage["HeaderResponseDateValid"]++;
          res.status(200).set("value", "2010-01-01").end();
          break;
        } else if (scenario === "min") {
          coverage["HeaderResponseDateMin"]++;
          res.status(200).set("value", "0001-01-01").end();
          break;
        }
        utils.send400(res, next, 'Did not like date scenario "' + scenario + '" with value ' + value);
      case "datetime":
        if (scenario === "valid") {
          coverage["HeaderResponseDateTimeValid"]++;
          res.status(200).set("value", "2010-01-01T12:34:56Z").end();
          break;
        } else if (scenario === "min") {
          coverage["HeaderResponseDateTimeMin"]++;
          res.status(200).set("value", "0001-01-01T00:00:00Z").end();
          break;
        }
        utils.send400(res, next, 'Did not like datetime scenario "' + scenario + '" with value ' + value);
      case "datetimerfc1123":
        if (scenario === "valid") {
          coverage["HeaderResponseDateTimeRfc1123Valid"]++;
          res.status(200).set("value", "Fri, 01 Jan 2010 12:34:56 GMT").end();
          break;
        } else if (scenario === "min") {
          coverage["HeaderResponseDateTimeRfc1123Min"]++;
          res.status(200).set("value", "Mon, 01 Jan 0001 00:00:00 GMT").end();
          break;
        }
        utils.send400(res, next, 'Did not like datetimerfc1123 scenario "' + scenario + '" with value ' + value);
      case "duration":
        if (scenario === "valid") {
          coverage["HeaderResponseDurationValid"]++;
          res.status(200).set("value", "P123DT22H14M12.011S").end();
          break;
        }
        utils.send400(res, next, 'Did not like duration scenario "' + scenario + '" with value ' + value);
      case "byte":
        var bytes = new Buffer(constants.MULTIBYTE_BUFFER);
        if (scenario === "valid") {
          coverage["HeaderResponseBytesValid"]++;
          res.status(200).set("value", bytes.toString("base64")).end();
          break;
        }
        utils.send400(res, next, 'Did not like byte scenario "' + scenario + '" with value ' + value);
      default:
        utils.send400(res, next, "Must provide a valid primitive type.");
    }
  });
};