In the test, you're sending your files as JSON. Don't you mean to send them as a multipart file upload, using the multipart generator.
On Fri, Jul 24, 2020 at 12:43 PM Gordon Dollarnanda <anexi...@gmail.com> wrote: > Hi guys, > > Good day. > > I have my controller working perfectly for file uploads. > I get my file uploads by doing > > *my* *@file_uploads* = *@{* *$self->req->uploads*() *}*; > > > I tried writing the test before development but due to time constraints, > I had to cheat and use something else like a webform which i kept posting > to my controller. > > Done with the development now and Im picking up where I left off with the > test. > > > *What I want to achieve:* > > Create a Test::Mojo object which will upload 2 files into my Mojo > application . > > *My test code:* > > > * 27 my* *$t* = Test::Mojo->new(*'EMU'*); > > * 28 my* *$header* = Mojo::Headers->new->from_hash( *$t->app->conf->get*( > *'test_default_headers'*) ); > > * 29 my* *$base_url* = *q{/emu/api/func/v6/fwm}*; > > * 30 my* *$user_info* = *$t->app->conf->get*(*'test_userinfo'*); > > * 31 * > > * 32 *{ > > * 33 * *my* *$file_1* = Mojo::Asset::File->new(); > > * 34 * *$file_1->add_chunk*(*' this is a test '*); > > * 35 * > > * 36 * *my* *$file_2* = Mojo::Asset::File->new(); > > * 37 * *$file_2->add_chunk*(*' this is another test '*); > > * 38 * > > * 39 * *my* *$userinfo* = > *'ad...@mytestdomain.com.au:testPasswordHere'*; > > * 40 * > > * 41 * *my* *$specifc_device_scenario* = > > * 42 * { > > * 43 * *'url'* => *join*(*q{/}*, *$base_url*, *q{files}*), > > * 44 * *'header'* => *$header*, > > * 45 * *'contents'* => [ > > * 46 * *'format'* => *q{json}*, > > * 47 * *'file'* => [ > > * 48 * *'deviceTypeFile'* => *$file_1*, > > * 49 * *'deviceTypeFile'* => *$file_2*, > > * 50 * ], > > * 51 * ], > > * 52 * *'method'* => [ *'post'*, ], > > * 53 * *'content-type'* => *q{application/octet-stream}*, > > * 54 * }; > > * 55 * > > * 56 * *$header->append*( *'deviceTypeFile'* => *$file_1*); > > * 57 * *$header->append*( *'deviceTypeFile'* => *$file_2*); > > * 58 * > > * 59 * *my* *$request_url* = Mojo::URL->new( > *$specifc_device_scenario->{**'url'**}*)->userinfo( > > * 60 * *$userinfo* > > * 61 * ); > > * 62 * > > * 63 * *$request_url->query*( *$specifc_device_scenario->{**'contents'* > *}* ); > > * 64 * *$t->post_ok*( *$request_url*, *$specifc_device_scenario->{* > *'header'**}*)->status_is(*200*, *q{Success in upload}* ); > > * 65 *} > > * 66 * > > * 67 *done_testing(); > > * 68 * > > > > *What I have tried to do:* > > In my controller , i dumped out the contents of the uploads: > > *my* *@file_uploads* = *@{* *$self->req->uploads*() *}*; > > *$self->log->debug*(*" the file uploads: "* . Dumper([ \ > *@file_uploads* ] ) ); > > > However, whether I used append (in line 56 and 57 ), or replaced append > with 'add', or set the static file asset contents in the request object > (in line 59 ), the file uploads persist to be blank. > > Very strangely, when I looked in my logs, this is what I see: > > > [2020-07-24 19:26:23.55465] [30776] [debug] [_is_nOV1] Input data: > > { > > "file" => [ > > "deviceTypeFile", > > "Mojo::Asset::File=HASH(0x7fc606825b28)", > > "deviceTypeFile", > > "Mojo::Asset::File=HASH(0x7fc5e2102b90)" > > ], > > "format" => "json" > > } > > > *Manual testing with a form:* > > When I use a webform and submit the contents via the form,it's perfect. > The form's element name is 'deviceTypeFile'. > > I have also even used the following in the controller to no avail. > > *my* *@file_uploads* = *@{* *$self->req->uploads*('deviceTypeFile') > *}*; > > > *My question:* > > > With the attempts above, can anyone please show me how to use Test::Mojo > to test POSTing two file objects (Mojo::File::Asset) to a Mojo application? > > > > Thank you, everyone. > > -- > You received this message because you are subscribed to the Google Groups > "Mojolicious" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to mojolicious+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/mojolicious/4c7be939-a40e-494e-8360-b848ed98c8f9n%40googlegroups.com > <https://groups.google.com/d/msgid/mojolicious/4c7be939-a40e-494e-8360-b848ed98c8f9n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Mojolicious" group. To unsubscribe from this group and stop receiving emails from it, send an email to mojolicious+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/mojolicious/CAO-W_8CGRi6JGdAVfNbKON2zXMLZdQgZxT%3D08n1UKtOzLHYd3A%40mail.gmail.com.