#!/usr/bin/perl
use strict;
use warnings;
use FindBin;
use lib "$FindBin::Bin/lib";
use Test::More tests => 19;
use Test::MockObject::Extends;
use URI;
use Catalyst::Test 'TestApp';
use Catalyst::Request;
my $m;
BEGIN { use_ok( $m = "Catalyst::Plugin::Session::State::URI" ) }
can_ok( $m, "uri_with_sessionid" );
can_ok( $m, "uri_for" );
my $response;
ok ( $response = request('http://localhost/uri'), 'Request' );
ok ( $response->content eq "http://localhost/foo/bar" );
ok ( $response = request('http://localhost/uri/arg'), 'Request' );
ok ( $response->content eq "http://localhost/foo/bar/arg" );
ok ( $response = request('http://localhost/uri/param'), 'Request' );
ok ( $response->content eq "http://localhost/foo/bar?param=value" );
ok ( $response = request('http://localhost/uri/arg_param'), 'Request' );
ok ( $response->content eq "http://localhost/foo/bar/arg?param=value" );
ok ( $response = request('http://localhost/uri/sid'), 'Request' );
ok ( $response->content =~ qr(^http://localhost/foo/bar\?sid=[a-z0-9]+$) );
ok ( $response = request('http://localhost/uri/sid_arg'), 'Request' );
ok ( $response->content =~ qr(^http://localhost/foo/bar/arg\?sid=[a-z0-9]+$) );
ok ( $response = request('http://localhost/uri/sid_param'), 'Request' );
ok ( $response->content =~ qr(^http://localhost/foo/bar\?param=value&sid=[a-z0-9]+$) );
ok ( $response = request('http://localhost/uri/sid_arg_param'), 'Request' );
ok ( $response->content =~ qr(^http://localhost/foo/bar/arg\?param=value&sid=[a-z0-9]+$) );