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...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mojolicious/4c7be939-a40e-494e-8360-b848ed98c8f9n%40googlegroups.com.