@@ -12,7 +12,7 @@ import { executeOnceAndFetch } from '../execute-fetch';
12
12
import { describeServeBuilder } from '../jasmine-helpers' ;
13
13
import { BASE_OPTIONS , DEV_SERVER_BUILDER_INFO } from '../setup' ;
14
14
15
- describeServeBuilder ( executeDevServer , DEV_SERVER_BUILDER_INFO , ( harness , setupTarget ) => {
15
+ describeServeBuilder ( executeDevServer , DEV_SERVER_BUILDER_INFO , ( harness , setupTarget , isVite ) => {
16
16
describe ( 'option: "proxyConfig"' , ( ) => {
17
17
beforeEach ( async ( ) => {
18
18
setupTarget ( harness ) ;
@@ -232,6 +232,69 @@ describeServeBuilder(executeDevServer, DEV_SERVER_BUILDER_INFO, (harness, setupT
232
232
} ) ,
233
233
) ;
234
234
} ) ;
235
+
236
+ /**
237
+ * ****************************************************************************************************
238
+ * ********************************** Below only Vite specific tests **********************************
239
+ * ****************************************************************************************************
240
+ */
241
+ if ( ! isVite ) {
242
+ return ;
243
+ }
244
+
245
+ describe ( 'when using Vite' , ( ) => {
246
+ it ( 'proxies support regexp as context' , async ( ) => {
247
+ harness . useTarget ( 'serve' , {
248
+ ...BASE_OPTIONS ,
249
+ proxyConfig : 'proxy.config.json' ,
250
+ } ) ;
251
+
252
+ const proxyServer = createProxyServer ( ) ;
253
+ try {
254
+ await new Promise < void > ( ( resolve ) => proxyServer . listen ( 0 , '127.0.0.1' , resolve ) ) ;
255
+ const proxyAddress = proxyServer . address ( ) as import ( 'net' ) . AddressInfo ;
256
+
257
+ await harness . writeFiles ( {
258
+ 'proxy.config.json' : `
259
+ { "^/api/.*": { "target": "http://127.0.0.1:${ proxyAddress . port } " } }
260
+ ` ,
261
+ } ) ;
262
+
263
+ const { result, response } = await executeOnceAndFetch ( harness , '/api/test' ) ;
264
+
265
+ expect ( result ?. success ) . toBeTrue ( ) ;
266
+ expect ( await response ?. text ( ) ) . toContain ( 'TEST_API_RETURN' ) ;
267
+ } finally {
268
+ await new Promise < void > ( ( resolve ) => proxyServer . close ( ( ) => resolve ( ) ) ) ;
269
+ }
270
+ } ) ;
271
+
272
+ it ( 'proxies support negated regexp as context' , async ( ) => {
273
+ harness . useTarget ( 'serve' , {
274
+ ...BASE_OPTIONS ,
275
+ proxyConfig : 'proxy.config.json' ,
276
+ } ) ;
277
+
278
+ const proxyServer = createProxyServer ( ) ;
279
+ try {
280
+ await new Promise < void > ( ( resolve ) => proxyServer . listen ( 0 , '127.0.0.1' , resolve ) ) ;
281
+ const proxyAddress = proxyServer . address ( ) as import ( 'net' ) . AddressInfo ;
282
+
283
+ await harness . writeFiles ( {
284
+ 'proxy.config.json' : `
285
+ { "^\\/(?!something).*": { "target": "http://127.0.0.1:${ proxyAddress . port } " } }
286
+ ` ,
287
+ } ) ;
288
+
289
+ const { result, response } = await executeOnceAndFetch ( harness , '/api/test' ) ;
290
+
291
+ expect ( result ?. success ) . toBeTrue ( ) ;
292
+ expect ( await response ?. text ( ) ) . toContain ( 'TEST_API_RETURN' ) ;
293
+ } finally {
294
+ await new Promise < void > ( ( resolve ) => proxyServer . close ( ( ) => resolve ( ) ) ) ;
295
+ }
296
+ } ) ;
297
+ } ) ;
235
298
} ) ;
236
299
} ) ;
237
300
0 commit comments