roqua-core-api 0.0.15 → 0.0.16

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