+++ /dev/null
-package Catalyst::Test::MessageDriven;
-use Class::MOP;
-use Sub::Exporter;
-use HTTP::Request;
-
-BEGIN {
- $ENV{CATALYST_ENGINE} = 'Test::MessageDriven';
-};
-
-=head1 NAME
-
-Catalyst::Test::MessageDriven - test message-driven Catalyst apps
-
-=head1 DESCRIPTION
-
-Derived from Catalyst::Test, this module provides a way to run tests
-against message-driven Catalyst applications - those with
-Catalyst::Controller::MessageDriven-based controllers, and expect to
-run with Catalyst::Engine::Stomp.
-
-=head1 SYNOPSIS
-
- BEGIN { use_ok 'Catalyst::Test::MessageDriven', 'SomeApp' };
-
- my $req = '... some message text ...';
- my $queue = 'somequeue';
- my $res = request($queue, $req);
- ok($res);
-
-=head1 EXPORTS
-
-=head2 request(queue, message)
-
-This function accepts a queue and a message, and runs the request in
-that context. Returns a response object.
-
-=head1 TODO
-
-Some test wrappers - successful / error message conditions?
-
-=cut
-
-my $message_driven_request = sub {
- my ($app, $path, $req_message) = @_;
- my $url = "message://localhost:61613/$path";
-
- my $request = HTTP::Request->new( POST => $url );
- $request->content($req_message);
- $request->content_length(length $req_message);
- $request->content_type('application/octet-stream');
-
- my $response;
- $app->handle_request($request, \$response);
-
- return $response;
-};
-
-my $build_exports = sub {
- my ($self, $meth, $args, $defaults) = @_;
-
- my $request;
- my $class = $args->{class};
-
- if (!$class) {
- $request = sub { Catalyst::Exception->throw("Must specify a test app: use Catalyst::Test::MessageDriven 'TestApp'") };
- }
- else {
- unless (Class::MOP::is_class_loaded($class)) {
- Class::MOP::load_class($class);
- }
- $class->import;
-
- my $app = $class->run();
- $request = sub { $message_driven_request->( $app, @_ ) };
- }
-
- return {
- request => $request,
- };
-};
-
-{
- my $import = Sub::Exporter::build_exporter({
- groups => [ all => $build_exports ],
- into_level => 1,
- });
-
- sub import {
- my ($self, $class) = @_;
- $import->($self, '-all' => { class => $class });
- return 1;
- }
-}
-
-package # Hide from PAUSE
- Catalyst::Engine::Test::MessageDriven;
-use base 'Catalyst::Engine::Embeddable';
-
-sub run {
- my ($self, $app) = @_;
- return $app;
-}
-
-1;
-