/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $availableDrivers = ['mysql', 'sqlite', 'pgsql']; if (null !== ($driver = $input->getArgument('driver'))) { if (!in_array($driver, $availableDrivers)) { $output->writeln(sprintf('Driver "%s" is not available.', $driver)); $driver = null; } } if (null === $driver) { $questionHelper = new QuestionHelper(); $driver = $questionHelper->ask($input, $output, new ChoiceQuestion('Which database driver do you use ?', $availableDrivers)); } $aclSchema = new AclSchema(['permissions_table_name' => $input->getOption('permissions_table_name'), 'requester_column_length' => $input->getOption('requester_column_length'), 'resource_column_length' => $input->getOption('resource_column_length')]); $output->writeln('Here is the "create query" for <comment>' . $driver . '</comment>:' . PHP_EOL); $output->writeln('<info>' . $aclSchema->getCreateQuery('sqlite') . '</info>' . PHP_EOL); }
protected function setUp() { if (!in_array('sqlite', PDO::getAvailableDrivers())) { $this->markTestSkipped('This test requires SQLite support in your environment.'); } $this->aclSchema = new AclSchema(); $this->pdo = new PDO('sqlite:' . self::SQLITE_PATH, null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); try { $this->pdo->prepare('DROP TABLE acl_permissions')->execute(); } catch (\PDOException $e) { } $create = $this->aclSchema->getCreateQuery('sqlite'); $this->pdo->prepare($create)->execute(); $this->aliceRequester = new Requester('alice'); $this->bobRequester = new Requester('bob'); $this->malloryRequester = new Requester('mallory'); $this->fooResource = new Resource('foo'); $this->barResource = new Resource('bar'); if ($this->pdo->query('SELECT COUNT(*) FROM acl_permissions')->fetchColumn() > 0) { throw new \Exception('sqlite database must be reset before each test'); } }