1use strict;
2use warnings;
3
4use Test::More tests => 4;
5use HTTP::Request;
6use HTTP::Cookies;
7use HTTP::Async;
8
9use FindBin;
10use lib "$FindBin::Bin";
11require TestServer;
12
13my $s        = TestServer->new();
14my $url_root = $s->started_ok("starting a test server");
15
16my $q = HTTP::Async->new;
17
18my $cookie_jar = HTTP::Cookies->new({});
19$q->cookie_jar($cookie_jar);
20
21# Receive a cookie and store it in a cookie jar
22{
23    my $url = "$url_root/foo/bar?cookie=1";
24
25    my $req = HTTP::Request->new('GET', $url);
26    ok $q->add($req), "Added request to the queue";
27    $q->poke while !$q->to_return_count;
28
29    my $res = $q->next_response;
30    my $response_cookie = $res->header('Set-Cookie');
31    ok $response_cookie =~ m/x=test/, "Got cookie in response '$response_cookie'";
32
33    my $jar_cookie = $cookie_jar->as_string();
34    ok $jar_cookie =~ m/x=test/, "Got cookie from cookie jar '$jar_cookie'";
35}
36