The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Test form parsing.  Taken out of 83-attachments.t as a special case,
# just to make sure that the form parsing is performed correctly.

use strict;
use warnings;

use Test::More tests => 3;

use RT::Client::REST::Forms qw(form_parse);
use File::Spec::Functions qw(catfile);

my $testfile = "test.png";
my $testfile_path = catfile(t => $testfile);

open (my $fh, "<", $testfile_path) or die "Couldn't open $testfile_path $!";
my $contents = do { local $/; <$fh>; };
close $fh;

sub create_http_body {
    my $binary_string = shift;
    my $length = length($binary_string);
    $binary_string =~ s/\n/\n         /sg;
    $binary_string .= "\n\n";
    my $body = <<"EOF";
id: 873
Subject: 
Creator: 12
Created: 2013-11-06 07:15:36
Transaction: 1457
Parent: 871
MessageId: 
Filename: 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
EOF
    return $body;
}

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");