Skip to content

Commit

Permalink
Adds in tests for roles variables teams and permissions.
Browse files Browse the repository at this point in the history
  • Loading branch information
typhonius committed Mar 8, 2020
1 parent 45f88bd commit 4a051e5
Show file tree
Hide file tree
Showing 11 changed files with 239 additions and 96 deletions.
17 changes: 14 additions & 3 deletions src/AcquiaCli.php
Expand Up @@ -76,6 +76,8 @@ public function __construct(
// Create and configure container.
$container = $this->getContainer($input, $output, $application, $config, $client);

$this->injectParameters($container);

$discovery = new CommandFileDiscovery();
$discovery->setSearchPattern('*Command.php');
$commandClasses = $discovery->discover(__DIR__ . '/Commands', '\AcquiaCli\Commands');
Expand All @@ -95,6 +97,11 @@ public function getContainer($input, $output, $application, $config, $client)
->withArgument('config')
->withArgument('client');

return $container;
}

public function injectParameters($container)
{
$parameterInjection = $container->get('parameterInjection');
$parameterInjection->register('AcquiaCli\CloudApi', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Connector\Client', new \AcquiaCli\Injector\AcquiaCliInjector);
Expand All @@ -116,9 +123,13 @@ public function getContainer($input, $output, $application, $config, $client)
);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Crons', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Account', new \AcquiaCli\Injector\AcquiaCliInjector);


return $container;
$parameterInjection->register('AcquiaCloudApi\Endpoints\Roles', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register(
'AcquiaCloudApi\Endpoints\Permissions',
new \AcquiaCli\Injector\AcquiaCliInjector
);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Teams', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Variables', new \AcquiaCli\Injector\AcquiaCliInjector);
}

