ibandit 1.6.0 → 1.8.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.
data/data/structures.yml CHANGED
@@ -983,9 +983,12 @@ EG:
983
983
  AU:
984
984
  :bank_code_length: 0
985
985
  :branch_code_length: 6
986
- :account_number_length: 10
986
+ :account_number_length: !ruby/range
987
+ begin: 5
988
+ end: 10
989
+ excl: false
987
990
  :branch_code_format: "\\d{6}"
988
- :account_number_format: "[A-Z0-9]{10}"
991
+ :account_number_format: "[A-Z0-9]{5,10}"
989
992
  :pseudo_iban_bank_code_length: 0
990
993
  :pseudo_iban_branch_code_length: 6
991
994
  :pseudo_iban_account_number_length: 10
data/ibandit.gemspec CHANGED
@@ -3,13 +3,13 @@
3
3
  require File.expand_path("lib/ibandit/version", __dir__)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
- gem.add_development_dependency "gc_ruboconfig", "~> 2.25.0"
6
+ gem.add_development_dependency "gc_ruboconfig", "~> 2.30.0"
7
7
  gem.add_development_dependency "nokogiri", "~> 1.6"
8
8
  gem.add_development_dependency "pry", "~> 0.13"
9
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
- gem.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
12
+ gem.add_development_dependency "rspec_junit_formatter", "~> 0.5.0"
13
13
  gem.add_development_dependency "sax-machine", "~> 1.3"
14
14
 
15
15
  gem.add_runtime_dependency "i18n"
@@ -270,13 +270,15 @@ module Ibandit
270
270
  when "13"
271
271
  if unpadded_account_number.size.between?(6, 7)
272
272
  unpadded_account_number + "00"
273
- else @account_number
273
+ else
274
+ @account_number
274
275
  end
275
276
  when "76"
276
277
  case unpadded_account_number.size
277
278
  when 7..8
278
279
  if Check76.new(@account_number).valid? then @account_number
279
- else unpadded_account_number + "00"
280
+ else
281
+ unpadded_account_number + "00"
280
282
  end
281
283
  when 5..6 then unpadded_account_number + "00"
282
284
  else @account_number
@@ -42,7 +42,8 @@ module Ibandit
42
42
  %i[account_number]
43
43
  when "GB", "IE", "MT"
44
44
  if Ibandit.bic_finder.nil? then %i[bank_code branch_code account_number]
45
- else %i[branch_code account_number]
45
+ else
46
+ %i[branch_code account_number]
46
47
  end
47
48
  when "AU"
48
49
  %i[branch_code account_number]
@@ -68,14 +69,13 @@ module Ibandit
68
69
 
69
70
  def self.clean_au_details(local_details)
70
71
  # Account number may be up to 10 digits long.
71
- # Add leading zeros to account number if < 10 digits.
72
72
  #
73
73
  # Minimum account_number length is 5
74
74
  return {} unless local_details[:account_number].length >= 5
75
75
 
76
76
  {
77
77
  branch_code: local_details[:branch_code].delete("-"),
78
- account_number: local_details[:account_number].rjust(10, "0"),
78
+ account_number: local_details[:account_number],
79
79
  }
80
80
  end
81
81
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ibandit
4
- VERSION = "1.6.0"
4
+ VERSION = "1.8.0"
5
5
  end
data/lib/ibandit.rb CHANGED
@@ -30,8 +30,9 @@ module Ibandit
30
30
  end
31
31
 
32
32
  def structures
