@@ -7,69 +7,70 @@ import * as ruleRunner from '../../../helpers/rule-runner';
7
7
8
8
// Error messages.
9
9
10
- const noHeaderMessage = `'x-content-type-options' header was not specified` ;
10
+ const noHeaderMessage = `'x-content-type-options' header is not specified` ;
11
+ const unneededHeaderMessage = `'x-content-type-options' header is not needed` ;
11
12
const generateInvalidValueMessage = ( value : string = '' ) => {
12
13
return `'x-content-type-options' header value (${ value } ) is invalid` ;
13
14
} ;
14
15
15
16
// Page data.
16
17
17
- const generateHTMLPageData = ( content : string ) => {
18
- return {
19
- content,
20
- headers : { 'X-Content-Type-Options' : 'nosniff' }
21
- } ;
22
- } ;
23
-
24
- const htmlPageWithScriptData = generateHTMLPageData ( generateHTMLPage ( undefined , '<script src="test.js"></script>' ) ) ;
25
- const htmlPageWithManifestData = generateHTMLPageData ( generateHTMLPage ( '<link rel="manifest" href="test.webmanifest">' ) ) ;
18
+ const htmlPageWithScript = generateHTMLPage ( undefined , '<script src="test.js"></script>' ) ;
19
+ const htmlPageWithStylesheet = generateHTMLPage ( '<link rel="stylesheet" href="test.css">' ) ;
20
+ const htmlPageWithManifest = generateHTMLPage ( '<link rel="manifest" href="test.webmanifest">' ) ;
26
21
27
22
// Tests.
28
23
29
24
const tests : Array < IRuleTest > = [
30
25
{
31
26
name : `HTML page is served without 'X-Content-Type-Options' header` ,
32
- reports : [ { message : noHeaderMessage } ] ,
33
27
serverConfig : { '/' : '' }
34
28
} ,
35
29
{
36
30
name : `Manifest is served without 'X-Content-Type-Options' header` ,
37
- reports : [ { message : noHeaderMessage } ] ,
38
31
serverConfig : {
39
- '/' : htmlPageWithManifestData ,
32
+ '/' : htmlPageWithManifest ,
40
33
'/test.webmanifest' : ''
41
34
}
42
35
} ,
43
36
{
44
- name : `Resource is served without 'X-Content-Type-Options' header` ,
37
+ name : `Script is served without 'X-Content-Type-Options' header` ,
45
38
reports : [ { message : noHeaderMessage } ] ,
46
39
serverConfig : {
47
- '/' : htmlPageWithScriptData ,
40
+ '/' : htmlPageWithScript ,
48
41
'/test.js' : ''
49
42
}
50
43
} ,
44
+ {
45
+ name : `Stylesheet is served without 'X-Content-Type-Options' header` ,
46
+ reports : [ { message : noHeaderMessage } ] ,
47
+ serverConfig : {
48
+ '/' : htmlPageWithStylesheet ,
49
+ '/test.css' : ''
50
+ }
51
+ } ,
51
52
{
52
53
name : `Resource is specified as a data URI` ,
53
- serverConfig : { '/' : generateHTMLPageData ( generateHTMLPage ( undefined , '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==">' ) ) }
54
+ serverConfig : { '/' : generateHTMLPage ( undefined , '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==">' ) }
54
55
} ,
55
56
{
56
- name : `HTML page is served with 'X-Content-Type-Options' header with invalid value ` ,
57
- reports : [ { message : generateInvalidValueMessage ( 'no-sniff' ) } ] ,
58
- serverConfig : { '/' : { headers : { 'X-Content-Type-Options' : 'no-sniff ' } } }
57
+ name : `HTML page is served with the 'X-Content-Type-Options' header` ,
58
+ reports : [ { message : unneededHeaderMessage } ] ,
59
+ serverConfig : { '/' : { headers : { 'X-Content-Type-Options' : 'nosniff ' } } }
59
60
} ,
60
61
{
61
- name : `Manifest is served with 'X-Content-Type-Options' header with invalid value ` ,
62
- reports : [ { message : generateInvalidValueMessage ( ) } ] ,
62
+ name : `Manifest is served without 'X-Content-Type-Options' header` ,
63
+ reports : [ { message : unneededHeaderMessage } ] ,
63
64
serverConfig : {
64
- '/' : htmlPageWithManifestData ,
65
- '/test.webmanifest' : { headers : { 'X-Content-Type-Options' : '' } }
65
+ '/' : htmlPageWithManifest ,
66
+ '/test.webmanifest' : { headers : { 'X-Content-Type-Options' : 'invalid ' } }
66
67
}
67
68
} ,
68
69
{
69
- name : `Resource is served with 'X-Content-Type-Options' header with invalid value` ,
70
+ name : `Script is served with 'X-Content-Type-Options' header with invalid value` ,
70
71
reports : [ { message : generateInvalidValueMessage ( 'invalid' ) } ] ,
71
72
serverConfig : {
72
- '/' : htmlPageWithScriptData ,
73
+ '/' : htmlPageWithScript ,
73
74
'/test.js' : { headers : { 'X-Content-Type-Options' : 'invalid' } }
74
75
}
75
76
}
0 commit comments