ibandit 1.4.1 → 1.5.0
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 +4 -4
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +4 -1
- data/README.md +1 -1
- data/data/structures.yml +8 -2
- data/ibandit.gemspec +2 -2
- data/lib/ibandit/iban.rb +8 -5
- data/lib/ibandit/local_details_cleaner.rb +4 -6
- data/lib/ibandit/version.rb +1 -1
- data/spec/ibandit/iban_spec.rb +15 -15
- data/spec/ibandit/local_details_cleaner_spec.rb +3 -3
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d50cfd65aab41482781d60a6c5741a00ee7a3f2901812ac3930531189c639b71
|
4
|
+
data.tar.gz: b7d78e3cb84a455c6cbbd5a7259a2f62461d7ae65a9ca34f2ae76c2728a608c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b56ba928a8cb07dc584ddbb17a31e565ac27a0f744ef02ad15bccb2c7bc476144c29a63a96b7697202112bdb9dac0105eb985584dccf927296dc5ff2e1235cc
|
7
|
+
data.tar.gz: fda435511c98d3adc4914b1d39cc1c91be8ca04e94061b5df1eda0dc2007b6f84dea83e362b61ffc918b5520c7ebe60f94aeb1206e43fb6f81e5cde8b37f5cbb
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
## 1.5.0 - March 11, 2021
|
2
|
+
|
3
|
+
- Fix issue with padding on Canadian and USA pseudo IBANs #198
|
4
|
+
|
1
5
|
## 1.4.1 - March 3, 2021
|
2
6
|
|
3
7
|
- Update BLZ data - BLZVZ FTSEX MD 652
|
4
8
|
|
5
|
-
|
6
9
|
## 1.4.0 - February 22, 2021
|
7
10
|
|
8
11
|
- [Breaking] Correct `swift_national_id` for Canadian Psudo Ibans. Before `swift_national_id`
|
data/README.md
CHANGED
@@ -575,7 +575,7 @@ iban.iban # => nil
|
|
575
575
|
iban = Ibandit::IBAN.new('USZZ026073150_______2715500356')
|
576
576
|
iban.country_code # => "US"
|
577
577
|
iban.bank_code # => "026073150"
|
578
|
-
iban.account_number # => "
|
578
|
+
iban.account_number # => "2715500356"
|
579
579
|
iban.iban # => nil
|
580
580
|
```
|
581
581
|
|
data/data/structures.yml
CHANGED
@@ -993,7 +993,10 @@ AU:
|
|
993
993
|
CA:
|
994
994
|
:bank_code_length: 4
|
995
995
|
:branch_code_length: 5
|
996
|
-
:account_number_length:
|
996
|
+
:account_number_length: !ruby/range
|
997
|
+
begin: 7
|
998
|
+
end: 12
|
999
|
+
excl: false
|
997
1000
|
:bank_code_format: "\\d{4}"
|
998
1001
|
:branch_code_format: "\\d{5}"
|
999
1002
|
:account_number_format: "\\d{7,12}"
|
@@ -1015,7 +1018,10 @@ NZ:
|
|
1015
1018
|
US:
|
1016
1019
|
:bank_code_length: 9
|
1017
1020
|
:branch_code_length: 0
|
1018
|
-
:account_number_length:
|
1021
|
+
:account_number_length: !ruby/range
|
1022
|
+
begin: 1
|
1023
|
+
end: 17
|
1024
|
+
excl: false
|
1019
1025
|
:bank_code_format: "\\d{9}"
|
1020
1026
|
:account_number_format: "_*\\d{1,17}"
|
1021
1027
|
:national_id_length: 9
|
data/ibandit.gemspec
CHANGED
@@ -5,8 +5,8 @@ require File.expand_path("lib/ibandit/version", __dir__)
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.add_development_dependency "gc_ruboconfig", "~> 2.24.0"
|
7
7
|
gem.add_development_dependency "nokogiri", "~> 1.6"
|
8
|
-
gem.add_development_dependency "pry", "~> 0.
|
9
|
-
gem.add_development_dependency "pry-
|
8
|
+
gem.add_development_dependency "pry", "~> 0.13"
|
9
|
+
gem.add_development_dependency "pry-byebug", "~> 3.9"
|
10
10
|
gem.add_development_dependency "rspec", "~> 3.3"
|
11
11
|
gem.add_development_dependency "rspec-its", "~> 1.2"
|
12
12
|
gem.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
|
data/lib/ibandit/iban.rb
CHANGED
@@ -174,9 +174,7 @@ module Ibandit
|
|
174
174
|
|
175
175
|
def valid_branch_code_length?
|
176
176
|
return unless valid_country_code?
|
177
|
-
if swift_branch_code.to_s.length == structure[:branch_code_length]
|
178
|
-
return true
|
179
|
-
end
|
177
|
+
return true if swift_branch_code.to_s.length == structure[:branch_code_length]
|
180
178
|
|
181
179
|
if structure[:branch_code_length]&.zero?
|
182
180
|
@errors[:branch_code] = Ibandit.translate(:not_used_in_country,
|
@@ -199,8 +197,13 @@ module Ibandit
|
|
199
197
|
return false
|
200
198
|
end
|
201
199
|
|
202
|
-
|
203
|
-
|
200
|
+
case structure[:account_number_length]
|
201
|
+
when Range
|
202
|
+
if structure[:account_number_length].include?(swift_account_number.length)
|
203
|
+
return true
|
204
|
+
end
|
205
|
+
else
|
206
|
+
return true if swift_account_number.length == structure[:account_number_length]
|
204
207
|
end
|
205
208
|
|
206
209
|
@errors[:account_number] =
|
@@ -91,7 +91,7 @@ module Ibandit
|
|
91
91
|
def self.clean_ca_details(local_details)
|
92
92
|
account_number = local_details[:account_number].tr("-", "")
|
93
93
|
|
94
|
-
return {}
|
94
|
+
return {} unless (7..12).cover?(account_number.length)
|
95
95
|
|
96
96
|
bank_code = if local_details[:bank_code].length == 3
|
97
97
|
local_details[:bank_code].rjust(4, "0")
|
@@ -100,7 +100,7 @@ module Ibandit
|
|
100
100
|
end
|
101
101
|
|
102
102
|
{
|
103
|
-
account_number: account_number
|
103
|
+
account_number: account_number,
|
104
104
|
bank_code: bank_code,
|
105
105
|
}
|
106
106
|
end
|
@@ -113,7 +113,7 @@ module Ibandit
|
|
113
113
|
|
114
114
|
{
|
115
115
|
bank_code: local_details[:bank_code],
|
116
|
-
account_number: account_number
|
116
|
+
account_number: account_number,
|
117
117
|
}
|
118
118
|
end
|
119
119
|
|
@@ -330,9 +330,7 @@ module Ibandit
|
|
330
330
|
def self.clean_hu_details(local_details)
|
331
331
|
# This method supports being passed the component IBAN parts, as defined
|
332
332
|
# by SWIFT, or a single 16 or 24 digit string.
|
333
|
-
if local_details[:bank_code] || local_details[:branch_code]
|
334
|
-
return local_details
|
335
|
-
end
|
333
|
+
return local_details if local_details[:bank_code] || local_details[:branch_code]
|
336
334
|
|
337
335
|
cleaned_acct_number = local_details[:account_number].gsub(/[-\s]/, "")
|
338
336
|
|
data/lib/ibandit/version.rb
CHANGED
data/spec/ibandit/iban_spec.rb
CHANGED
@@ -418,12 +418,12 @@ describe Ibandit::IBAN do
|
|
418
418
|
its(:country_code) { is_expected.to eq("CA") }
|
419
419
|
its(:bank_code) { is_expected.to eq("0036") }
|
420
420
|
its(:branch_code) { is_expected.to eq("00063") }
|
421
|
-
its(:account_number) { is_expected.to eq("
|
421
|
+
its(:account_number) { is_expected.to eq("0123456") }
|
422
422
|
its(:swift_bank_code) { is_expected.to eq("0036") }
|
423
423
|
its(:swift_branch_code) { is_expected.to eq("00063") }
|
424
|
-
its(:swift_account_number) { is_expected.to eq("
|
424
|
+
its(:swift_account_number) { is_expected.to eq("0123456") }
|
425
425
|
its(:swift_national_id) { is_expected.to eq("003600063") }
|
426
|
-
its(:pseudo_iban) { is_expected.to eq("
|
426
|
+
its(:pseudo_iban) { is_expected.to eq("CAZZ003600063_____0123456") }
|
427
427
|
|
428
428
|
its(:iban) { is_expected.to be_nil }
|
429
429
|
its(:valid?) { is_expected.to eq(true) }
|
@@ -437,12 +437,12 @@ describe Ibandit::IBAN do
|
|
437
437
|
its(:country_code) { is_expected.to eq("CA") }
|
438
438
|
its(:bank_code) { is_expected.to eq("36") }
|
439
439
|
its(:branch_code) { is_expected.to eq("00063") }
|
440
|
-
its(:account_number) { is_expected.to eq("
|
440
|
+
its(:account_number) { is_expected.to eq("0123456") }
|
441
441
|
its(:swift_bank_code) { is_expected.to eq("36") }
|
442
442
|
its(:swift_branch_code) { is_expected.to eq("00063") }
|
443
|
-
its(:swift_account_number) { is_expected.to eq("
|
443
|
+
its(:swift_account_number) { is_expected.to eq("0123456") }
|
444
444
|
its(:swift_national_id) { is_expected.to eq("3600063") }
|
445
|
-
its(:pseudo_iban) { is_expected.to eq("
|
445
|
+
its(:pseudo_iban) { is_expected.to eq("CAZZ__3600063_____0123456") }
|
446
446
|
|
447
447
|
its(:iban) { is_expected.to be_nil }
|
448
448
|
its(:valid?) { is_expected.to eq(false) }
|
@@ -456,12 +456,12 @@ describe Ibandit::IBAN do
|
|
456
456
|
its(:country_code) { is_expected.to eq("CA") }
|
457
457
|
its(:bank_code) { is_expected.to eq("0036") }
|
458
458
|
its(:branch_code) { is_expected.to eq("00063") }
|
459
|
-
its(:account_number) { is_expected.to eq("
|
459
|
+
its(:account_number) { is_expected.to eq("0123456") }
|
460
460
|
its(:swift_bank_code) { is_expected.to eq("0036") }
|
461
461
|
its(:swift_branch_code) { is_expected.to eq("00063") }
|
462
|
-
its(:swift_account_number) { is_expected.to eq("
|
462
|
+
its(:swift_account_number) { is_expected.to eq("0123456") }
|
463
463
|
its(:swift_national_id) { is_expected.to eq("003600063") }
|
464
|
-
its(:pseudo_iban) { is_expected.to eq("
|
464
|
+
its(:pseudo_iban) { is_expected.to eq("CAZZ003600063_____0123456") }
|
465
465
|
|
466
466
|
its(:iban) { is_expected.to be_nil }
|
467
467
|
its(:valid?) { is_expected.to eq(true) }
|
@@ -501,11 +501,11 @@ describe Ibandit::IBAN do
|
|
501
501
|
its(:country_code) { is_expected.to eq("CA") }
|
502
502
|
its(:bank_code) { is_expected.to eq("0036") }
|
503
503
|
its(:branch_code) { is_expected.to eq("00063") }
|
504
|
-
its(:account_number) { is_expected.to eq("
|
504
|
+
its(:account_number) { is_expected.to eq("0123456") }
|
505
505
|
its(:swift_bank_code) { is_expected.to eq("0036") }
|
506
506
|
its(:swift_branch_code) { is_expected.to eq("00063") }
|
507
|
-
its(:swift_account_number) { is_expected.to eq("
|
508
|
-
its(:pseudo_iban) { is_expected.to eq("
|
507
|
+
its(:swift_account_number) { is_expected.to eq("0123456") }
|
508
|
+
its(:pseudo_iban) { is_expected.to eq("CAZZ003600063_____0123456") }
|
509
509
|
|
510
510
|
its(:iban) { is_expected.to be_nil }
|
511
511
|
its(:valid?) { is_expected.to be true }
|
@@ -518,7 +518,7 @@ describe Ibandit::IBAN do
|
|
518
518
|
it "is invalid and has the correct errors" do
|
519
519
|
expect(subject.valid?).to eq(false)
|
520
520
|
expect(subject.errors).
|
521
|
-
to eq(account_number: "is the wrong length (should be 12 characters)")
|
521
|
+
to eq(account_number: "is the wrong length (should be 7..12 characters)")
|
522
522
|
end
|
523
523
|
end
|
524
524
|
|
@@ -709,10 +709,10 @@ describe Ibandit::IBAN do
|
|
709
709
|
|
710
710
|
its(:country_code) { is_expected.to eq("US") }
|
711
711
|
its(:bank_code) { is_expected.to eq(bank_code) }
|
712
|
-
its(:account_number) { is_expected.to eq("
|
712
|
+
its(:account_number) { is_expected.to eq("0123456") }
|
713
713
|
its(:swift_bank_code) { is_expected.to eq(bank_code) }
|
714
714
|
its(:swift_branch_code) { is_expected.to eq(nil) }
|
715
|
-
its(:swift_account_number) { is_expected.to eq("
|
715
|
+
its(:swift_account_number) { is_expected.to eq("0123456") }
|
716
716
|
its(:swift_national_id) { is_expected.to eq(bank_code) }
|
717
717
|
|
718
718
|
its(:pseudo_iban) do
|
@@ -163,7 +163,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
163
163
|
let(:bank_code) { "0036" }
|
164
164
|
let(:branch_code) { "00063" }
|
165
165
|
|
166
|
-
its([:account_number]) { is_expected.to eq("
|
166
|
+
its([:account_number]) { is_expected.to eq("0123456") }
|
167
167
|
its([:country_code]) { is_expected.to eq(country_code) }
|
168
168
|
its([:bank_code]) { is_expected.to eq("0036") }
|
169
169
|
its([:branch_code]) { is_expected.to eq("00063") }
|
@@ -171,7 +171,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
171
171
|
context "with a hyphen" do
|
172
172
|
let(:account_number) { "0123456-789" }
|
173
173
|
|
174
|
-
its([:account_number]) { is_expected.to eq("
|
174
|
+
its([:account_number]) { is_expected.to eq("0123456789") }
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
@@ -1311,7 +1311,7 @@ describe Ibandit::LocalDetailsCleaner do
|
|
1311
1311
|
let(:account_number) { "0123456789" }
|
1312
1312
|
|
1313
1313
|
its([:bank_code]) { is_expected.to eq(bank_code) }
|
1314
|
-
its([:account_number]) { is_expected.to eq("
|
1314
|
+
its([:account_number]) { is_expected.to eq("0123456789") }
|
1315
1315
|
end
|
1316
1316
|
end
|
1317
1317
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibandit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GoCardless
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gc_ruboconfig
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.13'
|
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: '0.13'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: pry-
|
56
|
+
name: pry-byebug
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.9'
|
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: '
|
68
|
+
version: '3.9'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|