net_registry 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="