diff options
author | tailor <cygnus@janrain.com> | 2006-01-19 22:22:13 +0000 |
---|---|---|
committer | tailor <cygnus@janrain.com> | 2006-01-19 22:22:13 +0000 |
commit | 33f728025945eb0f03392a9141d67dd7ba019d04 (patch) | |
tree | e53ac8be1c1e90b169665f74697eb54243db73e5 /Tests/Auth/OpenID/StoreTest.php | |
parent | 78e880280a9e8aaf672499dbb75585964d362d37 (diff) | |
download | php-openid-33f728025945eb0f03392a9141d67dd7ba019d04.zip php-openid-33f728025945eb0f03392a9141d67dd7ba019d04.tar.gz php-openid-33f728025945eb0f03392a9141d67dd7ba019d04.tar.bz2 |
[project @ Updated SQL store tests to generate unique database names and added store tests to test lineup]
Diffstat (limited to 'Tests/Auth/OpenID/StoreTest.php')
-rw-r--r-- | Tests/Auth/OpenID/StoreTest.php | 90 |
1 files changed, 78 insertions, 12 deletions
diff --git a/Tests/Auth/OpenID/StoreTest.php b/Tests/Auth/OpenID/StoreTest.php index bfbf911..217f670 100644 --- a/Tests/Auth/OpenID/StoreTest.php +++ b/Tests/Auth/OpenID/StoreTest.php @@ -17,6 +17,16 @@ require_once('Auth/OpenID/Association.php'); require_once('Auth/OpenID/CryptUtil.php'); require_once('Auth/OpenID/OIDUtil.php'); +$_Auth_OpenID_db_test_host = 'dbtest'; + +function _Auth_OpenID_getTmpDbName() +{ + return sprintf("%s_%d_%s_openid_test", + php_uname('n'), + getmypid(), + strval(rand(1, time()))); +} + class Tests_Auth_OpenID_StoreTest extends PHPUnit_TestCase { function setUp() @@ -279,28 +289,74 @@ explicitly'); require_once('Auth/OpenID/Store/SQLStore.php'); require_once('DB.php'); + global $_Auth_OpenID_db_test_host; + + $temp_db_name = _Auth_OpenID_getTmpDbName(); + $dsn = array( 'phptype' => 'pgsql', 'username' => 'openid_test', 'password' => '', - 'hostspec' => 'dbtest.janrain.com', - 'database' => 'openid_test', + 'hostspec' => $_Auth_OpenID_db_test_host, + 'database' => 'template1' ); + $template_db =& DB::connect($dsn); + + if (PEAR::isError($template_db)) { + $this->fail("PostgreSQL template1 database connection failed: " . + $template_db->getMessage()); + return; + } + + // Try to create the test database. + $result = $template_db->query(sprintf("CREATE DATABASE %s", + $temp_db_name)); + + if (PEAR::isError($result)) { + $this->fail("Temporary database creation failed ". + "('$temp_db_name'): " . $result->getMessage()); + return; + } + + // Disconnect from template1 and reconnect to the temporary + // testing database. + $dsn['database'] = $temp_db_name; $db =& DB::connect($dsn); if (PEAR::isError($db)) { - $this->fail("PostgreSQL database connection failed"); + $this->fail("Temporary database connection failed " . + " ('$temp_db_name'): " . $db->getMessage()); return; } $store =& new Auth_OpenID_PostgreSQLStore($db); $store->createTables(); - // Once unique database names are used, this won't be - // necessary. - $store->reset(); $this->_testStore($store); $this->_testNonce($store); + + $db->disconnect(); + + // Connect to template1 again so we can drop the temporary + // database. + $dsn['database'] = 'template1'; + $template_db =& DB::connect($dsn); + + if (PEAR::isError($template_db)) { + $this->fail("Template database connection (to drop " . + "temporary database) failed: " . + $template_db->getMessage()); + return; + } + + $result = $template_db->query(sprintf("DROP DATABASE %s", + $temp_db_name)); + + if (PEAR::isError($result)) { + $this->fail("Dropping temporary database failed: " . + $result->getMessage()); + return; + } } function test_sqlitestore() @@ -336,11 +392,13 @@ explicitly'); require_once('Auth/OpenID/Store/SQLStore.php'); require_once('DB.php'); + global $_Auth_OpenID_db_test_host; + $dsn = array( 'phptype' => 'mysql', 'username' => 'openid_test', 'password' => '', - 'hostspec' => 'dbtest.janrain.com' + 'hostspec' => $_Auth_OpenID_db_test_host ); $db =& DB::connect($dsn); @@ -351,16 +409,24 @@ explicitly'); return; } - $db->query("CREATE DATABASE openid_test"); - $db->query("USE openid_test"); + $temp_db_name = _Auth_OpenID_getTmpDbName(); + + $result = $db->query("CREATE DATABASE $temp_db_name"); + + if (PEAR::isError($result)) { + $this->fail("Error creating MySQL temporary database: " . + $result->getMessage()); + return; + } + + $db->query("USE $temp_db_name"); $store =& new Auth_OpenID_MySQLStore($db); $store->createTables(); - // Once unique database names are used, this won't be - // necessary. - $store->reset(); $this->_testStore($store); $this->_testNonce($store); + + $db->query("DROP DATABASE $temp_db_name"); } } |