8
8
ResolverType ,
9
9
} from '@vulcan-sql/serve/middleware' ;
10
10
import { ServeConfig } from '@vulcan-sql/serve/models' ;
11
+ import { Server } from 'http' ;
11
12
12
13
const runServer = ( config : Omit < ServeConfig , 'artifact' | 'template' > ) => {
13
14
// Arrange
@@ -30,9 +31,13 @@ const runServer = (config: Omit<ServeConfig, 'artifact' | 'template'>) => {
30
31
} ;
31
32
32
33
describe ( 'Test enforce https middlewares for LOCAL resolver type' , ( ) => {
34
+ let server : Server ;
35
+ afterEach ( ( ) => {
36
+ server ?. close ( ) ;
37
+ } ) ;
33
38
it ( 'Should get status code "301" when send GET request' , async ( ) => {
34
39
// Arrange
35
- const { server } = runServer ( { } ) ;
40
+ server = runServer ( { } ) . server ;
36
41
37
42
const request = supertest ( server ) . get ( '/' ) ;
38
43
// Act
@@ -41,33 +46,29 @@ describe('Test enforce https middlewares for LOCAL resolver type', () => {
41
46
// Assert
42
47
expect ( response . statusCode ) . toEqual ( 301 ) ;
43
48
expect ( response . body ) . toEqual ( { } ) ;
44
-
45
- server . close ( ) ;
46
49
} ) ;
47
50
48
51
it ( 'Should get status code "405" when send POST request' , async ( ) => {
49
52
// Arrange
50
- const { server } = runServer ( { } ) ;
53
+ server = runServer ( { } ) . server ;
51
54
const request = supertest ( server ) . post ( '/' ) ;
52
55
// Act
53
56
const response = await request ;
54
57
55
58
// Assert
56
59
expect ( response . statusCode ) . toEqual ( 405 ) ;
57
60
expect ( response . body ) . toEqual ( { } ) ;
58
-
59
- server . close ( ) ;
60
61
} ) ;
61
62
62
63
it ( 'Should get status code "301" when config allow POST redirect' , async ( ) => {
63
64
// Arrange
64
- const { server } = runServer ( {
65
+ server = runServer ( {
65
66
'enforce-https' : {
66
67
options : {
67
68
redirectMethods : [ 'POST' ] ,
68
69
} as EnforceHttpsOptions ,
69
70
} ,
70
- } ) ;
71
+ } ) . server ;
71
72
72
73
const request = supertest ( server ) . post ( '/' ) ;
73
74
// Act
@@ -76,21 +77,23 @@ describe('Test enforce https middlewares for LOCAL resolver type', () => {
76
77
// Assert
77
78
expect ( response . statusCode ) . toEqual ( 301 ) ;
78
79
expect ( response . body ) . toEqual ( { } ) ;
79
-
80
- server . close ( ) ;
81
80
} ) ;
82
81
} ) ;
83
82
84
83
describe ( 'Test enforce https middlewares for X_FORWARDED_PROTO resolver type' , ( ) => {
84
+ let server : Server ;
85
+ afterEach ( ( ) => {
86
+ server ?. close ( ) ;
87
+ } ) ;
85
88
it ( 'Should get status code "301" when send GET request' , async ( ) => {
86
89
// Arrange
87
- const { server } = runServer ( {
90
+ server = runServer ( {
88
91
'enforce-https' : {
89
92
options : {
90
93
type : ResolverType . X_FORWARDED_PROTO . toString ( ) ,
91
94
} as EnforceHttpsOptions ,
92
95
} ,
93
- } ) ;
96
+ } ) . server ;
94
97
95
98
const request = supertest ( server ) . get ( '/' ) ;
96
99
// Act
@@ -99,19 +102,17 @@ describe('Test enforce https middlewares for X_FORWARDED_PROTO resolver type', (
99
102
// Assert
100
103
expect ( response . statusCode ) . toEqual ( 301 ) ;
101
104
expect ( response . body ) . toEqual ( { } ) ;
102
-
103
- server . close ( ) ;
104
105
} ) ;
105
106
106
107
it ( 'Should get status code "200" when send GET request with "x-forwarded-proto: https"' , async ( ) => {
107
108
// Arrange
108
- const { server } = runServer ( {
109
+ server = runServer ( {
109
110
'enforce-https' : {
110
111
options : {
111
112
type : ResolverType . X_FORWARDED_PROTO . toString ( ) ,
112
113
} as EnforceHttpsOptions ,
113
114
} ,
114
- } ) ;
115
+ } ) . server ;
115
116
116
117
const request = supertest ( server )
117
118
. get ( '/' )
@@ -122,21 +123,23 @@ describe('Test enforce https middlewares for X_FORWARDED_PROTO resolver type', (
122
123
// Assert
123
124
expect ( response . statusCode ) . toEqual ( 200 ) ;
124
125
expect ( response . body ) . toEqual ( { result : 'ok' } ) ;
125
-
126
- server . close ( ) ;
127
126
} ) ;
128
127
} ) ;
129
128
130
129
describe ( 'Test enforce https middlewares for AZURE_ARR resolver type' , ( ) => {
130
+ let server : Server ;
131
+ afterEach ( ( ) => {
132
+ server ?. close ( ) ;
133
+ } ) ;
131
134
it ( 'Should get status code "301" when send GET request' , async ( ) => {
132
135
// Arrange
133
- const { server } = runServer ( {
136
+ server = runServer ( {
134
137
'enforce-https' : {
135
138
options : {
136
139
type : ResolverType . AZURE_ARR . toString ( ) ,
137
140
} as EnforceHttpsOptions ,
138
141
} ,
139
- } ) ;
142
+ } ) . server ;
140
143
141
144
const request = supertest ( server ) . get ( '/' ) ;
142
145
// Act
@@ -145,19 +148,17 @@ describe('Test enforce https middlewares for AZURE_ARR resolver type', () => {
145
148
// Assert
146
149
expect ( response . statusCode ) . toEqual ( 301 ) ;
147
150
expect ( response . body ) . toEqual ( { } ) ;
148
-
149
- server . close ( ) ;
150
151
} ) ;
151
152
152
153
it ( 'Should get status code "200" when send GET request with "x-arr-ssl: https"' , async ( ) => {
153
154
// Arrange
154
- const { server } = runServer ( {
155
+ server = runServer ( {
155
156
'enforce-https' : {
156
157
options : {
157
158
type : ResolverType . AZURE_ARR . toString ( ) ,
158
159
} as EnforceHttpsOptions ,
159
160
} ,
160
- } ) ;
161
+ } ) . server ;
161
162
162
163
const request = supertest ( server ) . get ( '/' ) . set ( 'x-arr-ssl' , 'https' ) ;
163
164
// Act
@@ -166,12 +167,14 @@ describe('Test enforce https middlewares for AZURE_ARR resolver type', () => {
166
167
// Assert
167
168
expect ( response . statusCode ) . toEqual ( 200 ) ;
168
169
expect ( response . body ) . toEqual ( { result : 'ok' } ) ;
169
-
170
- server . close ( ) ;
171
170
} ) ;
172
171
} ) ;
173
172
174
173
describe ( 'Test enforce https middlewares for CUSTOM resolver type' , ( ) => {
174
+ let server : Server ;
175
+ afterEach ( ( ) => {
176
+ server ?. close ( ) ;
177
+ } ) ;
175
178
it ( 'Should throw error when not set proto in options' , async ( ) => {
176
179
// Arrange
177
180
const config = {
@@ -190,14 +193,14 @@ describe('Test enforce https middlewares for CUSTOM resolver type', () => {
190
193
} ) ;
191
194
it ( 'Should get status code "301" when send GET request' , async ( ) => {
192
195
// Arrange
193
- const { server } = runServer ( {
196
+ server = runServer ( {
194
197
'enforce-https' : {
195
198
options : {
196
199
type : ResolverType . CUSTOM . toString ( ) ,
197
200
proto : 'x-custom-proto' ,
198
201
} as EnforceHttpsOptions ,
199
202
} ,
200
- } ) ;
203
+ } ) . server ;
201
204
202
205
const request = supertest ( server ) . get ( '/' ) ;
203
206
// Act
@@ -206,20 +209,18 @@ describe('Test enforce https middlewares for CUSTOM resolver type', () => {
206
209
// Assert
207
210
expect ( response . statusCode ) . toEqual ( 301 ) ;
208
211
expect ( response . body ) . toEqual ( { } ) ;
209
-
210
- server . close ( ) ;
211
212
} ) ;
212
213
213
214
it ( 'Should get status code "200" when send GET request with "x-custom-proto: https"' , async ( ) => {
214
215
// Arrange
215
- const { server } = runServer ( {
216
+ server = runServer ( {
216
217
'enforce-https' : {
217
218
options : {
218
219
type : ResolverType . CUSTOM . toString ( ) ,
219
220
proto : 'x-custom-proto' ,
220
221
} as EnforceHttpsOptions ,
221
222
} ,
222
- } ) ;
223
+ } ) . server ;
223
224
224
225
const request = supertest ( server ) . get ( '/' ) . set ( 'x-custom-proto' , 'https' ) ;
225
226
// Act
@@ -228,21 +229,23 @@ describe('Test enforce https middlewares for CUSTOM resolver type', () => {
228
229
// Assert
229
230
expect ( response . statusCode ) . toEqual ( 200 ) ;
230
231
expect ( response . body ) . toEqual ( { result : 'ok' } ) ;
231
-
232
- server . close ( ) ;
233
232
} ) ;
234
233
} ) ;
235
234
236
235
describe ( 'Test enforce https middlewares for FORWARDED resolver type' , ( ) => {
236
+ let server : Server ;
237
+ afterEach ( ( ) => {
238
+ server ?. close ( ) ;
239
+ } ) ;
237
240
it ( 'Should get status code "301" when send GET request' , async ( ) => {
238
241
// Arrange
239
- const { server } = runServer ( {
242
+ server = runServer ( {
240
243
'enforce-https' : {
241
244
options : {
242
245
type : ResolverType . FORWARDED . toString ( ) ,
243
246
} as EnforceHttpsOptions ,
244
247
} ,
245
- } ) ;
248
+ } ) . server ;
246
249
247
250
const request = supertest ( server ) . get ( '/' ) ;
248
251
// Act
@@ -251,19 +254,17 @@ describe('Test enforce https middlewares for FORWARDED resolver type', () => {
251
254
// Assert
252
255
expect ( response . statusCode ) . toEqual ( 301 ) ;
253
256
expect ( response . body ) . toEqual ( { } ) ;
254
-
255
- server . close ( ) ;
256
257
} ) ;
257
258
258
259
it ( 'Should get status code "200" when send GET request with "forwarded: by=foo;for=baz;host=localhost;proto=https' , async ( ) => {
259
260
// Arrange
260
- const { server } = runServer ( {
261
+ server = runServer ( {
261
262
'enforce-https' : {
262
263
options : {
263
264
type : ResolverType . FORWARDED . toString ( ) ,
264
265
} as EnforceHttpsOptions ,
265
266
} ,
266
- } ) ;
267
+ } ) . server ;
267
268
268
269
const request = supertest ( server )
269
270
. get ( '/' )
@@ -274,7 +275,5 @@ describe('Test enforce https middlewares for FORWARDED resolver type', () => {
274
275
// Assert
275
276
expect ( response . statusCode ) . toEqual ( 200 ) ;
276
277
expect ( response . body ) . toEqual ( { result : 'ok' } ) ;
277
-
278
- server . close ( ) ;
279
278
} ) ;
280
279
} ) ;
0 commit comments