<?php
|
/**
|
* PhpUnderControl_PhalApiMultiCryptMcrypt_Test
|
*
|
* 针对 ../../PhalApi/Crypt/MultiMcrypt.php PhalApi_Crypt_MultiMcrypt 类的PHPUnit单元测试
|
*
|
* @author: dogstar 20141211
|
*/
|
|
require_once dirname(__FILE__) . '/../test_env.php';
|
|
if (!class_exists('PhalApi_Crypt_MultiMcrypt')) {
|
require dirname(__FILE__) . '/../../PhalApi/Crypt/MultiMcrypt.php';
|
}
|
|
class PhpUnderControl_PhalApiMultiCryptMcrypt_Test extends PHPUnit_Framework_TestCase
|
{
|
public $coreMultiCryptMcrypt;
|
|
protected function setUp()
|
{
|
parent::setUp();
|
|
if (!function_exists('mcrypt_module_open')) {
|
throw new Exception('function mcrypt_module_open() not exists');
|
}
|
|
$this->coreMultiCryptMcrypt = new PhalApi_Crypt_MultiMcrypt('12345678');
|
}
|
|
protected function tearDown()
|
{
|
}
|
|
|
/**
|
* @group testEncrypt
|
*/
|
public function testEncrypt()
|
{
|
$data = 'haha~';
|
$key = '123';
|
|
$rs = $this->coreMultiCryptMcrypt->encrypt($data, $key);
|
}
|
|
/**
|
* @group testDecrypt
|
*/
|
public function testDecrypt()
|
{
|
$data = 'haha~';
|
$key = '123';
|
|
$rs = $this->coreMultiCryptMcrypt->decrypt($data, $key);
|
}
|
|
public function testMixed()
|
{
|
$data = 'haha!哈哈!';
|
$key = md5('123');
|
|
$encryptData = $this->coreMultiCryptMcrypt->encrypt($data, $key);
|
|
$decryptData = $this->coreMultiCryptMcrypt->decrypt($encryptData, $key);
|
|
$this->assertEquals($data, $decryptData);
|
}
|
|
/**
|
* @dataProvider provideComplicateData
|
*/
|
public function testWorkWithMoreComplicateData($data)
|
{
|
$key = 'phalapi';
|
|
$encryptData = $this->coreMultiCryptMcrypt->encrypt($data, $key);
|
|
$decryptData = $this->coreMultiCryptMcrypt->decrypt($encryptData, $key);
|
|
$this->assertSame($data, $decryptData);
|
}
|
|
public function provideComplicateData()
|
{
|
return array(
|
array(''),
|
array(' '),
|
array('0'),
|
array(0),
|
array(1),
|
array('12#d_'),
|
array(12345678),
|
array('来点中文行不行?'),
|
array('843435Jhe*&混合'),
|
);
|
}
|
|
/**
|
* 当无法对称解密时,返回原数据
|
*/
|
public function testIllegalData()
|
{
|
$encryptData = '';
|
|
$decryptData = $this->coreMultiCryptMcrypt->decrypt($encryptData, 'whatever');
|
|
$this->assertEquals($encryptData, $decryptData);
|
}
|
}
|