#!/usr/bin/perl use lib "t/lib"; use strict; use warnings; use Test::More; use Test::Exception; use Carp qw(croak); use URI; eval "use Test::M3::ServerView::TestServer"; plan skip_all => "Can't test HTTP stuff since server won't load" if $@; plan tests => 13; require M3::ServerView; my $s = Test::M3::ServerView::TestServer->new(); my $uri = $s->started_ok("Test::M3::ServerView::TestServer up and running on port " . $s->port); my $conn = M3::ServerView->connect_to($uri); no warnings 'redefine'; my $query_echo = ""; local *M3::ServerView::_get_page_contents = sub { my ($self, $uri) = @_; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(GET => $uri); my $user = $self->user; my $password = $self->password; if (defined $user && defined $password) { $req->authorization_basic($user, $password); } my $t = time; my $res = $ua->request($req); unless ($res->is_success) { croak "Failed to get '$uri' because server returned: ", $res->status_line; } $query_echo = $res->header("X-EchoQuery"); return wantarray ? ($res->content, time - $t) : $res->content; }; $query_echo = ""; my $view = $conn->find_jobs({}); like($query_echo, qr/\bfind=Find\b/); $query_echo = ""; $view = $conn->find_jobs({ user => "Foo" }); like($query_echo, qr/\bfind=Find\b/); like($query_echo, qr/\bowner=Foo\b/); $query_echo = ""; $view = $conn->find_jobs({ batch_job_number => 10 }); like($query_echo, qr/\bbjno=10\b/); $query_echo = ""; $view = $conn->find_jobs({ name => "Bar" }); like($query_echo, qr/\bname=Bar\b/); $query_echo = ""; $view = $conn->find_jobs({ queued => 2 }); like($query_echo, qr/\bqueued=on\b/); $query_echo = ""; $view = $conn->find_jobs({ type => "B" }); like($query_echo, qr/\btype=B\b/); $query_echo = ""; $view = $conn->find_jobs({ user => "is space" }); like($query_echo, qr/\bowner=is\+space\b/); $query_echo = ""; $view = $conn->find_jobs({ user => "Foo", queued => 1, type => "I" }); like($query_echo, qr/\bfind=Find\b/); like($query_echo, qr/\bowner=Foo\b/); like($query_echo, qr/\bqueued=on\b/); like($query_echo, qr/\btype=I\b/);