33
- @structures ||= YAML.load_file(
34
- File.expand_path("../data/structures.yml", __dir__),
33
+ @structures ||= YAML.safe_load(
34
+ Pathname.new(__dir__).join("../data/structures.yml").read,
35
+ permitted_classes: [Range, Symbol],
35
36
  )
36
37
  end
37
38
 
@@ -19,7 +19,7 @@ describe Ibandit::GermanDetailsConverter do
19
19
 
20
20
  convertor.fetch("valid", []).each do |tuple|
21
21
  context "bank code: #{tuple['bank_code']} account number " \
22
- "#{tuple['account_number']}" do
22
+ "#{tuple['account_number']}" do
23
23
  let(:bank_code) do
24
24
  tuple["bank_code"]
25
25
  end
@@ -44,7 +44,7 @@ describe Ibandit::GermanDetailsConverter do
44
44
 
45
45
  convertor.fetch("invalid", []).each do |tuple|
46
46
  context "bank code: #{tuple['bank_code']} account number " \
47
- "#{tuple['account_number']}" do
47
+ "#{tuple['account_number']}" do
48
48
  let(:bank_code) { tuple["bank_code"] || "00000000" }
49
49
  let(:account_number) { tuple["account_number"] }
50
50
 
@@ -201,13 +201,13 @@ describe Ibandit::IBAN do
201
201
  its(:country_code) { is_expected.to eq("AU") }
202
202
  its(:bank_code) { is_expected.to be_nil }
203
203
  its(:branch_code) { is_expected.to eq("123456") }
204
- its(:account_number) { is_expected.to eq("0123456789") }
204
+ its(:account_number) { is_expected.to eq("123456789") }
205
205
  its(:swift_bank_code) { is_expected.to be_nil }
206
206
  its(:swift_branch_code) { is_expected.to eq("123456") }
207
- its(:swift_account_number) { is_expected.to eq("0123456789") }
207
+ its(:swift_account_number) { is_expected.to eq("123456789") }
208
208
  its(:swift_national_id) { is_expected.to eq("123456") }
209
209
  its(:iban) { is_expected.to be_nil }
210
- its(:pseudo_iban) { is_expected.to eq("AUZZ1234560123456789") }
210
+ its(:pseudo_iban) { is_expected.to eq("AUZZ123456_123456789") }
211
211
  its(:valid?) { is_expected.to eq(true) }
212
212
  its(:to_s) { is_expected.to eq("") }
213
213
  end
@@ -218,13 +218,13 @@ describe Ibandit::IBAN do
218
218
  its(:country_code) { is_expected.to eq("AU") }
219
219
  its(:bank_code) { is_expected.to be_nil }
220
220
  its(:branch_code) { is_expected.to eq("123456") }
221
- its(:account_number) { is_expected.to eq("0000012345") }
221
+ its(:account_number) { is_expected.to eq("12345") }
222
222
  its(:swift_bank_code) { is_expected.to be_nil }
223
223
  its(:swift_branch_code) { is_expected.to eq("123456") }
224
- its(:swift_account_number) { is_expected.to eq("0000012345") }
224
+ its(:swift_account_number) { is_expected.to eq("12345") }
225
225
  its(:swift_national_id) { is_expected.to eq("123456") }
226
226
  its(:iban) { is_expected.to be_nil }
227
- its(:pseudo_iban) { is_expected.to eq("AUZZ1234560000012345") }
227
+ its(:pseudo_iban) { is_expected.to eq("AUZZ123456_____12345") }
228
228
  its(:valid?) { is_expected.to eq(true) }
229
229
  its(:to_s) { is_expected.to eq("") }
230
230
  end
@@ -235,13 +235,13 @@ describe Ibandit::IBAN do
235
235
  its(:country_code) { is_expected.to eq("AU") }
236
236
  its(:bank_code) { is_expected.to be_nil }
237
237
  its(:branch_code) { is_expected.to eq("123456") }
238
- its(:account_number) { is_expected.to eq("0000123456") }
238
+ its(:account_number) { is_expected.to eq("123456") }
239
239
  its(:swift_bank_code) { is_expected.to be_nil }
240
240
  its(:swift_branch_code) { is_expected.to eq("123456") }
241
- its(:swift_account_number) { is_expected.to eq("0000123456") }
241
+ its(:swift_account_number) { is_expected.to eq("123456") }
242
242
  its(:swift_national_id) { is_expected.to eq("123456") }
243
243
  its(:iban) { is_expected.to be_nil }
244
- its(:pseudo_iban) { is_expected.to eq("AUZZ1234560000123456") }
244
+ its(:pseudo_iban) { is_expected.to eq("AUZZ123456____123456") }
245
245
  its(:valid?) { is_expected.to eq(true) }
246
246
  its(:to_s) { is_expected.to eq("") }
247
247
  end
@@ -269,13 +269,13 @@ describe Ibandit::IBAN do
269
269
  its(:country_code) { is_expected.to eq("AU") }
270
270
  its(:bank_code) { is_expected.to be_nil }
271
271
  its(:branch_code) { is_expected.to eq("123456") }
272
- its(:account_number) { is_expected.to eq("0XX1234567") }
272
+ its(:account_number) { is_expected.to eq("XX1234567") }
273
273
  its(:swift_bank_code) { is_expected.to be_nil }
274
274
  its(:swift_branch_code) { is_expected.to eq("123456") }
275
- its(:swift_account_number) { is_expected.to eq("0XX1234567") }
275
+ its(:swift_account_number) { is_expected.to eq("XX1234567") }
276
276
  its(:swift_national_id) { is_expected.to eq("123456") }
277
277
  its(:iban) { is_expected.to be_nil }
278
- its(:pseudo_iban) { is_expected.to eq("AUZZ1234560XX1234567") }
278
+ its(:pseudo_iban) { is_expected.to eq("AUZZ123456_XX1234567") }
279
279
  its(:valid?) { is_expected.to eq(true) }
280
280
  its(:to_s) { is_expected.to eq("") }
281
281
  end
@@ -303,13 +303,13 @@ describe Ibandit::IBAN do
303
303
  its(:country_code) { is_expected.to eq("AU") }
304
304
  its(:bank_code) { is_expected.to be_nil }
305
305
  its(:branch_code) { is_expected.to eq("123456") }
306
- its(:account_number) { is_expected.to eq("0000000000") }
306
+ its(:account_number) { is_expected.to eq("000000") }
307
307
  its(:swift_bank_code) { is_expected.to be_nil }
308
308
  its(:swift_branch_code) { is_expected.to eq("123456") }
309
- its(:swift_account_number) { is_expected.to eq("0000000000") }
309
+ its(:swift_account_number) { is_expected.to eq("000000") }
310
310
  its(:swift_national_id) { is_expected.to eq("123456") }
311
311
  its(:iban) { is_expected.to be_nil }
312
- its(:pseudo_iban) { is_expected.to eq("AUZZ1234560000000000") }
312
+ its(:pseudo_iban) { is_expected.to eq("AUZZ123456____000000") }
313
313
  its(:valid?) { is_expected.to eq(false) }
314
314
  its(:to_s) { is_expected.to eq("") }
315
315
  end
@@ -321,13 +321,13 @@ describe Ibandit::IBAN do
321
321
  its(:country_code) { is_expected.to eq("AU") }
322
322
  its(:bank_code) { is_expected.to be_nil }
323
323
  its(:branch_code) { is_expected.to eq("123456") }
324
- its(:account_number) { is_expected.to eq("0123456789") }
324
+ its(:account_number) { is_expected.to eq("123456789") }
325
325
  its(:swift_bank_code) { is_expected.to be_nil }
326
326
  its(:swift_branch_code) { is_expected.to eq("123456") }
327
- its(:swift_account_number) { is_expected.to eq("0123456789") }
327
+ its(:swift_account_number) { is_expected.to eq("123456789") }
328
328
  its(:swift_national_id) { is_expected.to eq("123456") }
329
329
  its(:iban) { is_expected.to be_nil }
330
- its(:pseudo_iban) { is_expected.to eq("AUZZ1234560123456789") }
330
+ its(:pseudo_iban) { is_expected.to eq("AUZZ123456_123456789") }
331
331
  its(:valid?) { is_expected.to eq(true) }
332
332
  its(:to_s) { is_expected.to eq("") }
333
333
 
@@ -358,7 +358,7 @@ describe Ibandit::IBAN do
358
358
  it "is invalid and has the correct errors" do
359
359
  expect(subject.valid?).to eq(false)
360
360
  expect(subject.errors).
361
- to eq(account_number: "is the wrong length (should be 10 characters)")
361
+ to eq(account_number: "is the wrong length (should be 5..10 characters)")
362
362
  end
363
363
  end
364
364
 
@@ -377,7 +377,7 @@ describe Ibandit::IBAN do
377
377
  it "is invalid and has the correct errors" do
378
378
  expect(subject.valid?).to eq(false)
379
379
  expect(subject.errors).to eq(
380
- account_number: "is the wrong length (should be 10 characters)",
380
+ account_number: "is the wrong length (should be 5..10 characters)",
381
381
  )
382
382
  end
383
383
  end
@@ -1061,7 +1061,7 @@ describe Ibandit::IBAN do
1061
1061
  iban.valid_length?
1062
1062
  expect(iban.errors).
1063
1063
  to include(length: "Length doesn't match SWIFT specification " \
1064
- "(expected 22 characters, received 20)")
1064
+ "(expected 22 characters, received 20)")
1065
1065
  end
1066
1066
  end
1067
1067
 
@@ -1313,7 +1313,7 @@ describe Ibandit::IBAN do
1313
1313
  iban.valid_branch_code_length?
1314
1314
  expect(iban.errors).
1315
1315
  to include(branch_code: "is the wrong length (should be 6 " \
1316
- "characters)")
1316
+ "characters)")
1317
1317
  end
1318
1318
  end
1319
1319
 
@@ -95,7 +95,7 @@ describe Ibandit::LocalDetailsCleaner do
95
95
  let(:branch_code) { "123-456" }
96
96
 
97
97
  its([:country_code]) { is_expected.to eq(country_code) }
98
- its([:account_number]) { is_expected.to eq("0123456789") }
98
+ its([:account_number]) { is_expected.to eq("123456789") }
99
99
  its([:branch_code]) { is_expected.to eq("123456") }
100
100
  end
101
101
 
@@ -103,7 +103,7 @@ describe Ibandit::LocalDetailsCleaner do
103
103
  let(:branch_code) { "123456" }
104
104
 
105
105
  its([:country_code]) { is_expected.to eq(country_code) }
106
- its([:account_number]) { is_expected.to eq("0123456789") }
106
+ its([:account_number]) { is_expected.to eq("123456789") }
107
107
  its([:branch_code]) { is_expected.to eq("123456") }
108
108
  end
109
109
  end
@@ -3,8 +3,8 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe "structures.yml" do
6
- structure_file = File.expand_path("../../data/structures.yml", __dir__)
7
- structures = YAML.load_file(structure_file)
6
+ structure_file = Pathname.new(__dir__).join("../../data/structures.yml").read
7
+ structures = YAML.safe_load(structure_file, permitted_classes: [Range, Symbol])
8
8
 
9
9
  structures.each do |country, rules|
10
10
  context country do
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.6.0
4
+ version: 1.8.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-06-21 00:00:00.000000000 Z
11
+ date: 2022-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gc_ruboconfig
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.25.0
19
+ version: 2.30.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.25.0
26
+ version: 2.30.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.4.1
103
+ version: 0.5.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.4.1
110
+ version: 0.5.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: sax-machine
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -226,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
226
  - !ruby/object:Gem::Version
227
227
  version: '0'
228
228
  requirements: []
229
- rubygems_version: 3.2.15
229
+ rubygems_version: 3.3.3
230
230
  signing_key:
231
231
  specification_version: 4
232
232
  summary: Convert national banking details into IBANs, and vice-versa.