Files
mareike/tests/Unit/IbanTest.php

60 lines
1.9 KiB
PHP

<?php
namespace Tests\Unit;
use App\Support\Iban;
use PHPUnit\Framework\TestCase;
class IbanTest extends TestCase
{
public function test_normalizes_spaces_and_case(): void
{
$this->assertSame('DE02120300000000202051', Iban::normalize('de02 1203 0000 0000 2020 51'));
$this->assertSame('DE02120300000000202051', Iban::normalize(" DE02\t1203000000002020 51 "));
}
public function test_formats_in_groups_of_four(): void
{
$this->assertSame('DE02 1203 0000 0000 2020 51', Iban::format('DE02120300000000202051'));
}
public function test_accepts_valid_ibans(): void
{
// Offizielle Testnummern der Deutschen Bundesbank bzw. der jeweiligen Zentralbanken.
foreach ([
'DE02120300000000202051',
'DE02500105170137075030',
'AT026000000001349870',
'CH0209000000100013997',
'FR1420041010050500013M02606',
'NL02ABNA0123456789',
] as $iban) {
$this->assertTrue(Iban::isValid($iban), $iban . ' sollte gültig sein');
}
}
public function test_rejects_a_wrong_check_digit(): void
{
// Zahlendreher in den letzten beiden Stellen -- Struktur und Länge stimmen weiterhin.
$this->assertFalse(Iban::isValid('DE02120300000000202015'));
}
public function test_rejects_wrong_length_for_the_country(): void
{
$this->assertFalse(Iban::isValid('DE0212030000000020205'));
$this->assertFalse(Iban::isValid('DE021203000000002020511'));
}
public function test_rejects_malformed_input(): void
{
foreach (['', ' ', 'kein IBAN', '1202120300000000202051', 'DEAB120300000000202051'] as $iban) {
$this->assertFalse(Iban::isValid($iban), $iban . ' sollte ungültig sein');
}
}
public function test_validates_the_normalized_form(): void
{
$this->assertTrue(Iban::isValid('de02 1203 0000 0000 2020 51'));
}
}