public function testDatabaseOps()
{
// ROOT Table creation
$client = new PhpOrient('localhost', 2424);
$client->setSessionToken(true);
$clusterID = $client->connect('root', 'root');
if ($client->dbExists('new_test_db_2')) {
$client->dbDrop('new_test_db_2', PhpOrient::STORAGE_TYPE_MEMORY);
}
$client->dbCreate('new_test_db_2', PhpOrient::STORAGE_TYPE_MEMORY);
$this->assertNotEmpty($clusterID);
$this->assertNotEmpty($client->getSessionToken());
$this->assertEmpty($this->client->getSessionToken());
$this->client->setSessionToken(true);
$this->client->dbOpen('new_test_db_2', 'admin', 'admin');
$admin_Token = $this->client->getSessionToken();
$c = $this->client->command("Create class test_class extends V");
$rec = (new Record())->setOClass('test_class')->setOData([true])->setRid(new ID(-1, -1));
$rec = $this->client->recordCreate($rec);
$rec1 = $this->client->recordLoad($rec->getRid());
$rec2 = $this->client->query("select from {$rec->getRid()}");
$this->assertEquals($rec1, $rec2);
// useful?? they are empty
//renew the token and connect to new database as user
$this->client->setSessionToken(true);
$this->client->dbOpen('new_test_db_2', 'admin', 'admin');
$new_token = $this->client->getSessionToken();
$this->assertNotEquals($admin_Token, $new_token);
$GLOBALS['old_db_token'] = $new_token;
$rec = (new Record())->setOClass('test_class')->setOData([true])->setRid(new ID(-1, -1));
$rec = $this->client->recordCreate($rec);
$rec2 = $this->client->query("select from {$rec->getRid()}");
$this->assertEquals($rec, $rec2[0]);
$this->client->setSessionToken($admin_Token);
//Not valid token to perform database ops
$this->setExpectedException('\\PhpOrient\\Exceptions\\PhpOrientException');
$this->client->dbDrop('new_test_db_2');
}