ibandit 0.11.28 → 1.1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +37 -0
- data/.rubocop.yml +7 -10
- data/.rubocop_todo.yml +70 -15
- data/CHANGELOG.md +24 -0
- data/Gemfile +0 -6
- data/README.md +7 -7
- data/data/german_iban_rules.yml +1099 -1594
- data/data/raw/BLZ2.txt +15947 -17888
- data/data/structures.yml +4 -4
- data/ibandit.gemspec +4 -3
- data/lib/ibandit.rb +7 -4
- data/lib/ibandit/check_digit.rb +3 -1
- data/lib/ibandit/constants.rb +3 -1
- data/lib/ibandit/errors.rb +2 -0
- data/lib/ibandit/german_details_converter.rb +26 -2
- data/lib/ibandit/iban.rb +17 -11
- data/lib/ibandit/iban_assembler.rb +2 -0
- data/lib/ibandit/iban_splitter.rb +8 -7
- data/lib/ibandit/local_details_cleaner.rb +40 -37
- 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/fixtures/germany_integration_test_cases.json +23 -17
- data/spec/fixtures/germany_unit_test_cases.json +31 -6
- 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 +136 -6
- data/spec/ibandit/pseudo_iban_assembler_spec.rb +3 -1
- data/spec/ibandit/pseudo_iban_splitter_spec.rb +2 -0
- data/spec/ibandit/structure_spec.rb +6 -4
- 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 +21 -8
- data/.travis.yml +0 -16
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
|