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 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
- auth_token: YWMtc4WjqhcbEeK6UhQQn9SVgQAAATpryjMnLy9oFaPbP-0qIxoUx_4vtaOmpmE
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
- auth_token: YWMtc4WjqhcbEeK6UhQQn9SVgQAAATpryjMnLy9oFaPbP-0qIxoUx_4vtaOmpmE
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
- auth_token: YWMtc4WjqhcbEeK6UhQQn9SVgQAAATpryjMnLy9oFaPbP-0qIxoUx_4vtaOmpmE
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
@@ -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 = Usergrid::Ironhorse::Base.settings[:require_login] != false
7
- auth_token = require_login ? Thread.current[:usergrid_auth_token] : Usergrid::Ironhorse::Base.settings[:auth_token]
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(session)
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
@@ -1,5 +1,5 @@
1
1
  module Usergrid
2
2
  module Ironhorse
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
@@ -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
@@ -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.0
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: 2012-12-18 00:00:00.000000000 Z
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: '0'
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: '0'
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: 1.8.24
156
+ rubygems_version: 2.0.3
173
157
  signing_key:
174
- specification_version: 3
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: