diff options
Diffstat (limited to 't/rest')
| -rw-r--r-- | t/rest/populate_object.t | 44 | ||||
| -rw-r--r-- | t/rest/properties.t | 30 | ||||
| -rw-r--r-- | t/rest/stats.t | 10 | ||||
| -rw-r--r-- | t/rest/stream.t | 37 |
4 files changed, 121 insertions, 0 deletions
diff --git a/t/rest/populate_object.t b/t/rest/populate_object.t new file mode 100644 index 0000000..b875ad7 --- /dev/null +++ b/t/rest/populate_object.t @@ -0,0 +1,44 @@ +use strict; +use warnings; +use Test::More; + +use JSON; +use HTTP::Response; + +use Net::Riak::Bucket; +use Net::Riak; +use Net::Riak::Object; + +my $client = Net::Riak->new()->client; +my $bucket = Net::Riak::Bucket->new(name => 'foo', client => $client); + +ok my $object = + Net::Riak::Object->new(key => 'bar', bucket => $bucket, client => $client), + 'object bar created'; + +my $response = HTTP::Response->new(400); +$client->http_response($response); + +ok !$object->exists, 'object don\'t exists'; + +eval { + $client->populate_object($object, $response, [200]); +}; + +like $@, qr/Expected status 200, received 400/, "can't populate with a 400"; + +my $value = {value => 1}; + +$response = HTTP::Response->new(200); +$client->http_response($response); +$response->content(JSON::encode_json($value)); + +$client->populate_object($object, $response, [200]); + +ok $object->exists, 'object exists'; + +is_deeply $value, $object->data, 'got same data'; + +is $object->client->status, 200, 'last http code is 200'; + +done_testing; diff --git a/t/rest/properties.t b/t/rest/properties.t new file mode 100644 index 0000000..f6327ac --- /dev/null +++ b/t/rest/properties.t @@ -0,0 +1,30 @@ +use strict; +use warnings; +use Test::More; + +use Net::Riak; +use HTTP::Response; + +my $client = Net::Riak::Client->with_traits('Net::Riak::Transport::REST')->new(); +ok my $bucket = Net::Riak::Bucket->new(name => 'bar', client => $client), + 'client created'; + +$bucket->client->useragent->add_handler( + request_send => sub { + my $response = HTTP::Response->new(200); + $response->content( + '{"props":{"name":"foo","allow_mult":false,"big_vclock":50,"chash_keyfun":{"mod":"riak_util","fun":"chash_std_keyfun"},"linkfun":{"mod":"jiak_object","fun":"mapreduce_linkfun"},"n_val":3,"old_vclock":86400,"small_vclock":10,"young_vclock":20},"keys":["bar"]}' + ); + $response; + } +); + +ok my $props = $bucket->get_properties(), 'fetch properties'; +ok my $keys = $bucket->get_keys(), 'fetch list of keys'; + +is_deeply $keys, [qw/bar/], 'keys is bar'; + +ok my $name = $bucket->get_property('name'), 'get props name'; +is $name, 'foo', 'name is foo'; + +done_testing; diff --git a/t/rest/stats.t b/t/rest/stats.t new file mode 100644 index 0000000..9f52dcc --- /dev/null +++ b/t/rest/stats.t @@ -0,0 +1,10 @@ +use lib 't/lib'; +use Test::More; +use Test::Riak; + +test_riak_rest { + my ($client) = @_; + my $resp = $client->stats; + is ref($resp), 'HASH', 'got stats'; + ok exists $resp->{webmachine_version}, 'contains expected key'; +}; diff --git a/t/rest/stream.t b/t/rest/stream.t new file mode 100644 index 0000000..2a545d3 --- /dev/null +++ b/t/rest/stream.t @@ -0,0 +1,37 @@ +use strict; +use warnings; +use Test::More; + +use Net::Riak; +use HTTP::Response; + +my $client = Net::Riak::Client->with_traits('Net::Riak::Transport::REST')->new(); +ok my $bucket = Net::Riak::Bucket->new(name => 'bar', client => $client), + 'bucket created'; + +$bucket->client->useragent->add_handler( + request_send => sub { + my $response = HTTP::Response->new(200); + $response->content( + '{}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":["apple"]}{"keys":[]}{"keys":["pear","peach"]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}{"keys":[]}' + ); + $response; + } +); + +ok my $props = $bucket->get_properties({props => 'false', keys => 'stream'}), 'get_properties'; +is_deeply $props, { keys => [ qw(apple pear peach) ], props => {} }, 'keys ok'; + +ok my $keys = $bucket->get_keys({stream => 1}), 'get_keys'; +is_deeply $keys, [qw/apple pear peach/], 'keys ok'; + +my $result = ''; +ok $bucket->get_properties({props => 'false', cb => sub { $result .= "** $_[0] " }}), 'get_properties with callback'; +is $result, '** apple ** pear ** peach ', 'result ok'; + +$result = ''; +ok ! defined $bucket->get_keys({cb => sub { $result .= "--> $_[0] " }}), 'get_keys with callback'; +is $result, '--> apple --> pear --> peach ', 'result ok'; + +done_testing; + |
