@@ -6,6 +6,7 @@ import { UriResolver } from "@polywrap/uri-resolvers-js";
66
77import nock from "nock" ;
88import { WrapError } from "@polywrap/core-js" ;
9+ import { initTestEnvironment , stopTestEnvironment , providers } from "@polywrap/test-env-js" ;
910
1011jest . setTimeout ( 360000 ) ;
1112
@@ -17,6 +18,10 @@ const defaultReplyHeaders = {
1718describe ( "e2e tests for HttpPlugin" , ( ) => {
1819 let polywrapClient : PolywrapClient ;
1920
21+ beforeAll ( async ( ) => {
22+ await initTestEnvironment ( ) ;
23+ } ) ;
24+
2025 beforeEach ( ( ) => {
2126 polywrapClient = new PolywrapClient (
2227 {
@@ -29,6 +34,10 @@ describe("e2e tests for HttpPlugin", () => {
2934 ) ;
3035 } ) ;
3136
37+ afterAll ( async ( ) => {
38+ await stopTestEnvironment ( ) ;
39+ } ) ;
40+
3241 describe ( "get method" , ( ) => {
3342 test ( "successful request with response type as TEXT" , async ( ) => {
3443 nock ( "http://www.example.com" )
@@ -288,5 +297,89 @@ describe("e2e tests for HttpPlugin", () => {
288297 expect ( response . error ) . toBeDefined ( ) ;
289298 expect ( response . ok ) . toBeFalsy ( ) ;
290299 } ) ;
300+
301+ test ( "successful request with form-data (simple)" , async ( ) => {
302+ const response = await polywrapClient . invoke < Http_Response > ( {
303+ uri : "wrap://ens/http.polywrap.eth" ,
304+ method : "post" ,
305+ args : {
306+ url : `${ providers . ipfs } /api/v0/add` ,
307+ request : {
308+ responseType : "TEXT" ,
309+ formData :[ {
310+ name :"test.txt" ,
311+ value :"QSBuZXcgc2FtcGxlIGZpbGU=" ,
312+ fileName :"test.txt" ,
313+ type :"application/octet-stream"
314+ } ] ,
315+ } ,
316+ } ,
317+ } ) ;
318+
319+ if ( ! response . ok ) fail ( response . error ) ;
320+ expect ( response . value ) . toBeDefined ( ) ;
321+ expect ( response . value ?. status ) . toBe ( 200 ) ;
322+ expect ( response . value ?. body ) . toBe ( JSON . stringify ( {
323+ Name : "test.txt" ,
324+ Hash : "Qmawvzw32Jq7RbMw2K8axEbzfNK74NPynBoq4tJnWvkYqP" ,
325+ Size : "25"
326+ } ) ) ;
327+ } ) ;
328+
329+ test ( "successful request with form-data (complex)" , async ( ) => {
330+ const response = await polywrapClient . invoke < Http_Response > ( {
331+ uri : "wrap://ens/http.polywrap.eth" ,
332+ method : "post" ,
333+ args : {
334+ url : `${ providers . ipfs } /api/v0/add` ,
335+ request : {
336+ responseType : "TEXT" ,
337+ formData :[
338+ { name : "file_0.txt" , value : "ZmlsZV8w" , fileName : "file_0.txt" , type : "application/octet-stream" } ,
339+ { name : "file_1.txt" , value : "ZmlsZV8x" , fileName : "file_1.txt" , type : "application/octet-stream" } ,
340+ { name : "directory_A" , value : null , fileName : "directory_A" , type : "application/x-directory" } ,
341+ { name : "directory_A/file_A_0.txt" , value : "ZmlsZV9BXzA=" , fileName : "directory_A%2Ffile_A_0.txt" , type : "application/octet-stream" } ,
342+ { name : "directory_A/file_A_1.txt" , value : "ZmlsZV9BXzE=" , fileName : "directory_A%2Ffile_A_1.txt" , type : "application/octet-stream" }
343+ ] ,
344+ } ,
345+ } ,
346+ } ) ;
347+
348+ if ( ! response . ok ) fail ( response . error ) ;
349+ expect ( response . value ) . toBeDefined ( ) ;
350+ expect ( response . value ?. status ) . toBe ( 200 ) ;
351+
352+ const results = response . value ?. body ?. trim ( )
353+ . split ( "\n" )
354+ . map ( ( v ) => JSON . parse ( v ) ) ;
355+
356+ expect ( results ) . toStrictEqual ( [
357+ {
358+ Name : "file_0.txt" ,
359+ Hash : "QmV3uDt3KhEYchouUzEbfz7FBA2c2LvNo76dxLLwJW76b1" ,
360+ Size : "14"
361+ } ,
362+ {
363+ Name : "file_1.txt" ,
364+ Hash : "QmYwMByE4ibjuMu2nRYRfBweJGJErjmMXfZ92srKhYfq5f" ,
365+ Size : "14"
366+ } ,
367+ {
368+ Name : "directory_A/file_A_0.txt" ,
369+ Hash : "QmeYp73qnn8EdogE4d6BhQCHtep7dkRC8FgdE3Qbo4nY9c" ,
370+ Size : "16"
371+ } ,
372+ {
373+ Name : "directory_A/file_A_1.txt" ,
374+ Hash : "QmWetZjwHWuGsDyxX6ae5wGS68mFTXC5x61H1TUNxqBXzn" ,
375+ Size : "16"
376+ } ,
377+ {
378+ Name : "directory_A" ,
379+ Hash : "Qmb5XsySizDeTn1kvNbyiiNy9eyg3Lb6EwGjQt7iiKBxoL" ,
380+ Size : "144"
381+ } ,
382+ ] ) ;
383+ } ) ;
291384 } ) ;
292385} ) ;
0 commit comments