Skip to content

Commit 4bff985

Browse files
authored
Merge pull request #45 from nginxinc/nlb-3041-js-import-context
add: allow njs directives in all supported contexts
2 parents 7d44bd2 + cfc74fd commit 4bff985

File tree

2 files changed

+42
-14
lines changed

2 files changed

+42
-14
lines changed

analyze.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2115,10 +2115,10 @@ var directives = map[string][]uint{
21152115
ngxStreamMainConf | ngxStreamSrvConf | ngxConfTake1,
21162116
},
21172117
"js_body_filter": {
2118-
ngxHTTPLocConf | ngxHTTPLmtConf | ngxConfTake1,
2118+
ngxHTTPLocConf | ngxHTTPLifConf | ngxHTTPLmtConf | ngxConfTake1,
21192119
},
21202120
"js_content": {
2121-
ngxHTTPLocConf | ngxHTTPLmtConf | ngxConfTake1,
2121+
ngxHTTPLocConf | ngxHTTPLifConf | ngxHTTPLmtConf | ngxConfTake1,
21222122
},
21232123
"js_fetch_ciphers": {
21242124
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxConfTake1,
@@ -2140,30 +2140,30 @@ var directives = map[string][]uint{
21402140
ngxStreamMainConf | ngxStreamSrvConf | ngxConfTake1,
21412141
},
21422142
"js_header_filter": {
2143-
ngxHTTPLocConf | ngxHTTPLmtConf | ngxConfTake1,
2143+
ngxHTTPLocConf | ngxHTTPLifConf | ngxHTTPLmtConf | ngxConfTake1,
21442144
},
21452145
"js_import": {
2146-
ngxHTTPMainConf | ngxConfTake13,
2147-
ngxStreamMainConf | ngxConfTake13,
2146+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxConfTake13,
2147+
ngxStreamMainConf | ngxStreamSrvConf | ngxConfTake13,
21482148
},
21492149
"js_include": {
21502150
ngxHTTPMainConf | ngxConfTake1,
21512151
ngxStreamMainConf | ngxConfTake1,
21522152
},
21532153
"js_path": {
2154-
ngxHTTPMainConf | ngxConfTake1,
2155-
ngxStreamMainConf | ngxConfTake1,
2154+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxConfTake1,
2155+
ngxStreamMainConf | ngxStreamSrvConf | ngxConfTake1,
21562156
},
21572157
"js_preread": {
21582158
ngxStreamMainConf | ngxStreamSrvConf | ngxConfTake1,
21592159
},
21602160
"js_set": {
2161-
ngxHTTPMainConf | ngxConfTake2,
2162-
ngxStreamMainConf | ngxConfTake2,
2161+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxConfTake2,
2162+
ngxStreamMainConf | ngxStreamSrvConf | ngxConfTake2,
21632163
},
21642164
"js_var": {
2165-
ngxHTTPMainConf | ngxConfTake12,
2166-
ngxStreamMainConf | ngxConfTake12,
2165+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxConfTake12,
2166+
ngxStreamMainConf | ngxStreamSrvConf | ngxConfTake12,
21672167
},
21682168
"keyval": {
21692169
ngxHTTPMainConf | ngxConfTake3,

analyze_test.go

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,20 +172,30 @@ func TestAnalyze_auth_jwt_require(t *testing.T) {
172172
}
173173
}
174174

175+
//nolint:exhaustruct
175176
func TestAnalyze_njs(t *testing.T) {
176177
t.Parallel()
177178
testcases := map[string]struct {
178179
stmt *Directive
179180
ctx blockCtx
180181
wantErr bool
181182
}{
182-
"js_import ok": {
183+
"js_import in http location context ok": {
183184
&Directive{
184185
Directive: "js_import",
185186
Args: []string{"http.js"},
186187
Line: 5,
187188
},
188-
blockCtx{"http"},
189+
blockCtx{"http", "location"},
190+
false,
191+
},
192+
"js_import in stream server context ok": {
193+
&Directive{
194+
Directive: "js_import",
195+
Args: []string{"http.js"},
196+
Line: 5,
197+
},
198+
blockCtx{"stream", "server"},
189199
false,
190200
},
191201
"js_import not ok": {
@@ -194,7 +204,25 @@ func TestAnalyze_njs(t *testing.T) {
194204
Args: []string{"http.js"},
195205
Line: 5,
196206
},
197-
blockCtx{"http", "location"},
207+
blockCtx{"http", "location", "if"},
208+
true,
209+
},
210+
"js_content in location if context ok": {
211+
&Directive{
212+
Directive: "js_content",
213+
Args: []string{"function"},
214+
Line: 5,
215+
},
216+
blockCtx{"http", "location", "if"},
217+
false,
218+
},
219+
"js_content not ok": {
220+
&Directive{
221+
Directive: "js_content",
222+
Args: []string{"function"},
223+
Line: 5,
224+
},
225+
blockCtx{"http", "server", "if"},
198226
true,
199227
},
200228
}

0 commit comments

Comments
 (0)