libis-services 0.1.13 → 0.1.14
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/lib/libis/services/rosetta/client.rb +13 -5
- data/lib/libis/services/version.rb +1 -1
- data/spec/rosetta_auth_spec.rb +45 -26
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7db38a4eb15196da5b842234c33bef90de3a7cd4
|
4
|
+
data.tar.gz: 0c490da8e73129303e3da02979bbbb5df12c0e36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbd5bc933be2b7ff6b44575f363be498c6d3ebcb28968c34b12384500721a0f6b3b8e92733d3b1d32d8eb7770aeb30c5551eb00dbc4d69e13dd5b650f7ff3134
|
7
|
+
data.tar.gz: f19c32dc6ca5e041c6e4a8e1c237e2e9ad2793803e65c88099e6979ce94b42012584e69d3fe7f14a9d5163b0972baadcac3a6a475067979dfb918188b38808ba
|
@@ -19,6 +19,13 @@ module Libis
|
|
19
19
|
include ::Libis::Tools::Logger
|
20
20
|
|
21
21
|
def initialize(section, service, options = {})
|
22
|
+
basic_auth = options.delete(:basic_auth)
|
23
|
+
if basic_auth
|
24
|
+
options[:basic_auth] = [
|
25
|
+
"#{basic_auth[:user]}-institutionCode-#{basic_auth[:institution]}",
|
26
|
+
basic_auth[:password]
|
27
|
+
]
|
28
|
+
end
|
22
29
|
opts = {strip_namespaces: true, logger: ::Libis::Tools::Config.logger}.merge options
|
23
30
|
base_url = opts.delete(:url) || 'http://depot.lias.be'
|
24
31
|
configure "#{base_url}/dpsws/#{section}/#{service}?wsdl", opts
|
@@ -29,7 +36,8 @@ module Libis
|
|
29
36
|
end
|
30
37
|
|
31
38
|
def authenticate(user, password, institution)
|
32
|
-
|
39
|
+
code = Base64.encode64("#{user}-institutionCode-#{institution}:#{password}").gsub("\n", '')
|
40
|
+
@auth = "Basic #{code}"
|
33
41
|
end
|
34
42
|
|
35
43
|
def get_heart_bit
|
@@ -39,8 +47,8 @@ module Libis
|
|
39
47
|
protected
|
40
48
|
|
41
49
|
def call_raw(operation, args = {})
|
42
|
-
data = if @
|
43
|
-
request operation.to_s.to_sym, args, headers:
|
50
|
+
data = if @auth
|
51
|
+
request operation.to_s.to_sym, args, headers: {'Authorization' => @auth}
|
44
52
|
else
|
45
53
|
request operation.to_s.to_sym, args
|
46
54
|
end
|
@@ -65,7 +73,7 @@ module Libis
|
|
65
73
|
empty_tag_value: nil,
|
66
74
|
delete_namespace_attributes: true,
|
67
75
|
strip_namespaces: true,
|
68
|
-
convert_tags_to: lambda {
|
76
|
+
convert_tags_to: lambda {|tag| tag.to_sym}
|
69
77
|
)
|
70
78
|
data = xml_data unless xml_data.empty?
|
71
79
|
end
|
@@ -108,7 +116,7 @@ module Libis
|
|
108
116
|
|
109
117
|
def request_object_array(method, klass, args = {})
|
110
118
|
data = request_array(method, args)
|
111
|
-
data.map {
|
119
|
+
data.map {|x| klass.new(x)}
|
112
120
|
end
|
113
121
|
|
114
122
|
end
|
data/spec/rosetta_auth_spec.rb
CHANGED
@@ -9,6 +9,19 @@ require 'libis/services/rosetta/producer_handler'
|
|
9
9
|
|
10
10
|
describe 'Rosetta Services' do
|
11
11
|
|
12
|
+
def protected_call(handler, producer_id, producer_name)
|
13
|
+
result = handler.producer(producer_id)
|
14
|
+
expect(result.authoritative_name).to eq producer_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def failed_protected_call(handler, producer_id)
|
18
|
+
expect {handler.producer(producer_id)}.to raise_error(Libis::Services::ServiceError, /^Incorrect username or password/)
|
19
|
+
end
|
20
|
+
|
21
|
+
def invalid_protected_call(handler, producer_id)
|
22
|
+
expect {handler.producer(producer_id)}.to raise_error(Libis::Services::ServiceError)
|
23
|
+
end
|
24
|
+
|
12
25
|
let!(:credentials) {Libis::Tools::ConfigFile.new File.join(File.dirname(__FILE__), 'credentials-test.yml')}
|
13
26
|
|
14
27
|
# noinspection RubyResolve
|
@@ -24,51 +37,61 @@ describe 'Rosetta Services' do
|
|
24
37
|
|
25
38
|
let(:bad_cred) { 'deadbeaf' }
|
26
39
|
|
27
|
-
let(:handler) do
|
28
|
-
# noinspection RubyResolve
|
29
|
-
handler = Libis::Services::Rosetta::ProducerHandler.new(
|
30
|
-
credentials.rosetta_url,
|
31
|
-
log: credentials.debug,
|
32
|
-
log_level: credentials.debug_level
|
33
|
-
)
|
34
|
-
handler
|
35
|
-
end
|
36
|
-
|
37
40
|
describe 'basic authentication' do
|
38
41
|
|
42
|
+
let(:handler) do
|
43
|
+
# noinspection RubyResolve
|
44
|
+
handler = Libis::Services::Rosetta::ProducerHandler.new(
|
45
|
+
credentials.rosetta_url,
|
46
|
+
# log: credentials.debug,
|
47
|
+
# log_level: credentials.debug_level
|
48
|
+
)
|
49
|
+
handler
|
50
|
+
end
|
51
|
+
|
39
52
|
let(:user_name) {admin_usr}
|
40
53
|
let(:user_id) {admin_uid}
|
54
|
+
let(:producer_id) {credentials.producer.id}
|
55
|
+
let(:producer_name) {credentials.producer.data.authoritative_name}
|
41
56
|
|
42
57
|
it 'should allow protected call with correct login' do
|
43
58
|
handler.authenticate(admin_usr, admin_pwd, admin_ins)
|
44
|
-
|
45
|
-
expect(result).to eq user_id
|
59
|
+
protected_call(handler, producer_id, producer_name)
|
46
60
|
end
|
47
61
|
|
48
62
|
it 'should fail protected call with wrong password' do
|
49
63
|
handler.authenticate(admin_usr, bad_cred, admin_ins)
|
50
|
-
|
51
|
-
expect(result).to eq user_id
|
64
|
+
failed_protected_call(handler, producer_id)
|
52
65
|
end
|
53
66
|
|
54
67
|
it 'should fail protected call with wrong institution' do
|
55
68
|
handler.authenticate(admin_usr, admin_pwd, bad_cred)
|
56
|
-
|
57
|
-
expect(result).to eq user_id
|
69
|
+
failed_protected_call(handler, producer_id)
|
58
70
|
end
|
59
71
|
|
60
72
|
it 'should fail protected call with wrong user name' do
|
61
73
|
handler.authenticate(bad_cred, admin_pwd, admin_ins)
|
62
|
-
|
63
|
-
expect(result).to eq user_id
|
74
|
+
failed_protected_call(handler, producer_id)
|
64
75
|
end
|
65
76
|
|
66
77
|
end
|
67
78
|
|
68
79
|
describe 'PDS authentication' do
|
69
80
|
|
81
|
+
let(:handler) do
|
82
|
+
# noinspection RubyResolve
|
83
|
+
handler = Libis::Services::Rosetta::ProducerHandler.new(
|
84
|
+
credentials.rosetta_url,
|
85
|
+
# log: credentials.debug,
|
86
|
+
# log_level: credentials.debug_level
|
87
|
+
)
|
88
|
+
handler
|
89
|
+
end
|
90
|
+
|
70
91
|
let(:user_name) {admin_usr}
|
71
92
|
let(:user_id) {admin_uid}
|
93
|
+
let(:producer_id) {credentials.producer.id}
|
94
|
+
let(:producer_name) {credentials.producer.data.authoritative_name}
|
72
95
|
|
73
96
|
let!(:pds_handler) do
|
74
97
|
# noinspection RubyResolve
|
@@ -92,8 +115,7 @@ describe 'Rosetta Services' do
|
|
92
115
|
|
93
116
|
it 'should allow protected call' do
|
94
117
|
handler.pds_handle = handle
|
95
|
-
|
96
|
-
expect(result).to eq user_id
|
118
|
+
protected_call(handler, producer_id, producer_name)
|
97
119
|
end
|
98
120
|
|
99
121
|
it 'should logout using a valid handle' do
|
@@ -111,8 +133,7 @@ describe 'Rosetta Services' do
|
|
111
133
|
|
112
134
|
it 'should fail protected call' do
|
113
135
|
handler.pds_handle = handle
|
114
|
-
|
115
|
-
expect(result).to eq user_id
|
136
|
+
invalid_protected_call(handler, producer_id)
|
116
137
|
end
|
117
138
|
|
118
139
|
it 'should logout using a invalid handle' do
|
@@ -130,8 +151,7 @@ describe 'Rosetta Services' do
|
|
130
151
|
|
131
152
|
it 'should fail protected call' do
|
132
153
|
handler.pds_handle = handle
|
133
|
-
|
134
|
-
expect(result).to eq user_id
|
154
|
+
invalid_protected_call(handler, producer_id)
|
135
155
|
end
|
136
156
|
|
137
157
|
it 'should logout using a invalid handle' do
|
@@ -150,8 +170,7 @@ describe 'Rosetta Services' do
|
|
150
170
|
|
151
171
|
it 'should fail protected call' do
|
152
172
|
handler.pds_handle = handle
|
153
|
-
|
154
|
-
expect(result).to eq user_id
|
173
|
+
invalid_protected_call(handler, producer_id)
|
155
174
|
end
|
156
175
|
|
157
176
|
it 'should logout using a invalid handle' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libis-services
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kris Dekeyser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|