razorrisk-razor-connectivity 0.14.10

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.
@@ -0,0 +1,239 @@
1
+ #! /usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ # ##########################################################################
5
+ #
6
+ # Copyright (c) 2017 Razor Risk Technologies Pty Limited. All rights reserved.
7
+ #
8
+ # ##########################################################################
9
+
10
+
11
+ # ##########################################################
12
+ # load path
13
+
14
+ $:.unshift File.join(File.dirname(__FILE__), *(['..'] * 4), 'lib')
15
+
16
+
17
+ # ##########################################################
18
+ # diagnostics
19
+
20
+ unless $DEBUG
21
+
22
+ require 'pantheios/globals'
23
+ require 'pantheios/services/null_log_service'
24
+
25
+ ::Pantheios::Globals.INITIAL_SERVICE_CLASSES = [ ::Pantheios::Services::NullLogService ]
26
+ end
27
+
28
+
29
+ # ##########################################################
30
+ # code coverage
31
+
32
+ require 'simplecov'
33
+
34
+
35
+ # ##########################################################
36
+ # requires
37
+
38
+ require 'razor_risk/razor/connectivity/razor_3/response'
39
+
40
+ require 'nokogiri'
41
+ require 'xqsr3/extensions/test/unit'
42
+
43
+ require 'test/unit'
44
+ require 'time'
45
+
46
+
47
+ # ##########################################################
48
+ # tests
49
+
50
+ class Test_Response < Test::Unit::TestCase
51
+
52
+ include ::RazorRisk::Razor::Connectivity::Razor3
53
+
54
+ def test_type_exists_and_is_a_class
55
+
56
+ assert defined? ::RazorRisk
57
+ assert defined? ::RazorRisk::Razor
58
+ assert defined? ::RazorRisk::Razor::Connectivity
59
+ assert defined? ::RazorRisk::Razor::Connectivity::Razor3
60
+ assert defined? ::RazorRisk::Razor::Connectivity::Razor3::Response
61
+ assert Response.is_a? ::Class
62
+ end
63
+
64
+ def test_construct_from_nil
65
+
66
+ assert_raise(::ArgumentError) { Response.new nil }
67
+ end
68
+
69
+ def test_construct_from_string
70
+
71
+ assert_raise(::TypeError) { Response.new '' }
72
+ assert_raise(::TypeError) { Response.new '<?xml version="1.0" encoding=utf-8" ?>' }
73
+ end
74
+
75
+ def test_construct_from_simplest
76
+
77
+ input = <<END_OF_xml
78
+ <razorOutbound environment="QA_TRUNK_PROD" request="razorLog" server="CreditRiskServer">
79
+ <returnCode>ack</returnCode>
80
+ <requestReceivedTime>2017-03-16 10:50:54.927</requestReceivedTime>
81
+ <responseSentTime>2017-03-16 10:50:55.005</responseSentTime>
82
+ <responseReceivedTime>2017-03-16 10:51:01.543</responseReceivedTime>
83
+ <caller>RazorRequest</caller>
84
+ <body/>
85
+ </razorOutbound>
86
+ END_OF_xml
87
+
88
+ xml = Nokogiri::XML input
89
+
90
+ response = Response.new xml
91
+
92
+ assert_kind_of Nokogiri::XML::Element, response.body
93
+ assert_equal %Q<<?xml version=\"1.0\"?>\n#{input}>, response.to_s
94
+ assert_empty response.body.text.to_s
95
+ assert_empty response.body.children
96
+ assert_nil response.errors
97
+ assert_equal 'RazorRequest', response.caller
98
+ assert_equal DateTime.new(2017, 3, 16, 10, 50, 54.927), response.request_received_time
99
+ assert_equal DateTime.new(2017, 3, 16, 10, 50, 55.005), response.response_sent_time
100
+ assert_equal DateTime.new(2017, 3, 16, 10, 51, 1.543), response.response_received_time
101
+
102
+ assert_equal 'ack', response.result_code
103
+ assert_equal '', response.razor_code
104
+ end
105
+
106
+
107
+ def test_construct_from_complex
108
+
109
+ input = <<END_OF_xml
110
+ <razorOutbound environment="QA_TRUNK_PROD" request="batchSummaries" server="CreditRiskServer">
111
+ <returnCode>ack</returnCode>
112
+ <requestReceivedTime>2017-03-16 10:48:50.939</requestReceivedTime>
113
+ <responseSentTime>2017-03-16 10:48:50.955</responseSentTime>
114
+ <responseReceivedTime>2017-03-16 10:48:59.779</responseReceivedTime>
115
+ <caller>RazorRequest</caller>
116
+ <body><batchSummary sysId="4"><batchNumber>0</batchNumber><processedTradeCount>875</processedTradeCount><rejectedTradeCount>0</rejectedTradeCount><excludedTradeCount>0</excludedTradeCount><errorCount>3</errorCount><beginTime>2017-02-17 16:17:05</beginTime><endTime>2017-02-17 16:17:26</endTime></batchSummary></body></razorOutbound>
117
+ END_OF_xml
118
+
119
+ xml = Nokogiri::XML input
120
+
121
+ response = Response.new xml
122
+
123
+ assert_kind_of Nokogiri::XML::Element, response.body
124
+ assert_equal %Q<<?xml version=\"1.0\"?>\n#{input}>, response.to_s
125
+ assert_not_empty response.body.text.to_s
126
+ assert_not_empty response.body.children
127
+ assert_nil response.errors
128
+ assert_equal 'RazorRequest', response.caller
129
+ assert_equal DateTime.new(2017, 3, 16, 10, 48, 50.939), response.request_received_time
130
+ assert_equal DateTime.new(2017, 3, 16, 10, 48, 50.955), response.response_sent_time
131
+ assert_equal DateTime.new(2017, 3, 16, 10, 48, 59.779), response.response_received_time
132
+
133
+ assert_equal 'ack', response.result_code
134
+ assert_equal '', response.razor_code
135
+ end
136
+
137
+ def test_construct_from_nack_response
138
+
139
+ input = <<END_OF_xml
140
+ <razorOutbound>
141
+ <returnCode>nack</returnCode>
142
+ </razorOutbound>
143
+ END_OF_xml
144
+
145
+ xml = Nokogiri::XML input
146
+
147
+ response = Response.new xml
148
+
149
+ assert_nil response.body
150
+ assert_equal %Q<<?xml version=\"1.0\"?>\n#{input}>, response.to_s
151
+ assert_nil response.errors
152
+ assert_nil response.caller
153
+ assert_nil response.request_received_time
154
+ assert_nil response.response_sent_time
155
+ assert_nil response.response_received_time
156
+
157
+ assert_equal 'nack', response.result_code
158
+ assert_equal '', response.razor_code
159
+ end
160
+
161
+ def test_construct_from_nack_response_with_one_error
162
+
163
+ input = <<END_OF_xml
164
+ <razorOutbound environment="RZ01" request="insertPortfolios" server="PortfolioExposureServer">
165
+ <returnCode>nack</returnCode>
166
+ <requestReceivedTime>2018-04-10 11:16:17.192</requestReceivedTime>
167
+ <responseSentTime>2018-04-10 11:16:17.232</responseSentTime>
168
+ <responseReceivedTime>2018-04-10 11:16:16.539</responseReceivedTime>
169
+ <caller>RazorRequest</caller>
170
+ <errors>
171
+ <error>
172
+ <code>RZ0010</code>
173
+ <message>Duplicate record</message>
174
+ <details>Found duplicate portfolio 50 (Portfolio Name Newly Added Portfolios (by Matt))</details>
175
+ </error>
176
+ </errors>
177
+ </razorOutbound>
178
+ END_OF_xml
179
+
180
+ xml = Nokogiri.XML(input)
181
+
182
+ response = Response.new xml
183
+
184
+ assert_nil response.body
185
+ assert_equal 1, response.reasons.size
186
+ assert_equal 'RZ0010', response.reasons[0].code
187
+ assert_equal 'Duplicate record', response.reasons[0].message
188
+ assert response.reasons.lookup?('RZ0010')
189
+ assert response.reasons.lookup?(response.reasons[0])
190
+ assert !response.reasons.lookup?('RZ0011')
191
+
192
+ end
193
+
194
+ def test_construct_from_nack_response_with_two_errors
195
+
196
+ input = <<END_OF_xml
197
+ <razorOutbound environment="RZ01" request="insertPortfolios" server="PortfolioExposureServer">
198
+ <returnCode>nack</returnCode>
199
+ <requestReceivedTime>2018-04-10 11:16:17.192</requestReceivedTime>
200
+ <responseSentTime>2018-04-10 11:16:17.232</responseSentTime>
201
+ <responseReceivedTime>2018-04-10 11:16:16.539</responseReceivedTime>
202
+ <caller>RazorRequest</caller>
203
+ <errors>
204
+ <error>
205
+ <code>RZ0010</code>
206
+ <message>Duplicate record</message>
207
+ <details>Found duplicate portfolio 50 (Portfolio Name Newly Added Portfolios (by Matt))</details>
208
+ </error>
209
+ <error>
210
+ <code>RZ0011</code>
211
+ <message>Operation on non-existent record</message>
212
+ <details>Found duplicate portfolio 50 (Portfolio Name Newly Added Portfolios (by Matt))</details>
213
+ </error>
214
+ </errors>
215
+ </razorOutbound>
216
+ END_OF_xml
217
+
218
+ xml = Nokogiri.XML(input)
219
+
220
+ response = Response.new xml
221
+
222
+ assert_nil response.body
223
+ assert_equal 2, response.reasons.size
224
+ assert_equal 'RZ0010', response.reasons[0].code
225
+ assert_equal 'Duplicate record', response.reasons[0].message
226
+ assert_equal 'RZ0011', response.reasons[1].code
227
+ assert_equal 'Operation on non-existent record', response.reasons[1].message
228
+ assert response.reasons.lookup?('RZ0010')
229
+ assert response.reasons.lookup?('RZ0011')
230
+ assert response.reasons.lookup?(response.reasons[0])
231
+ assert response.reasons.lookup?(response.reasons[1])
232
+ assert !response.reasons.lookup?('RZ0012')
233
+
234
+ end
235
+ end
236
+
237
+ # ############################## end of file ############################# #
238
+
239
+
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: razorrisk-razor-connectivity
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.14.10
5
+ platform: ruby
6
+ authors:
7
+ - Razor Risk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: razorrisk-core-baseutilities
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: razorrisk-core-diagnostics
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: razorrisk-core-system
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pantheios-ruby
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.20.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.20.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: recls-ruby
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.9'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: xqsr3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.30'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.30'
111
+ description: Razor Risk's Razor Connectivity library
112
+ email: operations@razor-risk.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - Rakefile
118
+ - lib/razor_risk/razor/connectivity/clarite_2/config_maker.rb
119
+ - lib/razor_risk/razor/connectivity/exceptions.rb
120
+ - lib/razor_risk/razor/connectivity/razor_3.rb
121
+ - lib/razor_risk/razor/connectivity/razor_3/body_maker.rb
122
+ - lib/razor_risk/razor/connectivity/razor_3/header_maker.rb
123
+ - lib/razor_risk/razor/connectivity/razor_3/message_map.rb
124
+ - lib/razor_risk/razor/connectivity/razor_3/razor_requester.rb
125
+ - lib/razor_risk/razor/connectivity/razor_3/response.rb
126
+ - lib/razor_risk/razor/connectivity/version.rb
127
+ - test/bin/razor_request_exe_empty_response.rb
128
+ - test/unit/connectivity/clarite_2/tc_config_maker.rb
129
+ - test/unit/connectivity/razor_3/tc_body_maker.rb
130
+ - test/unit/connectivity/razor_3/tc_header_maker.rb
131
+ - test/unit/connectivity/razor_3/tc_message_map.rb
132
+ - test/unit/connectivity/razor_3/tc_razor_requester.rb
133
+ - test/unit/connectivity/razor_3/tc_razor_requester_executable.rb
134
+ - test/unit/connectivity/razor_3/tc_response.rb
135
+ homepage: https://razor-risk.com/
136
+ licenses: []
137
+ metadata: {}
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '2.0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 2.6.14
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: RazorRisk.Ruby.Razor.Connectivity
158
+ test_files: []