supplejack_client 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +27 -0
- data/.rspec +2 -0
- data/Gemfile +16 -0
- data/Guardfile +24 -0
- data/LICENSE.txt +674 -0
- data/README.md +153 -0
- data/Rakefile +9 -0
- data/lib/generators/locales/en.yml +11 -0
- data/lib/generators/supplejack/install_generator.rb +28 -0
- data/lib/generators/templates/README +19 -0
- data/lib/generators/templates/supplejack_client.rb +120 -0
- data/lib/supplejack/config.rb +116 -0
- data/lib/supplejack/controllers/helpers.rb +172 -0
- data/lib/supplejack/engine.rb +20 -0
- data/lib/supplejack/exceptions.rb +17 -0
- data/lib/supplejack/facet.rb +33 -0
- data/lib/supplejack/item.rb +94 -0
- data/lib/supplejack/item_relation.rb +73 -0
- data/lib/supplejack/log_subscriber.rb +58 -0
- data/lib/supplejack/paginated_collection.rb +61 -0
- data/lib/supplejack/record.rb +147 -0
- data/lib/supplejack/request.rb +95 -0
- data/lib/supplejack/search.rb +346 -0
- data/lib/supplejack/url_formats/item_hash.rb +208 -0
- data/lib/supplejack/user.rb +132 -0
- data/lib/supplejack/user_set.rb +349 -0
- data/lib/supplejack/user_set_relation.rb +143 -0
- data/lib/supplejack/util.rb +120 -0
- data/lib/supplejack/version.rb +10 -0
- data/lib/supplejack_client.rb +29 -0
- data/spec/spec_helper.rb +23 -0
- data/spec/supplejack/controllers/helpers_spec.rb +277 -0
- data/spec/supplejack/facet_spec.rb +44 -0
- data/spec/supplejack/item_relation_spec.rb +111 -0
- data/spec/supplejack/item_spec.rb +115 -0
- data/spec/supplejack/log_subscriber_spec.rb +40 -0
- data/spec/supplejack/paginated_collection_spec.rb +43 -0
- data/spec/supplejack/record_spec.rb +255 -0
- data/spec/supplejack/request_spec.rb +195 -0
- data/spec/supplejack/search_spec.rb +727 -0
- data/spec/supplejack/url_formats/item_hash_spec.rb +341 -0
- data/spec/supplejack/user_set_relation_spec.rb +149 -0
- data/spec/supplejack/user_set_spec.rb +465 -0
- data/spec/supplejack/user_spec.rb +159 -0
- data/supplejack_client.gemspec +30 -0
- metadata +159 -0
@@ -0,0 +1,159 @@
|
|
1
|
+
# The Supplejack Client code is Crown copyright (C) 2014, New Zealand Government,
|
2
|
+
# and is licensed under the GNU General Public License, version 3.
|
3
|
+
# See https://github.com/DigitalNZ/supplejack_client for details.
|
4
|
+
#
|
5
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ
|
6
|
+
# and the Department of Internal Affairs. http://digitalnz.org/supplejack
|
7
|
+
|
8
|
+
require 'spec_helper'
|
9
|
+
|
10
|
+
module Supplejack
|
11
|
+
describe User do
|
12
|
+
let(:user) { Supplejack::User.new({'id' => 'abc', 'authentication_token' => '12345'}) }
|
13
|
+
|
14
|
+
before(:each) do
|
15
|
+
Supplejack::User.stub(:get) { {'user' => {'id' => 'abc', 'authentication_token' => '12345'}} }
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#initialize' do
|
19
|
+
it 'initializes the user attributes' do
|
20
|
+
Supplejack::User.new({'authentication_token' => '12345'}).api_key.should eq '12345'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'initializes the user name' do
|
24
|
+
Supplejack::User.new({'name' => 'Juanito'}).name.should eq 'Juanito'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'initializes the sets attributes' do
|
28
|
+
Supplejack::User.new({'sets' => [{name: 'Dogs'}]}).sets_attributes.should eq [{name: 'Dogs'}]
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'initializes the use_own_api attribute' do
|
32
|
+
Supplejack::User.new({'use_own_api_key' => true}).use_own_api_key.should be_true
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'initializes the regenerate_api_key attribute' do
|
36
|
+
Supplejack::User.new({'regenerate_api_key' => true}).regenerate_api_key.should be_true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#save' do
|
41
|
+
it 'should execute a put request with the user attribtues' do
|
42
|
+
user.stub(:api_attributes) { {username: 'John', email: 'john@boost.co.nz'} }
|
43
|
+
Supplejack::User.should_receive(:put).with('/users/12345', {}, {username: 'John', email: 'john@boost.co.nz'})
|
44
|
+
user.save.should be_true
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'regenerate api key' do
|
48
|
+
before(:each) do
|
49
|
+
user.regenerate_api_key = true
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should post a nil authentication_token attribute so it is regenerated' do
|
53
|
+
Supplejack::User.should_receive(:put).with('/users/12345', {}, hash_including(authentication_token: nil))
|
54
|
+
user.save
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should set the regenerated api_key on the user' do
|
58
|
+
Supplejack::User.stub(:put).and_return({'user'=>{'id'=>'525f7a2df6941993e2000004', 'name'=>nil, 'username'=>nil, 'email'=>nil, 'api_key'=>'71H5yPsxVhDmsjmj1NJW'}})
|
59
|
+
user.save
|
60
|
+
user.instance_variable_get('@api_key').should eq '71H5yPsxVhDmsjmj1NJW'
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'returns false when a error ocurred' do
|
66
|
+
Supplejack::User.stub(:put).and_raise(RestClient::Forbidden)
|
67
|
+
user.save.should be_false
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#destroy' do
|
72
|
+
it 'should execute a delete request with the admin key' do
|
73
|
+
Supplejack.stub(:api_key) { 'admin_key' }
|
74
|
+
Supplejack::User.should_receive(:delete).with('/users/abc')
|
75
|
+
user.destroy.should be_true
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'returns false if there is a exception' do
|
79
|
+
Supplejack::User.stub(:delete).and_raise(RestClient::Forbidden)
|
80
|
+
user.destroy.should be_false
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#api_attributes' do
|
85
|
+
it 'returns the name, username, email and encrypted_password' do
|
86
|
+
user = Supplejack::User.new(name: 'John', username: 'Johnny', email: 'john@boost.co.nz', encrypted_password: 'xyz', api_key: '12345')
|
87
|
+
user.api_attributes.should eq({name: 'John', username: 'Johnny', email: 'john@boost.co.nz', encrypted_password: 'xyz'})
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'doesn\'t return the attribute if not present' do
|
91
|
+
user.api_attributes.should_not include(:name)
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'regenerate api key' do
|
95
|
+
let(:user) { Supplejack::User.new(api_key: '12345', regenerate_api_key: true) }
|
96
|
+
|
97
|
+
it 'returns a nil authentication_token' do
|
98
|
+
user.api_attributes.should have_key(:authentication_token)
|
99
|
+
user.api_attributes[:authentication_token].should be_nil
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'returns the sets_attributes' do
|
104
|
+
user = Supplejack::User.new(sets: [{name: 'Dogs', privacy: 'hidden'}])
|
105
|
+
user.api_attributes[:sets].should eq [{name: 'Dogs', privacy: 'hidden'}]
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '#use_own_api_key?' do
|
110
|
+
it 'returns false by default' do
|
111
|
+
Supplejack::User.new.use_own_api_key?.should be_false
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'returns true' do
|
115
|
+
Supplejack::User.new('use_own_api_key' => true).use_own_api_key?.should be_true
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe '#regenerate_api_key?' do
|
120
|
+
it 'returns false by default' do
|
121
|
+
Supplejack::User.new.regenerate_api_key?.should be_false
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'returns true' do
|
125
|
+
Supplejack::User.new('regenerate_api_key' => true).regenerate_api_key?.should be_true
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe '.find' do
|
130
|
+
it 'fetches the user from the api' do
|
131
|
+
Supplejack::User.should_receive(:get).with('/users/12345')
|
132
|
+
Supplejack::User.find('12345')
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'initializes a user with the response' do
|
136
|
+
Supplejack::User.should_receive(:new).with({'id' => 'abc', 'authentication_token' => '12345'})
|
137
|
+
Supplejack::User.find('12345')
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe '.create' do
|
142
|
+
before :each do
|
143
|
+
@attributes = {email: 'dev@boost.com', name: 'dev', username: 'developer', encrypted_password: 'weird_string'}
|
144
|
+
Supplejack::User.stub(:post) { {'user' => {'email' => 'dev@boost.com', 'name' => 'dev', 'username' => 'developer', 'api_key' => '123456'}} }
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'executes a post request' do
|
148
|
+
Supplejack::User.should_receive(:post).with("/users", {}, {user: @attributes})
|
149
|
+
Supplejack::User.create(@attributes)
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'returns a Supplejack::User object with the api_key' do
|
153
|
+
user = Supplejack::User.create(@attributes)
|
154
|
+
user.should be_a Supplejack::User
|
155
|
+
user.api_key.should eq '123456'
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# The Supplejack Client code is Crown copyright (C) 2014, New Zealand Government,
|
2
|
+
# and is licensed under the GNU General Public License, version 3.
|
3
|
+
# See https://github.com/DigitalNZ/supplejack_client for details.
|
4
|
+
#
|
5
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ
|
6
|
+
# and the Department of Internal Affairs. http://digitalnz.org/supplejack
|
7
|
+
|
8
|
+
# -*- encoding: utf-8 -*-
|
9
|
+
require File.expand_path('../lib/supplejack/version', __FILE__)
|
10
|
+
|
11
|
+
Gem::Specification.new do |gem|
|
12
|
+
gem.authors = ['Supplejack']
|
13
|
+
gem.email = ['info@digitalnz.org']
|
14
|
+
gem.description = %q{ Library to abstract the interaction with the Supplejack API }
|
15
|
+
gem.summary = %q{ Connects to the API, and allows you to treat models as if they were in a local database }
|
16
|
+
gem.homepage = 'http://digitalnz.org'
|
17
|
+
|
18
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
gem.files = `git ls-files`.split("\n")
|
20
|
+
gem.test_files = `git ls-files -- spec/*`.split("\n")
|
21
|
+
gem.name = 'supplejack_client'
|
22
|
+
gem.require_paths = ['lib']
|
23
|
+
gem.version = Supplejack::VERSION
|
24
|
+
|
25
|
+
gem.add_dependency 'rails', '~> 3.2.12'
|
26
|
+
gem.add_dependency 'rest-client', '~> 1.6'
|
27
|
+
gem.add_dependency 'rails_autolink', '~> 1.0'
|
28
|
+
|
29
|
+
gem.add_development_dependency 'rspec', '~> 2.8'
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: supplejack_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Supplejack
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.2.12
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.2.12
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rails_autolink
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.8'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.8'
|
69
|
+
description: " Library to abstract the interaction with the Supplejack API "
|
70
|
+
email:
|
71
|
+
- info@digitalnz.org
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
78
|
+
- Gemfile
|
79
|
+
- Guardfile
|
80
|
+
- LICENSE.txt
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- lib/generators/locales/en.yml
|
84
|
+
- lib/generators/supplejack/install_generator.rb
|
85
|
+
- lib/generators/templates/README
|
86
|
+
- lib/generators/templates/supplejack_client.rb
|
87
|
+
- lib/supplejack/config.rb
|
88
|
+
- lib/supplejack/controllers/helpers.rb
|
89
|
+
- lib/supplejack/engine.rb
|
90
|
+
- lib/supplejack/exceptions.rb
|
91
|
+
- lib/supplejack/facet.rb
|
92
|
+
- lib/supplejack/item.rb
|
93
|
+
- lib/supplejack/item_relation.rb
|
94
|
+
- lib/supplejack/log_subscriber.rb
|
95
|
+
- lib/supplejack/paginated_collection.rb
|
96
|
+
- lib/supplejack/record.rb
|
97
|
+
- lib/supplejack/request.rb
|
98
|
+
- lib/supplejack/search.rb
|
99
|
+
- lib/supplejack/url_formats/item_hash.rb
|
100
|
+
- lib/supplejack/user.rb
|
101
|
+
- lib/supplejack/user_set.rb
|
102
|
+
- lib/supplejack/user_set_relation.rb
|
103
|
+
- lib/supplejack/util.rb
|
104
|
+
- lib/supplejack/version.rb
|
105
|
+
- lib/supplejack_client.rb
|
106
|
+
- spec/spec_helper.rb
|
107
|
+
- spec/supplejack/controllers/helpers_spec.rb
|
108
|
+
- spec/supplejack/facet_spec.rb
|
109
|
+
- spec/supplejack/item_relation_spec.rb
|
110
|
+
- spec/supplejack/item_spec.rb
|
111
|
+
- spec/supplejack/log_subscriber_spec.rb
|
112
|
+
- spec/supplejack/paginated_collection_spec.rb
|
113
|
+
- spec/supplejack/record_spec.rb
|
114
|
+
- spec/supplejack/request_spec.rb
|
115
|
+
- spec/supplejack/search_spec.rb
|
116
|
+
- spec/supplejack/url_formats/item_hash_spec.rb
|
117
|
+
- spec/supplejack/user_set_relation_spec.rb
|
118
|
+
- spec/supplejack/user_set_spec.rb
|
119
|
+
- spec/supplejack/user_spec.rb
|
120
|
+
- supplejack_client.gemspec
|
121
|
+
homepage: http://digitalnz.org
|
122
|
+
licenses: []
|
123
|
+
metadata: {}
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
require_paths:
|
127
|
+
- lib
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
requirements: []
|
139
|
+
rubyforge_project:
|
140
|
+
rubygems_version: 2.2.0
|
141
|
+
signing_key:
|
142
|
+
specification_version: 4
|
143
|
+
summary: Connects to the API, and allows you to treat models as if they were in a
|
144
|
+
local database
|
145
|
+
test_files:
|
146
|
+
- spec/spec_helper.rb
|
147
|
+
- spec/supplejack/controllers/helpers_spec.rb
|
148
|
+
- spec/supplejack/facet_spec.rb
|
149
|
+
- spec/supplejack/item_relation_spec.rb
|
150
|
+
- spec/supplejack/item_spec.rb
|
151
|
+
- spec/supplejack/log_subscriber_spec.rb
|
152
|
+
- spec/supplejack/paginated_collection_spec.rb
|
153
|
+
- spec/supplejack/record_spec.rb
|
154
|
+
- spec/supplejack/request_spec.rb
|
155
|
+
- spec/supplejack/search_spec.rb
|
156
|
+
- spec/supplejack/url_formats/item_hash_spec.rb
|
157
|
+
- spec/supplejack/user_set_relation_spec.rb
|
158
|
+
- spec/supplejack/user_set_spec.rb
|
159
|
+
- spec/supplejack/user_spec.rb
|