aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-css-plugin/src/test/resources/mock-start-server/startServer.js
blob: f7f40c54a8ba9a50b5bc59021d55244309394625 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env node

const http = require('http');
const port = process.argv[2];

const requestHandler = (request, response) => {
  let data = [];
  request.on('data', chunk => {
    data.push(chunk);
  });
  request.on('end', () => {
    let fileName = null;
    let fileContent = null;
    if (data.length > 0) {
      const analysisRequest = JSON.parse(data.join());
      fileName = analysisRequest.filePath.replace(/.*[\/\\]/g,"");
      fileContent = analysisRequest.fileContent;
    }
    if (request.url === '/status') {
      response.writeHead(200, { 'Content-Type': 'text/plain' });
      response.end('OK!');
    } else {
      switch (fileName) {
        case "file.css":
        case "file.web":
        case "file.php":
        case "file.js": // to test that we will not save this issue even if it's provided by response
          response.end(JSON.stringify([
            {line: 2, rule: "block-no-empty", text: "Unexpected empty block"}
          ]));
          break;
        case "file-with-rule-id-message.css":
          response.end(JSON.stringify([
            {line: 2, rule: "color-no-invalid-hex", text: "some message (color-no-invalid-hex)"}
          ]));
          break;
        case "empty.css":
          response.end(JSON.stringify([]));
          break;
        case "syntax-error.css":
          response.end(JSON.stringify([
            {line: 2, rule: "CssSyntaxError", text: "Missed semicolon (CssSyntaxError)"}
          ]));
          break;
        case "unknown-rule.css":
          response.end(JSON.stringify([
            {line: 2, rule: "unknown-rule-key", text: "some message"}
          ]));
          break;
        case "invalid-json-response.css":
          response.end("[");
          break;
        case "copy-file-content-into-issue-message.css":
          response.end(JSON.stringify([
            {line: 1, rule: "block-no-empty", text: "" + fileContent}
          ]));
          break;
        default:
          throw "Unexpected fileName: " + fileName;
      }
    }
  });
};

const server = http.createServer(requestHandler);

server.listen(port, (err) => {
  if (err) {
    return console.log('something bad happened', err)
  }

  console.log(`server is listening on ${port}`)
});