diff options
Diffstat (limited to '')
-rw-r--r-- | scripts/post_to_hook.pl | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/post_to_hook.pl b/scripts/post_to_hook.pl new file mode 100644 index 0000000..55d3d73 --- /dev/null +++ b/scripts/post_to_hook.pl @@ -0,0 +1,57 @@ +use strict; +use warnings; + +use jitterbug; +use jitterbug::Schema; + +use JSON; +use YAML qw/LoadFile Dump/; + +use File::Temp qw/tempdir/; + +use Dancer::Test; +use Dancer::Config qw/setting/; +use File::Spec::Functions; + +my $content = LoadFile(shift || catfile(qw/t data hook_data.yml/)); + +my $db_file = catfile( qw/t data jitterbug.db/ ); +my $dsn = 'dbi:SQLite:dbname=' . $db_file; +my $schema = jitterbug::Schema->connect($dsn); +# assume we have a deployed schema +# $schema->deploy; + +setting plugins => { + DBIC => { + schema => { + skip_automake => 1, + pckg => "jitterbug::Schema", + connect_info => [$dsn] + } + } +}; + +{ + my $response = dancer_response( + POST => '/hook/', + { + headers => + [ 'Content-Type' => 'application/x-www-form-urlencoded' ], + body => _generate_post_request($content), + } + ); + + printf "Response was: %s\n", $response->{status}; +} + +sub _generate_post_request { + my $content = shift; + 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; + return $payload; +} + |