package TestClass; use strict; use warnings; use lib 't/'; use base 'REST::Application'; sub foo { "foo" } sub barMethod { shift; return join(":", @_) } sub GET { "xAbC" } sub DELETE { "xAbC" } sub PUT { "xAbC" } sub POST { "xAbC" } sub getRepresentation { "qWeRtY" } sub preRun { shift->{preRun} = 1 } sub postRun { my ($self, $outputRef) = @_; $self->{postRun} = $$outputRef } sub getMatchText { my $self = shift; if ($self->{TEST_TEXT}) { return $self->{TEST_TEXT}; } return $self->getPathInfo(); } sub checkMatch { my $self = shift; my ($a, $b) = @_; if ($self->{TEST_MATCH}) { return ($a eq $b); } return $self->SUPER::checkMatch($a, $b); } sub preHandler { my $self = shift; my $args = shift; return if not $self->{TEST_PRE}; shift @$args; # drop the ref to the REST::Application object $self->{preHandler} = join(":", @$args); } sub postHandler { my ($self, $outputRef, $args) = @_; return if not $self->{TEST_POST}; shift @$args; # drop the ref to the REST::Application object $self->{postHandler} = $$outputRef . join(":", @$args); } sub callHandler { my $self = shift; if (not $self->{TEST_CALL}) { return $self->SUPER::callHandler(@_); } elsif ($self->{TEST_CALL_ERROR}) { my $handler = shift; $handler->(); } my ($handler, @extraArgs) = @_; return ref($handler) . join(":", @extraArgs); } sub makeHandlerFromClass { my $self = shift; return $self->SUPER::makeHandlerFromClass(@_) unless $self->{TEST_MHFC}; my ($class, $method) = @_; return sub { "$class $method" }; } sub makeHandlerFromRef { my $self = shift; return $self->SUPER::makeHandlerFromRef(@_) unless $self->{TEST_MHFR}; my ($obj, $method) = @_; return sub { "SMOKE " . ref($obj). " $method" }; } 1;