forked from MicrosoftEdge/static-code-scan
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinput_test.js
More file actions
82 lines (72 loc) · 2.55 KB
/
Copy pathinput_test.js
File metadata and controls
82 lines (72 loc) · 2.55 KB
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
74
75
76
77
78
79
80
81
82
/**
* Description: Test detection of HTML5 inputs.
*
* Copyright (c) Microsoft Corporation; All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* THIS CODE IS PROVIDED AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS
* OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
*
* See the Apache Version 2.0 License for specific language governing permissions
* and limitations under the License.
*/
"use strict";
var input = require('../lib/checks/check-inputs.js'),
url = require('url'),
request = require('request'),
cheerio = require('cheerio'),
testServer = require('../static/test-server.js'),
testUrl = 'http://localhost:' + testServer.port + '/input-';
function checkPage(page, expected) {
return function (test) {
var uri = page.indexOf('http') === 0 ? page : testUrl + page,
tests = 1;
if (expected.data) {
tests += Object.keys(expected.data).length;
}
test.expect(tests);
request(uri, function (error, response, content) {
var website = {
url: url.parse(uri),
content: content,
$: cheerio.load(content)
};
input.check(website).then(function (result) {
test.equal(result.passed, expected.passed, uri + " passed: " + result.passed + " !== " + expected.passed);
if (expected.data) {
for(var key in expected.data){
test.equal(result.data[key], expected.data[key], uri + " key: " + result.data[key] + " !== " + expected.data[key]);
}
}
test.done();
});
});
};
}
module.exports['Inputs'] = {
'No input': checkPage('1.html', {
passed: true
}),
'Input - Type text': checkPage('2.html', {
passed: false
}),
'Input -No type': checkPage('3.html', {
passed: false
}),
'Input - Type email': checkPage('4.html', {
passed: true
}),
'Input - Type number': checkPage('5.html', {
passed: true
}),
'Input - Multiple HTML5 inputs': checkPage('6.html', {
passed: true
}),
'Input - Multiple mixed inputs': checkPage('7.html', {
passed: true
}),
};