usergrid_ironhorse 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: