Neo4j-Driver
view release on metacpan or search on metacpan
t/jolt-mime.t view on Meta::CPAN
{ header => { fields => [] } },
{ summary => {} },
{ info => {} },
]);
response_for 'json' => {
content_type => 'application/json',
%empty_json,
};
response_for 'json params' => {
content_type => 'application/json;foo=bar',
%empty_json,
};
response_for 'jolt v1 explicit' => {
content_type => 'application/vnd.neo4j.jolt-v1+json-seq',
%empty_jolt,
};
response_for 'jolt v1 ndjson' => {
content_type => 'application/vnd.neo4j.jolt',
%empty_jolt,
};
response_for 'jolt v2 sparse' => {
content_type => 'application/vnd.neo4j.jolt-v2+json-seq;strict=false',
%empty_jolt,
};
response_for 'jolt v2 strict' => {
content_type => 'application/vnd.neo4j.jolt-v2+json-seq;strict=true',
%empty_jolt,
};
response_for 'jolt v2' => {
content_type => 'application/vnd.neo4j.jolt-v2+json-seq',
%empty_jolt,
};
response_for 'text' => {
content_type => 'text/plain',
content => 'hey',
};
response_for 'html' => {
content_type => 'text/html',
content => '<title>foo</title><p>bar',
};
response_for 'xhtml' => {
content_type => 'application/xhtml+xml',
content => '<html><title>foo</title></html>',
};
response_for 'untitled html' => {
content_type => 'text/html',
content => '<h1>foo</h1>',
};
response_for 'binary' => {
content_type => 'application/octet-stream',
content => 'foobar',
};
sub driver_accept {
my (%params) = @_;
my $echo_plugin = Neo4j_Test::EchoHTTP->new(neo4j_version => $params{neo4j_version});
my $d = Neo4j::Driver->new('http:')->plugin($echo_plugin);
$d->{config}->{jolt} = $params{jolt}; # deprecated/internal option
my $r = $d->session->run('echo')->single;
my @accept = split m/\s*,\s*/, $r->get('accept');
}
sub in_or_diag {
my ($mime_type, $accept, $test, $negate) = @_;
$mime_type = qr/^\Q$mime_type\E(?:;.*)?$/ unless (ref $mime_type) =~ m/Regexp/i;
my $result = grep(m/$mime_type/, @$accept);
$result = ! $result if $negate;
ok $result, $test;
diag explain $accept if ! $result;
}
sub not_or_diag { in_or_diag @_[0..2], 'negate' }
subtest 'accept json' => sub {
plan tests => 4 * 1;
my @accept;
@accept = driver_accept( neo4j_version => '2.3.12' );
in_or_diag 'application/json', \@accept, 'accept json 2.3';
@accept = driver_accept( neo4j_version => '3.5.35' );
in_or_diag 'application/json', \@accept, 'accept json 3.5';
@accept = driver_accept( neo4j_version => '4.0.0' );
in_or_diag 'application/json', \@accept, 'accept json 4.0';
@accept = driver_accept( neo4j_version => '4.1.0' );
in_or_diag 'application/json', \@accept, 'accept json 4.1';
};
subtest 'accept json + jolt v1' => sub {
plan tests => 2 * 3;
my @accept;
@accept = driver_accept( neo4j_version => '4.2.0' );
in_or_diag 'application/json', \@accept, 'accept json 4.2';
in_or_diag 'application/vnd.neo4j.jolt+json-seq', \@accept, 'accept jolt v1 4.2';
not_or_diag 'application/vnd.neo4j.jolt-v2+json-seq', \@accept, 'no accept jolt v2 4.2';
@accept = driver_accept( neo4j_version => '4.4.15' );
in_or_diag 'application/json', \@accept, 'accept json 4.4';
in_or_diag 'application/vnd.neo4j.jolt+json-seq', \@accept, 'accept jolt v1 4.4';
not_or_diag 'application/vnd.neo4j.jolt-v2+json-seq', \@accept, 'no accept jolt v2 4.4';
};
subtest 'accept json + jolt v2' => sub {
plan tests => 2 * 3;
my @accept;
@accept = driver_accept( neo4j_version => '5.1.0' );
in_or_diag 'application/json', \@accept, 'accept json 5.1';
in_or_diag 'application/vnd.neo4j.jolt-v2+json-seq', \@accept, 'accept jolt v2 5.1';
not_or_diag 'application/vnd.neo4j.jolt+json-seq', \@accept, 'no accept jolt v1 5.1';
@accept = driver_accept( neo4j_version => '5.3.0' );
in_or_diag 'application/json', \@accept, 'accept json 5.3';
in_or_diag 'application/vnd.neo4j.jolt-v2+json-seq', \@accept, 'accept jolt v2 5.3';
not_or_diag 'application/vnd.neo4j.jolt+json-seq', \@accept, 'no accept jolt v1 5.3';
};
subtest 'deprecated/internal jolt option' => sub {
plan tests => 6 * 2;
my @accept;
@accept = driver_accept( jolt => 0 );
( run in 0.739 second using v1.01-cache-2.11-cpan-71847e10f99 )