ibandit 0.11.28 → 1.0.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 +5 -5
- data/.rubocop.yml +2 -5
- data/.rubocop_todo.yml +70 -15
- data/.travis.yml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile +1 -3
- data/README.md +6 -6
- data/data/structures.yml +4 -4
- data/ibandit.gemspec +2 -2
- data/lib/ibandit.rb +6 -3
- data/lib/ibandit/check_digit.rb +2 -0
- data/lib/ibandit/constants.rb +3 -1
- data/lib/ibandit/errors.rb +2 -0
- data/lib/ibandit/german_details_converter.rb +4 -1
- data/lib/ibandit/iban.rb +8 -4
- data/lib/ibandit/iban_assembler.rb +2 -0
- data/lib/ibandit/iban_splitter.rb +8 -7
- data/lib/ibandit/local_details_cleaner.rb +38 -35
- data/lib/ibandit/pseudo_iban_assembler.rb +5 -1
- data/lib/ibandit/pseudo_iban_splitter.rb +7 -1
- data/lib/ibandit/sweden/bank_lookup.rb +2 -0
- data/lib/ibandit/sweden/local_details_converter.rb +6 -2
- data/lib/ibandit/sweden/validator.rb +2 -0
- data/lib/ibandit/version.rb +3 -1
- data/spec/ibandit/constants_spec.rb +2 -0
- data/spec/ibandit/german_details_converter_spec.rb +9 -3
- data/spec/ibandit/iban_assembler_spec.rb +92 -3
- data/spec/ibandit/iban_spec.rb +197 -17
- data/spec/ibandit/iban_splitter_spec.rb +6 -0
- data/spec/ibandit/local_details_cleaner_spec.rb +135 -5
- data/spec/ibandit/pseudo_iban_assembler_spec.rb +2 -0
- data/spec/ibandit/pseudo_iban_splitter_spec.rb +2 -0
- data/spec/ibandit/structure_spec.rb +5 -3
- data/spec/ibandit/sweden/local_details_converter_spec.rb +3 -0
- data/spec/ibandit/sweden/validator_spec.rb +35 -0
- data/spec/spec_helper.rb +2 -0
- metadata +5 -6
data/spec/ibandit/iban_spec.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe Ibandit::IBAN do
|
4
6
|
subject(:iban) { described_class.new(arg) }
|
7
|
+
|
5
8
|
let(:arg) { iban_code }
|
6
9
|
let(:iban_code) { "GB82WEST12345698765432" }
|
7
10
|
|
@@ -9,16 +12,19 @@ describe Ibandit::IBAN do
|
|
9
12
|
|
10
13
|
context "with a poorly formatted IBAN" do
|
11
14
|
let(:iban_code) { " gb82 WeSt 1234 5698 7654 32\n" }
|
15
|
+
|
12
16
|
its(:iban) { is_expected.to eq("GB82WEST12345698765432") }
|
13
17
|
end
|
14
18
|
|
15
19
|
context "with nil" do
|
16
20
|
let(:arg) { nil }
|
21
|
+
|
17
22
|
specify { expect { iban }.to raise_error(TypeError) }
|
18
23
|
end
|
19
24
|
|
20
25
|
context "with an invalid pseudo IBAN" do
|
21
26
|
let(:arg) { "dezzzz" }
|
27
|
+
|
22
28
|
its(:iban) { is_expected.to eq("DEZZZZ") }
|
23
29
|
end
|
24
30
|
|
@@ -93,6 +99,7 @@ describe Ibandit::IBAN do
|
|
93
99
|
|
94
100
|
context "when the IBAN was created from a Slovenian IBAN" do
|
95
101
|
let(:iban_code) { "SI56 1910 0000 0123 438" }
|
102
|
+
|
96
103
|
its(:country_code) { is_expected.to eq("SI") }
|
97
104
|
its(:bank_code) { is_expected.to eq("19100") }
|
98
105
|
its(:branch_code) { is_expected.to be_nil }
|
@@ -331,6 +338,7 @@ describe Ibandit::IBAN do
|
|
331
338
|
|
332
339
|
its(:iban) { is_expected.to be_nil }
|
333
340
|
its(:pseudo_iban) { is_expected.to eq(arg) }
|
341
|
+
|
334
342
|
it "is invalid and has the correct errors" do
|
335
343
|
expect(subject.valid?).to eq(false)
|
336
344
|
expect(subject.errors).
|
@@ -349,6 +357,7 @@ describe Ibandit::IBAN do
|
|
349
357
|
|
350
358
|
its(:iban) { is_expected.to be_nil }
|
351
359
|
its(:pseudo_iban) { is_expected.to eq("AUZZ123456______1234") }
|
360
|
+
|
352
361
|
it "is invalid and has the correct errors" do
|
353
362
|
expect(subject.valid?).to eq(false)
|
354
363
|
expect(subject.errors).to eq(
|
@@ -368,6 +377,7 @@ describe Ibandit::IBAN do
|
|
368
377
|
|
369
378
|
its(:iban) { is_expected.to be_nil }
|
370
379
|
its(:pseudo_iban) { is_expected.to eq("AUZZ1234XX123456789:") }
|
380
|
+
|
371
381
|
it "is invalid and has the correct errors" do
|
372
382
|
expect(subject.valid?).to eq(false)
|
373
383
|
expect(subject.errors).to eq(account_number: "is invalid",
|
@@ -498,6 +508,7 @@ describe Ibandit::IBAN do
|
|
498
508
|
account_number: account_number,
|
499
509
|
}
|
500
510
|
end
|
511
|
+
|
501
512
|
context "with a 3 digit account number suffix" do
|
502
513
|
let(:account_number) { "3333333-944" }
|
503
514
|
|
@@ -515,6 +526,7 @@ describe Ibandit::IBAN do
|
|
515
526
|
its(:valid?) { is_expected.to eq(true) }
|
516
527
|
its(:to_s) { is_expected.to eq("") }
|
517
528
|
end
|
529
|
+
|
518
530
|
context "with a 2 digit account number suffix" do
|
519
531
|
let(:account_number) { "3333333-44" }
|
520
532
|
|
@@ -532,6 +544,7 @@ describe Ibandit::IBAN do
|
|
532
544
|
its(:valid?) { is_expected.to eq(true) }
|
533
545
|
its(:to_s) { is_expected.to eq("") }
|
534
546
|
end
|
547
|
+
|
535
548
|
context "with bank and branch code embedded in account_number field" do
|
536
549
|
let(:arg) do
|
537
550
|
{
|
@@ -554,6 +567,7 @@ describe Ibandit::IBAN do
|
|
554
567
|
its(:valid?) { is_expected.to eq(true) }
|
555
568
|
its(:to_s) { is_expected.to eq("") }
|
556
569
|
end
|
570
|
+
|
557
571
|
context "with a bank code embedded in account_number field" do
|
558
572
|
let(:arg) do
|
559
573
|
{
|
@@ -595,6 +609,7 @@ describe Ibandit::IBAN do
|
|
595
609
|
|
596
610
|
its(:iban) { is_expected.to be_nil }
|
597
611
|
its(:pseudo_iban) { is_expected.to eq(arg) }
|
612
|
+
|
598
613
|
it "is invalid and has the correct errors" do
|
599
614
|
expect(subject.valid?).to eq(false)
|
600
615
|
expect(subject.errors).
|
@@ -612,7 +627,7 @@ describe Ibandit::IBAN do
|
|
612
627
|
end
|
613
628
|
|
614
629
|
context "and a 9 digit bank code" do
|
615
|
-
let(:bank_code) { "
|
630
|
+
let(:bank_code) { "026073150" }
|
616
631
|
let(:account_number) { "01234567890123456" }
|
617
632
|
|
618
633
|
its(:country_code) { is_expected.to eq("US") }
|
@@ -622,8 +637,9 @@ describe Ibandit::IBAN do
|
|
622
637
|
its(:swift_branch_code) { is_expected.to eq(nil) }
|
623
638
|
its(:swift_account_number) { is_expected.to eq(account_number) }
|
624
639
|
its(:swift_national_id) { is_expected.to eq(bank_code) }
|
640
|
+
|
625
641
|
its(:pseudo_iban) do
|
626
|
-
is_expected.to eq("
|
642
|
+
is_expected.to eq("USZZ02607315001234567890123456")
|
627
643
|
end
|
628
644
|
|
629
645
|
its(:iban) { is_expected.to be_nil }
|
@@ -642,6 +658,7 @@ describe Ibandit::IBAN do
|
|
642
658
|
its(:swift_branch_code) { is_expected.to eq(nil) }
|
643
659
|
its(:swift_account_number) { is_expected.to eq(account_number) }
|
644
660
|
its(:swift_national_id) { is_expected.to eq(bank_code) }
|
661
|
+
|
645
662
|
its(:pseudo_iban) do
|
646
663
|
is_expected.to eq("USZZ__012345601234567890123456")
|
647
664
|
end
|
@@ -665,7 +682,7 @@ describe Ibandit::IBAN do
|
|
665
682
|
|
666
683
|
context "and a 7 digit account number" do
|
667
684
|
let(:account_number) { "0123456" }
|
668
|
-
let(:bank_code) { "
|
685
|
+
let(:bank_code) { "026073150" }
|
669
686
|
|
670
687
|
its(:country_code) { is_expected.to eq("US") }
|
671
688
|
its(:bank_code) { is_expected.to eq(bank_code) }
|
@@ -674,8 +691,9 @@ describe Ibandit::IBAN do
|
|
674
691
|
its(:swift_branch_code) { is_expected.to eq(nil) }
|
675
692
|
its(:swift_account_number) { is_expected.to eq("__________0123456") }
|
676
693
|
its(:swift_national_id) { is_expected.to eq(bank_code) }
|
694
|
+
|
677
695
|
its(:pseudo_iban) do
|
678
|
-
is_expected.to eq("
|
696
|
+
is_expected.to eq("USZZ026073150__________0123456")
|
679
697
|
end
|
680
698
|
|
681
699
|
its(:iban) { is_expected.to be_nil }
|
@@ -697,7 +715,7 @@ describe Ibandit::IBAN do
|
|
697
715
|
|
698
716
|
context "and a 17 digit account number" do
|
699
717
|
let(:account_number) { "01234567890123456" }
|
700
|
-
let(:bank_code) { "
|
718
|
+
let(:bank_code) { "026073150" }
|
701
719
|
|
702
720
|
its(:country_code) { is_expected.to eq("US") }
|
703
721
|
its(:bank_code) { is_expected.to eq(bank_code) }
|
@@ -706,8 +724,9 @@ describe Ibandit::IBAN do
|
|
706
724
|
its(:swift_branch_code) { is_expected.to eq(nil) }
|
707
725
|
its(:swift_account_number) { is_expected.to eq(account_number) }
|
708
726
|
its(:swift_national_id) { is_expected.to eq(bank_code) }
|
727
|
+
|
709
728
|
its(:pseudo_iban) do
|
710
|
-
is_expected.to eq("
|
729
|
+
is_expected.to eq("USZZ02607315001234567890123456")
|
711
730
|
end
|
712
731
|
|
713
732
|
its(:iban) { is_expected.to be_nil }
|
@@ -717,18 +736,19 @@ describe Ibandit::IBAN do
|
|
717
736
|
end
|
718
737
|
|
719
738
|
context "when the IBAN was created from a US pseudo-IBAN" do
|
720
|
-
let(:arg) { "
|
739
|
+
let(:arg) { "USZZ02607315001234567890123456" }
|
721
740
|
|
722
741
|
its(:country_code) { is_expected.to eq("US") }
|
723
|
-
its(:bank_code) { is_expected.to eq("
|
742
|
+
its(:bank_code) { is_expected.to eq("026073150") }
|
724
743
|
its(:branch_code) { is_expected.to be_nil }
|
725
744
|
its(:account_number) { is_expected.to eq("01234567890123456") }
|
726
|
-
its(:swift_bank_code) { is_expected.to eq("
|
745
|
+
its(:swift_bank_code) { is_expected.to eq("026073150") }
|
727
746
|
its(:swift_branch_code) { is_expected.to eq(nil) }
|
728
747
|
its(:swift_account_number) { is_expected.to eq("01234567890123456") }
|
729
|
-
its(:swift_national_id) { is_expected.to eq("
|
748
|
+
its(:swift_national_id) { is_expected.to eq("026073150") }
|
749
|
+
|
730
750
|
its(:pseudo_iban) do
|
731
|
-
is_expected.to eq("
|
751
|
+
is_expected.to eq("USZZ02607315001234567890123456")
|
732
752
|
end
|
733
753
|
|
734
754
|
its(:iban) { is_expected.to be_nil }
|
@@ -747,7 +767,7 @@ describe Ibandit::IBAN do
|
|
747
767
|
end
|
748
768
|
|
749
769
|
context "when the input pseudo-IBAN has an invalid US account_number" do
|
750
|
-
let(:arg) { "
|
770
|
+
let(:arg) { "USZZ026073150ABC01234567890123" }
|
751
771
|
|
752
772
|
it "is invalid and has an error populated" do
|
753
773
|
expect(subject.valid?).to eq(false)
|
@@ -768,6 +788,7 @@ describe Ibandit::IBAN do
|
|
768
788
|
|
769
789
|
context "with the IBAN is nil" do
|
770
790
|
let(:arg) { { country_code: "GB" } }
|
791
|
+
|
771
792
|
its(:to_s) { is_expected.to_not be_nil }
|
772
793
|
specify { expect(iban.to_s(:formatted)).to be_empty }
|
773
794
|
end
|
@@ -780,11 +801,13 @@ describe Ibandit::IBAN do
|
|
780
801
|
account_number: "0105723",
|
781
802
|
}
|
782
803
|
end
|
804
|
+
|
783
805
|
specify { expect(iban.to_s).to eq("SE5412000000012810105723") }
|
784
806
|
end
|
785
807
|
|
786
808
|
context "with a Swedish pseudo-IBAN" do
|
787
809
|
let(:arg) { "SEZZX1281XXX0105723" }
|
810
|
+
|
788
811
|
specify { expect(iban.to_s).to eq("SE5412000000012810105723") }
|
789
812
|
end
|
790
813
|
end
|
@@ -802,7 +825,9 @@ describe Ibandit::IBAN do
|
|
802
825
|
|
803
826
|
context "with an unknown country code" do
|
804
827
|
before { iban.valid_country_code? }
|
828
|
+
|
805
829
|
let(:iban_code) { "AA123456789123456" }
|
830
|
+
|
806
831
|
it { is_expected.to eq(false) }
|
807
832
|
|
808
833
|
context "locale en", locale: :en do
|
@@ -849,16 +874,19 @@ describe Ibandit::IBAN do
|
|
849
874
|
|
850
875
|
context "with valid details" do
|
851
876
|
let(:iban_code) { "GB82WEST12345698765432" }
|
877
|
+
|
852
878
|
it { is_expected.to eq(true) }
|
853
879
|
|
854
880
|
context "where the check digit is zero-padded" do
|
855
881
|
let(:iban_code) { "GB06WEST12345698765442" }
|
882
|
+
|
856
883
|
it { is_expected.to eq(true) }
|
857
884
|
end
|
858
885
|
end
|
859
886
|
|
860
887
|
context "with invalid details" do
|
861
888
|
let(:iban_code) { "GB12WEST12345698765432" }
|
889
|
+
|
862
890
|
it { is_expected.to eq(false) }
|
863
891
|
|
864
892
|
context "locale en", locale: :en do
|
@@ -972,6 +1000,7 @@ describe Ibandit::IBAN do
|
|
972
1000
|
|
973
1001
|
context "with invalid characters" do
|
974
1002
|
let(:iban_code) { "AA82-EST123456987654" }
|
1003
|
+
|
975
1004
|
it { is_expected.to be_nil }
|
976
1005
|
|
977
1006
|
it "does not set errors on the IBAN" do
|
@@ -982,6 +1011,7 @@ describe Ibandit::IBAN do
|
|
982
1011
|
|
983
1012
|
context "with an empty IBAN" do
|
984
1013
|
let(:iban_code) { "" }
|
1014
|
+
|
985
1015
|
it { is_expected.to be_nil }
|
986
1016
|
|
987
1017
|
it "does not set errors on the IBAN" do
|
@@ -1000,6 +1030,7 @@ describe Ibandit::IBAN do
|
|
1000
1030
|
|
1001
1031
|
context "with invalid details" do
|
1002
1032
|
let(:iban_code) { "GB82WEST123456987654" }
|
1033
|
+
|
1003
1034
|
it { is_expected.to eq(false) }
|
1004
1035
|
|
1005
1036
|
context "locale en", locale: :en do
|
@@ -1112,6 +1143,7 @@ describe Ibandit::IBAN do
|
|
1112
1143
|
|
1113
1144
|
context "with an invalid country_code" do
|
1114
1145
|
let(:iban_code) { "AA82WEST123456987654" }
|
1146
|
+
|
1115
1147
|
it { is_expected.to be_nil }
|
1116
1148
|
|
1117
1149
|
it "does not set errors on the IBAN" do
|
@@ -1130,6 +1162,7 @@ describe Ibandit::IBAN do
|
|
1130
1162
|
|
1131
1163
|
context "with invalid details" do
|
1132
1164
|
before { allow(iban).to receive(:swift_bank_code).and_return("WES") }
|
1165
|
+
|
1133
1166
|
it { is_expected.to eq(false) }
|
1134
1167
|
|
1135
1168
|
context "locale en", locale: :en do
|
@@ -1230,6 +1263,7 @@ describe Ibandit::IBAN do
|
|
1230
1263
|
|
1231
1264
|
context "with an invalid country_code" do
|
1232
1265
|
before { allow(iban).to receive(:country_code).and_return("AA") }
|
1266
|
+
|
1233
1267
|
it { is_expected.to be_nil }
|
1234
1268
|
|
1235
1269
|
it "does not set errors on the IBAN" do
|
@@ -1248,6 +1282,7 @@ describe Ibandit::IBAN do
|
|
1248
1282
|
|
1249
1283
|
context "with invalid details" do
|
1250
1284
|
before { allow(iban).to receive(:swift_branch_code).and_return("12345") }
|
1285
|
+
|
1251
1286
|
it { is_expected.to eq(false) }
|
1252
1287
|
|
1253
1288
|
context "locale en", locale: :en do
|
@@ -1348,6 +1383,7 @@ describe Ibandit::IBAN do
|
|
1348
1383
|
|
1349
1384
|
context "without a branch code" do
|
1350
1385
|
before { allow(iban).to receive(:swift_branch_code).and_return(nil) }
|
1386
|
+
|
1351
1387
|
it { is_expected.to eq(false) }
|
1352
1388
|
|
1353
1389
|
context "locale en", locale: :en do
|
@@ -1430,6 +1466,7 @@ describe Ibandit::IBAN do
|
|
1430
1466
|
|
1431
1467
|
context "with an invalid country_code" do
|
1432
1468
|
before { allow(iban).to receive(:country_code).and_return("AA") }
|
1469
|
+
|
1433
1470
|
it { is_expected.to be_nil }
|
1434
1471
|
|
1435
1472
|
it "does not set errors on the IBAN" do
|
@@ -1450,6 +1487,7 @@ describe Ibandit::IBAN do
|
|
1450
1487
|
before do
|
1451
1488
|
allow(iban).to receive(:swift_account_number).and_return("1234567")
|
1452
1489
|
end
|
1490
|
+
|
1453
1491
|
it { is_expected.to eq(false) }
|
1454
1492
|
|
1455
1493
|
context "locale en", locale: :en do
|
@@ -1552,6 +1590,7 @@ describe Ibandit::IBAN do
|
|
1552
1590
|
|
1553
1591
|
context "with an invalid country_code" do
|
1554
1592
|
before { allow(iban).to receive(:country_code).and_return("AA") }
|
1593
|
+
|
1555
1594
|
it { is_expected.to be_nil }
|
1556
1595
|
|
1557
1596
|
it "does not set errors on the IBAN" do
|
@@ -1566,11 +1605,13 @@ describe Ibandit::IBAN do
|
|
1566
1605
|
|
1567
1606
|
context "with valid details" do
|
1568
1607
|
let(:iban_code) { "GB82WEST12345698765432" }
|
1608
|
+
|
1569
1609
|
it { is_expected.to eq(true) }
|
1570
1610
|
end
|
1571
1611
|
|
1572
1612
|
context "with invalid details" do
|
1573
1613
|
let(:iban_code) { "GB-123ABCD" }
|
1614
|
+
|
1574
1615
|
it { is_expected.to eq(false) }
|
1575
1616
|
|
1576
1617
|
context "locale en", locale: :en do
|
@@ -1670,11 +1711,13 @@ describe Ibandit::IBAN do
|
|
1670
1711
|
|
1671
1712
|
context "with valid details" do
|
1672
1713
|
let(:iban_code) { "GB82WEST12345698765432" }
|
1714
|
+
|
1673
1715
|
it { is_expected.to eq(true) }
|
1674
1716
|
end
|
1675
1717
|
|
1676
1718
|
context "with invalid details" do
|
1677
1719
|
let(:iban_code) { "GB82WEST12AAAAAA7654" }
|
1720
|
+
|
1678
1721
|
it { is_expected.to eq(false) }
|
1679
1722
|
|
1680
1723
|
context "locale en", locale: :en do
|
@@ -1768,6 +1811,7 @@ describe Ibandit::IBAN do
|
|
1768
1811
|
|
1769
1812
|
context "with an invalid country_code" do
|
1770
1813
|
let(:iban_code) { "AA82WEST12AAAAAA7654" }
|
1814
|
+
|
1771
1815
|
it { is_expected.to be_nil }
|
1772
1816
|
|
1773
1817
|
it "does not set errors on the IBAN" do
|
@@ -2129,7 +2173,9 @@ describe Ibandit::IBAN do
|
|
2129
2173
|
valid_account_number?: valid_account_number,
|
2130
2174
|
)
|
2131
2175
|
end
|
2176
|
+
|
2132
2177
|
after { Ibandit.modulus_checker = nil }
|
2178
|
+
|
2133
2179
|
before { iban.valid_local_modulus_check? }
|
2134
2180
|
|
2135
2181
|
context "with an invalid bank code" do
|
@@ -2141,7 +2187,7 @@ describe Ibandit::IBAN do
|
|
2141
2187
|
it "calls valid_bank_code? with an IBAN object" do
|
2142
2188
|
expect(Ibandit.modulus_checker).
|
2143
2189
|
to receive(:valid_bank_code?).
|
2144
|
-
with(instance_of(
|
2190
|
+
with(instance_of(described_class))
|
2145
2191
|
|
2146
2192
|
iban.valid_local_modulus_check?
|
2147
2193
|
end
|
@@ -2202,8 +2248,11 @@ describe Ibandit::IBAN do
|
|
2202
2248
|
context "with an invalid branch code" do
|
2203
2249
|
let(:iban_code) { "GB60BARC20000055779911" }
|
2204
2250
|
before { Ibandit.bic_finder = double(call: "BARCGB22XXX") }
|
2251
|
+
|
2205
2252
|
after { Ibandit.bic_finder = nil }
|
2253
|
+
|
2206
2254
|
before { iban.valid_local_modulus_check? }
|
2255
|
+
|
2207
2256
|
let(:valid_bank_code) { true }
|
2208
2257
|
let(:valid_branch_code) { false }
|
2209
2258
|
let(:valid_account_number) { true }
|
@@ -2211,7 +2260,7 @@ describe Ibandit::IBAN do
|
|
2211
2260
|
it "calls valid_branch_code? with an IBAN object" do
|
2212
2261
|
expect(Ibandit.modulus_checker).
|
2213
2262
|
to receive(:valid_branch_code?).
|
2214
|
-
with(instance_of(
|
2263
|
+
with(instance_of(described_class))
|
2215
2264
|
|
2216
2265
|
iban.valid_local_modulus_check?
|
2217
2266
|
end
|
@@ -2293,7 +2342,7 @@ describe Ibandit::IBAN do
|
|
2293
2342
|
it "calls valid_account_number? with an IBAN object" do
|
2294
2343
|
expect(Ibandit.modulus_checker).
|
2295
2344
|
to receive(:valid_account_number?).
|
2296
|
-
with(instance_of(
|
2345
|
+
with(instance_of(described_class))
|
2297
2346
|
|
2298
2347
|
iban.valid_local_modulus_check?
|
2299
2348
|
end
|
@@ -2624,6 +2673,7 @@ describe Ibandit::IBAN do
|
|
2624
2673
|
)
|
2625
2674
|
iban.valid_australian_details?
|
2626
2675
|
end
|
2676
|
+
|
2627
2677
|
after { Ibandit.modulus_checker = nil }
|
2628
2678
|
|
2629
2679
|
let(:valid_branch_code) { true }
|
@@ -2631,7 +2681,7 @@ describe Ibandit::IBAN do
|
|
2631
2681
|
it "calls valid_branch_code? with an IBAN object" do
|
2632
2682
|
expect(Ibandit.modulus_checker).
|
2633
2683
|
to receive(:valid_branch_code?).
|
2634
|
-
with(instance_of(
|
2684
|
+
with(instance_of(described_class))
|
2635
2685
|
|
2636
2686
|
iban.valid_australian_details?
|
2637
2687
|
end
|
@@ -2750,6 +2800,7 @@ describe Ibandit::IBAN do
|
|
2750
2800
|
)
|
2751
2801
|
iban.valid_nz_details?
|
2752
2802
|
end
|
2803
|
+
|
2753
2804
|
after { Ibandit.modulus_checker = nil }
|
2754
2805
|
|
2755
2806
|
let(:valid_branch_code) { true }
|
@@ -2757,7 +2808,7 @@ describe Ibandit::IBAN do
|
|
2757
2808
|
it "calls valid_branch_code? with an IBAN object" do
|
2758
2809
|
expect(Ibandit.modulus_checker).
|
2759
2810
|
to receive(:valid_branch_code?).
|
2760
|
-
with(instance_of(
|
2811
|
+
with(instance_of(described_class))
|
2761
2812
|
|
2762
2813
|
iban.valid_nz_details?
|
2763
2814
|
end
|
@@ -3005,586 +3056,703 @@ describe Ibandit::IBAN do
|
|
3005
3056
|
|
3006
3057
|
context "for a valid Albanian IBAN" do
|
3007
3058
|
let(:iban_code) { "AL47 2121 1009 0000 0002 3569 8741" }
|
3059
|
+
|
3008
3060
|
it { is_expected.to be_valid }
|
3009
3061
|
end
|
3010
3062
|
|
3011
3063
|
context "for a valid Andorran IBAN" do
|
3012
3064
|
let(:iban_code) { "AD12 0001 2030 2003 5910 0100" }
|
3065
|
+
|
3013
3066
|
it { is_expected.to be_valid }
|
3014
3067
|
end
|
3015
3068
|
|
3016
3069
|
context "for a valid Austrian IBAN" do
|
3017
3070
|
let(:iban_code) { "AT61 1904 3002 3457 3201" }
|
3071
|
+
|
3018
3072
|
it { is_expected.to be_valid }
|
3019
3073
|
end
|
3020
3074
|
|
3021
3075
|
context "for a valid Australian pseudo-IBAN" do
|
3022
3076
|
let(:iban_code) { "AUZZ123456123456789" }
|
3077
|
+
|
3023
3078
|
it { is_expected.to be_valid }
|
3024
3079
|
end
|
3025
3080
|
|
3026
3081
|
context "for an invalid Australian pseudo-IBAN" do
|
3027
3082
|
let(:iban_code) { "AU99123456123456789" }
|
3083
|
+
|
3028
3084
|
it { is_expected.to_not be_valid }
|
3029
3085
|
end
|
3030
3086
|
|
3031
3087
|
context "for a valid Azerbaijanian IBAN" do
|
3032
3088
|
let(:iban_code) { "AZ21 NABZ 0000 0000 1370 1000 1944" }
|
3089
|
+
|
3033
3090
|
it { is_expected.to be_valid }
|
3034
3091
|
end
|
3035
3092
|
|
3036
3093
|
context "for an invalid Azerbaijanian IBAN" do
|
3037
3094
|
let(:iban_code) { "AZ91 NABZ 0000 0000 1370 1000 1944" }
|
3095
|
+
|
3038
3096
|
it { is_expected.to_not be_valid }
|
3039
3097
|
end
|
3040
3098
|
|
3041
3099
|
context "for a valid Bahrainian IBAN" do
|
3042
3100
|
let(:iban_code) { "BH67 BMAG 0000 1299 1234 56" }
|
3101
|
+
|
3043
3102
|
it { is_expected.to be_valid }
|
3044
3103
|
end
|
3045
3104
|
|
3046
3105
|
context "for an invalid Bahrainian IBAN" do
|
3047
3106
|
let(:iban_code) { "BH97 BMAG 0000 1299 1234 56" }
|
3107
|
+
|
3048
3108
|
it { is_expected.to_not be_valid }
|
3049
3109
|
end
|
3050
3110
|
|
3051
3111
|
context "for a valid Belgian IBAN" do
|
3052
3112
|
let(:iban_code) { "BE62 5100 0754 7061" }
|
3113
|
+
|
3053
3114
|
it { is_expected.to be_valid }
|
3054
3115
|
end
|
3055
3116
|
|
3056
3117
|
context "for an invalid Belgian IBAN" do
|
3057
3118
|
let(:iban_code) { "BE92 5100 0754 7061" }
|
3119
|
+
|
3058
3120
|
it { is_expected.to_not be_valid }
|
3059
3121
|
end
|
3060
3122
|
|
3061
3123
|
context "for a valid Bosnian IBAN" do
|
3062
3124
|
let(:iban_code) { "BA39 1290 0794 0102 8494" }
|
3125
|
+
|
3063
3126
|
it { is_expected.to be_valid }
|
3064
3127
|
end
|
3065
3128
|
|
3066
3129
|
context "for an invalid Bosnian IBAN" do
|
3067
3130
|
let(:iban_code) { "BA99 1290 0794 0102 8494" }
|
3131
|
+
|
3068
3132
|
it { is_expected.to_not be_valid }
|
3069
3133
|
end
|
3070
3134
|
|
3071
3135
|
context "for a valid Bulgarian IBAN" do
|
3072
3136
|
let(:iban_code) { "BG80 BNBG 9661 1020 3456 78" }
|
3137
|
+
|
3073
3138
|
it { is_expected.to be_valid }
|
3074
3139
|
end
|
3075
3140
|
|
3076
3141
|
context "for an invalid Bulgarian IBAN" do
|
3077
3142
|
let(:iban_code) { "BG90 BNBG 9661 1020 3456 78" }
|
3143
|
+
|
3078
3144
|
it { is_expected.to_not be_valid }
|
3079
3145
|
end
|
3080
3146
|
|
3081
3147
|
context "for a valid Croatian IBAN" do
|
3082
3148
|
let(:iban_code) { "HR12 1001 0051 8630 0016 0" }
|
3149
|
+
|
3083
3150
|
it { is_expected.to be_valid }
|
3084
3151
|
end
|
3085
3152
|
|
3086
3153
|
context "for an invalid Croatian IBAN" do
|
3087
3154
|
let(:iban_code) { "HR92 1001 0051 8630 0016 0" }
|
3155
|
+
|
3088
3156
|
it { is_expected.to_not be_valid }
|
3089
3157
|
end
|
3090
3158
|
|
3091
3159
|
context "for a valid Cypriot IBAN" do
|
3092
3160
|
let(:iban_code) { "CY17 0020 0128 0000 0012 0052 7600" }
|
3161
|
+
|
3093
3162
|
it { is_expected.to be_valid }
|
3094
3163
|
end
|
3095
3164
|
|
3096
3165
|
context "for an invalid Cypriot IBAN" do
|
3097
3166
|
let(:iban_code) { "CY97 0020 0128 0000 0012 0052 7600" }
|
3167
|
+
|
3098
3168
|
it { is_expected.to_not be_valid }
|
3099
3169
|
end
|
3100
3170
|
|
3101
3171
|
context "for a valid Czech IBAN" do
|
3102
3172
|
let(:iban_code) { "CZ65 0800 0000 1920 0014 5399" }
|
3173
|
+
|
3103
3174
|
it { is_expected.to be_valid }
|
3104
3175
|
end
|
3105
3176
|
|
3106
3177
|
context "for an invalid Czech IBAN" do
|
3107
3178
|
let(:iban_code) { "CZ95 0800 0000 1920 0014 5399" }
|
3179
|
+
|
3108
3180
|
it { is_expected.to_not be_valid }
|
3109
3181
|
end
|
3110
3182
|
|
3111
3183
|
context "for a valid Danish IBAN" do
|
3112
3184
|
let(:iban_code) { "DK50 0040 0440 1162 43" }
|
3185
|
+
|
3113
3186
|
it { is_expected.to be_valid }
|
3114
3187
|
end
|
3115
3188
|
|
3116
3189
|
context "for an invalid Danish IBAN" do
|
3117
3190
|
let(:iban_code) { "DK90 0040 0440 1162 43" }
|
3191
|
+
|
3118
3192
|
it { is_expected.to_not be_valid }
|
3119
3193
|
end
|
3120
3194
|
|
3121
3195
|
context "for a valid Estonian IBAN" do
|
3122
3196
|
let(:iban_code) { "EE38 2200 2210 2014 5685" }
|
3197
|
+
|
3123
3198
|
it { is_expected.to be_valid }
|
3124
3199
|
end
|
3125
3200
|
|
3126
3201
|
context "for an invalid Estonian IBAN" do
|
3127
3202
|
let(:iban_code) { "EE98 2200 2210 2014 5685" }
|
3203
|
+
|
3128
3204
|
it { is_expected.to_not be_valid }
|
3129
3205
|
end
|
3130
3206
|
|
3131
3207
|
context "for a valid Faroe Islands IBAN" do
|
3132
3208
|
let(:iban_code) { "FO97 5432 0388 8999 44" }
|
3209
|
+
|
3133
3210
|
it { is_expected.to be_valid }
|
3134
3211
|
end
|
3135
3212
|
|
3136
3213
|
context "for an invalid Faroe Islands IBAN" do
|
3137
3214
|
let(:iban_code) { "FO27 5432 0388 8999 44" }
|
3215
|
+
|
3138
3216
|
it { is_expected.to_not be_valid }
|
3139
3217
|
end
|
3140
3218
|
|
3141
3219
|
context "for a valid Finnish IBAN" do
|
3142
3220
|
let(:iban_code) { "FI21 1234 5600 0007 85" }
|
3221
|
+
|
3143
3222
|
it { is_expected.to be_valid }
|
3144
3223
|
end
|
3145
3224
|
|
3146
3225
|
context "for an invalid Finnish IBAN" do
|
3147
3226
|
let(:iban_code) { "FI91 1234 5600 0007 85" }
|
3227
|
+
|
3148
3228
|
it { is_expected.to_not be_valid }
|
3149
3229
|
end
|
3150
3230
|
|
3151
3231
|
context "for a valid French IBAN" do
|
3152
3232
|
let(:iban_code) { "FR14 2004 1010 0505 0001 3M02 606" }
|
3233
|
+
|
3153
3234
|
it { is_expected.to be_valid }
|
3154
3235
|
end
|
3155
3236
|
|
3156
3237
|
context "for an invalid French IBAN" do
|
3157
3238
|
let(:iban_code) { "FR94 2004 1010 0505 0001 3M02 606" }
|
3239
|
+
|
3158
3240
|
it { is_expected.to_not be_valid }
|
3159
3241
|
end
|
3160
3242
|
|
3161
3243
|
context "for a valid Georgian IBAN" do
|
3162
3244
|
let(:iban_code) { "GE29 NB00 0000 0101 9049 17" }
|
3245
|
+
|
3163
3246
|
it { is_expected.to be_valid }
|
3164
3247
|
end
|
3165
3248
|
|
3166
3249
|
context "for an invalid Georgian IBAN" do
|
3167
3250
|
let(:iban_code) { "GE99 NB00 0000 0101 9049 17" }
|
3251
|
+
|
3168
3252
|
it { is_expected.to_not be_valid }
|
3169
3253
|
end
|
3170
3254
|
|
3171
3255
|
context "for a valid German IBAN" do
|
3172
3256
|
let(:iban_code) { "DE89 3704 0044 0532 0130 00" }
|
3257
|
+
|
3173
3258
|
it { is_expected.to be_valid }
|
3174
3259
|
end
|
3175
3260
|
|
3176
3261
|
context "for an invalid German IBAN" do
|
3177
3262
|
let(:iban_code) { "DE99 3704 0044 0532 0130 00" }
|
3263
|
+
|
3178
3264
|
it { is_expected.to_not be_valid }
|
3179
3265
|
end
|
3180
3266
|
|
3181
3267
|
context "for a valid Gibraltan IBAN" do
|
3182
3268
|
let(:iban_code) { "GI75 NWBK 0000 0000 7099 453" }
|
3269
|
+
|
3183
3270
|
it { is_expected.to be_valid }
|
3184
3271
|
end
|
3185
3272
|
|
3186
3273
|
context "for an invalid Gibraltan IBAN" do
|
3187
3274
|
let(:iban_code) { "GI95 NWBK 0000 0000 7099 453" }
|
3275
|
+
|
3188
3276
|
it { is_expected.to_not be_valid }
|
3189
3277
|
end
|
3190
3278
|
|
3191
3279
|
context "for a valid Greek IBAN" do
|
3192
3280
|
let(:iban_code) { "GR16 0110 1250 0000 0001 2300 695" }
|
3281
|
+
|
3193
3282
|
it { is_expected.to be_valid }
|
3194
3283
|
end
|
3195
3284
|
|
3196
3285
|
context "for an invalid Greek IBAN" do
|
3197
3286
|
let(:iban_code) { "GR96 0110 1250 0000 0001 2300 695" }
|
3287
|
+
|
3198
3288
|
it { is_expected.to_not be_valid }
|
3199
3289
|
end
|
3200
3290
|
|
3201
3291
|
context "for a valid Greenland IBAN" do
|
3202
3292
|
let(:iban_code) { "GL56 0444 9876 5432 10" }
|
3293
|
+
|
3203
3294
|
it { is_expected.to be_valid }
|
3204
3295
|
end
|
3205
3296
|
|
3206
3297
|
context "for an invalid Greenland IBAN" do
|
3207
3298
|
let(:iban_code) { "GL96 0444 9876 5432 10" }
|
3299
|
+
|
3208
3300
|
it { is_expected.to_not be_valid }
|
3209
3301
|
end
|
3210
3302
|
|
3211
3303
|
context "for a valid Hungarian IBAN" do
|
3212
3304
|
let(:iban_code) { "HU42 1177 3016 1111 1018 0000 0000" }
|
3305
|
+
|
3213
3306
|
it { is_expected.to be_valid }
|
3214
3307
|
end
|
3215
3308
|
|
3216
3309
|
context "for an invalid Hungarian IBAN" do
|
3217
3310
|
let(:iban_code) { "HU92 1177 3016 1111 1018 0000 0000" }
|
3311
|
+
|
3218
3312
|
it { is_expected.to_not be_valid }
|
3219
3313
|
end
|
3220
3314
|
|
3221
3315
|
context "for a valid Icelandic IBAN" do
|
3222
3316
|
let(:iban_code) { "IS14 0159 2600 7654 5510 7303 39" }
|
3317
|
+
|
3223
3318
|
it { is_expected.to be_valid }
|
3224
3319
|
end
|
3225
3320
|
|
3226
3321
|
context "for an invalid Icelandic IBAN" do
|
3227
3322
|
let(:iban_code) { "IS94 0159 2600 7654 5510 7303 39" }
|
3323
|
+
|
3228
3324
|
it { is_expected.to_not be_valid }
|
3229
3325
|
end
|
3230
3326
|
|
3231
3327
|
context "for a valid Irish IBAN" do
|
3232
3328
|
let(:iban_code) { "IE29 AIBK 9311 5212 3456 78" }
|
3329
|
+
|
3233
3330
|
it { is_expected.to be_valid }
|
3234
3331
|
end
|
3235
3332
|
|
3236
3333
|
context "for an invalid Irish IBAN" do
|
3237
3334
|
let(:iban_code) { "IE99 AIBK 9311 5212 3456 78" }
|
3335
|
+
|
3238
3336
|
it { is_expected.to_not be_valid }
|
3239
3337
|
end
|
3240
3338
|
|
3241
3339
|
context "for a valid Israeli IBAN" do
|
3242
3340
|
let(:iban_code) { "IL62 0108 0000 0009 9999 999" }
|
3341
|
+
|
3243
3342
|
it { is_expected.to be_valid }
|
3244
3343
|
end
|
3245
3344
|
|
3246
3345
|
context "for an invalid Israeli IBAN" do
|
3247
3346
|
let(:iban_code) { "IL92 0108 0000 0009 9999 999" }
|
3347
|
+
|
3248
3348
|
it { is_expected.to_not be_valid }
|
3249
3349
|
end
|
3250
3350
|
|
3251
3351
|
context "for a valid Italian IBAN" do
|
3252
3352
|
let(:iban_code) { "IT40 S054 2811 1010 0000 0123 456" }
|
3353
|
+
|
3253
3354
|
it { is_expected.to be_valid }
|
3254
3355
|
end
|
3255
3356
|
|
3256
3357
|
context "for an invalid Italian IBAN" do
|
3257
3358
|
let(:iban_code) { "IT90 S054 2811 1010 0000 0123 456" }
|
3359
|
+
|
3258
3360
|
it { is_expected.to_not be_valid }
|
3259
3361
|
end
|
3260
3362
|
|
3261
3363
|
context "for a valid Jordanian IBAN" do
|
3262
3364
|
let(:iban_code) { "JO94 CBJO 0010 0000 0000 0131 0003 02" }
|
3365
|
+
|
3263
3366
|
it { is_expected.to be_valid }
|
3264
3367
|
end
|
3265
3368
|
|
3266
3369
|
context "for an invalid Jordanian IBAN" do
|
3267
3370
|
let(:iban_code) { "JO24 CBJO 0010 0000 0000 0131 0003 02" }
|
3371
|
+
|
3268
3372
|
it { is_expected.to_not be_valid }
|
3269
3373
|
end
|
3270
3374
|
|
3271
3375
|
context "for a valid Kuwaiti IBAN" do
|
3272
3376
|
let(:iban_code) { "KW81 CBKU 0000 0000 0000 1234 5601 01" }
|
3377
|
+
|
3273
3378
|
it { is_expected.to be_valid }
|
3274
3379
|
end
|
3275
3380
|
|
3276
3381
|
context "for an invalid Kuwaiti IBAN" do
|
3277
3382
|
let(:iban_code) { "KW91 CBKU 0000 0000 0000 1234 5601 01" }
|
3383
|
+
|
3278
3384
|
it { is_expected.to_not be_valid }
|
3279
3385
|
end
|
3280
3386
|
|
3281
3387
|
context "for a valid Latvian IBAN" do
|
3282
3388
|
let(:iban_code) { "LV80 BANK 0000 4351 9500 1" }
|
3389
|
+
|
3283
3390
|
it { is_expected.to be_valid }
|
3284
3391
|
end
|
3285
3392
|
|
3286
3393
|
context "for an invalid Latvian IBAN" do
|
3287
3394
|
let(:iban_code) { "LV90 BANK 0000 4351 9500 1" }
|
3395
|
+
|
3288
3396
|
it { is_expected.to_not be_valid }
|
3289
3397
|
end
|
3290
3398
|
|
3291
3399
|
context "for a valid Lebanese IBAN" do
|
3292
3400
|
let(:iban_code) { "LB62 0999 0000 0001 0019 0122 9114" }
|
3401
|
+
|
3293
3402
|
it { is_expected.to be_valid }
|
3294
3403
|
end
|
3295
3404
|
|
3296
3405
|
context "for an invalid Lebanese IBAN" do
|
3297
3406
|
let(:iban_code) { "LB92 0999 0000 0001 0019 0122 9114" }
|
3407
|
+
|
3298
3408
|
it { is_expected.to_not be_valid }
|
3299
3409
|
end
|
3300
3410
|
|
3301
3411
|
context "for a valid Liechtensteinian IBAN" do
|
3302
3412
|
let(:iban_code) { "LI21 0881 0000 2324 013A A" }
|
3413
|
+
|
3303
3414
|
it { is_expected.to be_valid }
|
3304
3415
|
end
|
3305
3416
|
|
3306
3417
|
context "for an invalid Liechtensteinian IBAN" do
|
3307
3418
|
let(:iban_code) { "LI91 0881 0000 2324 013A A" }
|
3419
|
+
|
3308
3420
|
it { is_expected.to_not be_valid }
|
3309
3421
|
end
|
3310
3422
|
|
3311
3423
|
context "for a valid Lithuanian IBAN" do
|
3312
3424
|
let(:iban_code) { "LT12 1000 0111 0100 1000" }
|
3425
|
+
|
3313
3426
|
it { is_expected.to be_valid }
|
3314
3427
|
end
|
3315
3428
|
|
3316
3429
|
context "for an invalid Lithuanian IBAN" do
|
3317
3430
|
let(:iban_code) { "LT92 1000 0111 0100 1000" }
|
3431
|
+
|
3318
3432
|
it { is_expected.to_not be_valid }
|
3319
3433
|
end
|
3320
3434
|
|
3321
3435
|
context "for a valid Luxembourgian IBAN" do
|
3322
3436
|
let(:iban_code) { "LU28 0019 4006 4475 0000" }
|
3437
|
+
|
3323
3438
|
it { is_expected.to be_valid }
|
3324
3439
|
end
|
3325
3440
|
|
3326
3441
|
context "for an invalid Luxembourgian IBAN" do
|
3327
3442
|
let(:iban_code) { "LU98 0019 4006 4475 0000" }
|
3443
|
+
|
3328
3444
|
it { is_expected.to_not be_valid }
|
3329
3445
|
end
|
3330
3446
|
|
3331
3447
|
context "for a valid Macedonian IBAN" do
|
3332
3448
|
let(:iban_code) { "MK072 5012 0000 0589 84" }
|
3449
|
+
|
3333
3450
|
it { is_expected.to be_valid }
|
3334
3451
|
end
|
3335
3452
|
|
3336
3453
|
context "for an invalid Macedonian IBAN" do
|
3337
3454
|
let(:iban_code) { "MK972 5012 0000 0589 84" }
|
3455
|
+
|
3338
3456
|
it { is_expected.to_not be_valid }
|
3339
3457
|
end
|
3340
3458
|
|
3341
3459
|
context "for a valid Maltese IBAN" do
|
3342
3460
|
let(:iban_code) { "MT84 MALT 0110 0001 2345 MTLC AST0 01S" }
|
3461
|
+
|
3343
3462
|
it { is_expected.to be_valid }
|
3344
3463
|
end
|
3345
3464
|
|
3346
3465
|
context "for an invalid Maltese IBAN" do
|
3347
3466
|
let(:iban_code) { "MT94 MALT 0110 0001 2345 MTLC AST0 01S" }
|
3467
|
+
|
3348
3468
|
it { is_expected.to_not be_valid }
|
3349
3469
|
end
|
3350
3470
|
|
3351
3471
|
context "for a valid Maurititanian IBAN" do
|
3352
3472
|
let(:iban_code) { "MU17 BOMM 0101 1010 3030 0200 000M UR" }
|
3473
|
+
|
3353
3474
|
it { is_expected.to be_valid }
|
3354
3475
|
end
|
3355
3476
|
|
3356
3477
|
context "for an invalid Maurititanian IBAN" do
|
3357
3478
|
let(:iban_code) { "MU97 BOMM 0101 1010 3030 0200 000M UR" }
|
3479
|
+
|
3358
3480
|
it { is_expected.to_not be_valid }
|
3359
3481
|
end
|
3360
3482
|
|
3361
3483
|
context "for a valid Moldovan IBAN" do
|
3362
3484
|
let(:iban_code) { "MD24 AG00 0225 1000 1310 4168" }
|
3485
|
+
|
3363
3486
|
it { is_expected.to be_valid }
|
3364
3487
|
end
|
3365
3488
|
|
3366
3489
|
context "for an invalid Moldovan IBAN" do
|
3367
3490
|
let(:iban_code) { "MD94 AG00 0225 1000 1310 4168" }
|
3491
|
+
|
3368
3492
|
it { is_expected.to_not be_valid }
|
3369
3493
|
end
|
3370
3494
|
|
3371
3495
|
context "for a valid Monocan IBAN" do
|
3372
3496
|
let(:iban_code) { "MC93 2005 2222 1001 1223 3M44 555" }
|
3497
|
+
|
3373
3498
|
it { is_expected.to be_valid }
|
3374
3499
|
end
|
3375
3500
|
|
3376
3501
|
context "for an invalid Monocan IBAN" do
|
3377
3502
|
let(:iban_code) { "MC23 2005 2222 1001 1223 3M44 555" }
|
3503
|
+
|
3378
3504
|
it { is_expected.to_not be_valid }
|
3379
3505
|
end
|
3380
3506
|
|
3381
3507
|
context "for a valid Montenegrian IBAN" do
|
3382
3508
|
let(:iban_code) { "ME25 5050 0001 2345 6789 51" }
|
3509
|
+
|
3383
3510
|
it { is_expected.to be_valid }
|
3384
3511
|
end
|
3385
3512
|
|
3386
3513
|
context "for an invalid Montenegrian IBAN" do
|
3387
3514
|
let(:iban_code) { "ME95 5050 0001 2345 6789 51" }
|
3515
|
+
|
3388
3516
|
it { is_expected.to_not be_valid }
|
3389
3517
|
end
|
3390
3518
|
|
3391
3519
|
context "for a valid Dutch IBAN" do
|
3392
3520
|
let(:iban_code) { "NL39 RABO 0300 0652 64" }
|
3521
|
+
|
3393
3522
|
it { is_expected.to be_valid }
|
3394
3523
|
end
|
3395
3524
|
|
3396
3525
|
context "for an invalid Dutch IBAN" do
|
3397
3526
|
let(:iban_code) { "NL99 RABO 0300 0652 64" }
|
3527
|
+
|
3398
3528
|
it { is_expected.to_not be_valid }
|
3399
3529
|
end
|
3400
3530
|
|
3401
3531
|
context "for a valid Norwegian IBAN" do
|
3402
3532
|
let(:iban_code) { "NO93 8601 1117 947" }
|
3533
|
+
|
3403
3534
|
it { is_expected.to be_valid }
|
3404
3535
|
end
|
3405
3536
|
|
3406
3537
|
context "for an invalid Norwegian IBAN" do
|
3407
3538
|
let(:iban_code) { "NO23 8601 1117 947" }
|
3539
|
+
|
3408
3540
|
it { is_expected.to_not be_valid }
|
3409
3541
|
end
|
3410
3542
|
|
3411
3543
|
context "for a valid New Zealand pseudo-IBAN" do
|
3412
3544
|
let(:iban_code) { "NZZZ5566667777777088" }
|
3545
|
+
|
3413
3546
|
it { is_expected.to be_valid }
|
3414
3547
|
end
|
3415
3548
|
|
3416
3549
|
context "for an invalid New Zealand pseudo-IBAN" do
|
3417
3550
|
let(:iban_code) { "NZZZ55666677777770888" }
|
3551
|
+
|
3418
3552
|
it { is_expected.to_not be_valid }
|
3419
3553
|
end
|
3420
3554
|
|
3421
3555
|
context "for a valid Pakistani IBAN" do
|
3422
3556
|
let(:iban_code) { "PK36 SCBL 0000 0011 2345 6702" }
|
3557
|
+
|
3423
3558
|
it { is_expected.to be_valid }
|
3424
3559
|
end
|
3425
3560
|
|
3426
3561
|
context "for an invalid Pakistani IBAN" do
|
3427
3562
|
let(:iban_code) { "PK96 SCBL 0000 0011 2345 6702" }
|
3563
|
+
|
3428
3564
|
it { is_expected.to_not be_valid }
|
3429
3565
|
end
|
3430
3566
|
|
3431
3567
|
context "for a valid Polish IBAN" do
|
3432
3568
|
let(:iban_code) { "PL60 1020 1026 0000 0422 7020 1111" }
|
3569
|
+
|
3433
3570
|
it { is_expected.to be_valid }
|
3434
3571
|
end
|
3435
3572
|
|
3436
3573
|
context "for an invalid Polish IBAN" do
|
3437
3574
|
let(:iban_code) { "PL90 1020 1026 0000 0422 7020 1111" }
|
3575
|
+
|
3438
3576
|
it { is_expected.to_not be_valid }
|
3439
3577
|
end
|
3440
3578
|
|
3441
3579
|
context "for a valid Potuguese IBAN" do
|
3442
3580
|
let(:iban_code) { "PT50 0002 0123 1234 5678 9015 4" }
|
3581
|
+
|
3443
3582
|
it { is_expected.to be_valid }
|
3444
3583
|
end
|
3445
3584
|
|
3446
3585
|
context "for an invalid Potuguese IBAN" do
|
3447
3586
|
let(:iban_code) { "PT90 0002 0123 1234 5678 9015 4" }
|
3587
|
+
|
3448
3588
|
it { is_expected.to_not be_valid }
|
3449
3589
|
end
|
3450
3590
|
|
3451
3591
|
context "for a valid Qatari IBAN" do
|
3452
3592
|
let(:iban_code) { "QA58 DOHB 0000 1234 5678 90AB CDEF G" }
|
3593
|
+
|
3453
3594
|
it { is_expected.to be_valid }
|
3454
3595
|
end
|
3455
3596
|
|
3456
3597
|
context "for an invalid Qatari IBAN" do
|
3457
3598
|
let(:iban_code) { "QA98 DOHB 0000 1234 5678 90AB CDEF G" }
|
3599
|
+
|
3458
3600
|
it { is_expected.to_not be_valid }
|
3459
3601
|
end
|
3460
3602
|
|
3461
3603
|
context "for a valid Romanian IBAN" do
|
3462
3604
|
let(:iban_code) { "RO49 AAAA 1B31 0075 9384 0000" }
|
3605
|
+
|
3463
3606
|
it { is_expected.to be_valid }
|
3464
3607
|
end
|
3465
3608
|
|
3466
3609
|
context "for an invalid Romanian IBAN" do
|
3467
3610
|
let(:iban_code) { "RO99 AAAA 1B31 0075 9384 0000" }
|
3611
|
+
|
3468
3612
|
it { is_expected.to_not be_valid }
|
3469
3613
|
end
|
3470
3614
|
|
3471
3615
|
context "for a valid San Marinian IBAN" do
|
3472
3616
|
let(:iban_code) { "SM86 U032 2509 8000 0000 0270 100" }
|
3617
|
+
|
3473
3618
|
it { is_expected.to be_valid }
|
3474
3619
|
end
|
3475
3620
|
|
3476
3621
|
context "for an invalid San Marinian IBAN" do
|
3477
3622
|
let(:iban_code) { "SM96 U032 2509 8000 0000 0270 100" }
|
3623
|
+
|
3478
3624
|
it { is_expected.to_not be_valid }
|
3479
3625
|
end
|
3480
3626
|
|
3481
3627
|
context "for a valid Saudi IBAN" do
|
3482
3628
|
let(:iban_code) { "SA03 8000 0000 6080 1016 7519" }
|
3629
|
+
|
3483
3630
|
it { is_expected.to be_valid }
|
3484
3631
|
end
|
3485
3632
|
|
3486
3633
|
context "for an invalid Saudi IBAN" do
|
3487
3634
|
let(:iban_code) { "SA93 8000 0000 6080 1016 7519" }
|
3635
|
+
|
3488
3636
|
it { is_expected.to_not be_valid }
|
3489
3637
|
end
|
3490
3638
|
|
3491
3639
|
context "for a valid Serbian IBAN" do
|
3492
3640
|
let(:iban_code) { "RS35 2600 0560 1001 6113 79" }
|
3641
|
+
|
3493
3642
|
it { is_expected.to be_valid }
|
3494
3643
|
end
|
3495
3644
|
|
3496
3645
|
context "for an invalid Serbian IBAN" do
|
3497
3646
|
let(:iban_code) { "RS95 2600 0560 1001 6113 79" }
|
3647
|
+
|
3498
3648
|
it { is_expected.to_not be_valid }
|
3499
3649
|
end
|
3500
3650
|
|
3501
3651
|
context "for a valid Slovakian IBAN" do
|
3502
3652
|
let(:iban_code) { "SK31 1200 0000 1987 4263 7541" }
|
3653
|
+
|
3503
3654
|
it { is_expected.to be_valid }
|
3504
3655
|
end
|
3505
3656
|
|
3506
3657
|
context "for an invalid Slovakian IBAN" do
|
3507
3658
|
let(:iban_code) { "SK91 1200 0000 1987 4263 7541" }
|
3659
|
+
|
3508
3660
|
it { is_expected.to_not be_valid }
|
3509
3661
|
end
|
3510
3662
|
|
3511
3663
|
context "for a valid Slovenian IBAN" do
|
3512
3664
|
let(:iban_code) { "SI56 1910 0000 0123 438" }
|
3665
|
+
|
3513
3666
|
it { is_expected.to be_valid }
|
3514
3667
|
end
|
3515
3668
|
|
3516
3669
|
context "for an invalid Slovenian IBAN" do
|
3517
3670
|
let(:iban_code) { "SI96 1910 0000 0123 438" }
|
3671
|
+
|
3518
3672
|
it { is_expected.to_not be_valid }
|
3519
3673
|
end
|
3520
3674
|
|
3521
3675
|
context "for a valid Spanish IBAN" do
|
3522
3676
|
let(:iban_code) { "ES80 2310 0001 1800 0001 2345" }
|
3677
|
+
|
3523
3678
|
it { is_expected.to be_valid }
|
3524
3679
|
end
|
3525
3680
|
|
3526
3681
|
context "for an invalid Spanish IBAN" do
|
3527
3682
|
let(:iban_code) { "ES90 2310 0001 1800 0001 2345" }
|
3683
|
+
|
3528
3684
|
it { is_expected.to_not be_valid }
|
3529
3685
|
end
|
3530
3686
|
|
3531
3687
|
context "for a valid Swedish IBAN" do
|
3532
3688
|
let(:iban_code) { "SE35 5000 0000 0549 1000 0003" }
|
3689
|
+
|
3533
3690
|
it { is_expected.to be_valid }
|
3534
3691
|
end
|
3535
3692
|
|
3536
3693
|
context "for an invalid Swedish IBAN" do
|
3537
3694
|
let(:iban_code) { "SE95 5000 0000 0549 1000 0003" }
|
3695
|
+
|
3538
3696
|
it { is_expected.to_not be_valid }
|
3539
3697
|
end
|
3540
3698
|
|
3541
3699
|
context "for a valid Swiss IBAN" do
|
3542
3700
|
let(:iban_code) { "CH93 0076 2011 6238 5295 7" }
|
3701
|
+
|
3543
3702
|
it { is_expected.to be_valid }
|
3544
3703
|
end
|
3545
3704
|
|
3546
3705
|
context "for an invalid Swiss IBAN" do
|
3547
3706
|
let(:iban_code) { "CH23 0076 2011 6238 5295 7" }
|
3707
|
+
|
3548
3708
|
it { is_expected.to_not be_valid }
|
3549
3709
|
end
|
3550
3710
|
|
3551
3711
|
context "for a valid Tunisian IBAN" do
|
3552
3712
|
let(:iban_code) { "TN59 1000 6035 1835 9847 8831" }
|
3713
|
+
|
3553
3714
|
it { is_expected.to be_valid }
|
3554
3715
|
end
|
3555
3716
|
|
3556
3717
|
context "for an invalid Tunisian IBAN" do
|
3557
3718
|
let(:iban_code) { "TN99 1000 6035 1835 9847 8831" }
|
3719
|
+
|
3558
3720
|
it { is_expected.to_not be_valid }
|
3559
3721
|
end
|
3560
3722
|
|
3561
3723
|
context "for a valid Turkish IBAN" do
|
3562
3724
|
let(:iban_code) { "TR33 0006 1005 1978 6457 8413 26" }
|
3725
|
+
|
3563
3726
|
it { is_expected.to be_valid }
|
3564
3727
|
end
|
3565
3728
|
|
3566
3729
|
context "for an invalid Turkish IBAN" do
|
3567
3730
|
let(:iban_code) { "TR93 0006 1005 1978 6457 8413 26" }
|
3731
|
+
|
3568
3732
|
it { is_expected.to_not be_valid }
|
3569
3733
|
end
|
3570
3734
|
|
3571
3735
|
context "for a valid UAE IBAN" do
|
3572
3736
|
let(:iban_code) { "AE07 0331 2345 6789 0123 456" }
|
3737
|
+
|
3573
3738
|
it { is_expected.to be_valid }
|
3574
3739
|
end
|
3575
3740
|
|
3576
3741
|
context "for an invalid UAE IBAN" do
|
3577
3742
|
let(:iban_code) { "AE97 0331 2345 6789 0123 456" }
|
3743
|
+
|
3578
3744
|
it { is_expected.to_not be_valid }
|
3579
3745
|
end
|
3580
3746
|
|
3581
3747
|
context "for a valid UK IBAN" do
|
3582
3748
|
let(:iban_code) { "GB82 WEST 1234 5698 7654 32" }
|
3749
|
+
|
3583
3750
|
it { is_expected.to be_valid }
|
3584
3751
|
end
|
3585
3752
|
|
3586
3753
|
context "for an invalid UK IBAN" do
|
3587
3754
|
let(:iban_code) { "GB92 WEST 1234 5698 7654 32" }
|
3755
|
+
|
3588
3756
|
it { is_expected.to_not be_valid }
|
3589
3757
|
end
|
3590
3758
|
end
|
@@ -3592,61 +3760,73 @@ describe Ibandit::IBAN do
|
|
3592
3760
|
describe "#local_check_digits" do
|
3593
3761
|
context "with a Belgian IBAN" do
|
3594
3762
|
let(:iban_code) { "BE62510007547061" }
|
3763
|
+
|
3595
3764
|
its(:local_check_digits) { is_expected.to eq("61") }
|
3596
3765
|
end
|
3597
3766
|
|
3598
3767
|
context "with a French IBAN" do
|
3599
3768
|
let(:iban_code) { "FR1234567890123456789012345" }
|
3769
|
+
|
3600
3770
|
its(:local_check_digits) { is_expected.to eq("45") }
|
3601
3771
|
end
|
3602
3772
|
|
3603
3773
|
context "with a Monocan IBAN" do
|
3604
3774
|
let(:iban_code) { "MC9320052222100112233M44555" }
|
3775
|
+
|
3605
3776
|
its(:local_check_digits) { is_expected.to eq("55") }
|
3606
3777
|
end
|
3607
3778
|
|
3608
3779
|
context "with a Spanish IBAN" do
|
3609
3780
|
let(:iban_code) { "ES1212345678911234567890" }
|
3781
|
+
|
3610
3782
|
its(:local_check_digits) { is_expected.to eq("91") }
|
3611
3783
|
end
|
3612
3784
|
|
3613
3785
|
context "with an Italian IBAN" do
|
3614
3786
|
let(:iban_code) { "IT12A1234567890123456789012" }
|
3787
|
+
|
3615
3788
|
its(:local_check_digits) { is_expected.to eq("A") }
|
3616
3789
|
end
|
3617
3790
|
|
3618
3791
|
context "with an Estonian IBAN" do
|
3619
3792
|
let(:iban_code) { "EE382200221020145685" }
|
3793
|
+
|
3620
3794
|
its(:local_check_digits) { is_expected.to eq("5") }
|
3621
3795
|
end
|
3622
3796
|
|
3623
3797
|
context "with an Finnish IBAN" do
|
3624
3798
|
let(:iban_code) { "FI2112345600000785" }
|
3799
|
+
|
3625
3800
|
its(:local_check_digits) { is_expected.to eq("5") }
|
3626
3801
|
end
|
3627
3802
|
|
3628
3803
|
context "with an Portuguese IBAN" do
|
3629
3804
|
let(:iban_code) { "PT50000201231234567890154" }
|
3805
|
+
|
3630
3806
|
its(:local_check_digits) { is_expected.to eq("54") }
|
3631
3807
|
end
|
3632
3808
|
|
3633
3809
|
context "with a Norwegian IBAN" do
|
3634
3810
|
let(:iban_code) { "NO9386011117947" }
|
3811
|
+
|
3635
3812
|
its(:local_check_digits) { is_expected.to eq("7") }
|
3636
3813
|
end
|
3637
3814
|
|
3638
3815
|
context "with an Icelandic IBAN" do
|
3639
3816
|
let(:iban_code) { "IS250311260024684606972049" }
|
3817
|
+
|
3640
3818
|
its(:local_check_digits) { is_expected.to eq("4") }
|
3641
3819
|
end
|
3642
3820
|
|
3643
3821
|
context "with a Slovakian IBAN" do
|
3644
3822
|
let(:iban_code) { "SK3112000000198742637541" }
|
3823
|
+
|
3645
3824
|
its(:local_check_digits) { is_expected.to eq("9") }
|
3646
3825
|
end
|
3647
3826
|
|
3648
3827
|
context "with a Dutch IBAN" do
|
3649
3828
|
let(:iban_code) { "NL91ABNA0417164300" }
|
3829
|
+
|
3650
3830
|
its(:local_check_digits) { is_expected.to eq("0") }
|
3651
3831
|
end
|
3652
3832
|
end
|