NAME

Test::Plack::Handler::Stomp - testing library for Plack::Handler::Stomp

VERSION

version 1.09

SYNOPSIS

my $t = Test::Plack::Handler::Stomp->new();
$t->set_arg(
  subscriptions => [
    { destination => '/queue/input_queue',
      path_info => '/input_queue', },
  ],
);
$t->clear_frames_to_receive;

$t->queue_frame_to_receive(Net::Stomp::Frame->new({
      command => 'MESSAGE',
      headers => {
          destination => '/queue/input_queue',
          subscription => 0,
          type => 'my_type',
          'message-id' => 356,
      },
      body => '{"foo":"bar"}',
  }));

  $t->handler->run($app);

  check($t->frames_sent);

DESCRIPTION

Testing a PSGI application that expects JMS/STOMP messages can be a pain. This library helps reduce that pain.

It wraps a Plack::Handler::Stomp, connecting it to a Test::Plack::Handler::Stomp::FakeStomp instead of a real STOMP connection, and allows you to inspect everything that happens to the connection.

ATTRIBUTES

handler_args

Hashref, arguments to pass to Plack::Handler::Stomp's constructor. You can add to this via the "set_arg" method. Defaults to { one_shot => 1 }, to avoid having Plack::Handler::Stomp loop forever.

handler

A Plack::Handler::Stomp instance. It's built on-demand via "setup_handler". You can clear it with "clear_handler" to have it rebuilt (for example, if you have changed "handler_args")

frames_sent

Arrayref of Net::Stomp::Frame objects that Plack::Handler::Stomp sent. Can be edited via "queue_sent_frame", "sent_frames_count", "clear_sent_frames". Defaults to the empty array.

frames_to_receive

Arrayref of Net::Stomp::Frame objects that Plack::Handler::Stomp will consume. Can be edited via "queue_frame_to_receive", "next_frame_to_receive", "frames_left_to_receive", "clear_frames_to_receive".

Defaults to an array with a single ERROR frame.

constructor_calls

Arrayref of whatever was passed to the Test::Plack::Handler::Stomp::FakeStomp constructor. Can be edited via "queue_constructor_call", "constructor_calls_count", "clear_constructor_calls".

connection_calls

Arrayref of whatever was passed to the Test::Plack::Handler::Stomp::FakeStomp connect method. Can be edited via "queue_connection_call", "connection_calls_count", "clear_connection_calls".

disconnection_calls

Arrayref of whatever was passed to the Test::Plack::Handler::Stomp::FakeStomp disconnect method. Can be edited via "queue_disconnection_call", "disconnection_calls_count", "clear_disconnection_calls".

subscription_calls

Arrayref of whatever was passed to the Test::Plack::Handler::Stomp::FakeStomp subscribe method. Can be edited via "queue_subscription_call", "subscription_calls_count", "clear_subscription_calls".

unsubscription_calls

Arrayref of whatever was passed to the Test::Plack::Handler::Stomp::FakeStomp unsubscribe method. Can be edited via "queue_unsubscription_call", "unsubscription_calls_count", "clear_unsubscription_calls".

log_messages

Arrayref of whatever Plack::Handler::Stomp logs. Each element is a pair [ $level, $message ]. Can be edited via "add_log_message", "log_messages_count", "clear_log_messages".

METHODS

set_arg

$handler->set_arg(foo=>'bar',some=>'thing');

Sets arguments for Plack::Handler::Stomp's constructor, see /handler_args.

clear_handler

Destroys the "handler", forcing it to be rebuilt next time it's needed.

queue_sent_frame

Adds a frame to the end of "frames_sent".

sent_frames_count

Returns the number of elements in "frames_sent".

clear_sent_frames

Removes all elements from "frames_sent".

queue_frame_to_receive

Adds a frame to the end of "frames_to_receive".

next_frame_to_receive

Removes a frame from the beginning of "frames_to_receive" and returns it.

frames_left_to_receive

Returns the number of elements in "frames_to_receive".

clear_frames_to_receive

Removes all elements from "frames_to_receive".

queue_constructor_call

Adds a hashref to the end of "constructor_calls".

constructor_calls_count

Returns the number of elements in "constructor_calls".

clear_constructor_calls

Removes all elements from "constructor_calls".

queue_connection_call

Adds a hashref to the end of "connection_calls".

connection_calls_count

Returns the number of elements in "connection_calls".

clear_connection_calls

Removes all elements from "connection_calls".

queue_disconnection_call

Adds a hashref to the end of "disconnection_calls".

disconnection_calls_count

Returns the number of elements in "disconnection_calls".

clear_disconnection_calls

Removes all elements from "disconnection_calls".

queue_subscription_call

Adds a hashref to the end of "subscription_calls".

subscription_calls_count

Returns the number of elements in "subscription_calls".

clear_subscription_calls

Removes all elements from "subscription_calls".

queue_unsubscription_call

Adds a hashref to the end of "unsubscription_calls".

unsubscription_calls_count

Returns the number of elements in "unsubscription_calls".

clear_unsubscription_calls

Removes all elements from "unsubscription_calls".

add_log_message

Adds a pair to the end of "log_messages".

log_messages_count

Returns the number of elements in "log_messages".

clear_log_messages

Removes all elements from "log_messages".

setup_handler

Constructs a Plack::Handler::Stomp, setting it up to capture logging, passing "handler_args", and setting a connection_builder that returns a Test::Plack::Handler::Stomp::FakeStomp with all the callbacks set to accumulate calls in this object.

debug

info

warn

error

Logger delegate methods, the handler returned by "setup_handler" uses these to log. These methods accumulate log messages by calling "add_log_message".

clear_calls_and_queues

Calls the clearer for all the queue / accumulator attributes ("frames_sent", "frames_to_receive", "constructor_calls", "connection_calls", "disconnection_calls", "subscription_calls", "unsubscription_calls", "log_messages")

AUTHOR

Gianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Net-a-porter.com.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.