net_registry 0.0.2 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ff510ba930514e5dd870986c3f6ae24fa305115
4
- data.tar.gz: f7ed940f85609d8038cd729070e53401403dc558
3
+ metadata.gz: ffc8284b97a1579527e37287ab2ee29687b14de3
4
+ data.tar.gz: 9d3a53579f5c0c538957f5cdf89c63ee9bfc5ee5
5
5
  SHA512:
6
- metadata.gz: e6dbd45eea7926c888585cb941071cfd02168dca65c210656afd20df0bae116dfe0d66230054d9ec19717167bd9fb259990a0c25a01fc03e62a3d9ecbce95d02
7
- data.tar.gz: e2a3be6fd1389c05cb9c16db8288543fb5dbc9550c6e5a4df9976d872760d1f755d955b24d8f6180b48583e6b0ea694ca0f8ebe3fda085f988d82830341db1b5
6
+ metadata.gz: c34f3c55479f9f4f0c3e25dcdd2d90c1d659fffdd44943047b6f5c5059ff711507370ea29813435867db04042012367d4b2f15c2f4430c5236a9d7374991cf8a
7
+ data.tar.gz: 6e53d57e63e158d514f1edc32d48f132ff5b522a1fcc7e9ff635e74b1f0fdda98ce8f1ced531be4eaefca6ee1058d64efa5957411badcd23f1502f1067760e29
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.0
data/Gemfile CHANGED
@@ -26,3 +26,5 @@ source 'https://rubygems.org'
26
26
 
27
27
  # Specify your gem's dependencies in net_registry.gemspec
28
28
  gemspec
29
+
30
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -1,4 +1,8 @@
1
1
  # NetRegistry
