public function testDatabase() { LoggerApp::clear(); $this->assertFalse(LoggerApp::hasError(), LoggerApp::getLastError()); $defaultDb = Factory::database(); $this->assertNotNull($defaultDb); $this->assertFalse(LoggerApp::hasError(), LoggerApp::getLastError()); $types = array('pgsql' => 'MyFrameWork\\DataBase\\PgDataBase', 'mysql' => 'MyFrameWork\\DataBase\\MyDataBase'); $this->assertTrue(is_a($defaultDb, $types[DATABASE_DRIVER]), 'Invalid class'); $this->assertEquals($defaultDb, Factory::database()); $this->assertSame($defaultDb, Factory::database()); $this->assertNull(Factory::database(array('dbname' => 'testxyz'))); $this->assertTrue(LoggerApp::hasError(), 'Conexão inválida não gerou um erro'); $this->assertNull(Factory::database(array('driver' => 'testxyz'))); $this->assertNull(Factory::database(array('driver' => 'testxyz', 'dbname' => 'test'))); $this->assertNull(Factory::database(array('driver' => 'testxyz', 'dbname' => 'test', 'user' => 'test'))); foreach ($types as $driver => $database) { $db = Factory::database(array('driver' => $driver, 'dbname' => 'xyz', 'user' => 'xyz')); $this->assertNull($db); } }
/** * testar a conexao com o banco antes de realizar a instalação */ public function _testaconexao() { \MyFrameWork\Memory\MemoryPage::addCss("css/page/painel-index.css"); //MemoryPage::add('debug', true); $porta = $_POST["driver"] == "pgsql" ? '5432' : '3306'; $params = array("driver" => $_POST["driver"], "dbname" => $_POST["banco"], "port" => $porta, "host" => $_POST["host"], "user" => $_POST["usuario"], "password" => $_POST["senha"]); $conectado = false; $db = Factory::database($params); /*@var $db \MyFrameWork\DataBase\PgDataBase */ if (is_object($db)) { $conectado = true; $status = $db->getAttribute(\PDO::ATTR_CONNECTION_STATUS); } else { $status = \MyFrameWork\LoggerApp::getLastError(); $conectado = false; } $this->pagedata["conectado"] = $conectado; $this->pagedata["status_conexao"] = mb_convert_encoding($status, "utf-8"); $this->filename = "painel_index"; return true; }
/** * @covers DataBase::delete * @covers Database::select * @covers Database::selectOne */ public function testDelete() { $this->db->select('name', 'test'); $this->assertEquals(3, $this->db->rowCount()); $this->assertEquals(1, $this->db->delete('test', array('id' => 1))); $this->assertEmpty($this->db->selectOne('name', 'test', array('id' => 1))); $this->db->select('name', 'test'); $this->assertEquals(2, $this->db->rowCount()); $result = $this->db->select('*', 'test'); $this->assertEquals(0, $this->db->delete('test', array('id' => 0))); $this->assertFalse(LoggerApp::hasError(), LoggerApp::getLastError()); $this->assertEquals(0, $this->db->delete('testinvalid', array('xyz' => 1))); $this->assertTrue(LoggerApp::hasError(), 'Não gerou o erro esperado'); //Update without where $this->assertEquals(0, $this->db->delete('test', array())); }
/** * Realiza a limpeza dos parâmetros eliminando os valores inválidos e setando os valores default */ protected function cleanParameters() { $log = Factory::log(); if (self::isPOSTRequest()) { $methods = array(RequestType::POST, RequestType::GET); } else { $methods = array(RequestType::GET); } foreach ($methods as $method) { foreach ($this->parametersMeta[$method] as $itemname => $itemdata) { if (isset($this->parametersValue[$itemname])) { $log->info('Não é possível receber o parâmetro: ' . $itemname . ' por POST/GET'); continue; } $received = filter_input(RequestType::getInternalInput($method), $itemname, FILTER_UNSAFE_RAW); $log->debug('$_' . $method . '["' . $itemname . '"]: ' . var_export($received, true)); $type = Factory::datatype($itemdata['type']); if ($type->isExpectedToBeArray()) { $received = filter_input_array(RequestType::getInternalInput($method), array($itemname => array('flags' => FILTER_REQUIRE_ARRAY))); } $cleaned = $type->sanitize($received, $itemdata['params']); //faz os filtros, verifica os tipos e tals if (!$type->isValid($cleaned, $itemdata['params'])) { //chama os metodos isValid* da biblioteca respect/Validator $this->parametersMeta[$method][$itemname]['error'] = LoggerApp::getLastError(); LoggerApp::clear(); continue; } if (is_bool($cleaned)) { $this->parametersValue[$itemname] = var_export($cleaned, true); } else { $this->parametersValue[$itemname] = $cleaned; } } } }
/** * @covers LoggerApp::clear */ public function testClear() { $this->assertEmpty(LoggerApp::getErrors()); Factory::log()->error('error1'); $this->assertNotEmpty(LoggerApp::getErrors()); Factory::log()->warn('warn1'); $this->assertNotEmpty(LoggerApp::getErrors()); LoggerApp::clear('error'); $this->assertNotEmpty(LoggerApp::getErrors()); $this->assertNotEmpty(LoggerApp::getErrors('warn')); $this->assertEmpty(LoggerApp::getErrors('error')); Factory::log()->error('error1'); LoggerApp::clear('xyz'); $this->assertNotEmpty(LoggerApp::getErrors('error')); LoggerApp::clear(); $this->assertEmpty(LoggerApp::getErrors('error')); $this->assertEmpty(LoggerApp::getErrors('warn')); $this->assertEmpty(LoggerApp::getErrors()); }