exact4r 0.9.1 → 0.9.2

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.
Files changed (78) hide show
  1. data/CHANGELOG +6 -1
  2. data/README +71 -3
  3. data/Rakefile +8 -7
  4. data/VERSION +1 -1
  5. data/doc/classes/EWS/Transaction/FakeResponse.html +451 -0
  6. data/doc/classes/EWS/Transaction/Request.html +61 -80
  7. data/doc/classes/EWS/Transaction/Response.html +206 -14
  8. data/doc/classes/EWS/Transaction/Validator.html +182 -0
  9. data/doc/classes/EWS/Transporter.html +269 -0
  10. data/doc/classes/REXML/Document.html +176 -0
  11. data/doc/classes/REXML/Entity.html +150 -0
  12. data/doc/classes/REXML.html +112 -0
  13. data/doc/created.rid +1 -1
  14. data/doc/files/CHANGELOG.html +156 -0
  15. data/doc/files/LICENCE.html +109 -0
  16. data/doc/files/README.html +164 -23
  17. data/doc/files/VERSION.html +107 -0
  18. data/doc/files/lib/ews/transaction/fake_response_rb.html +101 -0
  19. data/doc/files/lib/ews/transaction/mapping_rb.html +1 -1
  20. data/doc/files/lib/ews/transaction/request_rb.html +8 -1
  21. data/doc/files/lib/ews/transaction/response_rb.html +1 -1
  22. data/doc/files/lib/ews/transaction/validator_rb.html +101 -0
  23. data/doc/files/lib/ews/{transaction/transporter_rb.html → transporter_rb.html} +3 -3
  24. data/doc/files/lib/exact4r_rb.html +6 -2
  25. data/doc/fr_class_index.html +6 -1
  26. data/doc/fr_file_index.html +6 -1
  27. data/doc/fr_method_index.html +22 -7
  28. data/lib/ews/transaction/mapping.rb +41 -40
  29. data/lib/ews/transaction/request.rb +3 -4
  30. data/lib/ews/transaction/response.rb +5 -0
  31. data/lib/ews/transaction/validator.rb +44 -34
  32. data/lib/ews/transporter.rb +3 -3
  33. data/lib/exact4r.rb +1 -1
  34. data/test/exhaustive/forced_post_test.rb +75 -0
  35. data/test/exhaustive/online_debit_purchase_test.rb +66 -0
  36. data/test/exhaustive/online_debit_refund_test.rb +66 -0
  37. data/test/exhaustive/pre_auth_completion_test.rb +99 -0
  38. data/test/exhaustive/pre_auth_only_test.rb +68 -0
  39. data/test/exhaustive/pre_auth_test.rb +68 -0
  40. data/test/exhaustive/purchase_correction_test.rb +79 -0
  41. data/test/exhaustive/purchase_test.rb +68 -0
  42. data/test/exhaustive/recurring_seed_pre_auth_test.rb +68 -0
  43. data/test/exhaustive/recurring_seed_purchase_test.rb +68 -0
  44. data/test/exhaustive/refund_correction_test.rb +79 -0
  45. data/test/exhaustive/refund_test.rb +68 -0
  46. data/test/exhaustive/secure_storage_test.rb +75 -0
  47. data/test/exhaustive/tagged_online_debit_refund_test.rb +168 -0
  48. data/test/exhaustive/tagged_pre_auth_completion_test.rb +119 -0
  49. data/test/exhaustive/tagged_pre_auth_test.rb +116 -0
  50. data/test/exhaustive/tagged_purchase_test.rb +116 -0
  51. data/test/exhaustive/tagged_refund_test.rb +144 -0
  52. data/test/exhaustive/transaction_details_test.rb +86 -0
  53. data/test/exhaustive/void_test.rb +75 -0
  54. data/{spec/avs_spec.rb → test/general/avs_test.rb} +33 -44
  55. data/test/general/json_encoding_test.rb +62 -0
  56. data/test/general/request_test.rb +185 -0
  57. data/test/general/rest_encoding_test.rb +174 -0
  58. data/test/general/soap_encoding_test.rb +211 -0
  59. data/test/general/transporter_test.rb +54 -0
  60. data/test/general/validator_test.rb +150 -0
  61. data/test/samples/rest.dodgy.response.xml +60 -0
  62. data/test/samples/rest.everything.response.xml +67 -0
  63. data/test/samples/rest.response.xml +60 -0
  64. data/test/samples/soap.deserialization.fault.xml +10 -0
  65. data/test/samples/soap.dodgy.response.xml +95 -0
  66. data/test/samples/soap.everything.response.xml +75 -0
  67. data/test/samples/soap.generalfailure.fault.xml +13 -0
  68. data/test/samples/soap.nulltransaction.fault.xml +14 -0
  69. data/test/samples/soap.response.xml +95 -0
  70. data/test/test_helper.rb +115 -0
  71. metadata +52 -12
  72. data/doc/classes/EWS/Transaction/Transporter.html +0 -251
  73. data/pkg/exact4r-0.5.gem +0 -0
  74. data/spec/mapping_spec.rb +0 -126
  75. data/spec/request_spec.rb +0 -154
  76. data/spec/spec_helper.rb +0 -55
  77. data/spec/transporter_spec.rb +0 -43
  78. data/spec/validator_spec.rb +0 -150
data/CHANGELOG CHANGED
@@ -1,5 +1,10 @@
1
+ == v0.9.2
2
+ Converted tests to Test::Unit
3
+ Added complete test suite, testing all transaction types.
4
+ Enhanced validation of mandatory request information.
5
+
1
6
  == v0.9.1
2
- Added Processor independent AVS (Address Verification) API.
7
+ Added unified Address Verification API
3
8
 
4
9
  == v0.9
5
10
  Fixed incorrect decoding of boolean attributes from SOAP response
data/README CHANGED
@@ -116,11 +116,79 @@ and a password. Test logins are as follows:
116
116
  rf_resp = transporter.submit(rf_req)
117
117
  raise "Refund failed: #{rf_resp.exact_resp_code}, #{rf_resp.exact_message}" unless rf_resp.approved?
118
118
  end
119
+
120
+ =4. Using the AVS API
121
+
122
+ Allowable AVS params are:
123
+
124
+ - :avs_street_address => "7501ELMST."
125
+ - :avs_unit_no => "801"
126
+ - :avs_po_box => nil # P.O. Box or street address may be specified, but not both
127
+ - :avs_postal_code => "90210"
128
+ - :avs_test_flag => "X" # AVS test flag (optional)
129
+
130
+
131
+ ===Test Flags
132
+ In order to simulate an AVS response in the test environment, set the :+avs_test_flag+ to the AVS result code you would like
133
+ returned. The AVS result is a one-character response that indicates the degree of match for the provided address.
134
+ The following AVS responses are currently supported:
135
+
136
+ ===North American Response Codes
137
+ AVS Code - ABS Definition - Explanation
138
+ - X - Exact match, 9 digit zip - Street Address, and 9 digit ZIP Code match
139
+ - Y - Exact match, 5 digit zip - Street Address, and 5 digit ZIP Code match
140
+ - A - Partial match - Street Address matches, ZIP Code does not
141
+ - W - Partial match - ZIP Code matches, Street Address does not
142
+ - Z - Partial match - 5 digit ZIP Code match only
143
+ - N - No match - No Address or ZIP Code match
144
+ - U - Unavailable - Address information is unavailable for that account number, or the card issuer does not support
145
+ - G - Service Not supported, non-US Issuer does not participate
146
+ - R - Retry - Issuer system unavailable, retry later
147
+ - E - Not a mail or phone order
148
+ - S - Service not supported
149
+
150
+ ===International Response Codes
151
+ AVS Code - ABS Definition and Explanation
152
+ - G - Global non-AVS participant
153
+ - B - Address matches only
154
+ - C - Address and Postal Code do not match
155
+ - D - Address and Postal Code match
156
+ - F - Address and Postal Code match (UK only)
157
+ - I - Address information not verified for international transaction
158
+ - M - Address and Postal Code match
159
+ - P - Postal Code matches only
160
+
161
+ ===Code Sample
162
+ avs_params = {
163
+ :avs_test_flag => 'N',
164
+ :avs_street_address => '123BROWNSTREET',
165
+ :avs_unit_no => '4,
166
+ :avs_po_box => nil,
167
+ :avs_postal_code => '902101234'
168
+ }
169
+
170
+ tx_params = {
171
+ :transaction_type => :purchase,
172
+ :amount => 10.50,
173
+ :cardholder_name => "Simon Brown",
174
+ :cc_number => "4111111111111111",
175
+ :cc_expiry => "1012",
176
+ :gateway_id => "XXXXXXX",
177
+ :password => "YYYYYY"
178
+ }.merge(avs_params)
179
+
180
+ request = EWS::Transaction::Request.new(tx_params)
181
+
182
+ transporter = EWS::Transporter.new("https://api.e-xact.com/")
183
+ response = transporter.submit(request)
119
184
 
