#! /usr/bin/perl use strict; use warnings; use JSON; use Selenium::Remote::Driver; use Test::More; use Test::Fatal; use Test::LWP::UserAgent; my $croaking_tests = [ { name => 'no PAC url', proxy => { proxyType => 'pac', }, pattern => qr/not provided/, }, { name => 'PAC url is not http or file', proxy => { proxyType => 'pac', proxyAutoconfigUrl => '' }, pattern => qr{of format http:// or file://} } ]; foreach my $test (@$croaking_tests) { like( exception { Selenium::Remote::Driver->new(proxy => $test->{proxy}); }, $test->{pattern}, 'Coercion croaks for case: ' . $test->{name} ); } my $passing_tests = [ { name => 'PAC url is http', proxy => { proxyType => 'pac', proxyAutoconfigUrl => 'http://pac.file' } }, { name => 'PAC url is file', proxy => { proxyType => 'pac', proxyAutoconfigUrl => 'file://' . __FILE__ } } ]; my $tua = mock_simple_webdriver_server(); foreach my $test (@$passing_tests) { is( exception { Selenium::Remote::Driver->new( proxy => $test->{proxy}, ua => $tua ); }, undef, 'Coercion passes for case: ' . $test->{name} ); } sub mock_simple_webdriver_server { my $tua = Test::LWP::UserAgent->new; $tua->map_response(qr/status/, HTTP::Response->new(200, 'OK')); $tua->map_response( qr/session/, HTTP::Response->new( 204, 'OK', ['Content-Type' => 'application/json'], to_json({ cmd_return => {}, cmd_status => 'OK', sessionId => '123123123' }) ) ); return $tua; } done_testing;