usergrid_ironhorse 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +10 -3
- data/lib/extensions/resource.rb +25 -2
- data/lib/usergrid_ironhorse/user_context.rb +6 -1
- data/lib/usergrid_ironhorse/version.rb +1 -1
- data/spec/usergrid_ironhorse/base_spec.rb +58 -0
- data/usergrid_ironhorse.gemspec +1 -1
- metadata +23 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 28f2b98a13d3b368760c5b908fc619f41a26b866
|
4
|
+
data.tar.gz: 2d8411645d057ac9101180369dd40e9c95f82cdc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ee348c8d8f12a749470810483f221a4635c2973f6bb42e4ea1c61e6efc7a70aa239c62a16481d98a9467ab6ac36c02243b9305d1a5b0af0bbe034dba1ad1cfb7
|
7
|
+
data.tar.gz: cbd3e2c9cb112ac2a938fed8de633fb84d9d5f53b35c7ef1ea583230f8c09f4cc24423ad4c58e05de959cf1f23604041c18f21de93d74fa40b0468be0127fb2a
|
data/README.md
CHANGED
@@ -38,17 +38,20 @@ auth_token is your application token):
|
|
38
38
|
```
|
39
39
|
development:
|
40
40
|
application_url: http://localhost:8080/my-organization/my-application
|
41
|
-
|
41
|
+
client_id: YXA6BVYasLdNEeKBd1A2yYstg
|
42
|
+
client_secret: YXA60Dnbzaxg1ObkE8ffsIxsGzsSo8
|
42
43
|
require_login: false
|
43
44
|
|
44
45
|
test:
|
45
46
|
application_url: http://localhost:8080/my-organization/my-application
|
46
|
-
|
47
|
+
client_id: YXA6BVYasLdNEeKBd1A2yYstg
|
48
|
+
client_secret: YXA60Dnbzaxg1ObkE8ffsIxsGzsSo8
|
47
49
|
require_login: false
|
48
50
|
|
49
51
|
production:
|
50
52
|
application_url: http://api.usergrid.com/my-organization/my-application
|
51
|
-
|
53
|
+
client_id: YXA6BVYasLdNEeKBd1A2yYstg
|
54
|
+
client_secret: YXA60Dnbzaxg1ObkE8ffsIxsGzsSo8
|
52
55
|
require_login: false
|
53
56
|
```
|
54
57
|
|
@@ -149,6 +152,10 @@ usergrid_ironhorse/spec/spec_settings.yaml to match.)
|
|
149
152
|
|
150
153
|
## Release notes
|
151
154
|
|
155
|
+
### 0.1.0
|
156
|
+
* New Features
|
157
|
+
1. Now prefer application client_id and client_secret (instead of auth_token) in usergrid.yml.
|
158
|
+
|
152
159
|
### 0.1.0
|
153
160
|
* New Features
|
154
161
|
1. next_page() added to return the next page of results from the server. An example of this used in conjunction
|
data/lib/extensions/resource.rb
CHANGED
@@ -1,15 +1,38 @@
|
|
1
1
|
# overrides methods dealing with auth_token to operate on a thread basis
|
2
2
|
module Usergrid
|
3
3
|
class Resource
|
4
|
+
|
4
5
|
def options
|
5
6
|
options = @options.clone
|
6
|
-
require_login =
|
7
|
-
|
7
|
+
require_login = Ironhorse::Base.settings[:require_login] != false
|
8
|
+
if require_login
|
9
|
+
auth_token = Thread.current[:usergrid_auth_token]
|
10
|
+
else
|
11
|
+
unless Ironhorse::Base.settings[:auth_token]
|
12
|
+
as_admin {}
|
13
|
+
end
|
14
|
+
auth_token = Ironhorse::Base.settings[:auth_token]
|
15
|
+
end
|
8
16
|
options[:headers].delete :Authorization
|
9
17
|
options[:headers][:Authorization] = "Bearer #{auth_token}" if auth_token
|
10
18
|
options
|
11
19
|
end
|
12
20
|
|
21
|
+
def as_admin(&block)
|
22
|
+
save_auth_token = Thread.current[:usergrid_auth_token]
|
23
|
+
begin
|
24
|
+
unless Ironhorse::Base.settings[:auth_token]
|
25
|
+
resource = RestClient::Resource.new Ironhorse::Base.settings[:application_url]
|
26
|
+
response = resource['token'].post grant_type: 'client_credentials', client_id: Ironhorse::Base.settings[:client_id], client_secret: Ironhorse::Base.settings[:client_secret]
|
27
|
+
Ironhorse::Base.settings[:auth_token] = MultiJson.load(response)['access_token']
|
28
|
+
end
|
29
|
+
Thread.current[:usergrid_auth_token] = Ironhorse::Base.settings[:auth_token]
|
30
|
+
yield block
|
31
|
+
ensure
|
32
|
+
Thread.current[:usergrid_auth_token] = save_auth_token
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
13
36
|
# gets user token and automatically set auth header for future requests on this Thread
|
14
37
|
# precondition: resource must already be set to the correct context (application or management)
|
15
38
|
def login(username, password)
|
@@ -34,6 +34,11 @@ module Usergrid
|
|
34
34
|
def as_admin(&block)
|
35
35
|
save_auth_token = Thread.current[:usergrid_auth_token]
|
36
36
|
begin
|
37
|
+
unless Base.settings[:auth_token]
|
38
|
+
resource = RestClient::Resource.new Base.settings[:application_url]
|
39
|
+
response = resource['token'].post grant_type: 'client_credentials', client_id: Base.settings[:client_id], client_secret: Base.settings[:client_secret]
|
40
|
+
Base.settings[:auth_token] = MultiJson.load(response)['access_token']
|
41
|
+
end
|
37
42
|
Thread.current[:usergrid_auth_token] = Base.settings[:auth_token]
|
38
43
|
yield block
|
39
44
|
ensure
|
@@ -50,7 +55,7 @@ module Usergrid
|
|
50
55
|
alias_method :set_context, :set_thread_context
|
51
56
|
|
52
57
|
# clears auth from current thread
|
53
|
-
def clear_thread_context
|
58
|
+
def clear_thread_context
|
54
59
|
Thread.current[:usergrid_user_id] = nil
|
55
60
|
Thread.current[:usergrid_auth_token] = nil
|
56
61
|
Thread.current[:usergrid_current_user] = nil
|
@@ -28,6 +28,7 @@ describe Usergrid::Ironhorse::Base do
|
|
28
28
|
|
29
29
|
it "do tasks as admin when requested" do
|
30
30
|
organization = @foo.management.organization SPEC_SETTINGS[:organization][:name]
|
31
|
+
organization.logout
|
31
32
|
|
32
33
|
# should fail under current user's context
|
33
34
|
expect {
|
@@ -42,6 +43,7 @@ describe Usergrid::Ironhorse::Base do
|
|
42
43
|
|
43
44
|
it "do tasks as admin if require_login is false" do
|
44
45
|
organization = @foo.management.organization SPEC_SETTINGS[:organization][:name]
|
46
|
+
organization.logout
|
45
47
|
|
46
48
|
# should fail under current user's context
|
47
49
|
expect {
|
@@ -51,6 +53,7 @@ describe Usergrid::Ironhorse::Base do
|
|
51
53
|
# should succeed once require_login is false
|
52
54
|
User.settings[:require_login] = false
|
53
55
|
organization.create_application "_test_app_#{SecureRandom.hex}"
|
56
|
+
User.settings[:require_login] = true
|
54
57
|
end
|
55
58
|
|
56
59
|
it 'be created and destroyed' do
|
@@ -372,5 +375,60 @@ describe Usergrid::Ironhorse::Base do
|
|
372
375
|
count.should eq 13
|
373
376
|
bars.each {|bar| bar.delete}
|
374
377
|
end
|
378
|
+
|
379
|
+
it "perform as admin only when requested if require_login is true" do
|
380
|
+
|
381
|
+
organization = @foo.management.organization SPEC_SETTINGS[:organization][:name]
|
382
|
+
|
383
|
+
creds = nil
|
384
|
+
User.as_admin do
|
385
|
+
creds = organization.credentials
|
386
|
+
end
|
387
|
+
|
388
|
+
Usergrid::Ironhorse::Base.settings[:client_id] = creds.data.credentials.client_id
|
389
|
+
Usergrid::Ironhorse::Base.settings[:client_secret] = creds.data.credentials.client_secret
|
390
|
+
Usergrid::Ironhorse::Base.settings[:auth_token] = nil
|
391
|
+
User.clear_thread_context
|
392
|
+
organization.logout
|
393
|
+
User.settings[:require_login] = true
|
394
|
+
|
395
|
+
# should fail (login is required)
|
396
|
+
expect {
|
397
|
+
organization.create_application "_test_app_#{SecureRandom.hex}"
|
398
|
+
}.to raise_error RestClient::Unauthorized
|
399
|
+
|
400
|
+
# should succeed under admin context
|
401
|
+
User.as_admin do
|
402
|
+
organization.create_application "_test_app_#{SecureRandom.hex}"
|
403
|
+
end
|
404
|
+
|
405
|
+
Usergrid::Ironhorse::Base.settings[:client_id] = nil
|
406
|
+
Usergrid::Ironhorse::Base.settings[:client_secret] = nil
|
407
|
+
end
|
408
|
+
|
409
|
+
it "perform as admin if require_login is false" do
|
410
|
+
|
411
|
+
organization = @foo.management.organization SPEC_SETTINGS[:organization][:name]
|
412
|
+
organization.logout
|
413
|
+
|
414
|
+
creds = nil
|
415
|
+
User.as_admin do
|
416
|
+
creds = organization.credentials
|
417
|
+
end
|
418
|
+
|
419
|
+
Usergrid::Ironhorse::Base.settings[:client_id] = creds.data.credentials.client_id
|
420
|
+
Usergrid::Ironhorse::Base.settings[:client_secret] = creds.data.credentials.client_secret
|
421
|
+
Usergrid::Ironhorse::Base.settings[:auth_token] = nil
|
422
|
+
User.clear_thread_context
|
423
|
+
organization.logout
|
424
|
+
|
425
|
+
User.settings[:require_login] = false
|
426
|
+
|
427
|
+
# should succeed
|
428
|
+
organization.create_application "_test_app_#{SecureRandom.hex}"
|
429
|
+
|
430
|
+
Usergrid::Ironhorse::Base.settings[:client_id] = nil
|
431
|
+
Usergrid::Ironhorse::Base.settings[:client_secret] = nil
|
432
|
+
end
|
375
433
|
end
|
376
434
|
end
|
data/usergrid_ironhorse.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_dependency 'usergrid_iron'
|
21
|
+
gem.add_dependency 'usergrid_iron', '0.9.1'
|
22
22
|
gem.add_dependency 'activemodel'
|
23
23
|
gem.add_dependency 'activerecord'
|
24
24
|
gem.add_dependency 'i18n'
|
metadata
CHANGED
@@ -1,126 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: usergrid_ironhorse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Scott Ganyo
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-05-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: usergrid_iron
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 0.9.1
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '='
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
26
|
+
version: 0.9.1
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: activemodel
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: activerecord
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: i18n
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rake
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rspec
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: simplecov
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
description: Rails ActiveModel gem to access Usergrid / Apigee App Services
|
@@ -151,27 +136,26 @@ files:
|
|
151
136
|
- usergrid_ironhorse.gemspec
|
152
137
|
homepage: https://github.com/scottganyo/usergrid_ironhorse
|
153
138
|
licenses: []
|
139
|
+
metadata: {}
|
154
140
|
post_install_message:
|
155
141
|
rdoc_options: []
|
156
142
|
require_paths:
|
157
143
|
- lib
|
158
144
|
required_ruby_version: !ruby/object:Gem::Requirement
|
159
|
-
none: false
|
160
145
|
requirements:
|
161
|
-
- -
|
146
|
+
- - '>='
|
162
147
|
- !ruby/object:Gem::Version
|
163
148
|
version: '0'
|
164
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
|
-
none: false
|
166
150
|
requirements:
|
167
|
-
- -
|
151
|
+
- - '>='
|
168
152
|
- !ruby/object:Gem::Version
|
169
153
|
version: '0'
|
170
154
|
requirements: []
|
171
155
|
rubyforge_project:
|
172
|
-
rubygems_version:
|
156
|
+
rubygems_version: 2.0.3
|
173
157
|
signing_key:
|
174
|
-
specification_version:
|
158
|
+
specification_version: 4
|
175
159
|
summary: Usergrid_ironhorse enables simple ActiveModel access to Apigee's App Services
|
176
160
|
(aka Usergrid) REST API for Rails developers.
|
177
161
|
test_files:
|