120
- == Rake tasks
185
+ response.cc_verification_str1.should == "N123BROWNSTREET4902101234"
186
+ response.avs.should == N
187
+
188
+ = Rake tasks
121
189
 
122
- spec
123
- Run all test in spec/ folder (default)
190
+ test
191
+ Run all tests (default)
124
192
 
125
193
  rdoc
126
194
  Generate rdoc html in doc/
data/Rakefile CHANGED
@@ -1,14 +1,15 @@
1
- require 'spec/rake/spectask'
2
1
  require 'rake/rdoctask'
2
+ require 'rake/testtask'
3
3
  require "rubygems"
4
- # Gem::manage_gems
5
4
  require "rake/gempackagetask"
6
5
 
7
- task :default => :spec
6
+ task :default => :test
8
7
 
9
- desc "Run all specs"
10
- Spec::Rake::SpecTask.new(:spec) do |t|
11
- t.spec_files = FileList['spec/**/*_spec.rb']
8
+ desc 'Run all the tests'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
12
13
  end
13
14
 
14
15
  desc "Build the RDoc"
@@ -38,4 +39,4 @@ end
38
39
 
39
40
  Rake::GemPackageTask.new(spec) do |pkg|
40
41
  pkg.need_tar = true
41
- end
42
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.1
1
+ 0.9.2
@@ -0,0 +1,451 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: EWS::Transaction::FakeResponse</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">EWS::Transaction::FakeResponse</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../../files/lib/ews/transaction/fake_response_rb.html">
59
+ lib/ews/transaction/fake_response.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ As its name suggests, this class allows you to generate fake responses,
84
+ allowing you to stub out the web service in your testing.
85
+ </p>
86
+ <p>
87
+ The most likely responses have been catered for here, but if you require a
88
+ fake response which is not provided for here, the best approach would be to
89
+ generate a fake <a href="FakeResponse.html#M000002">valid</a> response and
90
+ then adjust its attributes (in consultation with E-xact&#8216;s Web Service
91
+ Programming Reference Guide) to match the particular response you want.
92
+ </p>
93
+ <p>
94
+ Example:
95
+ </p>
96
+ <pre>
97
+ describe &quot;Fake requests&quot; do
98
+ it &quot;should stub sending&quot; do
99
+ request = {:nonsense =&gt; &quot;this is nonsense&quot;}
100
+ fake_response = EWS::Transaction::FakeResponse.valid(request) # a fake valid response
101
+ transporter = EWS::Transporter.new
102
+ transporter.stubs(:submit).returns(fake_response)
103
+
104
+ response = transporter.submit(request)
105
+ response.should == fake_response
106
+ response.should be_approved
107
+ response.bank_message.should == &quot;APPROVED&quot;
108
+ end
109
+ end
110
+ </pre>
111
+
112
+ </div>
113
+
114
+
115
+ </div>
116
+
117
+ <div id="method-list">
118
+ <h3 class="section-bar">Methods</h3>
119
+
120
+ <div class="name-list">
121
+ <a href="#M000003">declined</a>&nbsp;&nbsp;
122
+ <a href="#M000006">invalid_amount</a>&nbsp;&nbsp;
123
+ <a href="#M000008">invalid_auth_num</a>&nbsp;&nbsp;
124
+ <a href="#M000012">invalid_avs</a>&nbsp;&nbsp;
125
+ <a href="#M000007">invalid_cardholder_name</a>&nbsp;&nbsp;
126
+ <a href="#M000005">invalid_cc_expiry</a>&nbsp;&nbsp;
127
+ <a href="#M000004">invalid_cc_number</a>&nbsp;&nbsp;
128
+ <a href="#M000009">invalid_cc_verification_str</a>&nbsp;&nbsp;
129
+ <a href="#M000011">invalid_reference_no</a>&nbsp;&nbsp;
130
+ <a href="#M000010">invalid_transaction_code</a>&nbsp;&nbsp;
131
+ <a href="#M000002">valid</a>&nbsp;&nbsp;
132
+ </div>
133
+ </div>
134
+
135
+ </div>
136
+
137
+
138
+ <!-- if includes -->
139
+
140
+ <div id="section">
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+ <!-- if method_list -->
150
+ <div id="methods">
151
+ <h3 class="section-bar">Public Class methods</h3>
152
+
153
+ <div id="method-M000003" class="method-detail">
154
+ <a name="M000003"></a>
155
+
156
+ <div class="method-heading">
157
+ <a href="#M000003" class="method-signature">
158
+ <span class="method-name">declined</span><span class="method-args">(request)</span>
159
+ </a>
160
+ </div>
161
+
162
+ <div class="method-description">
163
+ <p>
164
+ fake a <a href="FakeResponse.html#M000003">declined</a> response
165
+ </p>
166
+ <p><a class="source-toggle" href="#"
167
+ onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
168
+ <div class="method-source-code" id="M000003-source">
169
+ <pre>
170
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 34</span>
171
+ 34: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">declined</span>(<span class="ruby-identifier">request</span>)
172
+ 35: <span class="ruby-identifier">response</span> = <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:bank_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'200'</span>})
173
+ 36: <span class="ruby-keyword kw">end</span>
174
+ </pre>
175
+ </div>
176
+ </div>
177
+ </div>
178
+
179
+ <div id="method-M000006" class="method-detail">
180
+ <a name="M000006"></a>
181
+
182
+ <div class="method-heading">
183
+ <a href="#M000006" class="method-signature">
184
+ <span class="method-name">invalid_amount</span><span class="method-args">(request)</span>
185
+ </a>
186
+ </div>
187
+
188
+ <div class="method-description">
189
+ <p>
190
+ fake a response indicating an invalid amount
191
+ </p>
192
+ <p><a class="source-toggle" href="#"
193
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
194
+ <div class="method-source-code" id="M000006-source">
195
+ <pre>
196
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 47</span>
197
+ 47: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_amount</span>(<span class="ruby-identifier">request</span>)
198
+ 48: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'26'</span>})
199
+ 49: <span class="ruby-keyword kw">end</span>
200
+ </pre>
201
+ </div>
202
+ </div>
203
+ </div>
204
+
205
+ <div id="method-M000008" class="method-detail">
206
+ <a name="M000008"></a>
207
+
208
+ <div class="method-heading">
209
+ <a href="#M000008" class="method-signature">
210
+ <span class="method-name">invalid_auth_num</span><span class="method-args">(request)</span>
211
+ </a>
212
+ </div>
213
+
214
+ <div class="method-description">
215
+ <p>
216
+ fake a response indicating an invalid authorisation number
217
+ </p>
218
+ <p><a class="source-toggle" href="#"
219
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
220
+ <div class="method-source-code" id="M000008-source">
221
+ <pre>
222
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 55</span>
223
+ 55: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_auth_num</span>(<span class="ruby-identifier">request</span>)
224
+ 56: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'28'</span>})
225
+ 57: <span class="ruby-keyword kw">end</span>
226
+ </pre>
227
+ </div>
228
+ </div>
229
+ </div>
230
+
231
+ <div id="method-M000012" class="method-detail">
232
+ <a name="M000012"></a>
233
+
234
+ <div class="method-heading">
235
+ <a href="#M000012" class="method-signature">
236
+ <span class="method-name">invalid_avs</span><span class="method-args">(request)</span>
237
+ </a>
238
+ </div>
239
+
240
+ <div class="method-description">
241
+ <p>
242
+ fake a response indicating an invalid address verification string
243
+ </p>
244
+ <p><a class="source-toggle" href="#"
245
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
246
+ <div class="method-source-code" id="M000012-source">
247
+ <pre>
248
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 71</span>
249
+ 71: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_avs</span>(<span class="ruby-identifier">request</span>)
250
+ 72: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'58'</span>})
251
+ 73: <span class="ruby-keyword kw">end</span>
252
+ </pre>
253
+ </div>
254
+ </div>
255
+ </div>
256
+
257
+ <div id="method-M000007" class="method-detail">
258
+ <a name="M000007"></a>
259
+
260
+ <div class="method-heading">
261
+ <a href="#M000007" class="method-signature">
262
+ <span class="method-name">invalid_cardholder_name</span><span class="method-args">(request)</span>
263
+ </a>
264
+ </div>
265
+
266
+ <div class="method-description">
267
+ <p>
268
+ fake a response indicating an invalid credit card holder name
269
+ </p>
270
+ <p><a class="source-toggle" href="#"
271
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
272
+ <div class="method-source-code" id="M000007-source">
273
+ <pre>
274
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 51</span>
275
+ 51: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_cardholder_name</span>(<span class="ruby-identifier">request</span>)
276
+ 52: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'27'</span>})
277
+ 53: <span class="ruby-keyword kw">end</span>
278
+ </pre>
279
+ </div>
280
+ </div>
281
+ </div>
282
+
283
+ <div id="method-M000005" class="method-detail">
284
+ <a name="M000005"></a>
285
+
286
+ <div class="method-heading">
287
+ <a href="#M000005" class="method-signature">
288
+ <span class="method-name">invalid_cc_expiry</span><span class="method-args">(request)</span>
289
+ </a>
290
+ </div>
291
+
292
+ <div class="method-description">
293
+ <p>
294
+ fake a response indicating an invalid credit card expiry date
295
+ </p>
296
+ <p><a class="source-toggle" href="#"
297
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
298
+ <div class="method-source-code" id="M000005-source">
299
+ <pre>
300
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 43</span>
301
+ 43: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_cc_expiry</span>(<span class="ruby-identifier">request</span>)
302
+ 44: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'25'</span>})
303
+ 45: <span class="ruby-keyword kw">end</span>
304
+ </pre>
305
+ </div>
306
+ </div>
307
+ </div>
308
+
309
+ <div id="method-M000004" class="method-detail">
310
+ <a name="M000004"></a>
311
+
312
+ <div class="method-heading">
313
+ <a href="#M000004" class="method-signature">
314
+ <span class="method-name">invalid_cc_number</span><span class="method-args">(request)</span>
315
+ </a>
316
+ </div>
317
+
318
+ <div class="method-description">
319
+ <p>
320
+ fake a response indicating an invalid credit card number
321
+ </p>
322
+ <p><a class="source-toggle" href="#"
323
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
324
+ <div class="method-source-code" id="M000004-source">
325
+ <pre>
326
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 39</span>
327
+ 39: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_cc_number</span>(<span class="ruby-identifier">request</span>)
328
+ 40: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'22'</span>})
329
+ 41: <span class="ruby-keyword kw">end</span>
330
+ </pre>
331
+ </div>
332
+ </div>
333
+ </div>
334
+
335
+ <div id="method-M000009" class="method-detail">
336
+ <a name="M000009"></a>
337
+
338
+ <div class="method-heading">
339
+ <a href="#M000009" class="method-signature">
340
+ <span class="method-name">invalid_cc_verification_str</span><span class="method-args">(request)</span>
341
+ </a>
342
+ </div>
343
+
344
+ <div class="method-description">
345
+ <p>
346
+ fake a response indicating an invalid credit card verification string
347
+ </p>
348
+ <p><a class="source-toggle" href="#"
349
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
350
+ <div class="method-source-code" id="M000009-source">
351
+ <pre>
352
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 59</span>
353
+ 59: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_cc_verification_str</span>(<span class="ruby-identifier">request</span>)
354
+ 60: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'31'</span>})
355
+ 61: <span class="ruby-keyword kw">end</span>
356
+ </pre>
357
+ </div>
358
+ </div>
359
+ </div>
360
+
361
+ <div id="method-M000011" class="method-detail">
362
+ <a name="M000011"></a>
363
+
364
+ <div class="method-heading">
365
+ <a href="#M000011" class="method-signature">
366
+ <span class="method-name">invalid_reference_no</span><span class="method-args">(request)</span>
367
+ </a>
368
+ </div>
369
+
370
+ <div class="method-description">
371
+ <p>
372
+ fake a response indicating an invalid reference number
373
+ </p>
374
+ <p><a class="source-toggle" href="#"
375
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
376
+ <div class="method-source-code" id="M000011-source">
377
+ <pre>
378
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 67</span>
379
+ 67: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_reference_no</span>(<span class="ruby-identifier">request</span>)
380
+ 68: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'57'</span>})
381
+ 69: <span class="ruby-keyword kw">end</span>
382
+ </pre>
383
+ </div>
384
+ </div>
385
+ </div>
386
+
387
+ <div id="method-M000010" class="method-detail">
388
+ <a name="M000010"></a>
389
+
390
+ <div class="method-heading">
391
+ <a href="#M000010" class="method-signature">
392
+ <span class="method-name">invalid_transaction_code</span><span class="method-args">(request)</span>
393
+ </a>
394
+ </div>
395
+
396
+ <div class="method-description">
397
+ <p>
398
+ fake a response indicating an invalid transaction code
399
+ </p>
400
+ <p><a class="source-toggle" href="#"
401
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
402
+ <div class="method-source-code" id="M000010-source">
403
+ <pre>
404
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 63</span>
405
+ 63: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">invalid_transaction_code</span>(<span class="ruby-identifier">request</span>)
406
+ 64: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>, {<span class="ruby-identifier">:exact_resp_code</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'32'</span>})
407
+ 65: <span class="ruby-keyword kw">end</span>
408
+ </pre>
409
+ </div>
410
+ </div>
411
+ </div>
412
+
413
+ <div id="method-M000002" class="method-detail">
414
+ <a name="M000002"></a>
415
+
416
+ <div class="method-heading">
417
+ <a href="#M000002" class="method-signature">
418
+ <span class="method-name">valid</span><span class="method-args">(request)</span>
419
+ </a>
420
+ </div>
421
+
422
+ <div class="method-description">
423
+ <p>
424
+ fake a <a href="FakeResponse.html#M000002">valid</a> response
425
+ </p>
426
+ <p><a class="source-toggle" href="#"
427
+ onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
428
+ <div class="method-source-code" id="M000002-source">
429
+ <pre>
430
+ <span class="ruby-comment cmt"># File lib/ews/transaction/fake_response.rb, line 30</span>
431
+ 30: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">valid</span>(<span class="ruby-identifier">request</span>)
432
+ 31: <span class="ruby-identifier">build_response</span>(<span class="ruby-identifier">request</span>)
433
+ 32: <span class="ruby-keyword kw">end</span>
434
+ </pre>
435
+ </div>
436
+ </div>
437
+ </div>
438
+
439
+
440
+ </div>
441
+
442
+
443
+ </div>
444
+
445
+
446
+ <div id="validator-badges">
447
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
448
+ </div>
449
+
450
+ </body>
451
+ </html>