#!/usr/bin/env perl

use strictures 1;
use Test::More;

use lib 't/lib';
use Catalyst::Test 'TestApp2';


{
    # Basic initial '/show' that should be empty
    my $resp = request('/show');
    ok($resp->is_success, 'HTTP 200 response');
    is($resp->content, "status: na\nerror: na");
}

{
    # Load a status message
    my $resp1 = request('/save_status_msg/Test%20Status%20Message');
    ok($resp1->is_redirect, 'HTTP 302 response');
    my $redir_uri1 = $resp1->header('location');
    diag("Redirected to $redir_uri1");
    like($redir_uri1, qr|http://localhost/show\?my_mid=\d{8}|, "Redirect URI");

    # Follow redirect to get the message
    my $resp2 = request($redir_uri1);
    ok($resp2->is_success, 'HTTP 200 response');
    is($resp2->content, "status: Test Status Message\nerror: na",
        "Check status msg found");

    # Make sure we don't get it twice
    is(get($redir_uri1), "status: na\nerror: na",
        "Message gone on second access");


    # Load a error message
    my $resp3 = request('/save_error_msg/Test%20Error%20Message');
    ok($resp3->is_redirect, 'HTTP 302 response');
    my $redir_uri2 = $resp3->header('location');
    diag("Redirected to $redir_uri2");
    like($redir_uri2, qr|http://localhost/show\?my_mid=\d{8}|, "Redirect URI");

    # Follow redirect to get the message
    my $resp4 = request($redir_uri2);
    ok($resp4->is_success, 'HTTP 200 response');
    is($resp4->content, "status: na\nerror: Test Error Message",
        "Check error msg found");

    # Make sure we don't get it twice
    is(get($redir_uri2), "status: na\nerror: na",
        "Message gone on second access");
}

done_testing();
