#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
BEGIN {
eval { require Catalyst::Plugin::Session::State::Cookie; Catalyst::Plugin::Session::State::Cookie->VERSION(0.03) }
or plan skip_all =>
"Catalyst::Plugin::Session::State::Cookie 0.03 or higher is required for this test";
eval {
require Test::WWW::Mechanize::PSGI;
#Test::WWW::Mechanize::Catalyst->VERSION(0.51);
}
or plan skip_all =>
'Test::WWW::Mechanize::PSGI is required for this test';
plan tests => 12;
}
use lib "t/lib";
use Test::WWW::Mechanize::PSGI;
use SessionTestApp;
my $ua = Test::WWW::Mechanize::PSGI->new(
app => SessionTestApp->psgi_app(@_),
cookie_jar => {}
);
# Test without delete __address
local $ENV{REMOTE_ADDR} = "192.168.1.1";
$ua->get_ok( "http://localhost/login" );
$ua->content_contains('logged in');
$ua->get_ok( "http://localhost/set_session_variable/logged/in" );
$ua->content_contains('session variable set');
# Change Client
#local $ENV{REMOTE_ADDR} = "192.168.1.2";
use Plack::Builder;
my $app = SessionTestApp->psgi_app(@_);
builder {
enable 'ForceEnv' => REMOTE_ADDR => "192.168.1.2";
$app;
};
my $ua2 = Test::WWW::Mechanize::PSGI->new(
app => $app,
cookie_jar => {}
);
$ua2->get_ok( "http://localhost/get_session_variable/logged");
$ua2->content_contains('VAR_logged=n.a.');
# Inital Client
local $ENV{REMOTE_ADDR} = "192.168.1.1";
$ua->get_ok( "http://localhost/login_without_address" );
$ua->content_contains('logged in (without address)');
$ua->get_ok( "http://localhost/set_session_variable/logged/in" );
$ua->content_contains('session variable set');
# Change Client
local $ENV{REMOTE_ADDR} = "192.168.1.2";
$ua->get_ok( "http://localhost/get_session_variable/logged" );
$ua->content_contains('VAR_logged=in');