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 +4 -4
- data/ChangeLog.md +5 -1
- data/Gemfile +4 -0
- data/core_api.gemspec +5 -4
- data/lib/roqua/core_api/sessions/auth_session.rb +12 -3
- data/lib/roqua/core_api/version.rb +1 -1
- data/lib/roqua/core_api.rb +8 -0
- data/spec/lib/roqua/core_api/sessions/auth_session_spec.rb +33 -0
- metadata +24 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d2f0bc90e2d82c735a5ee7de9f41a34dd947f44
|
4
|
+
data.tar.gz: 846e6fad4b6e51fe581e8aa0dcab3bf00ac6c1ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13cfe5d94986414a25ac6ed16a193e2ec07dd4a8cb0b17051fb192c4383621d7e7dd4fa46ab517e83fe4d063787f8e2195c3e5177370398e3e878e5faca1fb3c
|
7
|
+
data.tar.gz: 75657185a13034f25c60d547174de264f8c79c07cc10c5f81491182318439af29b02281dee9ddfc2be4c9fb564d3afdd23ea16415c1d6fca7e0219d3e498a26f
|
data/ChangeLog.md
CHANGED
data/Gemfile
CHANGED
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
|
22
|
-
gem.add_dependency 'omniauth-oauth2', '~> 1.1
|
23
|
-
gem.add_dependency 'virtus', '~> 1.0
|
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
|
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
|
-
|
41
|
-
|
42
|
-
|
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)
|
data/lib/roqua/core_api.rb
CHANGED
@@ -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.
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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:
|
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.
|
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
|