The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More;
use Plack::Builder;

my $app = sub {
    return [ 200, [
        'Last-Modified' => 'Wed, 23 Sep 2009 13:36:33 GMT',
        'Content-Type' => 'text/plain',
        'ETag' => 'foo bar',
      ], [ 'Hello Foo' ] ];
  };

 {
    my $test = "Pre-test: test that header order is not changed by default.";
    # Don't use Plack::Test since it uses HTTP::Headers to reorder itself
    my $res = $app->({});

     is_deeply $res->[1], [
     'Last-Modified' => 'Wed, 23 Sep 2009 13:36:33 GMT',
     'Content-Type' => 'text/plain',
     'ETag' => 'foo bar',
     ],
     $test;
 }

 {
    my $test = "Rearrange Middleware changes the header order";
    $app = builder {
        enable "Plack::Middleware::RearrangeHeaders";
        $app;
    };

    # Don't use Plack::Test since it uses HTTP::Headers to reorder itself
    my $res = $app->({});

    is_deeply $res->[1], [
    'ETag' => 'foo bar',
    'Content-Type' => 'text/plain',
    'Last-Modified' => 'Wed, 23 Sep 2009 13:36:33 GMT',
    ],
    $test;
}

done_testing;