/**
  * Invoke remove data routine in each specified module
  *
  * @param OutputInterface $output
  * @param array $modules
  * @return void
  */
 public function uninstallData(OutputInterface $output, array $modules)
 {
     $uninstalls = $this->collector->collectUninstall($modules);
     $setupModel = $this->setupFactory->create();
     $resource = $this->objectManager->get('Magento\\Framework\\Module\\ModuleResource');
     foreach ($modules as $module) {
         if (isset($uninstalls[$module])) {
             $output->writeln("<info>Removing data of {$module}</info>");
             $uninstalls[$module]->uninstall($setupModel, new ModuleContext($resource->getDbVersion($module) ?: ''));
         } else {
             $output->writeln("<info>No data to clear in {$module}</info>");
         }
     }
 }
 /**
  * Validate admin user name and email.
  *
  * @param array $data
  * @return void
  * @throws \Exception
  */
 public function validate(array $data)
 {
     try {
         $dbConnection = $this->connectionFactory->create([ConfigOption::KEY_NAME => $data[ConfigOption::INPUT_KEY_DB_NAME], ConfigOption::KEY_HOST => $data[ConfigOption::INPUT_KEY_DB_HOST], ConfigOption::KEY_USER => $data[ConfigOption::INPUT_KEY_DB_USER], ConfigOption::KEY_PASSWORD => $data[ConfigOption::INPUT_KEY_DB_PASSWORD], ConfigOption::KEY_PREFIX => $data[ConfigOption::INPUT_KEY_DB_PREFIX]]);
         $userName = $data[AdminAccount::KEY_USER];
         $userEmail = $data[AdminAccount::KEY_EMAIL];
         $userTable = $dbConnection->getTableName('admin_user');
         $result = $dbConnection->fetchRow("SELECT user_id, username, email FROM {$userTable} WHERE username = :username OR email = :email", ['username' => $userName, 'email' => $userEmail]);
         $setup = $this->setupFactory->create();
         $adminAccount = $this->adminAccountFactory->create($setup, [AdminAccount::KEY_USER => $userName, AdminAccount::KEY_EMAIL => $userEmail]);
     } catch (\Exception $e) {
         return;
     }
     if (!empty($result)) {
         $adminAccount->validateUserMatches($result['username'], $result['email']);
     }
 }
 public function testCreateWithParam()
 {
     $objectManager = $this->getMockForAbstractClass('Magento\\Framework\\ObjectManagerInterface', [], '', false);
     $objectManager->expects($this->never())->method('get');
     $resource = $this->getMock('Magento\\Framework\\App\\ResourceConnection', [], [], '', false);
     $objectManagerProvider = $this->getMock('Magento\\Setup\\Model\\ObjectManagerProvider', [], [], '', false);
     $objectManagerProvider->expects($this->once())->method('get')->willReturn($objectManager);
     $factory = new SetupFactory($objectManagerProvider);
     $this->assertInstanceOf('Magento\\Setup\\Module\\Setup', $factory->create($resource));
 }
 /**
  * Creates admin account
  *
  * @param \ArrayObject|array $data
  * @return void
  */
 public function installAdminUser($data)
 {
     $this->assertDeploymentConfigExists();
     $setup = $this->setupFactory->create($this->context->getResources());
     $adminAccount = $this->adminAccountFactory->create($setup, (array)$data);
     $adminAccount->save();
 }