Advertisement
Guest User

i need more information

a guest
Jun 25th, 2019
447
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(obj) {
  2.     let method = obj.method;
  3.     let isMethodValid = false;
  4.     switch (method) {
  5.         case "GET":
  6.         case "POST":
  7.         case "DELETE":
  8.         case "CONNECT":
  9.             isMethodValid = true;
  10.             break;
  11.         default:
  12.             if (isMethodValid === false) {
  13.                 throw new Error("Invalid request header: Invalid Method");
  14.             }
  15.             break;
  16.     }
  17.  
  18.     let uri = obj.uri;
  19.     let pattern = /\.*[a-z0-9]+\.*[a-z0-9]*\.*[a-z0-9]*/gim;
  20.     let isUriValid = false;
  21.     if (uri.length > 0) {
  22.         let matchedUri = uri.match(pattern)[0];
  23.         if (matchedUri.length === uri.length) {
  24.             isUriValid = true;
  25.         }
  26.     }
  27.     if (isUriValid === false) {
  28.         throw new Error("Invalid request header: Invalid URI");
  29.     }
  30.  
  31.     let version = obj.version;
  32.     let isVersionValid = false;
  33.     switch (version) {
  34.         case "HTTP/0.9":
  35.         case "HTTP/1.0":
  36.         case "HTTP/1.1":
  37.         case "HTTP/2.0":
  38.             isVersionValid = true;
  39.             break;
  40.         default:
  41.             if (isVersionValid === false) {
  42.                 throw new Error("Invalid request header: Invalid Version");
  43.             }
  44.             break;
  45.     }
  46.  
  47.     let message = obj.message;
  48.     let specialChars = /[\<\>\\\&\'\"]/g;
  49.     let isMessageValid = true;
  50.     if (message.match(specialChars)) {
  51.         isMessageValid = false;
  52.         if (isMessageValid === false) {
  53.             throw new Error("Invalid request header: Invalid Message");
  54.         }
  55.     }
  56.  
  57.     // console.log(isMethodValid, isUriValid, isVersionValid, isMessageValid)
  58.     // console.log(method, uri, version, message)
  59.  
  60.     if (isMethodValid === true
  61.         && isUriValid === true
  62.         && isVersionValid === true
  63.         && isMessageValid === true) {
  64.         return obj;
  65.     }
  66. }
  67.  
  68. // solve({
  69. //     method: 'GET',
  70. //     uri: 'svn.public.catalog',
  71. //     version: 'HTTP/1.1',
  72. //     message: '',
  73. // });
  74. // solve({
  75. //     method: 'OPTIONS',
  76. //     uri: 'git.master',
  77. //     version: 'HTTP/1.1',
  78. //     message: '-recursive'
  79. // });
  80. // solve({
  81. //     method: 'POST',
  82. //     uri: 'home.bash',
  83. //     message: 'rm -rf /*'
  84. // });
  85.  
  86. // module.exports = { solve };
  87. // const { solve } = require("./01. Request Validator");
  88.  
  89. const { expect } = require("chai");
  90.  
  91. describe("Valid", function () {
  92.     it("Test 1 from Word.docx", function () {
  93.         let expected = {
  94.             method: 'GET',
  95.             uri: 'svn.public.catalog',
  96.             version: 'HTTP/1.1',
  97.             message: '',
  98.         };
  99.         let result = () => solve({
  100.             method: 'GET',
  101.             uri: 'svn.public.catalog',
  102.             version: 'HTTP/1.1',
  103.             message: '',
  104.         });
  105.         expect(result).to.be.eql(expected);
  106.     });
  107.  
  108.     it("Test 2 from Word.docx", () => {
  109.         let expectedMsg = "Invalid request header: Invalid Method";
  110.         let result = () => solve({
  111.             method: 'OPTIONS',
  112.             uri: 'git.master',
  113.             version: 'HTTP/1.1',
  114.             message: '-recursive'
  115.         });
  116.         expect(result).to.throw(Error, expectedMsg);
  117.     });
  118.  
  119.     it("Test 3 from Word.docx", () => {
  120.         let expectedMsg = "Invalid request header: Invalid Version";
  121.         let result = () => solve({
  122.             method: 'POST',
  123.             uri: 'home.bash',
  124.             message: 'rm -rf /*'
  125.         });
  126.         expect(result).to.throw(Error, expectedMsg);
  127.     });
  128. });
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement