ibandit 1.35.0 → 1.37.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/.github/workflows/tests.yml +19 -5
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +10 -0
- data/Gemfile +1 -1
- data/config/locales/de.yml +1 -1
- data/config/locales/sk.yml +21 -0
- data/lib/ibandit/constants.rb +1 -1
- data/lib/ibandit/iban.rb +9 -1
- data/lib/ibandit/version.rb +1 -1
- data/spec/ibandit/iban_spec.rb +77 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b92de6a0bd5136fae90ea72a6c9ef38aa44d78adcce93829217f92aaa6e06832
|
|
4
|
+
data.tar.gz: 397a26e1d180a102c9317527c43849d6c147adc2b30394563046a7214ec292b4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 39fb99232136ee69fc5e8b1d180f952cd31b4031e3e8298325c31647212ec8ae21bb27e0ff2d951917fee0eb58c4027306c5ec306f5a3482c9336e3d1fdbedbf
|
|
7
|
+
data.tar.gz: f5565d4016415743ec141be5b8df9fa8b4e171139ee0cb9f0160a27eafea107701c0b0da07179364bbda642798aefd876fef343ec0098e5a2117fbdc82369b23
|
data/.github/workflows/tests.yml
CHANGED
|
@@ -2,15 +2,31 @@ name: tests
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
|
+
branches:
|
|
6
|
+
- "master"
|
|
7
|
+
pull_request:
|
|
5
8
|
|
|
6
9
|
jobs:
|
|
7
|
-
|
|
10
|
+
rubocop:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v7
|
|
14
|
+
- name: Set up Ruby
|
|
15
|
+
uses: ruby/setup-ruby@v1
|
|
16
|
+
with:
|
|
17
|
+
bundler-cache: true
|
|
18
|
+
# Maintain consistency with the TargetRubyVersion in .rubocop.yml
|
|
19
|
+
ruby-version: "3.3"
|
|
20
|
+
- name: Run rubocop
|
|
21
|
+
run: bundle exec rubocop --parallel --extra-details --display-style-guide
|
|
22
|
+
|
|
23
|
+
tests:
|
|
8
24
|
strategy:
|
|
9
25
|
matrix:
|
|
10
|
-
ruby-version: ["3.
|
|
26
|
+
ruby-version: ["3.3", "3.4", "4.0"]
|
|
11
27
|
runs-on: ubuntu-latest
|
|
12
28
|
steps:
|
|
13
|
-
- uses: actions/checkout@
|
|
29
|
+
- uses: actions/checkout@v7
|
|
14
30
|
- name: Set up Ruby
|
|
15
31
|
uses: ruby/setup-ruby@v1
|
|
16
32
|
with:
|
|
@@ -18,5 +34,3 @@ jobs:
|
|
|
18
34
|
ruby-version: "${{ matrix.ruby-version }}"
|
|
19
35
|
- name: Run tests
|
|
20
36
|
run: bundle exec rspec
|
|
21
|
-
- name: Run rubocop
|
|
22
|
-
run: bundle exec rubocop --parallel --extra-details --display-style-guide
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.6
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## 1.37.0 - October 29, 2026
|
|
2
|
+
|
|
3
|
+
- [Breaking] Call the configured modulus checker's `valid_bank_code?` for US details, as is already done for AU, NZ and CA. US routing numbers the checker does not recognise are now invalid.
|
|
4
|
+
|
|
5
|
+
## 1.36.0 - September 29, 2026
|
|
6
|
+
|
|
7
|
+
- Add Slovak translations
|
|
8
|
+
- Update German translation for invalid check digits
|
|
9
|
+
- Drop CI testing for Rubies older than 3.3
|
|
10
|
+
|
|
1
11
|
## 1.35.0 - September 28, 2026
|
|
2
12
|
|
|
3
13
|
- Accept one-digit NZ account suffixes and normalise them to the three-digit bank form.
|
data/Gemfile
CHANGED
data/config/locales/de.yml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
de:
|
|
2
2
|
ibandit:
|
|
3
3
|
invalid_country_code: "'%{country_code}' ist kein gültiges IBAN-Länderkennzeichen gemäß ISO 3166-1"
|
|
4
|
-
invalid_check_digits: "
|
|
4
|
+
invalid_check_digits: "Prüfsumme ist ungültig (%{expected_check_digits} erwartet, %{check_digits} angegeben)."
|
|
5
5
|
invalid_length: "Länge entspricht nicht der SWIFT-Spezifikation (%{expected_length} Zeichen erwartet, %{length} angegeben)"
|
|
6
6
|
is_required: "ist erforderlich"
|
|
7
7
|
wrong_length: "hat nicht die richtige Länge (sollte %{expected} Zeichen haben)"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
sk:
|
|
2
|
+
ibandit:
|
|
3
|
+
invalid_country_code: "'%{country_code}' nie je platný ISO 3166-1 IBAN kód krajiny"
|
|
4
|
+
invalid_check_digits: "Kontrolné číslice neprešli kontrolou modulo. Očakávané '%{expected_check_digits}', zadané '%{check_digits}'."
|
|
5
|
+
invalid_length: "Dĺžka nezodpovedá špecifikácii SWIFT (očakávaných %{expected_length} znakov, zadaných %{length})"
|
|
6
|
+
is_required: "je povinné"
|
|
7
|
+
wrong_length: "má nesprávnu dĺžku (má byť %{expected} znakov)"
|
|
8
|
+
not_used_in_country: "nie je používaný v %{country_code}"
|
|
9
|
+
non_alphanumeric_characters: "Nealfanumerické znaky nájdené: %{characters}"
|
|
10
|
+
invalid_format: "Neočakávaný formát pre %{country_code} IBAN."
|
|
11
|
+
is_invalid: "je neplatný"
|
|
12
|
+
does_not_support_payments: "nepodporuje platby"
|
|
13
|
+
has_invalid_format: "formát je neplatný"
|
|
14
|
+
failed_checksum_test: "neúspešný test kontrolného súčtu"
|
|
15
|
+
failed_modulus_check: "neúspešná kontrola modulo"
|
|
16
|
+
has_invalid_length: "dĺžka je neplatná"
|
|
17
|
+
bank_code_does_not_exist: "bankový kód neexistuje"
|
|
18
|
+
has_invalid_clearing_code_length: "dĺžka kódu clearingu je neplatná"
|
|
19
|
+
has_invalid_serial_number: "sériové číslo je neplatné"
|
|
20
|
+
branch_code_does_not_exist: "kód pobočky neexistuje"
|
|
21
|
+
|
data/lib/ibandit/constants.rb
CHANGED
data/lib/ibandit/iban.rb
CHANGED
|
@@ -298,7 +298,7 @@ module Ibandit
|
|
|
298
298
|
when "AU" then valid_australian_details?
|
|
299
299
|
when "NZ" then valid_nz_details?
|
|
300
300
|
when "CA" then valid_ca_details?
|
|
301
|
-
when "US" then
|
|
301
|
+
when "US" then valid_us_details?
|
|
302
302
|
else true
|
|
303
303
|
end
|
|
304
304
|
end
|
|
@@ -392,6 +392,14 @@ module Ibandit
|
|
|
392
392
|
valid_modulus_check_branch_code?
|
|
393
393
|
end
|
|
394
394
|
|
|
395
|
+
def valid_us_details?
|
|
396
|
+
return true unless country_code == "US"
|
|
397
|
+
return false unless bank_code_passes_checksum_test?
|
|
398
|
+
return true unless Ibandit.modulus_checker
|
|
399
|
+
|
|
400
|
+
valid_modulus_check_bank_code?
|
|
401
|
+
end
|
|
402
|
+
|
|
395
403
|
def bank_code_passes_checksum_test?
|
|
396
404
|
return false unless swift_bank_code
|
|
397
405
|
return false if swift_bank_code.length != 9
|
data/lib/ibandit/version.rb
CHANGED
data/spec/ibandit/iban_spec.rb
CHANGED
|
@@ -1936,6 +1936,82 @@ describe Ibandit::IBAN do
|
|
|
1936
1936
|
end
|
|
1937
1937
|
end
|
|
1938
1938
|
|
|
1939
|
+
describe "valid_us_details" do
|
|
1940
|
+
subject { iban.valid_us_details? }
|
|
1941
|
+
|
|
1942
|
+
context "with non-US details" do
|
|
1943
|
+
let(:arg) do
|
|
1944
|
+
{
|
|
1945
|
+
country_code: "GB",
|
|
1946
|
+
bank_code: "1234",
|
|
1947
|
+
branch_code: "200000",
|
|
1948
|
+
account_number: "55779911",
|
|
1949
|
+
}
|
|
1950
|
+
end
|
|
1951
|
+
|
|
1952
|
+
it { is_expected.to be(true) }
|
|
1953
|
+
end
|
|
1954
|
+
|
|
1955
|
+
context "with US details" do
|
|
1956
|
+
let(:arg) do
|
|
1957
|
+
{
|
|
1958
|
+
country_code: "US",
|
|
1959
|
+
bank_code: "026073150",
|
|
1960
|
+
account_number: "2715500356",
|
|
1961
|
+
}
|
|
1962
|
+
end
|
|
1963
|
+
|
|
1964
|
+
context "without a modulus checker defined" do
|
|
1965
|
+
it { is_expected.to be(true) }
|
|
1966
|
+
end
|
|
1967
|
+
|
|
1968
|
+
context "with a modulus checker defined" do
|
|
1969
|
+
before do
|
|
1970
|
+
Ibandit.modulus_checker = double(
|
|
1971
|
+
valid_bank_code?: valid_bank_code,
|
|
1972
|
+
)
|
|
1973
|
+
iban.valid_us_details?
|
|
1974
|
+
end
|
|
1975
|
+
|
|
1976
|
+
after { Ibandit.modulus_checker = nil }
|
|
1977
|
+
|
|
1978
|
+
let(:valid_bank_code) { true }
|
|
1979
|
+
|
|
1980
|
+
it "calls valid_bank_code? with an IBAN object" do
|
|
1981
|
+
expect(Ibandit.modulus_checker).
|
|
1982
|
+
to receive(:valid_bank_code?).
|
|
1983
|
+
with(instance_of(described_class))
|
|
1984
|
+
|
|
1985
|
+
iban.valid_us_details?
|
|
1986
|
+
end
|
|
1987
|
+
|
|
1988
|
+
it { is_expected.to be(true) }
|
|
1989
|
+
|
|
1990
|
+
context "with a bank code that does not exist" do
|
|
1991
|
+
let(:valid_bank_code) { false }
|
|
1992
|
+
|
|
1993
|
+
it { is_expected.to be(false) }
|
|
1994
|
+
|
|
1995
|
+
it "sets the errors on the IBAN" do
|
|
1996
|
+
expect(iban.errors).to include(bank_code: "bank code does not exist")
|
|
1997
|
+
end
|
|
1998
|
+
end
|
|
1999
|
+
end
|
|
2000
|
+
|
|
2001
|
+
context "with a bank code that fails the checksum test" do
|
|
2002
|
+
let(:arg) do
|
|
2003
|
+
{
|
|
2004
|
+
country_code: "US",
|
|
2005
|
+
bank_code: "123456789",
|
|
2006
|
+
account_number: "12345678",
|
|
2007
|
+
}
|
|
2008
|
+
end
|
|
2009
|
+
|
|
2010
|
+
it { is_expected.to be(false) }
|
|
2011
|
+
end
|
|
2012
|
+
end
|
|
2013
|
+
end
|
|
2014
|
+
|
|
1939
2015
|
describe "Pseudo IBAN #valid?" do
|
|
1940
2016
|
let(:country_code) { "CA" }
|
|
1941
2017
|
let(:arg) do
|
|
@@ -1988,7 +2064,7 @@ describe Ibandit::IBAN do
|
|
|
1988
2064
|
context "US" do
|
|
1989
2065
|
let(:country_code) { "US" }
|
|
1990
2066
|
|
|
1991
|
-
specify { expect(iban).to receive(:
|
|
2067
|
+
specify { expect(iban).to receive(:valid_us_details?).at_least(1) }
|
|
1992
2068
|
end
|
|
1993
2069
|
end
|
|
1994
2070
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ibandit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.37.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GoCardless
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: i18n
|
|
@@ -55,6 +55,7 @@ files:
|
|
|
55
55
|
- config/locales/nb.yml
|
|
56
56
|
- config/locales/nl.yml
|
|
57
57
|
- config/locales/pt.yml
|
|
58
|
+
- config/locales/sk.yml
|
|
58
59
|
- config/locales/sl.yml
|
|
59
60
|
- config/locales/sv.yml
|
|
60
61
|
- data/german_iban_rules.yml
|
|
@@ -114,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
114
115
|
- !ruby/object:Gem::Version
|
|
115
116
|
version: '0'
|
|
116
117
|
requirements: []
|
|
117
|
-
rubygems_version:
|
|
118
|
+
rubygems_version: 4.0.16
|
|
118
119
|
specification_version: 4
|
|
119
120
|
summary: Convert national banking details into IBANs, and vice-versa.
|
|
120
121
|
test_files: []
|