#!perl
my
$testfile
=
'test.png'
;
my
$testfile_path
= catfile(
't'
=>
'data'
=>
$testfile
);
open
(
my
$fh
,
'<'
,
$testfile_path
) or
die
"Couldn't open $testfile_path $!"
;
my
$contents
=
do
{
local
$/; <
$fh
>; };
close
$fh
;
sub
dump_file {
open
(
my
$out
,
'>'
,
'/tmp/test.png'
);
print
$out
$_
[0];
close
$out
;
}
sub
create_http_body {
my
$binary_string
=
shift
;
my
$length
=
length
(
$binary_string
);
my
$spaces
=
' '
x
length
(
'Content: '
);
$binary_string
=~ s/\n/\n
$spaces
/sg;
my
$body
=
<<"EOF";
id: 873
Subject: \nCreator: 12
Created: 2013-11-06 07:15:36
Transaction: 1457
Parent: 871
MessageId: \nFilename: prova2.png
ContentType: image/png
ContentEncoding: base64
Headers: Content-Type: image/png; name="prova2.png"
Content-Disposition: attachment; filename="prova2.png"
Content-Transfer-Encoding: base64
Content-Length: $length
Content: $binary_string\n\n
EOF
return
$body
;
}
{
my
$body
=
qq|
id: ticket/971216
Queue: whatever
Owner: Nobody
Creator: someone\@example.com
Subject: Problems
Status: new
Priority: 10
InitialPriority: 10
FinalPriority: 50
Requestors: someone\@example.com\nCc:\nAdminCc:\nCreated: Fri Nov 04 15:38:18 2022
Starts: Not set
Started: Not set
Due: Sun Nov 06 15:38:18 2022
Resolved: Not set
Told: Not set
LastUpdated: Fri Nov 04 16:19:43 2022
TimeEstimated: 0
TimeWorked: 0
TimeLeft: 0
CF.{AdminURI}: \n
|
;
my
$form
= form_parse(
$body
);
is(
ref
(
$form
),
'ARRAY'
,
'form is an array reference'
);
my
(
$c
,
$o
,
$k
,
$e
) = @{
$$form
[0] };
is(
ref
(
$k
),
'HASH'
,
'third element ($k) is a hash reference'
);
is_deeply(
$k
,
{
'id'
=>
'ticket/971216'
,
'Queue'
=>
'whatever'
,
'Owner'
=>
'Nobody'
,
'Creator'
=>
'someone@example.com'
,
'Subject'
=>
'Problems'
,
'Status'
=>
'new'
,
'Priority'
=>
'10'
,
'InitialPriority'
=>
'10'
,
'FinalPriority'
=>
'50'
,
'Requestors'
=>
'someone@example.com'
,
'Cc'
=>
undef
,
'AdminCc'
=>
undef
,
'Created'
=>
'Fri Nov 04 15:38:18 2022'
,
'Starts'
=>
'Not set'
,
'Started'
=>
'Not set'
,
'Due'
=>
'Sun Nov 06 15:38:18 2022'
,
'Resolved'
=>
'Not set'
,
'Told'
=>
'Not set'
,
'LastUpdated'
=>
'Fri Nov 04 16:19:43 2022'
,
'TimeEstimated'
=>
'0'
,
'TimeWorked'
=>
'0'
,
'TimeLeft'
=>
'0'
,
'CF.{AdminURI}'
=>
undef
,
},
'Empty fields undertood'
);
}
{
my
$body
= create_http_body(
$contents
);
my
$form
= form_parse(
$body
);
is(
ref
(
$form
),
'ARRAY'
,
'form is an array reference'
);
my
(
$c
,
$o
,
$k
,
$e
) = @{
$$form
[0] };
is(
ref
(
$k
),
'HASH'
,
'third element ($k) is a hash reference'
);
ok(
$k
->{Content} eq
$contents
,
'form parsed out contents correctly'
);
dump_file(
$k
->{Content} );
}
{
my
$body
=
qq|id: 17217
Subject: \nCreator: 12
Created: 2022-09-24 21:26:55
Transaction: 37112
Parent: 17215
MessageId: \nFilename: LG1kcpoxfV
ContentType: text/plain
ContentEncoding: none
Headers: Content-Transfer-Encoding: binary
Content-Disposition: form-data; filename="LG1kcpoxfV"; name="attachment_1"
Content-Type: text/plain; charset="utf-8"; name="LG1kcpoxfV"
X-RT-Original-Encoding: ascii
Content-Length: 31
Content: dude this is a text attachment
|
;
my
$form
= form_parse(
$body
);
is(
ref
(
$form
),
'ARRAY'
,
'form is an array reference'
);
my
(
$c
,
$o
,
$k
,
$e
) = @{
$$form
[0] };
is(
ref
(
$k
),
'HASH'
,
'third element ($k) is a hash reference'
);
ok(
$k
->{Content} eq
"dude this is a text attachment\n"
,
'form parsed out contents correctly'
);
}