#!perl -w
use strict;
use warnings;
use Test::More import => ['!pass'];
use Data::Dumper;
use Dancer ':syntax';
use DBIx::RunSQL;
use Dancer::Plugin::Database;
# the order is important
use mychat;
use Dancer::Test;
plan tests => 3;
####
# set up our own database instead of whatever is in the config
my $conf = {
Database => {
dsn => 'dbi:SQLite:dbname=:memory:',
connection_check_threshold => 0.1,
sqlite_unicode => 1,
dbi_params => {
RaiseError => 0,
PrintError => 0,
PrintWarn => 0,
},
},
};
set plugins => $conf;
# Set up a fresh instance
my $dbh = database;
$dbh = DBIx::RunSQL->create(
dbh => $dbh,
sql => 'sql/create.sql',
);
####
my $payload = join '',
"\x89",
'PNG',
"\x0d\x0a",
"\x1a",
"\x0a",
(map { chr($_) x (1024 * 256) } 1..3)
;
# Insert image into database
my $upload = Dancer::Request::Upload->new(
filename => 'test.png',
tempname => 'test2.png',
size => length($payload),
headers => {
'Content-Type' => 'image/png',
},
);
# Insert into DB
my $content = mychat::UserContent->store(
config->{image_store},
$dbh,
$upload,
{
extension => 'png',
content_type => 'image/png',
},
$payload
);
####
ok $content, "We successfully saved the user content";
route_exists(['GET', '/image_store/foo.bar'], "We find /image_store/foo.bar");
# Check that we can access it through /image_store/sha1.jpg
my $name = $content->{digest} . ".png";
response_status_is ['GET',"/image_store/$name"], 200, "GET '/image_store/$name' succeeds"
or diag Dumper read_logs();