| Current File : //opt/RZphp71/includes/test/Payment_DTA/tests/DTAZVTest.php |
<?php
require_once 'PHPUnit/Framework.php';
//make cvs testing work
chdir(dirname(__FILE__) . '/../');
require_once 'DTAZV.php';
class DTAZVTest extends PHPUnit_Framework_TestCase
{
protected $backupGlobals = FALSE;
protected $fixture;
protected function setUp()
{
// Create the Array fixture.
$this->fixture = new DTAZV();
$DTAZV_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "16050000",
'account_number' => "3503007767",
);
$this->fixture->setAccountFileSender($DTAZV_account);
}
public function testInstantiate()
{
$this->assertEquals("DTAZV", get_class($this->fixture));
}
public function testInstantiateShortBankCode()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "16050",
'account_number' => "3503007767",
);
$this->assertTrue($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateNoBankCode()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "",
'account_number' => "3503007767",
);
$this->assertFalse($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateLongBankCode()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "160500001",
'account_number' => "3503007767",
);
$this->assertFalse($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateNoAccountNumber()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "16050000",
'account_number' => "",
);
$this->assertFalse($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateLongAccountNumber()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "16050000",
'account_number' => "35030077671",
);
$this->assertFalse($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateWithIntegerAccountNumberSmall()
{
// small := leq PHP_INT_MAX (on 32-bit with 10 digits)
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => 'and some more',
'bank_code' => "16050000",
'account_number' => PHP_INT_MAX,
);
$this->assertTrue($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateWithIntegerAccountNumberBig()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => 'and some more',
'bank_code' => "16050000",
'account_number' => 3503007767,
);
$this->assertTrue($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateWithIntegerBankCode()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => 16050000,
'account_number' => "3503007767",
);
$this->assertTrue($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testInstantiateLetterInAccount()
{
$dtaus = new DTAZV();
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "16050000",
'account_number' => "3503007A67",
);
$this->assertFalse($dtaus->setAccountFileSender($DTAZV_asta_account));
}
public function testCountEmpty()
{
$this->assertEquals(0, $this->fixture->count());
$this->assertEquals(256+256, strlen($this->fixture->getFileContent()));
}
public function testCountNonEmpty()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEFF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
(float) 321.9,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertEquals(2, $this->fixture->count());
$this->assertEquals(256+768+768+256, strlen($this->fixture->getFileContent()));
}
public function testInvalidBankCode()
{
$this->assertFalse($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
(float) 321.9,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertEquals(1, $this->fixture->count());
$this->assertEquals(256+768+256, strlen($this->fixture->getFileContent()));
}
public function testDTAZVMaxAmountPass()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
12500,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertEquals(1, $this->fixture->count());
}
public function testDTAZVMaxAmountFail()
{
$this->assertFalse($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"
),
12500.01,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertEquals(0, $this->fixture->count());
}
public function testDTAZVLowerMaxAmountPass()
{
if (!method_exists($this->fixture, 'setMaxAmount')) {
$this->markTestSkipped('no method setMaxAmount()');
return;
}
$this->fixture->setMaxAmount(1000);
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
1000,
"Test-Verwendungszweck"
));
$this->assertEquals(1, $this->fixture->count());
}
public function testDTAZVLowerMaxAmountFail()
{
if (!method_exists($this->fixture, 'setMaxAmount')) {
$this->markTestSkipped('no method setMaxAmount()');
return;
}
$this->fixture->setMaxAmount(1000);
$this->assertFalse($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEF",
'account_number' => "DE21700519950000007229"
),
1000.01,
"Test-Verwendungszweck"
));
$this->assertEquals(0, $this->fixture->count());
}
public function testDTAZVHigherMaxAmountPass()
{
if (!method_exists($this->fixture, 'setMaxAmount')) {
$this->markTestSkipped('no method setMaxAmount()');
return;
}
$this->fixture->setMaxAmount(50000);
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
49999,
"Test-Verwendungszweck"
));
$this->assertEquals(1, $this->fixture->count());
}
public function testDTAZVHigherMaxAmountFail()
{
if (!method_exists($this->fixture, 'setMaxAmount')) {
$this->markTestSkipped('no method setMaxAmount()');
return;
}
$this->fixture->setMaxAmount(50000);
$this->assertFalse($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEF",
'account_number' => "DE21700519950000007229"
),
50000.00999,
"Test-Verwendungszweck"
));
$this->assertEquals(0, $this->fixture->count());
}
public function testDTAZVDisableMaxAmountPass()
{
if (!method_exists($this->fixture, 'setMaxAmount')) {
$this->markTestSkipped('no method setMaxAmount()');
return;
}
$this->fixture->setMaxAmount(0);
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
PHP_INT_MAX/100 - 1,
"Test-Verwendungszweck"
));
$this->assertEquals(1, $this->fixture->count());
}
public function testDTAZVDisableMaxAmountFail()
{
if (!method_exists($this->fixture, 'setMaxAmount')) {
$this->markTestSkipped('no method setMaxAmount()');
return;
}
$this->fixture->setMaxAmount(0);
$this->assertFalse($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"
),
PHP_INT_MAX/100 + 1,
"Test-Verwendungszweck"
));
$this->assertEquals(0, $this->fixture->count());
}
public function testPurposesArray()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEFF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
array("Ein ganz lange Test-Verwendungszweck",
"der über 35 Zeichen lang sein soll",
"um umbrochen zu werden")
));
$this->assertEquals(1, $this->fixture->count());
$this->assertEquals(256+768+256, strlen($this->fixture->getFileContent()));
}
public function testUmlautInRecvName()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "Ä Receivers Näme",
'bank_code' => "MARKDEFF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
array("Ein ganz lange Test-Verwendungszweck",
"der über 35 Zeichen lang sein soll",
"um umbrochen zu werden")
));
$this->assertEquals(1, $this->fixture->count());
$this->assertEquals(256+768+256, strlen($this->fixture->getFileContent()));
}
public function testAdditionalSenderName()
{
$DTAZV_asta_account = array(
'name' => "Senders Name",
'additional_name' => '',
'bank_code' => "16050000",
'account_number' => "3503007767",
);
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEFF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
"Test-Verwendungszweck",
$DTAZV_asta_account
));
$this->assertEquals(1, $this->fixture->count());
$this->assertEquals(256+768+256, strlen($this->fixture->getFileContent()));
}
public function testAdditionalSenderNameWithIntegers()
{
$DTAZV_test_account = array(
'name' => "Senders Name",
'additional_name' => 'and some more',
'bank_code' => 16050000,
'account_number' => 3503007767,
);
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEFF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
"Test-Verwendungszweck",
$DTAZV_test_account
));
$this->assertEquals(1, $this->fixture->count());
$this->assertEquals(256+768+256, strlen($this->fixture->getFileContent()));
}
public function testValidStringTrue()
{
$result = $this->fixture->validString(" \$%&*+,-./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
$this->assertTrue($result);
}
public function testValidStringFalse()
{
$result = $this->fixture->validString("ä");
$this->assertFalse($result);
}
public function testValidStringFalse2()
{
$result = $this->fixture->validString("ÄÖÜ");
$this->assertFalse($result);
}
public function testMakeValidString()
{
$result = $this->fixture->makeValidString("ä Ä~áöøü§ß");
$this->assertEquals("AE AE AOEOUE SS", $result);
}
public function testFileLength()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEFF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
(float) 321.9,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertEquals(256+768+768+256, strlen($this->fixture->getFileContent()));
}
public function testChecksum()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "MARKDEFF",
'account_number' => "DE68210501700012345678"
),
(float) 1234.56,
"Test-Verwendungszweck"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Test-Verwendungszweck"
));
/* v1.3.0 incorrectly used the intval(sum) as checksum in field Z03,
* yielding intval(1234.56+1234.56) = 2469
* The correct calculation is to use the sum of intvals,
* thus intval(1234.56)+intval(1234.56) = 2468
*/
$content = $this->fixture->getFileContent();
$this->assertEquals(2468, (int)substr($content, 256+768+768+5, 15));
}
public function testGermanBLZ()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "16050000",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Ein Test-Verwendungszweck"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
(float) 321.9,
"Ein ganz lange Test-Verwendungszweck der über 35 Zeichen lang sein soll um umbrochen zu werden"
));
$this->assertEquals(256+768+768+256, strlen($this->fixture->getFileContent()));
}
public function testSaveFileTrue()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "16050000",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Ein Test-Verwendungszweck"
));
$tmpfname = tempnam(sys_get_temp_dir(), "dtatest");
if ($this->fixture->saveFile($tmpfname)) {
$file_content = file_get_contents($tmpfname);
unlink($tmpfname);
$this->assertEquals(256+768+256, strlen($file_content));
} else {
$this->assertTrue(false);
}
}
public function testSaveFileFalse()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "16050000",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Ein Test-Verwendungszweck"
));
$tmpfname = "/root/nonexistantdirectory/dtatestfile";
$this->assertFalse($this->fixture->saveFile($tmpfname));
}
public function testContent()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
(float) 123.45,
"Test-Verwendungszweck"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "Second Receivers Name",
'bank_code' => "RZTIAT22263",
'account_number' => "DE21700519950000007229"),
(float) 234.56,
"Test2"
));
$dates = strftime("%d%m%y00%d%m%y", time());
$expected = // 64 chars per line:
'0256Q160500003503007767SENDERS NAME '.
' '.
' '.$dates.'N0000000000 '.
' '.
'0768T16050000EUR350300776700000000000000 0000000000RZTIAT22263'.
' '.
' '.
' DE RECEIVERS NAME '.
' '.
' '.
' /DE21700519950000007229 '.
' EUR00000000000123450TEST-VERWENDUNGSZWECK '.
' '.
' 00000000 '.
' 0013 '.
' 0 00'.
'0768T16050000EUR350300776700000000000000 0000000000RZTIAT22263'.
' '.
' '.
' DE SECOND RECEIVERS NAME '.
' '.
' '.
' /DE21700519950000007229 '.
' EUR00000000000234560TEST2 '.
' '.
' 00000000 '.
' 0013 '.
' 0 00'.
'0256Z000000000000357000000000000002 '.
' '.
' '.
' ';
$this->assertEquals($expected, $this->fixture->getFileContent());
}
public function testGetMetaData1()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "16050000",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Ein Test-Verwendungszweck"
));
$meta = $this->fixture->getMetaData();
$this->assertTrue($meta["sender_name"] == "SENDERS NAME");
$this->assertTrue($meta["sender_bank_code"] == "16050000");
$this->assertTrue($meta["sender_account"] == "3503007767");
$this->assertTrue($meta["sum_amounts"] == "1234.56");
$this->assertTrue($meta["count"] == "1");
$this->assertTrue(strftime("%d%m%y", $meta["date"])
== strftime("%d%m%y", time()));
}
public function testGetMetaData2()
{
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "16050000",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Ein Test-Verwendungszweck"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "16050000",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Ein Test-Verwendungszweck"
));
$this->assertTrue($this->fixture->addExchange(array(
'name' => "A Receivers Name",
'bank_code' => "16050000",
'account_number' => "DE21700519950000007229"
),
(float) 1234.56,
"Ein Test-Verwendungszweck"
));
$meta = $this->fixture->getMetaData();
$this->assertTrue($meta["sender_name"] == "SENDERS NAME");
$this->assertTrue($meta["sender_bank_code"] == "16050000");
$this->assertTrue($meta["sender_account"] == "3503007767");
$this->assertTrue($meta["sum_amounts"] == 3*1234.56);
$this->assertTrue($meta["count"] == "3");
$this->assertTrue(strftime("%d%m%y", $meta["date"])
== strftime("%d%m%y", time()));
}
}