roqua-core-api 0.0.24 → 0.0.25
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 +4 -0
- data/README.md +5 -1
- data/lib/roqua/core_api/dossiers.rb +22 -0
- data/lib/roqua/core_api/sessions/auth_session.rb +1 -5
- data/lib/roqua/core_api/sessions/basic_auth_session.rb +9 -0
- data/lib/roqua/core_api/sessions/oauth_session.rb +8 -0
- data/lib/roqua/core_api/version.rb +1 -1
- data/lib/roqua/core_api.rb +1 -0
- data/spec/lib/roqua/core_api/sessions/auth_session_spec.rb +0 -16
- data/spec/lib/roqua/core_api/sessions/basic_auth_session_spec.rb +20 -0
- data/spec/lib/roqua/core_api/sessions/oauth_session_spec.rb +19 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7110f0db271cc5c78369d2dcc5f788da9d965097
|
4
|
+
data.tar.gz: 9925a6328dd33176e147b12d5c996e1c8e798b3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82e7756d106c5023ab0f9b7710a652ec0f454a1d314db93466a84fe91c9f4df2976107c2a2529d45ac6fc9f75d7b0d618d11499aa06627dce274141b002d5ded
|
7
|
+
data.tar.gz: 4dff71200b5528b02e093c6e21b2caeea1dd529f44b7e2ad251c97e568dedb254915ed239c3368203170f8b66cf29d0f1a9ca9352dfeed363d679725dc08b557
|
data/ChangeLog.md
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
* [Homepage](https://github.com/marten/core_api#readme)
|
4
4
|
* [Issues](https://github.com/marten/core_api/issues)
|
5
|
-
* [Documentation](http://rubydoc.info/gems/
|
5
|
+
* [Documentation](http://rubydoc.info/gems/roqua-core-api/frames)
|
6
6
|
* [Email](mailto:marten at veldthuis.com)
|
7
7
|
|
8
8
|
## Description
|
@@ -21,6 +21,10 @@ TODO: Description
|
|
21
21
|
|
22
22
|
$ gem install core_api
|
23
23
|
|
24
|
+
### Translations
|
25
|
+
|
26
|
+
Make sure you have the standard active validations translations (errors.messages) and add to it a translations for errors.messages.invalid_email.
|
27
|
+
|
24
28
|
## Copyright
|
25
29
|
|
26
30
|
Copyright (c) 2014 Marten Veldthuis
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Roqua
|
2
|
+
module CoreApi
|
3
|
+
# @api private
|
4
|
+
class Dossiers < ActiveInteraction::Base
|
5
|
+
model :session, class: Sessions::OAuthSession
|
6
|
+
|
7
|
+
# usage:
|
8
|
+
# Roqua.CoreApi.Dossiers.run!.each do |d|
|
9
|
+
# puts d.id, d.birth_year, d.gender
|
10
|
+
# end
|
11
|
+
def execute
|
12
|
+
response = session.get "/dossiers"
|
13
|
+
create_enum(response['headers'], response['rows'])
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_enum(headers, rows)
|
17
|
+
row_class = Struct.new(*headers.map(&:to_sym))
|
18
|
+
rows.lazy.map { |row| row_class.new(*row) }.to_enum
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -15,6 +15,15 @@ module Roqua
|
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
+
# handle 401 response.
|
19
|
+
def access_denied(response)
|
20
|
+
if response.headers['WWW-Authenticate']
|
21
|
+
fail 'basic auth for core invalid'
|
22
|
+
else
|
23
|
+
fail Unauthorized
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
18
27
|
def basic_auth
|
19
28
|
{username: username, password: password}
|
20
29
|
end
|
data/lib/roqua/core_api.rb
CHANGED
@@ -2,6 +2,7 @@ require 'active_interaction'
|
|
2
2
|
require 'roqua/core_api/version'
|
3
3
|
require 'roqua/core_api/sessions'
|
4
4
|
require 'roqua/core_api/models'
|
5
|
+
require 'roqua/core_api/dossiers'
|
5
6
|
require 'roqua/core_api/create_dossier'
|
6
7
|
require 'roqua/core_api/create_dossier_group'
|
7
8
|
require 'roqua/core_api/send_email_to'
|
@@ -59,22 +59,6 @@ describe AuthSession do
|
|
59
59
|
expect(session.get('/some_path')['errors']['column']).to eq ["wrong"]
|
60
60
|
end
|
61
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
|
-
|
78
62
|
it 'throws an error if the reponse is not within the 200 range' do
|
79
63
|
allow(response).to receive(:code).and_return(500)
|
80
64
|
allow(HTTParty).to receive(:get).and_return(response)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'webmock/rspec'
|
2
3
|
|
3
4
|
describe BasicAuthSession do
|
4
5
|
describe '#initialize' do
|
@@ -48,4 +49,23 @@ describe BasicAuthSession do
|
|
48
49
|
expect(session.send :basic_auth).to eq(username: 'some_username', password: 'some_password')
|
49
50
|
end
|
50
51
|
end
|
52
|
+
|
53
|
+
describe '#access_denied' do
|
54
|
+
let(:session) { Roqua::CoreApi.basic_auth_session username: 'some_username' }
|
55
|
+
let(:response) { double('response', code: 401, parsed_response: 'some_response') }
|
56
|
+
|
57
|
+
# No NoSession error in this case, since it's not something the user can fix.
|
58
|
+
# Plus client_portal redirects to oauth login if they get NoSession.
|
59
|
+
it 'throws a StandardError if the basic auth is incorrect' do
|
60
|
+
allow(HTTParty).to receive(:get).and_return(response)
|
61
|
+
allow(response).to receive(:headers).and_return('WWW-Authenticate' => 'Basic realm="Application"')
|
62
|
+
expect { session.get '/some_path' }.to raise_error(StandardError)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'throws a Unauthorized error on 401 without www-authenticate header' do
|
66
|
+
allow(HTTParty).to receive(:get).and_return(response)
|
67
|
+
allow(response).to receive(:headers).and_return('foo' => 'bar')
|
68
|
+
expect { session.get '/some_path' }.to raise_error(Roqua::CoreApi::Unauthorized)
|
69
|
+
end
|
70
|
+
end
|
51
71
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'webmock/rspec'
|
2
3
|
|
3
4
|
describe OAuthSession do
|
4
5
|
let(:session) { Fabricate :oauth_session }
|
@@ -41,4 +42,22 @@ describe OAuthSession do
|
|
41
42
|
session.get 'some_path'
|
42
43
|
end
|
43
44
|
end
|
45
|
+
|
46
|
+
describe '#access_denied' do
|
47
|
+
it 'raises a no_session error when response is 401 with a no_session response' do
|
48
|
+
stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
|
49
|
+
status: 401,
|
50
|
+
body: '{ "no_session": true }',
|
51
|
+
headers: { 'Content-Type' => 'application/json' })
|
52
|
+
expect { session.get '/some_path' }.to raise_error(NoSession)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'raises a unauthorized error when response is 401 without a no_session response' do
|
56
|
+
stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
|
57
|
+
status: 401,
|
58
|
+
body: '',
|
59
|
+
headers: { 'Content-Type' => 'application/json' })
|
60
|
+
expect { session.get '/some_path' }.to raise_error(Unauthorized)
|
61
|
+
end
|
62
|
+
end
|
44
63
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marten Veldthuis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -185,6 +185,7 @@ files:
|
|
185
185
|
- lib/roqua/core_api.rb
|
186
186
|
- lib/roqua/core_api/create_dossier.rb
|
187
187
|
- lib/roqua/core_api/create_dossier_group.rb
|
188
|
+
- lib/roqua/core_api/dossiers.rb
|
188
189
|
- lib/roqua/core_api/models.rb
|
189
190
|
- lib/roqua/core_api/models/dossier.rb
|
190
191
|
- lib/roqua/core_api/models/dossier_group.rb
|