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); } }
/** * @covers Database::insert * @covers Database::selectOne */ public function testInsert() { $this->assertEquals(1, $this->db->insert('test', array('name' => 'Other test'))); $this->assertEquals(4, $this->db->lastInsertId('test', 'id')); $r1 = $this->db->selectOne('*', 'test', array('id' => 4)); $this->assertEquals('Other test', $r1['name']); $this->assertEquals(array('id', 'name'), array_keys($r1)); //Errors test $this->assertFalse(LoggerApp::hasError(), LoggerApp::getLastError()); $this->assertEquals(0, $this->db->insert('test', array('name' => 'Other test', 'id' => 1))); $this->assertTrue(LoggerApp::hasError(), 'Não gerou o erro esperado'); LoggerApp::clear(); $this->assertEquals(0, $this->db->insert('testinvalid', array('name' => 'Other test', 'xyz' => 1))); $this->assertTrue(LoggerApp::hasError(), 'Não gerou o erro esperado'); }
/** * 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()); }