2
+ [![Build
3
+ Status](https://travis-ci.org/CarNextDoor/net_registry.svg?branch=master)](https://travis-ci.org/CarNextDoor/net_registry)
4
+ [![Gem Version](https://badge.fury.io/rb/net_registry.svg)](http://badge.fury.io/rb/net_registry)
5
+ [![Coverage Status](https://coveralls.io/repos/CarNextDoor/net_registry/badge.svg?branch=master&service=github)](https://coveralls.io/github/CarNextDoor/net_registry?branch=master)
2
6
 
3
7
  This gem serves as a Ruby wrapper for the NetRegistry Payment Gateway's
4
8
  API. Official documentation can be found [http://www.netregistry.com.au/ee-images/uploads/support/NR-ecom-gateway8.pdf](here)
@@ -42,14 +46,14 @@ Input:
42
46
 
43
47
  ``` ruby
44
48
  {
45
- AMOUNT: (Integer, Float, or String). The amount you would like to
46
- charge. Don't add "$", just the numerical amount.,
49
+ AMOUNT: "(Integer, Float, or String). The amount you would like to
50
+ charge. Don't add '$', just the numerical amount.",
47
51
 
48
- CCNUM: (Integer, String). The credit card number. NO SPACES OR
49
- DASH,
52
+ CCNUM: "(Integer, String). The credit card number. NO SPACES OR
53
+ DASH",
50
54
 
51
- CCEXP: (String). Credit card expiry date. Must be in the format of
52
- "mm/yy".
55
+ CCEXP: "(String). Credit card expiry date. Must be in the format of
56
+ 'mm/yy'."
53
57
  }
54
58
  ```
55
59
 
@@ -60,10 +64,10 @@ Returns: NetRegistry::Response object.
60
64
  Input:
61
65
  ``` ruby
62
66
  {
63
- AMOUNT: (Integer, Float, or String). The amount you would like to
64
- charge. Don't add "$", just the numerical amount.,
67
+ AMOUNT: "(Integer, Float, or String). The amount you would like to
68
+ charge. Don't add '$', just the numerical amount.",
65
69
 
66
- TXNREF: (String). Transaction reference number
70
+ TXNREF: "(String). Transaction reference number"
67
71
  }
68
72
  ```
69
73
 
@@ -75,14 +79,14 @@ Input:
75
79
 
76
80
  ``` ruby
77
81
  {
78
- AMOUNT: (Integer, Float, or String). The amount you would like to
79
- charge. Don't add "$", just the numerical amount.,
82
+ AMOUNT: "(Integer, Float, or String). The amount you would like to
83
+ charge. Don't add '$', just the numerical amount.",
80
84
 
81
- CCNUM: (Integer, String). The credit card number. NO SPACES OR
82
- DASH,
85
+ CCNUM: "(Integer, String). The credit card number. NO SPACES OR
86
+ DASH",
83
87
 
84
- CCEXP: (String). Credit card expiry date. Must be in the format of
85
- "mm/yy".
88
+ CCEXP: "(String). Credit card expiry date. Must be in the format of
89
+ 'mm/yy'".
86
90
  }
87
91
  ```
88
92
 
@@ -93,7 +97,7 @@ Returns: NetRegistry::Response object.
93
97
  Input:
94
98
  ``` ruby
95
99
  {
96
- TXNREF: (String). Transaction reference number
100
+ TXNREF: "(String). Transaction reference number"
97
101
  }
98
102
  ```
99
103
 
data/Rakefile CHANGED
@@ -1,2 +1,5 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ task :default => :spec
4
+ RSpec::Core::RakeTask.new
2
5
 
@@ -35,7 +35,7 @@ module NetRegistry
35
35
  @login = "#{@merchant_id}/#{@password}"
36
36
  @base_url = "https://paygate.ssllock.net/external2.pl"
37
37
  @uri = URI(@base_url)
38
- @factory = NetRegistry::ResponseBuilder.new
38
+ @builder = NetRegistry::ResponseBuilder.new
39
39
  end
40
40
 
41
41
  # Alias for
@@ -66,17 +66,24 @@ module NetRegistry
66
66
  request(params.merge!(COMMAND: "preauth"))
67
67
  end
68
68
 
69
+ # Alias for
70
+ # require(COMMAND: "completion", PREAUTHNUM: .... etc)
71
+ def completion(params = {})
72
+ raise TypeError, "params is not a hash" if !params.is_a?(Hash)
73
+ request(params.merge!(COMMAND: "completion"))
74
+ end
75
+
69
76
  def request(params = {})
70
77
  raise TypeError, "params is not a hash" if !params.is_a?(Hash)
71
78
  params.merge!(LOGIN: @login)
72
- @factory.verify_params(params) ? send_request(params) : @factory.create
79
+ @builder.verify_params(params) ? send_request(params) : @builder.create
73
80
  end
74
81
 
75
82
  private
76
83
 
77
84
  def send_request(params)
78
85
  res = Net::HTTP.post_form(@uri, params)
79
- @factory.parse(res.body).create
86
+ @builder.parse(res.body).create
80
87
  end
81
88
 
82
89
  end
@@ -38,8 +38,8 @@ module NetRegistry
38
38
  # purchase, refund, preauth, status.
39
39
  # params (Hash): Variables to pass to NetRegistry
40
40
  def verify_params(params = {})
41
- success = false
42
- params = process_params(params)
41
+ success = false
42
+ params = process_params(params)
43
43
  case params[:COMMAND]
44
44
  when "purchase"
45
45
  @response.text, success = validate_purchase_params(params)
@@ -49,8 +49,10 @@ module NetRegistry
49
49
  @response.text, success = validate_preauth_params(params)
50
50
  when "status"
51
51
  @response.text, success = validate_status_params(params)
52
+ when "completion"
53
+ @response.text, success = validate_completion_params(params)
52
54
  else
53
- @response.text = "Invalid command. Only [purchase status preauth refund] are valid."
55
+ @response.text = "Invalid command. Only [purchase status preauth refund completion] are valid."
54
56
  success = false
55
57
  end
56
58
  @response.code = 0 if success
@@ -65,66 +67,22 @@ module NetRegistry
65
67
  end
66
68
 
67
69
  # parse HTTP request response body into a response object
68
- # return factory itself.
70
+ # return builder itself.
69
71
  # To get the response object, use #create method
70
72
  def parse(response)
71
73
  raise TypeError, "Response is not a string" if !response.is_a?(String)
72
74
  @full_response = response.split("\n").map(&:strip)
73
75
  if @full_response.first == "failed"
74
- # remove all spaces until the dot
75
- lines = @full_response.drop_while { |x| x != "." }
76
- if lines.empty?
77
- @response.text = @full_response[1]
78
- else
79
- lines.shift
80
- lines[0].slice!("response_text=")
81
- @response.text = lines[0]
82
- end
83
- @response.status = "failed"
84
- @response.code = -1
76
+ parse_failed_response
85
77
  else
86
78
  @full_response.each do |line|
87
- data = line.split("=")
88
- case data.first
89
- when "card_number", "card_no"
90
- @response.transaction.card.number = data[1]
91
- when "response_text"
92
- @response.text = data[1].to_s
93
- when "amount", "total_amount"
94
- @response.transaction.amount = data[1]
95
- when "status"
96
- @response.status = data[1]
97
- when "txnref", "txn_ref"
98
- @response.transaction.reference = data[1]
99
- when "transaction_no"
100
- @response.transaction.number = data[1]
101
- when "bank_ref"
102
- @response.transaction.bank_reference = data[1]
103
- when "card_desc"
104
- @response.transaction.card.description = data[1]
105
- when "response_code"
106
- @response.code = data[1]
107
- when "card_type"
108
- @response.transaction.card.type = data[1]
109
- when "time"
110
- @response.transaction.time = data[1]
111
- when "command"
112
- @response.transaction.command = data[1]
113
- when "card_expiry"
114
- @response.transaction.card.expiry = data[1]
115
- when "result"
116
- @response.result = data[1]
117
- when "settlement_date"
118
- @response.transaction.settlement_date = data[1]
119
- when "rrn"
120
- @response.transaction.rrn = data[1]
121
- when "MID"
122
- @response.transaction.merchant_id = data[1]
123
- else
124
- end
79
+ data = line.split("=")
80
+ parse_success_line(key: data[0], value: data[1])
125
81
  end
126
- @receipt = @full_response.drop_while { |line| !line.include?("Reciept follows") }
127
- if @receipt.include?("Reciept follows")
82
+ @receipt = @full_response.drop_while { |line| !line.include?("Reciept follows") }
83
+ if @receipt.include?("Reciept follows")
84
+ # Don't want the "Reciept follows" line, nor the "." and "done" line.
85
+ # Only want the receipt in between
128
86
  @receipt = @receipt[1...-2]
129
87
  @response.transaction.receipt = @receipt.join("\n")
130
88
  end
@@ -134,6 +92,59 @@ module NetRegistry
134
92
  end
135
93
 
136
94
  protected
95
+ def parse_failed_response
96
+ # remove all spaces until the dot
97
+ lines = @full_response.drop_while { |x| x != "." }
98
+ if lines.empty?
99
+ @response.text = @full_response[1]
100
+ else
101
+ lines.shift
102
+ lines[0].slice!("response_text=")
103
+ @response.text = lines[0]
104
+ end
105
+ @response.status = "failed"
106
+ @response.code = -1
107
+ end
108
+
109
+ def parse_success_line(key:, value:)
110
+ case key
111
+ when "card_number", "card_no"
112
+ @response.transaction.card.number = value
113
+ when "response_text"
114
+ @response.text = value
115
+ when "response_code"
116
+ @response.code = value
117
+ when "status"
118
+ @response.status = value
119
+ when "result"
120
+ @response.result = value
121
+ when "amount", "total_amount"
122
+ @response.transaction.amount = value
123
+ when "time"
124
+ @response.transaction.time = value
125
+ when "command"
126
+ @response.transaction.command = value
127
+ when "txnref", "txn_ref"
128
+ @response.transaction.reference = value
129
+ when "transaction_no"
130
+ @response.transaction.number = value
131
+ when "bank_ref"
132
+ @response.transaction.bank_reference = value
133
+ when "settlement_date"
134
+ @response.transaction.settlement_date = value
135
+ when "rrn"
136
+ @response.transaction.rrn = value
137
+ when "MID"
138
+ @response.transaction.merchant_id = value
139
+ when "card_type"
140
+ @response.transaction.card.type = value
141
+ when "card_expiry"
142
+ @response.transaction.card.expiry = value
143
+ when "card_desc"
144
+ @response.transaction.card.description = value
145
+ end
146
+ end
147
+
137
148
  # Preliminary validation for the purchase method
138
149
  # Returns a Response Object
139
150
  def validate_purchase_params(params)
@@ -182,6 +193,21 @@ module NetRegistry
182
193
  end
183
194
  end
184
195
 
196
+ def validate_completion_params(params)
197
+ if params[:PREAUTHNUM].nil? || params[:PREAUTHNUM].empty?
198
+ return "PREAUTHNUM not found", false
199
+ elsif params[:CCNUM].nil? || params[:CCNUM].empty?
200
+ return "CCNUM not found", false
201
+ elsif params[:CCEXP].nil? || params[:CCEXP].empty?
202
+ return "CCEXP not found", false
203
+ elsif !valid_expiry_format?(params[:CCEXP])
204
+ return "CCEXP invalid format", false
205
+ elsif params[:AMOUNT].nil? || params[:AMOUNT].empty?
206
+ return "AMOUNT not found", false
207
+ else
208
+ return "", true
209
+ end
210
+ end
185
211
 
186
212
  def valid_expiry_format?(card_expiry)
187
213
  raise TypeError if !card_expiry.is_a?(String)
@@ -23,5 +23,5 @@
23
23
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
24
 
25
25
  module NetRegistry
26
- VERSION = "0.0.2"
26
+ VERSION = "0.0.4"
27
27
  end
@@ -44,10 +44,10 @@ API. Official documentation can be found at http://www.netregistry.com.au/ee-ima
44
44
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
45
45
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
46
46
  spec.require_paths = ["lib"]
47
- spec.required_ruby_version = '>= 2.0'
47
+ spec.required_ruby_version = '>= 2.1.0'
48
48
 
49
49
  spec.add_development_dependency "bundler", "~> 1.6"
50
- spec.add_development_dependency "rake"
51
- spec.add_development_dependency "rspec"
52
- spec.add_development_dependency "webmock"
50
+ spec.add_development_dependency "rake", "~> 10.4.2"
51
+ spec.add_development_dependency "rspec", "~> 3.3.0"
52
+ spec.add_development_dependency "webmock", "~> 1.21.0"
53
53
  end
@@ -41,7 +41,7 @@ RSpec.describe NetRegistry::Client do
41
41
  <<-STATUS
42
42
  card_number=#{params[:CCNUM]}
43
43
  settlement_date=31/07/00
44
- response_text=INVALID TRANSACTION
44
+ response_text=INVALID TRANSACTION
45
45
  amount=#{params[:AMOUNT]}
46
46
  status=complete
47
47
  txnref=#{params[:TXNREF]}
@@ -51,7 +51,7 @@ RSpec.describe NetRegistry::Client do
51
51
  card_expiry=01/01
52
52
  MID=24
53
53
  card_type=6
54
- time=2000­07­31 14:28:20
54
+ time=2000-07-31 14:28:20
55
55
  command=purchase
56
56
  result=0
57
57
  .
@@ -74,9 +74,9 @@ RSpec.describe NetRegistry::Client do
74
74
  response_code=12
75
75
  receipt_array=ARRAY(0x8221b9c)
76
76
  cashout_amount=0
77
- account_type=CREDIT A/C
77
+ account_type=CREDIT A/C
78
78
  rrn=000782000024
79
- response_text=INVALID TRANSACTION
79
+ response_text=INVALID TRANSACTION
80
80
  txn_ref=0007311458332546
81
81
  card_no=4111111111111111
82
82
  total_amount=100
@@ -84,27 +84,27 @@ RSpec.describe NetRegistry::Client do
84
84
  card_expiry=01/01
85
85
  card_type=6
86
86
  result=0
87
- Reciept follows
88
- Transaction No: 00332546
89
- ­­­­­­­­­­­­­­­­­­­­­­­­
90
- TYRELL CORPORATION    
91
- MERCH ID        99999999
92
- TERM  ID          Y9TB99
93
- COUNTRY CODE AU
94
- 31/07/00           14:32
95
- RRN         000782000024
87
+ Reciept follows
88
+ Transaction No: 00332546
89
+ ---------------
90
+ TYRELL CORPORATION
91
+ MERCH ID 99999999
92
+ TERM ID Y9TB99
93
+ COUNTRY CODE AU
94
+ 31/07/00 14:32
95
+ RRN 000782000024
96
96
  VISA
97
- 411111­111
98
- CREDIT A/C         01/01
99
- AUTHORISATION��NO:
100
- DECLINED   12
101
- PURCHASE           $1.00
102
- TOTAL   AUD        $1.00
103
- PLEASE RETAIN AS RECORD 
104
- OF PURCHASE
105
- (SUBJECT TO CARDHOLDER'S
106
- ACCEPTANCE)      
107
- ­­­­­­­­­­­­­­­­­­­­­­­­
97
+ 411111-111
98
+ CREDIT A/C 01/01
99
+ AUTHORISATION NO:
100
+ DECLINED 12
101
+ PURCHASE $1.00
102
+ TOTAL AUD $1.00
103
+ PLEASE RETAIN AS RECORD
104
+ OF PURCHASE
105
+ (SUBJECT TO CARDHOLDER'S
106
+ ACCEPTANCE)
107
+ ---------------
108
108
  .
109
109
  done=1
110
110
  PURCHASE
@@ -146,7 +146,7 @@ RSpec.describe NetRegistry::Client do
146
146
 
147
147
  response = client.purchase(params)
148
148
  expect(response.class).to eq(NetRegistry::Response)
149
- expect(response.text).to eq("INVALID TRANSACTION")
149
+ expect(response.text).to eq("INVALID TRANSACTION")
150
150
  expect(response.code).to eq(12)
151
151
  expect(response.status).to eq("declined")
152
152
  end
@@ -173,7 +173,7 @@ RSpec.describe NetRegistry::Client do
173
173
  .to_return(status: 200, body: purchase_success_response, headers: {})
174
174
  response = client.purchase(params)
175
175
  expect(response.class).to eq(NetRegistry::Response)
176
- expect(response.text).to eq("INVALID TRANSACTION")
176
+ expect(response.text).to eq("INVALID TRANSACTION")
177
177
  expect(response.code).to eq(12)
178
178
  expect(response.status).to eq("declined")
179
179
  end
@@ -215,7 +215,7 @@ RSpec.describe NetRegistry::Client do
215
215
  .to_return(status: 200, body: purchase_success_response, headers: {})
216
216
  response = client.refund(params)
217
217
  expect(response.class).to eq(NetRegistry::Response)
218
- expect(response.text).to eq("INVALID TRANSACTION")
218
+ expect(response.text).to eq("INVALID TRANSACTION")
219
219
  expect(response.code).to eq(12)
220
220
  expect(response.status).to eq("declined")
221
221
  end
@@ -242,7 +242,7 @@ RSpec.describe NetRegistry::Client do
242
242
  .to_return(status: 200, body: purchase_success_response, headers: {})
243
243
  response = client.refund(params)
244
244
  expect(response.class).to eq(NetRegistry::Response)
245
- expect(response.text).to eq("INVALID TRANSACTION")
245
+ expect(response.text).to eq("INVALID TRANSACTION")
246
246
  expect(response.code).to eq(12)
247
247
  expect(response.status).to eq("declined")
248
248
  end
@@ -57,7 +57,7 @@ RSpec.describe NetRegistry::ResponseBuilder do
57
57
  card_expiry=01/01
58
58
  MID=24
59
59
  card_type=6
60
- time=2000­07­31 14:28:20
60
+ time=2000-07-31 14:28:20
61
61
  command=purchase
62
62
  result=0
63
63
  .
@@ -79,9 +79,9 @@ RSpec.describe NetRegistry::ResponseBuilder do
79
79
  response_code=12
80
80
  receipt_array=ARRAY(0x8221b9c)
81
81
  cashout_amount=0
82
- account_type=CREDIT A/C
82
+ account_type=CREDIT A/C
83
83
  rrn=000782000024
84
- response_text=INVALID TRANSACTION
84
+ response_text=INVALID TRANSACTION
85
85
  txn_ref=0007311458332546
86
86
  card_no=4111111111111111
87
87
  total_amount=100
@@ -89,27 +89,27 @@ RSpec.describe NetRegistry::ResponseBuilder do
89
89
  card_expiry=01/01
90
90
  card_type=6
91
91
  result=0
92
- Reciept follows
93
- Transaction No: 00332546
94
- ­­­­­­­­­­­­­­­­­­­­­­­­
95
- TYRELL CORPORATION    
96
- MERCH ID        99999999
97
- TERM  ID          Y9TB99
98
- COUNTRY CODE AU
99
- 31/07/00           14:32
100
- RRN         000782000024
92
+ Reciept follows
93
+ Transaction No: 00332546
94
+ ---------------
95
+ TYRELL CORPORATION
96
+ MERCH ID 99999999
97
+ TERM ID Y9TB99
98
+ COUNTRY CODE AU
99
+ 31/07/00 14:32
100
+ RRN 000782000024
101
101
  VISA
102
- 411111­111
103
- CREDIT A/C         01/01
102
+ 411111-111
103
+ CREDIT A/C 01/01
104
104
  AUTHORISATION NO:
105
- DECLINED   12
106
- PURCHASE           $1.00
107
- TOTAL   AUD        $1.00
108
- PLEASE RETAIN AS RECORD 
109
- OF PURCHASE
110
- (SUBJECT TO CARDHOLDER'S
111
- ACCEPTANCE)      
112
- ­­­­­­­­­­­­­­­­­­­­­­­­
105
+ DECLINED 12
106
+ PURCHASE $1.00
107
+ TOTAL AUD $1.00
108
+ PLEASE RETAIN AS RECORD
109
+ OF PURCHASE
110
+ (SUBJECT TO CARDHOLDER'S
111
+ ACCEPTANCE)
112
+ ---------------
113
113
  .
114
114
  done=1
115
115
  RESPONSE
@@ -151,7 +151,7 @@ RSpec.describe NetRegistry::ResponseBuilder do
151
151
 
152
152
  it { expect(@response.transaction.amount).to eq("100") }
153
153
  it { expect(@response.transaction.reference).to eq("0007311428202312") }
154
- it { expect(@response.transaction.time).to eq("2000­07­31 14:28:20")}
154
+ it { expect(@response.transaction.time).to eq("2000-07-31 14:28:20")}
155
155
  it { expect(@response.transaction.command).to eq("purchase")}
156
156
  it { expect(@response.transaction.settlement_date).to eq("31/07/00")}
157
157
  it { expect(@response.transaction.bank_reference).to eq("000731000024")}
@@ -168,29 +168,29 @@ RSpec.describe NetRegistry::ResponseBuilder do
168
168
  before :each do
169
169
  @response = factory.parse(purchase_invalid_transaction).create
170
170
  @receipt = <<-RECEIPT.gsub(/^\s+/, "")
171
- Transaction No: 00332546
172
- ­­­­­­­­­­­­­­­­­­­­­­­­
173
- TYRELL CORPORATION    
174
- MERCH ID        99999999
175
- TERM  ID          Y9TB99
176
- COUNTRY CODE AU
177
- 31/07/00           14:32
178
- RRN         000782000024
171
+ Transaction No: 00332546
172
+ ---------------
173
+ TYRELL CORPORATION
174
+ MERCH ID 99999999
175
+ TERM ID Y9TB99
176
+ COUNTRY CODE AU
177
+ 31/07/00 14:32
178
+ RRN 000782000024
179
179
  VISA
180
- 411111­111
181
- CREDIT A/C         01/01
180
+ 411111-111
181
+ CREDIT A/C 01/01
182
182
  AUTHORISATION NO:
183
- DECLINED   12
184
- PURCHASE           $1.00
185
- TOTAL   AUD        $1.00
186
- PLEASE RETAIN AS RECORD 
187
- OF PURCHASE
188
- (SUBJECT TO CARDHOLDER'S
189
- ACCEPTANCE)      
190
- ­­­­­­­­­­­­­­­­­­­­­­­­
183
+ DECLINED 12
184
+ PURCHASE $1.00
185
+ TOTAL AUD $1.00
186
+ PLEASE RETAIN AS RECORD
187
+ OF PURCHASE
188
+ (SUBJECT TO CARDHOLDER'S
189
+ ACCEPTANCE)
190
+ ---------------
191
191
  RECEIPT
192
192
  end
193
- it { expect(@response.text).to eq("INVALID TRANSACTION") }
193
+ it { expect(@response.text).to eq("INVALID TRANSACTION") }
194
194
  it { expect(@response.transaction.reference).to eq("0007311458332546") }
195
195
  it { expect(@response.transaction.rrn).to eq("000782000024")}
196
196
  it { expect(@response.result).to eq(0)}
@@ -224,7 +224,7 @@ RSpec.describe NetRegistry::ResponseBuilder do
224
224
  it "has not provided with a COMMAND" do
225
225
  factory.verify_params(invalid_status_params)
226
226
  response = factory.create
227
- expect(response.text).to eq("Invalid command. Only [purchase status preauth refund] are valid.")
227
+ expect(response.text).to eq("Invalid command. Only [purchase status preauth refund completion] are valid.")
228
228
  expect(response.status).to eq("failed")
229
229
  expect(response.code).to eq(-1)
230
230
  end
@@ -323,4 +323,28 @@ RSpec.describe NetRegistry::ResponseBuilder do
323
323
  expect(factory.send(:validate_purchase_params, params.merge!(CCEXP: "What's up"))).to eq(["CCEXP invalid format", false])
324
324
  end
325
325
  end
326
+
327
+ describe "#validate_completion_params" do
328
+ let(:params) { {AMOUNT: "100", CCNUM: "111111111111", CCEXP: "10/15", PREAUTHNUM: "111111111"}}
329
+ it { expect(factory.send(:validate_completion_params, params)).to eq(["", true]) }
330
+ it "does not have amount in params hash" do
331
+ expect(factory.send(:validate_completion_params, params.merge!(AMOUNT: nil))).to eq(["AMOUNT not found", false])
332
+ expect(factory.send(:validate_completion_params, params.merge!(AMOUNT: ""))).to eq(["AMOUNT not found", false])
333
+ end
334
+
335
+ it "does not have CCNUM in params hash" do
336
+ expect(factory.send(:validate_completion_params, params.merge!(CCNUM: nil))).to eq(["CCNUM not found", false])
337
+ expect(factory.send(:validate_completion_params, params.merge!(CCNUM: ""))).to eq(["CCNUM not found", false])
338
+ end
339
+
340
+ it "does not have CCEXP in params hash" do
341
+ expect(factory.send(:validate_completion_params, params.merge!(CCEXP: nil))).to eq(["CCEXP not found", false])
342
+ expect(factory.send(:validate_completion_params, params.merge!(CCEXP: ""))).to eq(["CCEXP not found", false])
343
+ end
344
+
345
+ it "invalid CCEXP format" do
346
+ expect(factory.send(:validate_completion_params, params.merge!(CCEXP: "12/29/2015"))).to eq(["CCEXP invalid format", false])
347
+ expect(factory.send(:validate_completion_params, params.merge!(CCEXP: "What's up"))).to eq(["CCEXP invalid format", false])
348
+ end
349
+ end
326
350
  end
@@ -23,6 +23,8 @@ Bundler.setup
23
23
  require 'webmock/rspec'
24
24
  WebMock.disable_net_connect!(allow_localost: true)
25
25
  require 'net_registry'
26
+ require 'coveralls'
27
+ Coveralls.wear!
26
28
  RSpec.configure do |config|
27
29
  # rspec-expectations config goes here. You can use an alternate
28
30
  # assertion/expectation library such as wrong or the stdlib/minitest
@@ -86,7 +86,7 @@ RSpec.describe NetRegistry::Transaction do
86
86
 
87
87
  describe "#time" do
88
88
  it "assigns time" do
89
- time = "2000­07­31 14:28:20"
89
+ time = "2000-07-31 14:28:20"
90
90
  expect(transaction.time).to be_nil
91
91
  transaction.time = time
92
92
  expect(transaction.time).to eq(time)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net_registry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ray Tung
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-10 00:00:00.000000000 Z
11
+ date: 2015-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,44 +28,44 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 10.4.2
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 10.4.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 3.3.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 3.3.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: webmock
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 1.21.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 1.21.0
69
69
  description: |-
70
70
  This gem serves as a Ruby wrapper for the NetRegistry Payment Gateway's
71
71
  API. Official documentation can be found at http://www.netregistry.com.au/ee-images/uploads/support/NR-ecom-gateway8.pdf. Source can be found on https://github.com/carnextnoor/net_registry
@@ -77,6 +77,7 @@ extra_rdoc_files: []
77
77
  files:
78
78
  - ".gitignore"
79
79
  - ".rspec"
80
+ - ".travis.yml"
80
81
  - Gemfile
81
82
  - LICENSE.txt
82
83
  - README.md
@@ -109,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
110
  requirements:
110
111
  - - ">="
111
112
  - !ruby/object:Gem::Version
112
- version: '2.0'
113
+ version: 2.1.0
113
114
  required_rubygems_version: !ruby/object:Gem::Requirement
114
115
  requirements:
115
116
  - - ">="