The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use Test::More tests => 2;
use lib grep { -d $_ } qw(./lib ../lib);
use REST::Consumer;
use Test::Resub qw(resub);

{
	package Mock::UserAgent;

	sub new { return bless {} }

	sub can { 1 }

	sub default_headers { shift->{default_headers} ||= HTTP::Headers->new }

	sub AUTOLOAD {
		my ($self, @args) = @_;
		my ($method) = our $AUTOLOAD =~ m{.*:(.*)};
		return if $method eq 'DESTROY';
		push @{$self->{$method}}, [@args];
	}
}

my $mock_user_agent = Mock::UserAgent->new;
my $rs = resub 'LWP::UserAgent::Paranoid::new', sub { undef }, call => 'forbidden';
my $consumer = REST::Consumer->new(
	ua    => $mock_user_agent,
	host  => '0.0.0.0',
	user_agent => 'retention-single-foot',
	keep_alive => 3864,
);

my $user_agent = $consumer->user_agent;
is( ref($user_agent), ref($mock_user_agent), 'we got back the expected user agent object' );

my $expected_header = HTTP::Headers->new; $expected_header->header(accept => 'application/json');
is_deeply( +{%$mock_user_agent}, +{
	default_headers => $expected_header,
	request_timeout => [[10]],
	agent => [['retention-single-foot']],
	keep_alive => [[3864]],
}, 'we configured our mock user agent as expected' ); # i.e. we didn't configure an LWP::UserAgent