パルカワ2

最近はFlutterをやっています

HTTP::Cookies の extract_cookies と add_cookie_header

use strict;
use warnings;
use Plack::Test;
use HTTP::Request::Common;
use Data::Dumper;

my $app = ...;
test_psgi
    app => $app,
    client => sub {
        my ($cb) = @_;
        my $jar = HTTP::Cookies->new;
        my $res = $cb->(GET '/');
        $jar->extract_cookies($res);

        my $req = POST '/post';

        warn Dumper $req; # Set-Cookieなし
        $jar->add_cookie_header($req);
        warn Dumper $req; # Set-Cookieありになってほしいけど、なし

        $res = $cb->($req);
};

headerにSet-Cookieが付いてほしいのに付かない!!ってなった。

HTTP::Cookiesのadd_cookie_headerを見ると

    my $url = $request->uri;
    my $scheme = $url->scheme;
    unless ($scheme =~ /^https?\z/) {
	return;
    }

と書かれていたので、

my $req = POST '/post';

の部分を

my $req = POST 'http://localhost/post';

にしたら付いてくれた。ハッピー!