summary refs log tree commit diff
path: root/t/003_hook_route.t
diff options
context:
space:
mode:
Diffstat (limited to 't/003_hook_route.t')
-rw-r--r--t/003_hook_route.t43
1 files changed, 43 insertions, 0 deletions
diff --git a/t/003_hook_route.t b/t/003_hook_route.t
new file mode 100644
index 0000000..8d9a4cf
--- /dev/null
+++ b/t/003_hook_route.t
@@ -0,0 +1,43 @@
+use Test::More tests => 4;
+use strict;
+use warnings;
+
+use jitterbug;
+use JSON;
+use YAML qw/LoadFile/;
+use Dancer::Test;
+use Dancer::Config qw/setting/;
+
+my $content = LoadFile('t/data/test.yaml');
+
+setting jitterbug => { namespace => 'jitterbug_test' };
+
+route_exists [ POST => '/hook/' ], 'a route handle is defined for /';
+
+my $response;
+
+{
+    $response = dancer_response( POST => '/hook', );
+    is $response->{status}, 200, '200 with empty post';
+}
+
+{
+    my $payload = "payload=" . JSON::encode_json($content);
+    open my $in, '<', \$payload;
+
+    $ENV{'CONTENT_LENGTH'} = length($payload);
+    $ENV{'CONTENT_TYPE'}   = 'application/x-www-form-urlencoded';
+    $ENV{'psgi.input'}     = $in;
+
+    $response = dancer_response(
+        POST => '/hook/',
+        {
+            headers => [ 'Content-Length' => length($payload) ],
+            body    => $payload
+        }
+    );
+
+    is $response->{status}, 200;
+    is_deeply JSON::decode_json( $response->{content} ),
+      { updated => 'Dancer' };
+}