Skip to content

Commit

Permalink
Request #15516 - Refactoring of tests, one class per file :D
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.php.net/repository/pear/packages/Crypt_RSA/trunk@284302 c90b9560-bf6c-de11-be94-00142212c4b1
  • Loading branch information
CloCkWeRX committed Jul 18, 2009
1 parent f02e27d commit f03185e
Show file tree
Hide file tree
Showing 4 changed files with 338 additions and 149 deletions.
4 changes: 4 additions & 0 deletions tests/AllTests.php
Expand Up @@ -8,6 +8,8 @@

require_once 'FactoryTest.php';
require_once 'DriverTest.php';
require_once 'KeyTest.php';
require_once 'KeyPairTest.php';

class Crypt_RSA_AllTests {

Expand All @@ -18,6 +20,8 @@ public static function main() {
public static function suite() {
$suite = new PHPUnit_Framework_TestSuite( "Crypt_RSA Tests");
$suite->addTestSuite('Crypt_RSA_DriverTest');
$suite->addTestSuite('Crypt_RSA_KeyTest');
$suite->addTestSuite('Crypt_RSA_KeyPairTest');
$suite->addTestSuite('Crypt_RSA_FactoryTest');
return $suite;
}
Expand Down
159 changes: 10 additions & 149 deletions tests/DriverTest.php
Expand Up @@ -62,148 +62,8 @@ public static function drivers() {
/**
* @dataProvider drivers
*/
public function testKeyLength($driver) {
$key_pair = new Crypt_RSA_KeyPair(128, $driver, 'check_error');

$public_key = $key_pair->getPublicKey();
$private_key = $key_pair->getPrivateKey();
$key_length = $key_pair->getKeyLength();

$this->assertSame(128, $key_length, "wrong result returned from Crypt_RSA_KeyPair::getKeyLength() function");
}

/**
* @dataProvider drivers
*/
public function testPEMStringParsing($driver) {
// check fromPEMString() and toPEMString() functions of Crypt_RSA_KeyPair class
$str_in = "
-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBAKSLT0KZTXYxHr6U/9GYBbnV8vxGkIleDE4aiVMRxuofOjcHDCoI
qsrVjgP78BrVqWMAAeQ9i0dXxz9zhy0+h7MCAwEAAQJBAI6OL1Yo0Uaj2doN5vDk
f5l4dfMBA7ovZAPK08zHawlsLvZTzxOQJhKquN01aIJA2wpzixcC9T2PgI6XW6jx
HkECIQDOEVpVZcE2tSnU3TwulVAC8V82akNAEH8ht6eqsEVWkwIhAMxqMc4Av7hs
ioAs1H9NvkF01xYVhyiEc4rzgVlmjp5hAiEAi53AOYnmvd1CyWFXrCwn+MZ2/xRC
Gj7TFBItvH0PjZcCIBi9kaGZPZsYp/qzclSmGCzb81xc5qrkvQdISZOEciaBAiEA
vLq0MTN4jkO2DOC4qxvKc1l4383nks1g/cljSO/y0pw=
-----END RSA PRIVATE KEY-----
";

$key_pair = Crypt_RSA_KeyPair::fromPEMString($str_in, $driver, 'check_error');

$public_key = $key_pair->getPublicKey();
$private_key = $key_pair->getPrivateKey();
$key_length = $key_pair->getKeyLength();

$this->assertSame(512, $key_length, "incorrect key length retrieved from PEM string");
}

/**
* @dataProvider drivers
*/
public function testDecryption($driver) {
// Setup
$str_in = "
-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBAKSLT0KZTXYxHr6U/9GYBbnV8vxGkIleDE4aiVMRxuofOjcHDCoI
qsrVjgP78BrVqWMAAeQ9i0dXxz9zhy0+h7MCAwEAAQJBAI6OL1Yo0Uaj2doN5vDk
f5l4dfMBA7ovZAPK08zHawlsLvZTzxOQJhKquN01aIJA2wpzixcC9T2PgI6XW6jx
HkECIQDOEVpVZcE2tSnU3TwulVAC8V82akNAEH8ht6eqsEVWkwIhAMxqMc4Av7hs
ioAs1H9NvkF01xYVhyiEc4rzgVlmjp5hAiEAi53AOYnmvd1CyWFXrCwn+MZ2/xRC
Gj7TFBItvH0PjZcCIBi9kaGZPZsYp/qzclSmGCzb81xc5qrkvQdISZOEciaBAiEA
vLq0MTN4jkO2DOC4qxvKc1l4383nks1g/cljSO/y0pw=
-----END RSA PRIVATE KEY-----
";

$key_pair = Crypt_RSA_KeyPair::fromPEMString($str_in, $driver, 'check_error');

$public_key = $key_pair->getPublicKey();
$private_key = $key_pair->getPrivateKey();

//Test
$rsa_obj = new Crypt_RSA(array(), $driver, 'check_error');

$text = 'test text';
$enc_text = $rsa_obj->encrypt($text, $public_key);
$dec_text = $rsa_obj->decrypt($enc_text, $private_key);

$this->assertSame($dec_text, $text, "decrypted text differs from encrypted text in Crypt_RSA_KeyPair::fromPEMString() check");

}

/**
* @dataProvider drivers
*/
public function testEverything($driver) {
public function testCrypt_RSA($driver) {
$errors = array();

// Setup
$str_in = "
-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBAKSLT0KZTXYxHr6U/9GYBbnV8vxGkIleDE4aiVMRxuofOjcHDCoI
qsrVjgP78BrVqWMAAeQ9i0dXxz9zhy0+h7MCAwEAAQJBAI6OL1Yo0Uaj2doN5vDk
f5l4dfMBA7ovZAPK08zHawlsLvZTzxOQJhKquN01aIJA2wpzixcC9T2PgI6XW6jx
HkECIQDOEVpVZcE2tSnU3TwulVAC8V82akNAEH8ht6eqsEVWkwIhAMxqMc4Av7hs
ioAs1H9NvkF01xYVhyiEc4rzgVlmjp5hAiEAi53AOYnmvd1CyWFXrCwn+MZ2/xRC
Gj7TFBItvH0PjZcCIBi9kaGZPZsYp/qzclSmGCzb81xc5qrkvQdISZOEciaBAiEA
vLq0MTN4jkO2DOC4qxvKc1l4383nks1g/cljSO/y0pw=
-----END RSA PRIVATE KEY-----
";

$key_pair = Crypt_RSA_KeyPair::fromPEMString($str_in, $driver, 'check_error');


$str_out = $key_pair->toPEMString();

$str_in = str_replace(array("\r", "\n"), '', $str_in);
$str_out = str_replace(array("\r", "\n"), '', $str_out);
if ($str_in != $str_out) {
$errors[] = "PEM strings handling seems to be broken";
}

// try to generate 256-bit keypair and convert it to PEM string,
// then convert this string to another keypair and compare them
$key_pair->generate(256);

$str1 = $key_pair->toPEMString();
$key_pair2 = $key_pair->fromPEMString($str1);
if (!$key_pair->isEqual($key_pair2) || !$key_pair2->isEqual($key_pair)) {
$errors[] = "RSA_KeyPair::isEqual() is broken";
}

///////////////////////////////////////////////
// test all functionality of Crypt_RSA_Key class
///////////////////////////////////////////////
$rsa_obj = new Crypt_RSA(array(), $driver, 'check_error');
$key_pair = new Crypt_RSA_KeyPair(32, $driver, 'check_error'); // extra small key pair (32-bit)

$public_key = $key_pair->getPublicKey();
$private_key = $key_pair->getPrivateKey();

// check the length of public key
if ($public_key->getKeyLength() != 32) {
$errors[] = "wrong result returned from Crypt_RSA_Key::getKeyLength() function";
}

// construct copy of $public_key
$public_key1 = new Crypt_RSA_Key($public_key->getModulus(), $public_key->getExponent(), $public_key->getKeyType(), $driver, 'check_error');

// serialize $private_key
$private_key_str = $private_key->toString();

// try to use $public_key1 for encryption and unserialized form
// $private_key_str key for decryption

$text = '1234567890';
$enc_text = $rsa_obj->encrypt($text, $public_key1);

$private_key = Crypt_RSA_Key::fromString($private_key_str, $driver, 'check_error');
$text1 = $rsa_obj->decrypt($enc_text, $private_key);

if ($text != $text1) {
$errors[] = "error in Crypt_RSA_Key class methods";
}

///////////////////////////////////////////////
// test all functionality of Crypt_RSA class
///////////////////////////////////////////////
Expand Down Expand Up @@ -276,10 +136,9 @@ public function testEverything($driver) {

$this->assertTrue(empty($errors), print_r($errors, true));



}


}


Expand All @@ -290,13 +149,15 @@ public function testEverything($driver) {


/**************************************/
function check_error(&$obj)
{
if ($obj->isError()) {
$error = $obj->getLastError();
echo "error: ", $error->getMessage(), "\n";
// var_dump($error->getBacktrace());
if (!function_exists('check_error')) {
function check_error(&$obj)
{
if ($obj->isError()) {
$error = $obj->getLastError();
echo "error: ", $error->getMessage(), "\n";
// var_dump($error->getBacktrace());

}
}
}

Expand Down

0 comments on commit f03185e

Please sign in to comment.