Dancer-Plugin-RPC

 view release on metacpan or  search on metacpan

t/175-restrpc.t  view on Meta::CPAN

#! perl -I. -w
use t::Test::abeltje;

BEGIN { $ENV{DANCER_APPDIR} = 't' }
use TestProject;
use Dancer::Test;

use JSON;

route_exists([POST => '/rest/system/ping'], "system/ping exsits");

{
    my $response = dancer_response(
        POST => '/rest/system/version',
        {
            headers => [
                'Content-Type' => 'application/json',
            ],
        }
    );

    my $version = from_json($response->content);
    is_deeply(
        $version,
        {software_version => '1.0'},
        "system.version"
    );
}

{
    my $response = dancer_response(
        POST => '/rest/system/four_o_four',
        {
            headers => [
                'Content-Type' => 'application/json',
            ],
        }
    );

    is($response->status, 404, "Check endpoint");
}

{
    my $response = dancer_response(
        POST => '/rest/system/ping',
        {
            headers => [
                'Content-Type' => 'form',
            ],
        }
    );

    is($response->status, 404, "Check content-type restrpc");
}

{
    my $old_log = read_logs(); # clean up for this test
    my $response = dancer_response(
        POST => '/rest/api/uppercase',
        {
            headers => [
                'Content-Type' => 'application/json',
            ],
            body => to_json(
                { argument => 'Alles grote letters' }
            ),
        }
    );

    is_deeply(
        from_json($response->{content}),
        {uppercase => 'ALLES GROTE LETTERS'},
        "/rest/api/uppercase"
    ) or diag(explain($response));

    my @expected_logs = (
        {
            level   => 'debug',
            message => qr{^\Q[handle_restrpc_request] Processing:}
        },
        {
            level   => 'debug',
            message => qr{^\Q[handle_restrpc_call(uppercase)]}
        },
        {
            level   => 'debug',
            message => qr{^\Q[uppercase] {'argument' => 'Alles grote letters'}}
        },
        {
            level   => 'debug',
            message => qr{^\Q[handled_restrpc_request(uppercase)]}
        },
        {
            level   => 'info',
            message => qr{^\Q[RPC::RESTRPC]\E request for uppercase took 0\.\d+s},
        },
        {
            level   => 'debug',
            message => qr{^\Q[restrpc_response] }
        },



( run in 0.438 second using v1.01-cache-2.11-cpan-e93a5daba3e )