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 )