カラクリスタ

「輝かしい青春」なんて失かった人のブログ

HTTP::Request::AsCGIを使ってCGI scriptをテストする方法

æ¦è¦: HTTP::Request::AsCGI ã使ã£ã¦ CGI Application ããã¹ããã


æè¿ blosxom 㨠menta ã¨ãã®è»½é WAF ã足ãã¦äºã§å²ã£ããã㪠CGI Application ãæ¸ãã¦ããã ãã©ã CGI Application ã®ãã¹ãæ¹æ³ã«ã¤ãã¦æè¿ãã¦ãã¦ãã¡ãã£ã¨æºã¾ã£ã¦ããã®ã§ã Blog ã®è¨äºã«ã¾ã¨ãã¦ã¿ãã

CGI Application ã®ãã¹ãã¨ããã¨ãç°¡æãµã¼ããèµ·åãã¦å®è¡ããã¨ãæ¹æ³ã¯ããããããããã ãã©ã è¦ããã« CGI Application ããã¹ãããã«ã¯ CGI ã®å®è¡ç°å¢ã¨åãç°å¢å¤æ°ãç¨æã㦠CGI script ãå®è¡ããã°ããããã§ã ãããããã«ããã«ãã¨ããå¦çããã¦ãããã®ãHTTP::Request::AsCGIã¨ããã¯ã±ã

ã§ãHTTP::Request::AsCGI使ã£ã¦ãã¹ããæ¸ãã¨ãããªæãã

#!perl

use strict;
use warnings;

use HTTP::Request;
use HTTP::Request::AsCGI;
use CGIApp;
use Test::More tests => 1;

{
my $req = HTTP::Request->new( GET => 'http://localhost/foo/bar.html' );
my $ctx = HTTP::Request::AsCGI->new($req)->setup;
my $app = CGIApp->new;

$app->run_application;

my $stdout = join q{\n}, $ctx->stdout->getlines;
is( $stdout, 'Hello world' );
}

HTTP::Request::AsCGIèªä½ã¯ãããªã«ããããããã¨ããã¦ãªãã®ã§ã HTTP::Request::AsCGIã®å¦çèªä½ã¯å®éã®ã³ã¼ãè¦ã¦ããã£ãã»ããæ©ãã¨æãã ã§ãå®éã«æè¿æ¸ãã¦ããã¹ãã³ã¼ãã§ã¯HTTP::Request::AsCGIãã¤ã³ã¹ãã¼ã«ããã¦ãªãã£ããã ãã¹ããã¹ã­ããããã¿ãããªã³ã¼ãã追å ãã¦ãã£ããããã

ãã¨ç°å¢å¤æ°ãæå®ãããå ´åã¯ãããªæãã§æå®ã§ããã

{
my $req = HTTP::Request->new( POST => 'http://localhost/foo/bar/baz' );
my $ctx = HTTP::Request::AsCGI->new( $req, $ENV_NAME => $ENV_VALUE )->setup;
}

ã¡ãªã¿ã«HTTP::Request::AsCGIã®ã¤ã³ã¹ã¿ã³ã¹ããã­ãã¯ã§å²ãã§ãã®ã¯ã HTTP::Request::AsCGIã«ãã¹ãã©ã¯ã¿ãæå®ããã¦ããããã

ã¨ãã£ã¦ãã¾ãã

å¼ç¨å: HTTP::Request::AsCGI 0.5

code:_ sub DESTROY { my $self = shift; $self->restore if $self->setuped && !$self->restored; }

ããã ãã®ã³ã¼ããªã®ã§æåã§å®è¡ãã¦ãåé¡ã¯ãªããã©ã

ã¾ãHTTP::Request::AsCGIã使ãã°ãCGI Application ã®ãã¹ãã¯ã ãã¶ã¹ãã¼ãã«æ¸ããã¨æãã æè¿æ¸ãã¦ããã¹ãã§ããããªããããããã¨ã¯ãã¦ãªããã

ã¨ããããã§ä»æ¥ã¯HTTP::Request::AsCGIã®ç´¹ä»ã§ãããã¾ã POD ã¿ãã使ãæ¹ãªãã¦ä¸çºãªãã ãã©ã

ã¡ãªã¿ã«ä¹ãã¶ãã®ãã­ã°ã©ãã³ã°é¢ä¿ã®ã¨ã³ããªãæè¿ãã­ã°ã©ãã³ã°ã復活ãã¦ãã¾ãããã

FIXME