roqua-core-api 0.0.15 → 0.0.16

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 91c210b5761692fb51a318b62e810c00bfeeb7c5
4
- data.tar.gz: b8d03f0d6bdb6b38002dc1b68ab96156ea83ad0a
3
+ metadata.gz: 1d2f0bc90e2d82c735a5ee7de9f41a34dd947f44
4
+ data.tar.gz: 846e6fad4b6e51fe581e8aa0dcab3bf00ac6c1ee
5
5
  SHA512:
6
- metadata.gz: c270093ec8d41ae6f68f2670fa7fb02d9d3c3847adc63631291dc9b7b466f62f2da1f2e6523ac958f87f92da0a896a7097c895f558d3318b3c8a0907b01a9c49
7
- data.tar.gz: ac7a95ddbd8f817e127463c7d15eb99220ecbffa57dba7f0c8f9f70fc1648ee0db7dd06421657c2d7dcc7ad85ff7aa145ab16995ceb7c0c30509550b20ea91d6
6
+ metadata.gz: 13cfe5d94986414a25ac6ed16a193e2ec07dd4a8cb0b17051fb192c4383621d7e7dd4fa46ab517e83fe4d063787f8e2195c3e5177370398e3e878e5faca1fb3c
7
+ data.tar.gz: 75657185a13034f25c60d547174de264f8c79c07cc10c5f81491182318439af29b02281dee9ddfc2be4c9fb564d3afdd23ea16415c1d6fca7e0219d3e498a26f
data/ChangeLog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.0.16 / 2014-03-13
2
+
3
+ * Added NoSession and Unauthorized errors, and throwing them when applicable.
4
+
1
5
  ### 0.0.15 / 2014-03-13
2
6
 
3
7
  * fix session return_to
@@ -59,4 +63,4 @@
59
63
 
60
64
  * Initial release:
61
65
 
62
- Here be dragons
66
+ Here be dragons
data/Gemfile CHANGED
@@ -1,6 +1,10 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+ gem 'httparty', '= 0.12.0'
5
+ gem 'active_interaction', '= 1.1.0'
6
+ gem 'omniauth-oauth2', '= 1.1.0'
7
+ gem 'virtus', '= 1.0.0'
4
8
 
5
9
  group :development do
6
10
  gem 'kramdown'
data/core_api.gemspec CHANGED
@@ -18,13 +18,14 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ['lib']
19
19
 
20
20
  gem.add_dependency 'httparty', '~> 0.12.0'
21
- gem.add_dependency 'active_interaction', '~> 1.1.2'
22
- gem.add_dependency 'omniauth-oauth2', '~> 1.1.2'
23
- gem.add_dependency 'virtus', '~> 1.0.1'
21
+ gem.add_dependency 'active_interaction', '~> 1.1'
22
+ gem.add_dependency 'omniauth-oauth2', '~> 1.1'
23
+ gem.add_dependency 'virtus', '~> 1.0'
24
24
 
25
25
  gem.add_development_dependency 'bundler', '~> 1.0'
26
26
  gem.add_development_dependency 'rake', '~> 10.0'
27
27
  gem.add_development_dependency 'yard', '~> 0.8'
28
28
  gem.add_development_dependency 'rspec', '~> 3.0.0.beta1'
29
- gem.add_development_dependency 'fabrication', '~> 2.9.6'
29
+ gem.add_development_dependency 'fabrication', '~> 2.9'
30
+ gem.add_development_dependency 'webmock', '~> 1.17'
30
31
  end
@@ -37,9 +37,18 @@ module Roqua
37
37
 
38
38
  def perform_request_or_fail(&block)
39
39
  response = yield
40
- fail response.parsed_response unless (200..299).include?(response.code) ||
41
- 422 == response.code
42
- response
40
+ case response.code
41
+ when 200..299, 422
42
+ response
43
+ when 401
44
+ if response['no_session']
45
+ fail NoSession
46
+ else
47
+ fail Unauthorized
48
+ end
49
+ else
50
+ fail response.parsed_response || 'error'
51
+ end
43
52
  end
44
53
 
45
54
  def full_url_for(path)
@@ -1,5 +1,5 @@
1
1
  module Roqua
2
2
  module CoreApi
3
- VERSION = "0.0.15"
3
+ VERSION = "0.0.16"
4
4
  end
5
5
  end
@@ -9,3 +9,11 @@ require 'roqua/core_api/send_invite_email'
9
9
  require 'roqua/core_api/people'
10
10
  require 'roqua/core_api/person'
11
11
  require 'roqua/core_api/update_person'
12
+
13
+ module Roqua
14
+ module CoreApi
15
+ # Raised when a request failed due to an expired/non-existant session.
16
+ class NoSession < StandardError; end
17
+ class Unauthorized < StandardError; end
18
+ end
19
+ end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'webmock/rspec'
2
3
 
3
4
  describe AuthSession do
4
5
  let(:session) { Fabricate :auth_session }
@@ -42,6 +43,38 @@ describe AuthSession do
42
43
  session.get '/some_path', some: 'param'
43
44
  end
44
45
 
46
+ it 'returns the response on sucess status' do
47
+ stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
48
+ status: 201,
49
+ body: '{ "success": true }',
50
+ headers: { 'Content-Type' => 'application/json' })
51
+ expect(session.get('/some_path')['success']).to be_truthy
52
+ end
53
+
54
+ it 'returns the response on a 422 status' do
55
+ stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
56
+ status: 422,
57
+ body: '{ "errors": { "column": ["wrong"] } }',
58
+ headers: { 'Content-Type' => 'application/json' })
59
+ expect(session.get('/some_path')['errors']['column']).to eq ["wrong"]
60
+ end
61
+
62
+ it 'raises a no_session error when response is 401 with a no_session response' do
63
+ stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
64
+ status: 401,
65
+ body: '{ "no_session": true }',
66
+ headers: { 'Content-Type' => 'application/json' })
67
+ expect { session.get '/some_path' }.to raise_error(NoSession)
68
+ end
69
+
70
+ it 'raises a unauthorized error when response is 401 without a no_session response' do
71
+ stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
72
+ status: 401,
73
+ body: '',
74
+ headers: { 'Content-Type' => 'application/json' })
75
+ expect { session.get '/some_path' }.to raise_error(Unauthorized)
76
+ end
77
+
45
78
  it 'throws an error if the reponse is not within the 200 range' do
46
79
  allow(response).to receive(:code).and_return(500)
47
80
  allow(HTTParty).to receive(:get).and_return(response)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roqua-core-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marten Veldthuis
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.2
33
+ version: '1.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.1.2
40
+ version: '1.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: omniauth-oauth2
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.1.2
47
+ version: '1.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.1.2
54
+ version: '1.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: virtus
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.1
61
+ version: '1.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.1
68
+ version: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 2.9.6
131
+ version: '2.9'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.9'
139
+ - !ruby/object:Gem::Dependency
140
+ name: webmock
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.17'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: 2.9.6
152
+ version: '1.17'
139
153
  description: Provides authenticated access to Core
140
154
  email: marten@veldthuis.com
141
155
  executables: []
@@ -206,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
220
  version: '0'
207
221
  requirements: []
208
222
  rubyforge_project:
209
- rubygems_version: 2.2.1
223
+ rubygems_version: 2.2.0
210
224
  signing_key:
211
225
  specification_version: 4
212
226
  summary: API wrapper gem around Core's API