2011-01-18 14:25:10 +00:00
< ? php
/*
* This file is part of the Symfony package .
*
2011-03-06 11:40:06 +00:00
* ( c ) Fabien Potencier < fabien @ symfony . com >
2011-01-18 14:25:10 +00:00
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Tests\Component\HttpKernel\Profiler ;
2011-02-15 03:07:07 +00:00
use Symfony\Component\HttpKernel\Profiler\SqliteProfilerStorage ;
2011-01-18 14:25:10 +00:00
2011-02-15 03:07:07 +00:00
class SqliteProfilerStorageTest extends \PHPUnit_Framework_TestCase
2011-01-18 14:25:10 +00:00
{
protected static $dbFile ;
protected static $storage ;
public static function setUpBeforeClass ()
{
self :: $dbFile = tempnam ( sys_get_temp_dir (), 'sf2_sqlite_storage' );
if ( file_exists ( self :: $dbFile )) {
@ unlink ( self :: $dbFile );
}
2011-03-16 14:16:21 +00:00
self :: $storage = new SqliteProfilerStorage ( 'sqlite:' . self :: $dbFile );
2011-01-18 14:25:10 +00:00
}
public static function tearDownAfterClass ()
{
@ unlink ( self :: $dbFile );
}
protected function setUp ()
{
self :: $storage -> purge ();
}
public function testStore ()
{
for ( $i = 0 ; $i < 10 ; $i ++ ) {
2011-02-21 02:06:36 +00:00
self :: $storage -> write ( 'token_' . $i , '' , 'data' , '127.0.0.1' , 'http://foo.bar' , time ());
2011-01-18 14:25:10 +00:00
}
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.0.1' , 'http://foo.bar' , 20 )), 10 , '->write() stores data in the database' );
}
public function testStoreSpecialCharsInUrl ()
{
// The SQLite storage accepts special characters in URLs (Even though URLs are not
// supposed to contain them)
2011-02-21 02:06:36 +00:00
self :: $storage -> write ( 'simple_quote' , '' , 'data' , '127.0.0.1' , 'http://foo.bar/\'' , time ());
self :: $storage -> write ( 'double_quote' , '' , 'data' , '127.0.0.1' , 'http://foo.bar/"' , time ());
self :: $storage -> write ( 'backslash' , '' , 'data' , '127.0.0.1' , 'http://foo.bar/\\' , time ());
2011-03-05 12:06:17 +00:00
2011-01-18 14:25:10 +00:00
$this -> assertTrue ( false !== self :: $storage -> read ( 'simple_quote' ), '->write() accepts single quotes in URL' );
$this -> assertTrue ( false !== self :: $storage -> read ( 'double_quote' ), '->write() accepts double quotes in URL' );
$this -> assertTrue ( false !== self :: $storage -> read ( 'backslash' ), '->write() accpets backslash in URL' );
}
2011-01-18 14:41:19 +00:00
public function testStoreDuplicateToken ()
{
2011-02-21 02:06:36 +00:00
$this -> assertTrue ( true === self :: $storage -> write ( 'token' , '' , 'data' , '127.0.0.1' , 'http://foo.bar' , time ()), '->write() returns true when the token is unique' );
$this -> assertTrue ( false === self :: $storage -> write ( 'token' , '' , 'data' , '127.0.0.1' , 'http://foo.bar' , time ()), '->write() return false when the token is already present in the DB' );
2011-01-18 14:41:19 +00:00
}
2011-01-18 14:25:10 +00:00
public function testRetrieveByIp ()
{
2011-02-21 02:06:36 +00:00
self :: $storage -> write ( 'token' , '' , 'data' , '127.0.0.1' , 'http://foo.bar' , time ());
2011-01-18 14:25:10 +00:00
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.0.1' , '' , 10 )), 1 , '->find() retrieve a record by IP' );
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.%.1' , '' , 10 )), 0 , '->find() does not interpret a "%" as a wildcard in the IP' );
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0._.1' , '' , 10 )), 0 , '->find() does not interpret a "_" as a wildcard in the IP' );
}
public function testRetrieveByUrl ()
{
2011-02-21 02:06:36 +00:00
self :: $storage -> write ( 'simple_quote' , '' , 'data' , '127.0.0.1' , 'http://foo.bar/\'' , time ());
self :: $storage -> write ( 'double_quote' , '' , 'data' , '127.0.0.1' , 'http://foo.bar/"' , time ());
self :: $storage -> write ( 'backslash' , '' , 'data' , '127.0.0.1' , 'http://foo\\bar/' , time ());
self :: $storage -> write ( 'percent' , '' , 'data' , '127.0.0.1' , 'http://foo.bar/%' , time ());
self :: $storage -> write ( 'underscore' , '' , 'data' , '127.0.0.1' , 'http://foo.bar/_' , time ());
2011-01-18 14:25:10 +00:00
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.0.1' , 'http://foo.bar/\'' , 10 )), 1 , '->find() accepts single quotes in URLs' );
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.0.1' , 'http://foo.bar/"' , 10 )), 1 , '->find() accepts double quotes in URLs' );
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.0.1' , 'http://foo\\bar/' , 10 )), 1 , '->find() accepts backslash in URLs' );
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.0.1' , 'http://foo.bar/%' , 10 )), 1 , '->find() does not interpret a "%" as a wildcard in the URL' );
$this -> assertEquals ( count ( self :: $storage -> find ( '127.0.0.1' , 'http://foo.bar/_' , 10 )), 1 , '->find() does not interpret a "_" as a wlidcard in the URL' );
}
}