You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.7 KiB
104 lines
2.7 KiB
<?php
|
|
|
|
/*
|
|
* @copyright NetMonsters <team@netmonsters.ru>
|
|
* @link http://netmonsters.ru
|
|
* @package Majestic
|
|
* @subpackage UnitTests
|
|
* @since 2011-10-27
|
|
*
|
|
* Unit tests for Captcha class
|
|
*/
|
|
|
|
require_once dirname(__FILE__) . '/../../session/Session.php';
|
|
require_once dirname(__FILE__) . '/../../captcha/Captcha.php';
|
|
|
|
class CaptchaTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
|
|
private $captcha;
|
|
|
|
protected $width = 200;
|
|
|
|
protected $height = 70;
|
|
|
|
|
|
public function setUp()
|
|
{
|
|
$this->captcha = new Captcha();
|
|
}
|
|
|
|
/**
|
|
* @TODO: give a path to custom font as a param
|
|
*/
|
|
public function testGetImage()
|
|
{
|
|
$token = $this->captcha->getToken();
|
|
$image = $this->captcha->getImage($token);
|
|
$this->assertNotNull($image);
|
|
|
|
$my_image = $this->createBlankImage();
|
|
$this->assertNotSame($image, $my_image);
|
|
}
|
|
|
|
public function testGetImageWrongToken()
|
|
{
|
|
$token = $this->captcha->getToken();
|
|
$image = $this->captcha->getImage('tony');
|
|
$this->assertNotNull($image);
|
|
|
|
$my_image = $this->createBlankImage();
|
|
$this->assertSame($image, $my_image);
|
|
}
|
|
|
|
public function testGetImageEmptyCode()
|
|
{
|
|
$token = $this->captcha->getToken();
|
|
Session::set('_ccode', '');
|
|
$image = $this->captcha->getImage($token);
|
|
$this->assertNotNull($image);
|
|
|
|
$my_image = $this->createBlankImage();
|
|
$this->assertSame($image, $my_image);
|
|
}
|
|
|
|
public function testGetToken()
|
|
{
|
|
$token = $this->captcha->getToken();
|
|
$code = Session::get('_ccode');
|
|
$this->assertNotEmpty($token);
|
|
$this->assertNotEmpty($code);
|
|
$this->assertSame(5, strlen($code));
|
|
$this->assertSame(Session::get('_ctoken'), $token);
|
|
$this->assertSame(32, strlen($token));
|
|
}
|
|
|
|
public function testCheckCode()
|
|
{
|
|
$token = Session::get('_ctoken');
|
|
$code = Session::get('_ccode');
|
|
$this->assertFalse($this->captcha->checkCode($token . 'asd', $code));
|
|
$this->assertSame(Session::get('_ctoken'), $token);
|
|
$this->assertTrue($this->captcha->checkCode($token, $code));
|
|
$this->assertNull(Session::get('_ctoken'));
|
|
}
|
|
|
|
public function tearDown()
|
|
{
|
|
$sid = session_id();
|
|
if (!empty($sid)) {
|
|
Session::destroy();
|
|
}
|
|
}
|
|
|
|
private function createBlankImage()
|
|
{
|
|
$image = imagecreatetruecolor($this->width, $this->height);
|
|
$background = imagecolorallocate($image, 255, 255, 255);
|
|
imagefilledrectangle($image, 0, 0, $this->width, $this->height, $background);
|
|
ob_start();
|
|
imagejpeg($image, '', 100);
|
|
return ob_get_clean();
|
|
}
|
|
}
|
|
|