1+ import type { BodyType , RawBodyType } from '../src/types'
12import { parseRouteTemplate } from '@mokup/runtime'
23import { afterEach , describe , expect , it , vi } from 'vitest'
34import { ref } from 'vue'
@@ -13,7 +14,9 @@ describe('request runner', () => {
1314 const queryText = ref ( '' )
1415 const headersText = ref ( '' )
1516 const bodyText = ref ( '' )
16- const bodyType = ref < 'json' | 'text' | 'form' | 'multipart' | 'base64' > ( 'json' )
17+ const bodyType = ref < BodyType > ( 'raw' )
18+ const rawType = ref < RawBodyType > ( 'json' )
19+ const rawValidate = ref ( true )
1720 const responseText = ref ( '' )
1821 const responseStatus = ref ( '' )
1922 const responseTime = ref ( '' )
@@ -29,6 +32,8 @@ describe('request runner', () => {
2932 headersText,
3033 bodyText,
3134 bodyType,
35+ rawType,
36+ rawValidate,
3237 responseText,
3338 responseStatus,
3439 responseTime,
@@ -53,15 +58,12 @@ describe('request runner', () => {
5358 expect ( responseText . value ) . toBe ( 'errors.headersJson' )
5459
5560 headersText . value = '{}'
56- bodyType . value = 'json'
61+ bodyType . value = 'raw'
62+ rawType . value = 'json'
63+ rawValidate . value = true
5764 bodyText . value = '{'
5865 await runner . runRequest ( )
5966 expect ( responseText . value ) . toBe ( 'errors.bodyJson' )
60-
61- bodyType . value = 'base64'
62- bodyText . value = '###'
63- await runner . runRequest ( )
64- expect ( responseText . value ) . toBe ( 'errors.bodyBase64' )
6567 } )
6668
6769 it ( 'builds request bodies and handles responses' , async ( ) => {
@@ -73,7 +75,10 @@ describe('request runner', () => {
7375 const queryText = ref ( '' )
7476 const headersText = ref ( '' )
7577 const bodyText = ref ( '' )
76- const bodyType = ref < 'json' | 'text' | 'form' | 'multipart' | 'base64' > ( 'text' )
78+ const bodyType = ref < BodyType > ( 'raw' )
79+ const rawType = ref < RawBodyType > ( 'text' )
80+ const rawValidate = ref ( true )
81+ const binaryFile = ref < File | null > ( null )
7782 const responseText = ref ( '' )
7883 const responseStatus = ref ( '' )
7984 const responseTime = ref ( '' )
@@ -100,6 +105,9 @@ describe('request runner', () => {
100105 headersText,
101106 bodyText,
102107 bodyType,
108+ rawType,
109+ rawValidate,
110+ binaryFile,
103111 responseText,
104112 responseStatus,
105113 responseTime,
@@ -109,7 +117,8 @@ describe('request runner', () => {
109117 getRouteKey : ( ) => 'POST /upload/:id' ,
110118 } )
111119
112- bodyType . value = 'text'
120+ bodyType . value = 'raw'
121+ rawType . value = 'text'
113122 bodyText . value = 'hello'
114123 await runner . runRequest ( )
115124 expect ( fetchMock ) . toHaveBeenCalledWith (
@@ -120,7 +129,7 @@ describe('request runner', () => {
120129 } ) ,
121130 )
122131
123- bodyType . value = 'form'
132+ bodyType . value = 'form-urlencoded '
124133 bodyText . value = 'a=1'
125134 await runner . runRequest ( )
126135 expect ( fetchMock ) . toHaveBeenCalledWith (
@@ -131,17 +140,17 @@ describe('request runner', () => {
131140 } ) ,
132141 )
133142
134- bodyType . value = 'multipart '
143+ bodyType . value = 'form-data '
135144 bodyText . value = 'a=1'
136145 await runner . runRequest ( )
137146 const lastMultipart = fetchMock . mock . calls . at ( - 1 ) ?. [ 1 ] as RequestInit
138147 expect ( lastMultipart . body ) . toBeInstanceOf ( FormData )
139148
140- bodyType . value = 'base64 '
141- bodyText . value = 'SGVsbG8='
149+ bodyType . value = 'binary '
150+ binaryFile . value = new File ( [ 'hello' ] , 'hello.bin' , { type : 'application/octet-stream' } )
142151 await runner . runRequest ( )
143- const lastBase64 = fetchMock . mock . calls . at ( - 1 ) ?. [ 1 ] as RequestInit
144- expect ( lastBase64 . headers ) . toEqual ( expect . objectContaining ( { 'Content-Type' : 'application/octet-stream' } ) )
152+ const lastBinary = fetchMock . mock . calls . at ( - 1 ) ?. [ 1 ] as RequestInit
153+ expect ( lastBinary . headers ) . toEqual ( expect . objectContaining ( { 'Content-Type' : 'application/octet-stream' } ) )
145154
146155 expect ( responseStatus . value ) . toBe ( '200 OK' )
147156 expect ( responseText . value ) . toContain ( '"ok"' )
@@ -162,7 +171,9 @@ describe('request runner', () => {
162171 const queryText = ref ( '' )
163172 const headersText = ref ( '' )
164173 const bodyText = ref ( 'note=alpha' )
165- const bodyType = ref < 'json' | 'text' | 'form' | 'multipart' | 'base64' > ( 'multipart' )
174+ const bodyType = ref < BodyType > ( 'form-data' )
175+ const rawType = ref < RawBodyType > ( 'text' )
176+ const rawValidate = ref ( true )
166177 const multipartFiles = ref ( [
167178 {
168179 id : 'row-1' ,
@@ -196,6 +207,8 @@ describe('request runner', () => {
196207 headersText,
197208 bodyText,
198209 bodyType,
210+ rawType,
211+ rawValidate,
199212 multipartFiles,
200213 responseText,
201214 responseStatus,
@@ -240,7 +253,10 @@ describe('request runner', () => {
240253 const queryText = ref ( '' )
241254 const headersText = ref ( '{"Content-Type":"application/custom"}' )
242255 const bodyText = ref ( '' )
243- const bodyType = ref < 'json' | 'text' | 'form' | 'multipart' | 'base64' > ( 'json' )
256+ const bodyType = ref < BodyType > ( 'raw' )
257+ const rawType = ref < RawBodyType > ( 'json' )
258+ const rawValidate = ref ( true )
259+ const binaryFile = ref < File | null > ( null )
244260 const responseText = ref ( '' )
245261 const responseStatus = ref ( '' )
246262 const responseTime = ref ( '' )
@@ -267,6 +283,9 @@ describe('request runner', () => {
267283 headersText,
268284 bodyText,
269285 bodyType,
286+ rawType,
287+ rawValidate,
288+ binaryFile,
270289 responseText,
271290 responseStatus,
272291 responseTime,
@@ -276,20 +295,22 @@ describe('request runner', () => {
276295 getRouteKey : ( ) => 'POST /upload/:id' ,
277296 } )
278297
279- bodyType . value = 'json'
298+ bodyType . value = 'raw'
299+ rawType . value = 'json'
280300 bodyText . value = '{"ok":true}'
281301 await runner . runRequest ( )
282302
283- bodyType . value = 'text'
303+ bodyType . value = 'raw'
304+ rawType . value = 'text'
284305 bodyText . value = 'hello'
285306 await runner . runRequest ( )
286307
287- bodyType . value = 'form'
308+ bodyType . value = 'form-urlencoded '
288309 bodyText . value = 'a=1'
289310 await runner . runRequest ( )
290311
291- bodyType . value = 'base64 '
292- bodyText . value = 'SGVsbG8='
312+ bodyType . value = 'binary '
313+ binaryFile . value = new File ( [ 'hello' ] , 'hello.bin' , { type : 'application/octet-stream' } )
293314 await runner . runRequest ( )
294315
295316 for ( const call of fetchMock . mock . calls ) {
@@ -306,7 +327,9 @@ describe('request runner', () => {
306327 const queryText = ref ( '' )
307328 const headersText = ref ( JSON . stringify ( { 'x-optional' : undefined , 'list' : [ 'a' , 'b' ] } ) )
308329 const bodyText = ref ( '' )
309- const bodyType = ref < 'json' | 'text' | 'form' | 'multipart' | 'base64' > ( 'text' )
330+ const bodyType = ref < BodyType > ( 'none' )
331+ const rawType = ref < RawBodyType > ( 'text' )
332+ const rawValidate = ref ( true )
310333 const responseText = ref ( '' )
311334 const responseStatus = ref ( '' )
312335 const responseTime = ref ( '' )
@@ -322,6 +345,8 @@ describe('request runner', () => {
322345 headersText,
323346 bodyText,
324347 bodyType,
348+ rawType,
349+ rawValidate,
325350 responseText,
326351 responseStatus,
327352 responseTime,
@@ -355,7 +380,10 @@ describe('request runner', () => {
355380 const queryText = ref ( '' )
356381 const headersText = ref ( '{}' )
357382 const bodyText = ref ( ' ' )
358- const bodyType = ref < 'json' | 'text' | 'form' | 'multipart' | 'base64' > ( 'text' )
383+ const bodyType = ref < BodyType > ( 'raw' )
384+ const rawType = ref < RawBodyType > ( 'text' )
385+ const rawValidate = ref ( true )
386+ const binaryFile = ref < File | null > ( null )
359387 const responseText = ref ( '' )
360388 const responseStatus = ref ( '' )
361389 const responseTime = ref ( '' )
@@ -382,6 +410,9 @@ describe('request runner', () => {
382410 headersText,
383411 bodyText,
384412 bodyType,
413+ rawType,
414+ rawValidate,
415+ binaryFile,
385416 responseText,
386417 responseStatus,
387418 responseTime,
@@ -396,20 +427,21 @@ describe('request runner', () => {
396427 expect ( init . body ) . toBeUndefined ( )
397428 expect ( responseText . value ) . toBe ( 'response.emptyPayload' )
398429
399- bodyType . value = 'json'
430+ bodyType . value = 'raw'
431+ rawType . value = 'json'
400432 bodyText . value = ''
401433 await runner . runRequest ( )
402434
403- bodyType . value = 'form'
435+ bodyType . value = 'form-urlencoded '
404436 bodyText . value = ''
405437 await runner . runRequest ( )
406438
407- bodyType . value = 'multipart '
439+ bodyType . value = 'form-data '
408440 bodyText . value = ''
409441 await runner . runRequest ( )
410442
411- bodyType . value = 'base64 '
412- bodyText . value = ''
443+ bodyType . value = 'binary '
444+ binaryFile . value = null
413445 await runner . runRequest ( )
414446 } )
415447
0 commit comments