/**
Expand Down
11 changes: 6 additions & 5 deletions src/Commands/CodeCommand.php
Expand Up @@ -7,6 +7,7 @@
use Symfony\Component\Console\Helper\Table;
use AcquiaCloudApi\Endpoints\Code;
use AcquiaCloudApi\Connector\Client;
use AcquiaCli\CloudApi;

/**
* Class CodeCommand
Expand Down Expand Up @@ -97,16 +98,16 @@ public function codeDeploy(
/**
* Switches code branch on an environment.
*
* @param string $uuid
* @param EnvironmentResponse $environment
* @param string $branch
* @param string $uuid
* @param string $environment
* @param string $branch
*
* @command code:switch
* @aliases c:s
*/
public function codeSwitch(Code $codeAdapter, $uuid, $environment, $branch)
public function codeSwitch(CloudApi $cloudapi, Code $codeAdapter, $uuid, $environment, $branch)
{
$environment = $this->cloudapiService->getEnvironment($uuid, $environment);
$environment = $cloudapi->getEnvironment($uuid, $environment);
if (!$this->confirm(
sprintf(
Expand Down
47 changes: 17 additions & 30 deletions src/Commands/TeamsCommand.php
Expand Up @@ -17,19 +17,6 @@
class TeamsCommand extends AcquiaCommand
{

protected $teamsAdapter;
protected $rolesAdapter;
protected $permissionsAdapter;

public function __construct()
{
parent::__construct();

$this->teamsAdapter = new Teams($this->cloudapi);
$this->rolesAdapter = new Roles($this->cloudapi);
$this->permissionsAdapter = new Permissions($this->cloudapi);
}

/**
* Creates a new team within an organization.
*
Expand All @@ -38,10 +25,10 @@ public function __construct()
*
* @command team:create
*/
public function teamCreate($organizationUuid, $name)
public function teamCreate(Teams $teamsAdapter, $organizationUuid, $name)
{
$this->say('Creating new team.');
$this->teamsAdapter->create($organizationUuid, $name);
$teamsAdapter->create($organizationUuid, $name);
}

/**
Expand All @@ -53,11 +40,11 @@ public function teamCreate($organizationUuid, $name)
*
* @command team:invite
*/
public function teamInvite($teamUuid, $email, $roles)
public function teamInvite(Teams $teamsAdapter, $teamUuid, $email, $roles)
{
$rolesArray = explode(',', $roles);
$this->say(sprintf('Inviting %s to team.', $email));
$this->teamsAdapter->invite($teamUuid, $email, $rolesArray);
$teamsAdapter->invite($teamUuid, $email, $rolesArray);
}

/**
Expand All @@ -69,10 +56,10 @@ public function teamInvite($teamUuid, $email, $roles)
* @command team:addapplication
* @alias team:addapp
*/
public function teamAddApplication($uuid, $teamUuid)
public function teamAddApplication(Teams $teamsAdapter, $uuid, $teamUuid)
{
$this->say("Adding application to team.");
$this->teamsAdapter->addApplication($teamUuid, $uuid);
$teamsAdapter->addApplication($teamUuid, $uuid);
}

/**
Expand All @@ -81,9 +68,9 @@ public function teamAddApplication($uuid, $teamUuid)
* @command permissions:list
* @aliases perm:list
*/
public function showPermissions()
public function showPermissions(Permissions $permissionsAdapter)
{
$permissions = $this->permissionsAdapter->get();
$permissions = $permissionsAdapter->get();

$table = new Table($this->output());
$table->setHeaders(['Name', 'Label']);
Expand Down Expand Up @@ -113,11 +100,11 @@ public function showPermissions()
*
* @command role:add
*/
public function addRole($organizationUuid, $name, $permissions, $description = null)
public function addRole(Roles $rolesAdapter, $organizationUuid, $name, $permissions, $description = null)
{
$permissionsArray = explode(',', $permissions);
$this->say(sprintf('Creating new role (%s) and adding it to organisation.', $name));
$this->rolesAdapter->create($organizationUuid, $name, $permissionsArray, $description);
$rolesAdapter->create($organizationUuid, $name, $permissionsArray, $description);
}

/**
Expand All @@ -127,11 +114,11 @@ public function addRole($organizationUuid, $name, $permissions, $description = n
*
* @command role:delete
*/
public function deleteRole($roleUuid)
public function deleteRole(Roles $rolesAdapter, $roleUuid)
{
if ($this->confirm('Are you sure you want to remove this role?')) {
$this->say('Deleting role');
$this->rolesAdapter->delete($roleUuid);
$rolesAdapter->delete($roleUuid);
}
}

Expand All @@ -144,11 +131,11 @@ public function deleteRole($roleUuid)
*
* @command role:update:permissions
*/
public function roleUpdatePermissions($roleUuid, $permissions)
public function roleUpdatePermissions(Roles $rolesAdapter, $roleUuid, $permissions)
{
$permissionsArray = explode(',', $permissions);
$this->say('Updating role permissions');
$this->rolesAdapter->update($roleUuid, $permissionsArray);
$rolesAdapter->update($roleUuid, $permissionsArray);
}

/**
Expand All @@ -158,13 +145,13 @@ public function roleUpdatePermissions($roleUuid, $permissions)
*
* @command role:list
*/
public function showRoles($organization)
public function showRoles(Roles $rolesAdapter, Permissions $permissionsAdapter, $organization)
{

$organizationUuid = $organization->uuid;
$roles = $this->rolesAdapter->getAll($organizationUuid);
$roles = $rolesAdapter->getAll($organizationUuid);

$permissions = $this->permissionsAdapter->get();
$permissions = $permissionsAdapter->get();

$roleList = array_map(function ($role) {
$this->say($role->name . ': ' . $role->uuid);
Expand Down
71 changes: 36 additions & 35 deletions src/Commands/VariablesCommand.php
Expand Up @@ -7,6 +7,7 @@
use AcquiaCloudApi\Response\EnvironmentResponse;
use AcquiaCloudApi\Endpoints\Variables;
use Symfony\Component\Console\Helper\Table;
use AcquiaCli\CloudApi;

/**
* Class VariablesCommand
Expand All @@ -15,27 +16,19 @@
class VariablesCommand extends AcquiaCommand
{

protected $variablesAdapter;

public function __construct()
{
parent::__construct();

$this->variablesAdapter = new Variables($this->cloudapi);
}

/**
* Lists variables.
*
* @param string $uuid
* @param EnvironmentResponse $environment
* @param string $uuid
* @param string $environment
*
* @command variable:list
* @aliases v:l
*/
public function variablesList($uuid, $environment)
public function variablesList(CloudApi $cloudapi, Variables $variablesAdapter, $uuid, $environment)
{
$variables = $this->variablesAdapter->getAll($environment->uuid);
$environment = $cloudapi->getEnvironment($uuid, $environment);
$variables = $variablesAdapter->getAll($environment->uuid);

$output = $this->output();
$table = new Table($output);
Expand All @@ -58,72 +51,80 @@ public function variablesList($uuid, $environment)
/**
* Gets information about a domain.
*
* @param string $uuid
* @param EnvironmentResponse $environment
* @param string $name
* @param string $uuid
* @param string $environment
* @param string $name
*
* @command variable:info
* @aliases v:i
*/
public function variableInfo($uuid, $environment, $name)
public function variableInfo(CloudApi $cloudapi, Variables $variablesAdapter, $uuid, $environment, $name)
{
$variable = $this->variablesAdapter->get($environment->uuid, $name);
$environment = $cloudapi->getEnvironment($uuid, $environment);

$variable = $variablesAdapter->get($environment->uuid, $name);
$this->say($variable->value);
}

/**
* Add a variable to an environment.
*
* @param string $uuid
* @param EnvironmentResponse $environment
* @param string $name
* @param string $value
* @param string $uuid
* @param string $environment
* @param string $name
* @param string $value
*
* @command variable:create
* @aliases variable:add,v:a
*/
public function variableCreate($uuid, $environment, $name, $value)
public function variableCreate(CloudApi $cloudapi, Variables $variablesAdapter, $uuid, $environment, $name, $value)
{
$environment = $cloudapi->getEnvironment($uuid, $environment);

$this->say(sprintf('Adding variable %s:%s to %s environment', $name, $value, $environment->label));
$response = $this->variablesAdapter->create($environment->uuid, $name, $value);
$response = $variablesAdapter->create($environment->uuid, $name, $value);
$this->waitForNotification($response);
}

/**
* Removes an environment variable from an environment.
*
* @param string $uuid
* @param EnvironmentResponse $environment
* @param string $name
* @param string $uuid
* @param string $environment
* @param string $name
*
* @command variable:delete
* @aliases variable:remove,v:d,v:r
*/
public function variableDelete($uuid, $environment, $name)
public function variableDelete(CloudApi $cloudapi, Variables $variablesAdapter, $uuid, $environment, $name)
{
$environment = $cloudapi->getEnvironment($uuid, $environment);

if ($this->confirm('Are you sure you want to remove this environment variable?')) {
$this->say(sprintf('Removing variable %s from %s environment', $name, $environment->label));
$response = $this->variablesAdapter->delete($environment->uuid, $name);
$response = $variablesAdapter->delete($environment->uuid, $name);
$this->waitForNotification($response);
}
}

/**
* Updates an environment variable on an environment.
*
* @param string $uuid
* @param EnvironmentResponse $environment
* @param string $name
* @param string $value
* @param string $uuid
* @param string $environment
* @param string $name
* @param string $value
*
* @command variable:update
* @aliases v:u
*/
public function variableUpdate($uuid, $environment, $name, $value)
public function variableUpdate(CloudApi $cloudapi, Variables $variablesAdapter, $uuid, $environment, $name, $value)
{
$environment = $cloudapi->getEnvironment($uuid, $environment);

if ($this->confirm('Are you sure you want to update this environment variable?')) {
$this->say(sprintf('Updating variable %s:%s on %s environment', $name, $value, $environment->label));
$response = $this->variablesAdapter->update($environment->uuid, $name, $value);
$response = $variablesAdapter->update($environment->uuid, $name, $value);
$this->waitForNotification($response);
}
}
Expand Down
12 changes: 12 additions & 0 deletions src/Injector/AcquiaCliInjector.php
Expand Up @@ -14,6 +14,10 @@
use AcquiaCloudApi\Endpoints\DatabaseBackups;
use AcquiaCloudApi\Endpoints\Crons;
use AcquiaCloudApi\Endpoints\Account;
use AcquiaCloudApi\Endpoints\Permissions;
use AcquiaCloudApi\Endpoints\Roles;
use AcquiaCloudApi\Endpoints\Teams;
use AcquiaCloudApi\Endpoints\Variables;

class AcquiaCliInjector implements ParameterInjector
{
Expand Down Expand Up @@ -56,6 +60,14 @@ public function get(CommandData $commandData, $interfaceName)
return new Crons($this->client);
case 'AcquiaCloudApi\Endpoints\Account':
return new Account($this->client);
case 'AcquiaCloudApi\Endpoints\Roles':
return new Roles($this->client);
case 'AcquiaCloudApi\Endpoints\Permissions':
return new Permissions($this->client);
case 'AcquiaCloudApi\Endpoints\Teams':
return new Teams($this->client);
case 'AcquiaCloudApi\Endpoints\Variables':
return new Variables($this->client);
}

return null;
Expand Down
22 changes: 0 additions & 22 deletions tests/AcquiaCliTest.php
Expand Up @@ -39,28 +39,6 @@ public function getContainer($input, $output, $application, $config, $client)
->withArgument('config')
->withArgument('client');

$parameterInjection = $container->get('parameterInjection');
$parameterInjection->register('AcquiaCli\CloudApi', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Connector\Client', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register(
'AcquiaCloudApi\Endpoints\Applications',
new \AcquiaCli\Injector\AcquiaCliInjector
);
$parameterInjection->register(
'AcquiaCloudApi\Endpoints\Environments',
new \AcquiaCli\Injector\AcquiaCliInjector
);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Databases', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Servers', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Domains', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Code', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register(
'AcquiaCloudApi\Endpoints\DatabaseBackups',
new \AcquiaCli\Injector\AcquiaCliInjector
);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Crons', new \AcquiaCli\Injector\AcquiaCliInjector);
$parameterInjection->register('AcquiaCloudApi\Endpoints\Account', new \AcquiaCli\Injector\AcquiaCliInjector);

return $container;
}
}

0 comments on commit 4a051e5

Please sign in to comment.