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