allscripts_unity_client 1.3.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +66 -66
- data/allscripts_unity_client.gemspec +32 -32
- data/lib/allscripts_unity_client/client.rb +215 -205
- data/lib/allscripts_unity_client/client_driver.rb +15 -42
- data/lib/allscripts_unity_client/client_options.rb +68 -0
- data/lib/allscripts_unity_client/json_client_driver.rb +46 -50
- data/lib/allscripts_unity_client/json_unity_request.rb +20 -20
- data/lib/allscripts_unity_client/json_unity_response.rb +1 -1
- data/lib/allscripts_unity_client/soap_client_driver.rb +29 -29
- data/lib/allscripts_unity_client/timezone.rb +15 -10
- data/lib/allscripts_unity_client/unity_request.rb +17 -17
- data/lib/allscripts_unity_client/unity_response.rb +3 -3
- data/lib/allscripts_unity_client/utilities.rb +5 -5
- data/lib/allscripts_unity_client/version.rb +1 -1
- data/lib/allscripts_unity_client.rb +21 -25
- data/spec/allscripts_unity_client_spec.rb +12 -16
- data/spec/client_driver_spec.rb +1 -49
- data/spec/client_options_spec.rb +134 -0
- data/spec/client_spec.rb +9 -9
- data/spec/factories/allscripts_unity_client_parameters_factory.rb +2 -2
- data/spec/factories/client_driver_factory.rb +4 -5
- data/spec/factories/client_factory.rb +2 -2
- data/spec/factories/client_options.rb +13 -0
- data/spec/factories/json_client_driver_factory.rb +1 -1
- data/spec/factories/json_unity_request_factory.rb +1 -1
- data/spec/factories/json_unity_response_factory.rb +1 -1
- data/spec/factories/magic_request_factory.rb +4 -4
- data/spec/factories/soap_client_driver_factory.rb +1 -1
- data/spec/factories/timezone_factory.rb +2 -2
- data/spec/factories/unity_request_factory.rb +3 -3
- data/spec/factories/unity_response_factory.rb +2 -2
- data/spec/json_client_driver_spec.rb +18 -86
- data/spec/json_unity_request_spec.rb +7 -7
- data/spec/json_unity_response_spec.rb +6 -6
- data/spec/soap_client_driver_spec.rb +20 -82
- data/spec/spec_helper.rb +5 -9
- data/spec/support/shared_examples_for_client_driver.rb +37 -58
- data/spec/support/shared_examples_for_unity_request.rb +13 -13
- data/spec/support/shared_examples_for_unity_response.rb +4 -4
- data/spec/timezone_spec.rb +31 -11
- data/spec/unity_request_spec.rb +7 -7
- data/spec/unity_response_spec.rb +4 -4
- data/spec/utilities_spec.rb +2 -2
- metadata +30 -57
@@ -4,21 +4,21 @@ describe 'JSONClientDriver' do
|
|
4
4
|
it_behaves_like 'a client driver'
|
5
5
|
|
6
6
|
subject do
|
7
|
-
client_driver =
|
7
|
+
client_driver = build(:json_client_driver)
|
8
8
|
client_driver.security_token = SecureRandom.uuid
|
9
9
|
client_driver
|
10
10
|
end
|
11
11
|
|
12
|
-
let(:get_server_info) { FixtureLoader.load_file(
|
13
|
-
let(:get_security_token) { FixtureLoader.load_file(
|
14
|
-
let(:retire_security_token) { FixtureLoader.load_file(
|
15
|
-
let(:error) { FixtureLoader.load_json(
|
16
|
-
let(:error_string) {
|
12
|
+
let(:get_server_info) { FixtureLoader.load_file('get_server_info.json') }
|
13
|
+
let(:get_security_token) { FixtureLoader.load_file('get_security_token.json') }
|
14
|
+
let(:retire_security_token) { FixtureLoader.load_file('retire_security_token.json') }
|
15
|
+
let(:error) { FixtureLoader.load_json('error.json') }
|
16
|
+
let(:error_string) { 'error: Username and Password not valid for any licenses on this server' }
|
17
17
|
let(:url) { Faker::Internet.url }
|
18
18
|
|
19
19
|
let(:hash) do
|
20
20
|
{
|
21
|
-
|
21
|
+
'test' => true
|
22
22
|
}
|
23
23
|
end
|
24
24
|
|
@@ -27,49 +27,9 @@ describe 'JSONClientDriver' do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
describe '#initialize' do
|
30
|
-
context 'when
|
31
|
-
it
|
32
|
-
|
33
|
-
|
34
|
-
context 'when nil is given for username' do
|
35
|
-
it { expect { FactoryGirl.build(:json_client_driver, :username => nil) }.to raise_error(ArgumentError) }
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'when nil is given for password' do
|
39
|
-
it { expect { FactoryGirl.build(:json_client_driver, :password => nil) }.to raise_error(ArgumentError) }
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'when nil is given for appname' do
|
43
|
-
it { expect { FactoryGirl.build(:json_client_driver, :appname => nil) }.to raise_error(ArgumentError) }
|
44
|
-
end
|
45
|
-
|
46
|
-
context 'when given a base_unity_url with a trailing /' do
|
47
|
-
it 'sets @base_unity_url without the trailing /' do
|
48
|
-
client_driver = FactoryGirl.build(:json_client_driver, :base_unity_url => "http://www.example.com/")
|
49
|
-
expect(client_driver.base_unity_url).to eq("http://www.example.com")
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'when nil is given for timezone' do
|
54
|
-
it 'sets @timezone to UTC' do
|
55
|
-
client_driver = FactoryGirl.build(:json_client_driver, :timezone => nil)
|
56
|
-
utc_timezone = FactoryGirl.build(:timezone, :zone_identifier => "UTC")
|
57
|
-
expect(client_driver.timezone.tzinfo).to eq(utc_timezone.tzinfo)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'when nil is given for logger' do
|
62
|
-
it 'sets @logger to Logger' do
|
63
|
-
client_driver = FactoryGirl.build(:json_client_driver, :logger => nil)
|
64
|
-
expect(client_driver.logger).to be_instance_of(Logger)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'when logger is set' do
|
69
|
-
it 'sets @logger to logger' do
|
70
|
-
logger = double("logger")
|
71
|
-
client_driver = FactoryGirl.build(:json_client_driver, :logger => logger)
|
72
|
-
expect(client_driver.logger).to be(logger)
|
30
|
+
context 'when given proxy' do
|
31
|
+
it 'passes configuration to connection' do
|
32
|
+
expect(build(:json_client_driver, proxy: url).connection.proxy.uri.to_s).to eq(url)
|
73
33
|
end
|
74
34
|
end
|
75
35
|
end
|
@@ -80,7 +40,7 @@ describe 'JSONClientDriver' do
|
|
80
40
|
|
81
41
|
describe '#magic' do
|
82
42
|
before(:each) {
|
83
|
-
stub_request(:post,
|
43
|
+
stub_request(:post, 'http://www.example.com/Unity/UnityService.svc/json/MagicJson').to_return(body: get_server_info)
|
84
44
|
allow(subject).to receive(:start_timer)
|
85
45
|
allow(subject).to receive(:end_timer)
|
86
46
|
allow(subject).to receive(:log_magic)
|
@@ -88,7 +48,7 @@ describe 'JSONClientDriver' do
|
|
88
48
|
|
89
49
|
it 'should POST to /Unity/UnityService.svc/json/MagicJson' do
|
90
50
|
subject.magic
|
91
|
-
WebMock.
|
51
|
+
expect(WebMock).to have_requested(:post, 'http://www.example.com/Unity/UnityService.svc/json/MagicJson').with(body: /\{"Action":(null|"[^"]*"),"AppUserID":(null|"[^"]*"),"Appname":(null|"[^"]*"),"PatientID":(null|"[^"]*"),"Token":(null|"[^"]*"),"Parameter1":(null|"[^"]*"),"Parameter2":(null|"[^"]*"),"Parameter3":(null|"[^"]*"),"Parameter4":(null|"[^"]*"),"Parameter5":(null|"[^"]*"),"Parameter6":(null|"[^"]*"),"Data":(null|"[^"]*")\}/, headers: { 'Content-Type' => 'application/json' })
|
92
52
|
end
|
93
53
|
|
94
54
|
it 'should call start_timer' do
|
@@ -109,15 +69,15 @@ describe 'JSONClientDriver' do
|
|
109
69
|
|
110
70
|
describe '#get_security_token!' do
|
111
71
|
before(:each) {
|
112
|
-
stub_request(:post,
|
72
|
+
stub_request(:post, 'http://www.example.com/Unity/UnityService.svc/json/GetToken').to_return(body: get_security_token)
|
113
73
|
allow(subject).to receive(:start_timer)
|
114
74
|
allow(subject).to receive(:end_timer)
|
115
75
|
allow(subject).to receive(:log_get_security_token)
|
116
76
|
}
|
117
77
|
|
118
|
-
it 'should POST to /Unity/UnityService.svc/json/GetToken' do
|
78
|
+
it 'should POST to /Unity/UnityService.svc/json/GetToken with username, password, and appname' do
|
119
79
|
subject.get_security_token!
|
120
|
-
WebMock.
|
80
|
+
expect(WebMock).to have_requested(:post, 'http://www.example.com/Unity/UnityService.svc/json/GetToken').with(body: /\{"Username":"[^"]+","Password":"[^"]+","Appname":"[^"]+"\}/, headers: { 'Content-Type' => 'application/json' })
|
121
81
|
end
|
122
82
|
|
123
83
|
it 'should call start_timer' do
|
@@ -138,15 +98,15 @@ describe 'JSONClientDriver' do
|
|
138
98
|
|
139
99
|
describe '#retire_security_token!' do
|
140
100
|
before(:each) {
|
141
|
-
stub_request(:post,
|
101
|
+
stub_request(:post, 'http://www.example.com/Unity/UnityService.svc/json/RetireSecurityToken').to_return(body: retire_security_token)
|
142
102
|
allow(subject).to receive(:start_timer)
|
143
103
|
allow(subject).to receive(:end_timer)
|
144
104
|
allow(subject).to receive(:log_retire_security_token)
|
145
105
|
}
|
146
106
|
|
147
|
-
it 'should POST to /Unity/UnityService.svc/json/RetireSecurityToken' do
|
107
|
+
it 'should POST to /Unity/UnityService.svc/json/RetireSecurityToken with token and appname' do
|
148
108
|
subject.retire_security_token!
|
149
|
-
WebMock.
|
109
|
+
expect(WebMock).to have_requested(:post, 'http://www.example.com/Unity/UnityService.svc/json/RetireSecurityToken').with(body: /\{"Token":"[^"]+","Appname":"[^"]+"\}/, headers: { 'Content-Type' => 'application/json' })
|
150
110
|
end
|
151
111
|
|
152
112
|
it 'should call start_timer' do
|
@@ -165,34 +125,6 @@ describe 'JSONClientDriver' do
|
|
165
125
|
end
|
166
126
|
end
|
167
127
|
|
168
|
-
describe '#create_httpi_request' do
|
169
|
-
context 'when given url' do
|
170
|
-
it 'returns an HTTPI request with that url' do
|
171
|
-
expect(subject.send(:create_httpi_request, url, hash).url.to_s).to eq(url)
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
context 'when given data' do
|
176
|
-
it 'returns an HTTPI request with body set to that data' do
|
177
|
-
expect(subject.send(:create_httpi_request, url, hash).body).to eq(json_hash)
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
context 'when @proxy is nil' do
|
182
|
-
it 'returns an HTTPI request with proxy set to nil' do
|
183
|
-
subject.proxy = nil
|
184
|
-
expect(subject.send(:create_httpi_request, url, hash).proxy).to be_nil
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
context 'when @proxy is set' do
|
189
|
-
it 'return an HTTPI request with proxy set to @proxy' do
|
190
|
-
subject.proxy = url
|
191
|
-
expect(subject.send(:create_httpi_request, url, hash).proxy.to_s).to eq(url)
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
128
|
describe '#raise_if_response_error' do
|
197
129
|
context 'when given nil for response' do
|
198
130
|
it { expect { subject.send(:raise_if_response_error, nil) }.to raise_error(AllscriptsUnityClient::APIError) }
|
@@ -3,34 +3,34 @@ require 'spec_helper'
|
|
3
3
|
describe 'JSONUnityRequest' do
|
4
4
|
it_behaves_like 'a unity request'
|
5
5
|
|
6
|
-
subject {
|
6
|
+
subject { build(:json_unity_request) }
|
7
7
|
|
8
8
|
describe '#initialize' do
|
9
9
|
context 'when nil is given for parameters' do
|
10
|
-
it { expect {
|
10
|
+
it { expect { build(:json_unity_request, parameters: nil) }.to raise_error(ArgumentError) }
|
11
11
|
end
|
12
12
|
|
13
13
|
context 'when nil is given for timezone' do
|
14
|
-
it { expect {
|
14
|
+
it { expect { build(:json_unity_request, timezone: nil) }.to raise_error(ArgumentError) }
|
15
15
|
end
|
16
16
|
|
17
17
|
context 'when nil is given for appname' do
|
18
|
-
it { expect {
|
18
|
+
it { expect { build(:json_unity_request, appname: nil) }.to raise_error(ArgumentError) }
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'when nil is given for security_token' do
|
22
|
-
it { expect {
|
22
|
+
it { expect { build(:json_unity_request, security_token: nil) }.to raise_error(ArgumentError) }
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
describe '#to_hash' do
|
27
27
|
it ':userid maps to AppUserID' do
|
28
|
-
subject.parameters =
|
28
|
+
subject.parameters = build(:magic_request, userid: 'UserID')
|
29
29
|
expect(subject.to_hash['AppUserID']).to eq('UserID')
|
30
30
|
end
|
31
31
|
|
32
32
|
it ':data maps to Base64 encoded Data' do
|
33
|
-
subject.parameters =
|
33
|
+
subject.parameters = build(:magic_request, data: 'data')
|
34
34
|
expect(subject.to_hash['Data']).to eq(['data'].pack('m'))
|
35
35
|
end
|
36
36
|
end
|
@@ -3,18 +3,18 @@ require 'spec_helper'
|
|
3
3
|
describe 'JSONUnityResponse' do
|
4
4
|
it_behaves_like 'a unity response'
|
5
5
|
|
6
|
-
subject {
|
6
|
+
subject { build(:json_unity_response, response: get_server_info) }
|
7
7
|
|
8
|
-
let(:get_server_info) { FixtureLoader.load_yaml(
|
9
|
-
let(:get_providers) { FixtureLoader.load_yaml(
|
8
|
+
let(:get_server_info) { FixtureLoader.load_yaml('get_server_info_json.yml') }
|
9
|
+
let(:get_providers) { FixtureLoader.load_yaml('get_providers_json.yml') }
|
10
10
|
|
11
11
|
describe '#initialize' do
|
12
12
|
context 'when nil is given for response' do
|
13
|
-
it { expect {
|
13
|
+
it { expect { build(:json_unity_response, response: nil) }.to raise_error(ArgumentError) }
|
14
14
|
end
|
15
15
|
|
16
16
|
context 'when nil is given for timezone' do
|
17
|
-
it { expect {
|
17
|
+
it { expect { build(:json_unity_response, timezone: nil) }.to raise_error(ArgumentError) }
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -28,7 +28,7 @@ describe 'JSONUnityResponse' do
|
|
28
28
|
context 'when given empty response' do
|
29
29
|
it 'returns []' do
|
30
30
|
magic_response = get_providers
|
31
|
-
magic_response[0][
|
31
|
+
magic_response[0]['getprovidersinfo'] = []
|
32
32
|
subject.response = magic_response
|
33
33
|
expect(subject.to_hash).to eq([])
|
34
34
|
end
|
@@ -5,82 +5,20 @@ describe 'SOAPClientDriver' do
|
|
5
5
|
it_behaves_like 'a client driver'
|
6
6
|
|
7
7
|
subject do
|
8
|
-
client_driver =
|
8
|
+
client_driver = build(:soap_client_driver, proxy: 'http://localhost:8888')
|
9
9
|
client_driver.security_token = SecureRandom.uuid
|
10
10
|
client_driver
|
11
11
|
end
|
12
12
|
|
13
|
-
let(:get_server_info) { FixtureLoader.load_file(
|
14
|
-
let(:get_security_token) { FixtureLoader.load_file(
|
15
|
-
let(:retire_security_token) { FixtureLoader.load_file(
|
16
|
-
let(:soap_fault) { FixtureLoader.load_file(
|
13
|
+
let(:get_server_info) { FixtureLoader.load_file('get_server_info.xml') }
|
14
|
+
let(:get_security_token) { FixtureLoader.load_file('get_security_token.xml') }
|
15
|
+
let(:retire_security_token) { FixtureLoader.load_file('retire_security_token.xml') }
|
16
|
+
let(:soap_fault) { FixtureLoader.load_file('soap_fault.xml') }
|
17
17
|
let(:url) { Faker::Internet.url }
|
18
18
|
|
19
19
|
before(:all) { savon.mock! }
|
20
20
|
after(:all) { savon.unmock! }
|
21
21
|
|
22
|
-
describe '#initialize' do
|
23
|
-
context 'when nil is given for base_unity_url' do
|
24
|
-
it { expect { FactoryGirl.build(:soap_client_driver, :base_unity_url => nil) }.to raise_error(ArgumentError) }
|
25
|
-
end
|
26
|
-
|
27
|
-
context 'when nil is given for username' do
|
28
|
-
it { expect { FactoryGirl.build(:soap_client_driver, :username => nil) }.to raise_error(ArgumentError) }
|
29
|
-
end
|
30
|
-
|
31
|
-
context 'when nil is given for password' do
|
32
|
-
it { expect { FactoryGirl.build(:soap_client_driver, :password => nil) }.to raise_error(ArgumentError) }
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'when nil is given for appname' do
|
36
|
-
it { expect { FactoryGirl.build(:soap_client_driver, :appname => nil) }.to raise_error(ArgumentError) }
|
37
|
-
end
|
38
|
-
|
39
|
-
context 'when given a base_unity_url with a trailing /' do
|
40
|
-
it 'sets @base_unity_url without the trailing /' do
|
41
|
-
client_driver = FactoryGirl.build(:soap_client_driver, :base_unity_url => "http://www.example.com/")
|
42
|
-
expect(client_driver.base_unity_url).to eq("http://www.example.com")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context 'when nil is given for timezone' do
|
47
|
-
it 'sets @timezone to UTC' do
|
48
|
-
client_driver = FactoryGirl.build(:soap_client_driver, :timezone => nil)
|
49
|
-
utc_timezone = FactoryGirl.build(:timezone, :zone_identifier => "UTC")
|
50
|
-
expect(client_driver.timezone.tzinfo).to eq(utc_timezone.tzinfo)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
context 'when nil is given for proxy' do
|
55
|
-
it 'sets Savon proxy option to nil' do
|
56
|
-
client_driver = FactoryGirl.build(:soap_client_driver, :proxy => nil)
|
57
|
-
expect(client_driver.savon_client.globals.instance_variable_get("@options")[:proxy]).to be_nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'when proxy is given' do
|
62
|
-
it 'sets Savon proxy option to the given url' do
|
63
|
-
client_driver = FactoryGirl.build(:soap_client_driver, :proxy => url)
|
64
|
-
expect(client_driver.savon_client.globals.instance_variable_get("@options")[:proxy]).to eq(url)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'when nil is given for logger' do
|
69
|
-
it 'sets @logger to Logger' do
|
70
|
-
client_driver = FactoryGirl.build(:soap_client_driver, :logger => nil)
|
71
|
-
expect(client_driver.logger).to be_instance_of(Logger)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'when logger is set' do
|
76
|
-
it 'sets @logger to logger' do
|
77
|
-
logger = double("logger")
|
78
|
-
client_driver = FactoryGirl.build(:soap_client_driver, :logger => logger)
|
79
|
-
expect(client_driver.logger).to be(logger)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
22
|
describe '#client_type' do
|
85
23
|
it { expect(subject.client_type).to be(:soap) }
|
86
24
|
end
|
@@ -93,31 +31,31 @@ describe 'SOAPClientDriver' do
|
|
93
31
|
}
|
94
32
|
|
95
33
|
it 'should send a SOAP request to Magic endpoint' do
|
96
|
-
savon.expects(
|
34
|
+
savon.expects('Magic').with(message: :any).returns(get_server_info)
|
97
35
|
subject.magic
|
98
36
|
end
|
99
37
|
|
100
38
|
context 'when a Savon::SOAPFault is raised' do
|
101
39
|
it 'should raise an APIError' do
|
102
|
-
savon.expects(
|
40
|
+
savon.expects('Magic').with(message: :any).returns({ code: 500, headers: {}, body: soap_fault })
|
103
41
|
expect { subject.magic }.to raise_error(AllscriptsUnityClient::APIError)
|
104
42
|
end
|
105
43
|
end
|
106
44
|
|
107
45
|
it 'should call start_timer' do
|
108
|
-
savon.expects(
|
46
|
+
savon.expects('Magic').with(message: :any).returns(get_server_info)
|
109
47
|
subject.magic
|
110
48
|
expect(subject).to have_received(:start_timer)
|
111
49
|
end
|
112
50
|
|
113
51
|
it 'should call end_timer' do
|
114
|
-
savon.expects(
|
52
|
+
savon.expects('Magic').with(message: :any).returns(get_server_info)
|
115
53
|
subject.magic
|
116
54
|
expect(subject).to have_received(:start_timer)
|
117
55
|
end
|
118
56
|
|
119
57
|
it 'should call log_magic' do
|
120
|
-
savon.expects(
|
58
|
+
savon.expects('Magic').with(message: :any).returns(get_server_info)
|
121
59
|
subject.magic
|
122
60
|
expect(subject).to have_received(:log_magic)
|
123
61
|
end
|
@@ -131,31 +69,31 @@ describe 'SOAPClientDriver' do
|
|
131
69
|
}
|
132
70
|
|
133
71
|
it 'should send a SOAP request to GetSecurityToken endpoint' do
|
134
|
-
savon.expects(
|
72
|
+
savon.expects('GetSecurityToken').with(message: :any).returns(get_security_token)
|
135
73
|
subject.get_security_token!
|
136
74
|
end
|
137
75
|
|
138
76
|
context 'when a Savon::SOAPFault is raised' do
|
139
77
|
it 'should raise an APIError' do
|
140
|
-
savon.expects(
|
78
|
+
savon.expects('GetSecurityToken').with(message: :any).returns({ code: 500, headers: {}, body: soap_fault })
|
141
79
|
expect { subject.get_security_token! }.to raise_error(AllscriptsUnityClient::APIError)
|
142
80
|
end
|
143
81
|
end
|
144
82
|
|
145
83
|
it 'should call start_timer' do
|
146
|
-
savon.expects(
|
84
|
+
savon.expects('GetSecurityToken').with(message: :any).returns(get_security_token)
|
147
85
|
subject.get_security_token!
|
148
86
|
expect(subject).to have_received(:start_timer)
|
149
87
|
end
|
150
88
|
|
151
89
|
it 'should call end_timer' do
|
152
|
-
savon.expects(
|
90
|
+
savon.expects('GetSecurityToken').with(message: :any).returns(get_security_token)
|
153
91
|
subject.get_security_token!
|
154
92
|
expect(subject).to have_received(:start_timer)
|
155
93
|
end
|
156
94
|
|
157
95
|
it 'should call log_get_security_token' do
|
158
|
-
savon.expects(
|
96
|
+
savon.expects('GetSecurityToken').with(message: :any).returns(get_security_token)
|
159
97
|
subject.get_security_token!
|
160
98
|
expect(subject).to have_received(:log_get_security_token)
|
161
99
|
end
|
@@ -169,31 +107,31 @@ describe 'SOAPClientDriver' do
|
|
169
107
|
}
|
170
108
|
|
171
109
|
it 'should send a SOAP request to RetireSecurityToken endpoint' do
|
172
|
-
savon.expects(
|
110
|
+
savon.expects('RetireSecurityToken').with(message: :any).returns(retire_security_token)
|
173
111
|
subject.retire_security_token!
|
174
112
|
end
|
175
113
|
|
176
114
|
context 'when a Savon::SOAPFault is raised' do
|
177
115
|
it 'should raise an APIError' do
|
178
|
-
savon.expects(
|
116
|
+
savon.expects('RetireSecurityToken').with(message: :any).returns({ code: 500, headers: {}, body: soap_fault })
|
179
117
|
expect { subject.retire_security_token! }.to raise_error(AllscriptsUnityClient::APIError)
|
180
118
|
end
|
181
119
|
end
|
182
120
|
|
183
121
|
it 'should call start_timer' do
|
184
|
-
savon.expects(
|
122
|
+
savon.expects('RetireSecurityToken').with(message: :any).returns(retire_security_token)
|
185
123
|
subject.retire_security_token!
|
186
124
|
expect(subject).to have_received(:start_timer)
|
187
125
|
end
|
188
126
|
|
189
127
|
it 'should call end_timer' do
|
190
|
-
savon.expects(
|
128
|
+
savon.expects('RetireSecurityToken').with(message: :any).returns(retire_security_token)
|
191
129
|
subject.retire_security_token!
|
192
130
|
expect(subject).to have_received(:start_timer)
|
193
131
|
end
|
194
132
|
|
195
133
|
it 'should call log_retire_security_token' do
|
196
|
-
savon.expects(
|
134
|
+
savon.expects('RetireSecurityToken').with(message: :any).returns(retire_security_token)
|
197
135
|
subject.retire_security_token!
|
198
136
|
expect(subject).to have_received(:log_retire_security_token)
|
199
137
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,14 +10,9 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
|
10
10
|
SimpleCov.start do
|
11
11
|
add_filter do |source_file|
|
12
12
|
filename = Pathname.new(source_file.filename).basename
|
13
|
-
ignored_files =
|
14
|
-
|
15
|
-
|
16
|
-
"Gemfile",
|
17
|
-
"Rakefile"
|
18
|
-
]
|
19
|
-
|
20
|
-
ignored_files.include?(filename) || source_file.filename.include?("spec/")
|
13
|
+
ignored_files = %w(version.rb allscripts_unity_client.gemspec Gemfile Rakefile)
|
14
|
+
|
15
|
+
ignored_files.include?(filename) || source_file.filename.include?('spec/')
|
21
16
|
end
|
22
17
|
end
|
23
18
|
|
@@ -35,10 +30,11 @@ require 'factory_girl'
|
|
35
30
|
require 'json'
|
36
31
|
|
37
32
|
# Include all support files
|
38
|
-
Dir[
|
33
|
+
Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
|
39
34
|
|
40
35
|
# Include all factories
|
41
36
|
FactoryGirl.find_definitions
|
42
37
|
|
43
38
|
RSpec.configure do |config|
|
39
|
+
config.include FactoryGirl::Syntax::Methods
|
44
40
|
end
|
@@ -3,35 +3,19 @@ shared_examples 'a client driver' do
|
|
3
3
|
context 'when @security_token is nil' do
|
4
4
|
it do
|
5
5
|
subject.security_token = nil
|
6
|
-
expect(subject.security_token?).to
|
6
|
+
expect(subject.security_token?).to be_falsey
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
10
|
context 'when @security_token is not nil' do
|
11
11
|
it do
|
12
|
-
subject.security_token =
|
13
|
-
expect(subject.security_token?).to
|
12
|
+
subject.security_token = 'security token'
|
13
|
+
expect(subject.security_token?).to be_truthy
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
19
|
-
context 'when log is false' do
|
20
|
-
it 'return false' do
|
21
|
-
subject.log = false
|
22
|
-
expect(subject.log).to be_false
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when log is true' do
|
27
|
-
it 'return false' do
|
28
|
-
subject.log = true
|
29
|
-
expect(subject.log).to be_true
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#log_get_security_token" do
|
18
|
+
describe '#log_get_security_token' do
|
35
19
|
it 'should call log_info' do
|
36
20
|
allow(subject).to receive(:log_info)
|
37
21
|
subject.send(:log_get_security_token)
|
@@ -39,7 +23,7 @@ shared_examples 'a client driver' do
|
|
39
23
|
end
|
40
24
|
end
|
41
25
|
|
42
|
-
describe
|
26
|
+
describe '#log_retire_security_token' do
|
43
27
|
it 'should call log_info' do
|
44
28
|
allow(subject).to receive(:log_info)
|
45
29
|
subject.send(:log_retire_security_token)
|
@@ -47,10 +31,10 @@ shared_examples 'a client driver' do
|
|
47
31
|
end
|
48
32
|
end
|
49
33
|
|
50
|
-
describe
|
34
|
+
describe '#log_magic' do
|
51
35
|
it 'should call log_info' do
|
52
36
|
allow(subject).to receive(:log_info)
|
53
|
-
subject.send(:log_magic, double(:
|
37
|
+
subject.send(:log_magic, double(parameters: { action: 'action'}))
|
54
38
|
expect(subject).to have_received(:log_info)
|
55
39
|
end
|
56
40
|
|
@@ -60,58 +44,53 @@ shared_examples 'a client driver' do
|
|
60
44
|
end
|
61
45
|
|
62
46
|
describe '#log_info' do
|
63
|
-
context 'when
|
64
|
-
it 'should call @logger.info' do
|
65
|
-
subject.
|
66
|
-
|
67
|
-
subject.
|
68
|
-
expect(subject.logger).to have_received(:info)
|
47
|
+
context 'when @options.logger? is true' do
|
48
|
+
it 'should call @options.logger.info' do
|
49
|
+
subject.options.logger = double('logger', info: true)
|
50
|
+
subject.send(:log_info, 'test')
|
51
|
+
expect(subject.options.logger).to have_received(:info)
|
69
52
|
end
|
70
53
|
end
|
71
54
|
|
72
|
-
context 'when
|
73
|
-
it 'should not call @logger.info' do
|
74
|
-
|
75
|
-
|
76
|
-
subject.
|
77
|
-
|
55
|
+
context 'when @options.logger? is false' do
|
56
|
+
it 'should not call @options.logger.info' do
|
57
|
+
allow_message_expectations_on_nil
|
58
|
+
subject.options.logger = nil
|
59
|
+
allow(subject.options.logger).to receive(:info)
|
60
|
+
subject.send(:log_info, 'test')
|
61
|
+
expect(subject.options.logger).not_to have_received(:info)
|
78
62
|
end
|
79
63
|
end
|
80
64
|
|
81
65
|
context 'when given nil for message' do
|
82
|
-
it 'should not call @logger.info' do
|
83
|
-
subject.
|
84
|
-
allow(subject.logger).to receive(:info)
|
66
|
+
it 'should not call @options.logger.info' do
|
67
|
+
subject.options.logger = double('logger', info: true)
|
85
68
|
subject.send(:log_info, nil)
|
86
|
-
expect(subject.logger).
|
69
|
+
expect(subject.options.logger).not_to have_received(:info)
|
87
70
|
end
|
88
71
|
end
|
89
72
|
|
90
|
-
context 'when @logger is
|
73
|
+
context 'when @options.logger? is false' do
|
91
74
|
it 'should not call @logger.info' do
|
92
|
-
subject.
|
93
|
-
subject.logger = nil
|
94
|
-
expect { subject.send(:log_info, "test") }.to_not raise_error
|
75
|
+
expect { subject.send(:log_info, 'test') }.not_to raise_error
|
95
76
|
end
|
96
77
|
end
|
97
78
|
|
98
|
-
context 'when @timer is nil and
|
79
|
+
context 'when @timer is nil and @options.logger is true' do
|
99
80
|
it 'should not include seconds in the log' do
|
100
|
-
subject.
|
101
|
-
subject.instance_variable_set(
|
102
|
-
|
103
|
-
subject.
|
104
|
-
expect(subject.logger).to_not have_received(:info).with(match(/seconds/))
|
81
|
+
subject.options.logger = double('logger', info: true)
|
82
|
+
subject.instance_variable_set('@timer', nil)
|
83
|
+
subject.send(:log_info, 'test')
|
84
|
+
expect(subject.options.logger).not_to have_received(:info).with(match(/seconds/))
|
105
85
|
end
|
106
86
|
end
|
107
87
|
|
108
|
-
context 'when @timer is not nil and
|
88
|
+
context 'when @timer is not nil and @options.logger? is true' do
|
109
89
|
it 'should include seconds in log' do
|
110
|
-
subject.
|
111
|
-
subject.instance_variable_set(
|
112
|
-
|
113
|
-
subject.
|
114
|
-
expect(subject.logger).to have_received(:info).with(match(/seconds/))
|
90
|
+
subject.options.logger = double('logger', info: true)
|
91
|
+
subject.instance_variable_set('@timer', 1.2)
|
92
|
+
subject.send(:log_info, 'test')
|
93
|
+
expect(subject.options.logger).to have_received(:info).with(match(/seconds/))
|
115
94
|
end
|
116
95
|
end
|
117
96
|
end
|
@@ -119,7 +98,7 @@ shared_examples 'a client driver' do
|
|
119
98
|
describe '#start_timer' do
|
120
99
|
it 'sets @start_time' do
|
121
100
|
subject.send(:start_timer)
|
122
|
-
expect(subject.instance_variable_get(
|
101
|
+
expect(subject.instance_variable_get('@start_time')).not_to be_nil
|
123
102
|
end
|
124
103
|
end
|
125
104
|
|
@@ -127,13 +106,13 @@ shared_examples 'a client driver' do
|
|
127
106
|
it 'sets @end_time' do
|
128
107
|
subject.send(:start_timer)
|
129
108
|
subject.send(:end_timer)
|
130
|
-
expect(subject.instance_variable_get(
|
109
|
+
expect(subject.instance_variable_get('@end_time')).not_to be_nil
|
131
110
|
end
|
132
111
|
|
133
112
|
it 'sets @timer to @end_time - @start_time' do
|
134
113
|
subject.send(:start_timer)
|
135
114
|
subject.send(:end_timer)
|
136
|
-
expect(subject.instance_variable_get(
|
115
|
+
expect(subject.instance_variable_get('@timer')).to eq(subject.instance_variable_get('@end_time') - subject.instance_variable_get('@start_time'))
|
137
116
|
end
|
138
117
|
end
|
139
118
|
end
|