/** * Result of checking DB credentials * * @return JsonModel */ public function indexAction() { try { $params = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY); $password = isset($params['password']) ? $params['password'] : ''; $this->dbValidator->checkDatabaseConnection($params['name'], $params['host'], $params['user'], $password); $tablePrefix = isset($params['tablePrefix']) ? $params['tablePrefix'] : ''; $this->dbValidator->checkDatabaseTablePrefix($tablePrefix); return new JsonModel(['success' => true]); } catch (\Exception $e) { return new JsonModel(['success' => false, 'error' => $e->getMessage()]); } }
/** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Table prefix length can't be more than */ public function testCheckDatabaseTablePrefixWrongLength() { $this->assertEquals( true, $this->dbValidator->checkDatabaseTablePrefix('mvbXzXzItSIr0wrZW3gqgV2UKrWiK1Mj7bkBlW72rZW3gqgV2UKrWiK1M') ); }
/** * Validate Db table prefix * * @param string $option * @return string[] */ private function validateDbPrefix($option) { $errors = []; try { $this->dbValidator->checkDatabaseTablePrefix($option); } catch (\InvalidArgumentException $exception) { $errors[] = $exception->getMessage(); } return $errors; }
/** * {@inheritdoc} */ public function validate(array $options, DeploymentConfig $deploymentConfig) { $errors = []; if (isset($options[ConfigOptionsListConstants::INPUT_KEY_DB_PREFIX])) { try { $this->dbValidator->checkDatabaseTablePrefix($options[ConfigOptionsListConstants::INPUT_KEY_DB_PREFIX]); } catch (\InvalidArgumentException $exception) { $errors[] = $exception->getMessage(); } } if (!$options[ConfigOptionsListConstants::INPUT_KEY_SKIP_DB_VALIDATION] && ($options[ConfigOptionsListConstants::INPUT_KEY_DB_NAME] !== null || $options[ConfigOptionsListConstants::INPUT_KEY_DB_HOST] !== null || $options[ConfigOptionsListConstants::INPUT_KEY_DB_USER] !== null || $options[ConfigOptionsListConstants::INPUT_KEY_DB_PASSWORD] !== null)) { try { $options = $this->getDbSettings($options, $deploymentConfig); $this->dbValidator->checkDatabaseConnection($options[ConfigOptionsListConstants::INPUT_KEY_DB_NAME], $options[ConfigOptionsListConstants::INPUT_KEY_DB_HOST], $options[ConfigOptionsListConstants::INPUT_KEY_DB_USER], $options[ConfigOptionsListConstants::INPUT_KEY_DB_PASSWORD]); } catch (\Exception $exception) { $errors[] = $exception->getMessage(); } } $errors = array_merge($errors, $this->validateSessionSave($options), $this->validateEncryptionKey($options)); return $errors; }
/** * Validates that MySQL is accessible and MySQL version is supported * * @return void */ private function assertDbAccessible() { $this->dbValidator->checkDatabaseConnection( $this->deploymentConfig->get( ConfigOptionsListConstants::CONFIG_PATH_DB_CONNECTION_DEFAULT . '/' . ConfigOptionsListConstants::KEY_NAME ), $this->deploymentConfig->get( ConfigOptionsListConstants::CONFIG_PATH_DB_CONNECTION_DEFAULT . '/' . ConfigOptionsListConstants::KEY_HOST ), $this->deploymentConfig->get( ConfigOptionsListConstants::CONFIG_PATH_DB_CONNECTION_DEFAULT . '/' . ConfigOptionsListConstants::KEY_USER ), $this->deploymentConfig->get( ConfigOptionsListConstants::CONFIG_PATH_DB_CONNECTION_DEFAULT . '/' . ConfigOptionsListConstants::KEY_PASSWORD ) ); $prefix = $this->deploymentConfig->get( ConfigOptionsListConstants::CONFIG_PATH_DB_CONNECTION_DEFAULT . '/' . ConfigOptionsListConstants::KEY_PREFIX ); if (null !== $prefix) { $this->dbValidator->checkDatabaseTablePrefix($prefix); } }
/** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Please correct the table prefix format */ public function testCheckDatabaseTablePrefixWrongFormat() { $this->assertEquals(true, $this->dbValidator->checkDatabaseTablePrefix('_wrong_format')); }