X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Controller-DBIC-API.git;a=blobdiff_plain;f=t%2Frpc%2Flist_search_allows.t;fp=t%2Frpc%2Flist_search_allows.t;h=28bbdafcb690afac052e77eab8c24326929db883;hp=c623fab00a0fa4a3df22671ffbd8a455c9b99ec6;hb=0b0bf9111127c9fdad1e456169ec4cdd15b160f9;hpb=e17f1f8e991b57bf9f7f23547c0c9af8b3012569 diff --git a/t/rpc/list_search_allows.t b/t/rpc/list_search_allows.t index c623fab..28bbdaf 100644 --- a/t/rpc/list_search_allows.t +++ b/t/rpc/list_search_allows.t @@ -13,120 +13,220 @@ use URI; use Test::More; use Test::WWW::Mechanize::Catalyst 'RestTest'; use HTTP::Request::Common; -use JSON::Any; +use JSON; + +my $json = JSON->new->utf8; my $mech = Test::WWW::Mechanize::Catalyst->new; -ok(my $schema = DBICTest->init_schema(), 'got schema'); +ok( my $schema = DBICTest->init_schema(), 'got schema' ); my $track_list_url = "$base/api/rpc/track_exposed/list"; -my $base_rs = $schema->resultset('Track')->search({}, { select => [qw/me.title me.position/], order_by => 'position' }); +my $base_rs = + $schema->resultset('Track') + ->search( {}, + { select => [qw/me.title me.position/], order_by => 'position' } ); # test open request { - my $req = GET( $track_list_url, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 200, 'open attempt okay' ); - - my @expected_response = map { { $_->get_columns } } $base_rs->all; - my $response = JSON::Any->Load( $mech->content); - is_deeply( $response, { list => \@expected_response, success => 'true' }, 'correct message returned' ); + my $req = GET( + $track_list_url, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 200, 'open attempt okay' ); + + my @expected_response = map { + { $_->get_columns } + } $base_rs->all; + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { list => \@expected_response, success => 'true' }, + 'correct message returned' + ); } { - my $uri = URI->new( $track_list_url ); - $uri->query_form({ 'search.position' => 1 }); - my $req = GET( $uri, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 200, 'search on position okay' ); - my @expected_response = map { { $_->get_columns } } $base_rs->search({ position => 1 })->all; - my $response = JSON::Any->Load( $mech->content); - is_deeply( $response, { list => \@expected_response, success => 'true' }, 'correct message returned' ); + my $uri = URI->new($track_list_url); + $uri->query_form( { 'search.position' => 1 } ); + my $req = GET( + $uri, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 200, 'search on position okay' ); + my @expected_response = map { + { $_->get_columns } + } $base_rs->search( { position => 1 } )->all; + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { list => \@expected_response, success => 'true' }, + 'correct message returned' + ); } { - my $uri = URI->new( $track_list_url ); - $uri->query_form({ 'search.title' => 'Stripy' }); - my $req = GET( $uri, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 400, 'search on title not okay' ); - - my @expected_response = map { { $_->get_columns } } $base_rs->search({ position => 1 })->all; - my $response = JSON::Any->Load( $mech->content); - is($response->{success}, 'false', 'correct message returned'); - like($response->{messages}->[0], qr/is not an allowed search term/, 'correct message returned'); + my $uri = URI->new($track_list_url); + $uri->query_form( { 'search.title' => 'Stripy' } ); + my $req = GET( + $uri, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 400, 'search on title not okay' ); + + my @expected_response = map { + { $_->get_columns } + } $base_rs->search( { position => 1 } )->all; + my $response = $json->decode( $mech->content ); + is( $response->{success}, 'false', 'correct message returned' ); + like( + $response->{messages}->[0], + qr/is not an allowed search term/, + 'correct message returned' + ); } { - my $uri = URI->new( $track_list_url ); - $uri->query_form({ 'search.title' => 'Stripy' }); - my $req = GET( $uri, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 400, 'search on title not okay' ); - - my $expected_response = map { { $_->get_columns } } $base_rs->search({ position => 1 })->all; - my $response = JSON::Any->Load( $mech->content); - is($response->{success}, 'false', 'correct message returned'); - like($response->{messages}->[0], qr/is not an allowed search term/, 'correct message returned'); + my $uri = URI->new($track_list_url); + $uri->query_form( { 'search.title' => 'Stripy' } ); + my $req = GET( + $uri, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 400, 'search on title not okay' ); + + my $expected_response = map { + { $_->get_columns } + } $base_rs->search( { position => 1 } )->all; + my $response = $json->decode( $mech->content ); + is( $response->{success}, 'false', 'correct message returned' ); + like( + $response->{messages}->[0], + qr/is not an allowed search term/, + 'correct message returned' + ); } { - my $uri = URI->new( $track_list_url ); - $uri->query_form({ 'search.cd.artist' => '1' }); - my $req = GET( $uri, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 400, 'search on various cd fields not okay' ); - my $response = JSON::Any->Load( $mech->content); - is($response->{success}, 'false', 'correct message returned'); - like($response->{messages}->[0], qr/is not an allowed search term/, 'correct message returned'); + my $uri = URI->new($track_list_url); + $uri->query_form( { 'search.cd.artist' => '1' } ); + my $req = GET( + $uri, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 400, + 'search on various cd fields not okay' ); + my $response = $json->decode( $mech->content ); + is( $response->{success}, 'false', 'correct message returned' ); + like( + $response->{messages}->[0], + qr/is not an allowed search term/, + 'correct message returned' + ); } { - my $uri = URI->new( $track_list_url ); - $uri->query_form({ 'search.cd.title' => 'Spoonful of bees', 'search.cd.year' => '1999' }); - my $req = GET( $uri, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 200, 'search on various cd fields okay' ); - my @expected_response = map { { $_->get_columns } } $base_rs->search({ 'cd.year' => '1999', 'cd.title' => 'Spoonful of bees' }, { join => 'cd' })->all; - my $response = JSON::Any->Load( $mech->content); - is_deeply($response, { list => \@expected_response, success => 'true' }, 'correct message returned' ); + my $uri = URI->new($track_list_url); + $uri->query_form( + { 'search.cd.title' => 'Spoonful of bees', + 'search.cd.year' => '1999' + } + ); + my $req = GET( + $uri, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 200, 'search on various cd fields okay' ); + my @expected_response = map { + { $_->get_columns } + } $base_rs->search( + { 'cd.year' => '1999', 'cd.title' => 'Spoonful of bees' }, + { join => 'cd' } )->all; + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { list => \@expected_response, success => 'true' }, + 'correct message returned' + ); } { - my $uri = URI->new( $track_list_url ); - $uri->query_form({ 'search.cd.title' => 'Spoonful of bees', 'search.cd.pretend' => '1999' }); - my $req = GET( $uri, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 200, 'search with custom col okay' ); - my @expected_response = map { { $_->get_columns } } $base_rs->search({ 'cd.year' => '1999', 'cd.title' => 'Spoonful of bees' }, { join => 'cd' })->all; - my $response = JSON::Any->Load( $mech->content); - is_deeply($response, { list => \@expected_response, success => 'true' }, 'correct message returned' ); + my $uri = URI->new($track_list_url); + $uri->query_form( + { 'search.cd.title' => 'Spoonful of bees', + 'search.cd.pretend' => '1999' + } + ); + my $req = GET( + $uri, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 200, 'search with custom col okay' ); + my @expected_response = map { + { $_->get_columns } + } $base_rs->search( + { 'cd.year' => '1999', 'cd.title' => 'Spoonful of bees' }, + { join => 'cd' } )->all; + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { list => \@expected_response, success => 'true' }, + 'correct message returned' + ); } { - my $uri = URI->new( $track_list_url ); - $uri->query_form({ 'search.cd.artist.name' => 'Random Boy Band' }); - my $req = GET( $uri, { - - }, 'Accept' => 'text/x-json' ); - $mech->request($req); - cmp_ok( $mech->status, '==', 200, 'search on artist field okay due to wildcard' ); - my @expected_response = map { { $_->get_columns } } $base_rs->search({ 'artist.name' => 'Random Boy Band' }, { join => { cd => 'artist' } })->all; - my $response = JSON::Any->Load( $mech->content); - is_deeply($response, { list => \@expected_response, success => 'true' }, 'correct message returned' ); + my $uri = URI->new($track_list_url); + $uri->query_form( { 'search.cd.artist.name' => 'Random Boy Band' } ); + my $req = GET( + $uri, + { + + }, + 'Accept' => 'text/x-json' + ); + $mech->request($req); + cmp_ok( $mech->status, '==', 200, + 'search on artist field okay due to wildcard' ); + my @expected_response = map { + { $_->get_columns } + } $base_rs->search( + { 'artist.name' => 'Random Boy Band' }, + { join => { cd => 'artist' } } + )->all; + my $response = $json->decode( $mech->content ); + is_deeply( + $response, + { list => \@expected_response, success => 'true' }, + 'correct message returned' + ); } done_testing();