cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/tests/src/Functional/Vpc/VpcTest.php
modules/cloud_service_providers/aws_cloud/tests/src/Functional/Vpc/VpcTest.php
<?php
namespace Drupal\Tests\aws_cloud\Functional\Vpc;
use Drupal\Tests\aws_cloud\Functional\AwsCloudTestCase;
/**
* Tests AWS Cloud VPC.
*
* @group AWS Cloud
*/
class VpcTest extends AwsCloudTestCase {
const AWS_CLOUD_VPC_REPEAT_COUNT = 3;
/**
* {@inheritdoc}
*/
protected function getPermissions() {
return [
'list aws cloud vpc',
'add aws cloud vpc',
'view any aws cloud vpc',
'edit any aws cloud vpc',
'delete any aws cloud vpc',
];
}
/**
* {@inheritdoc}
*/
protected function getMockDataTemplateVars() {
return [
'vpc_id' => 'vpc-' . $this->getRandomAwsId(),
];
}
/**
* Tests CRUD for VPC information.
*/
public function testVpc() {
$cloud_context = $this->cloudContext;
// List VPC for Amazon EC2.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc");
$this->assertResponse(200);
// Add a new Vpc.
$add = $this->createVpcTestFormData(self::AWS_CLOUD_VPC_REPEAT_COUNT);
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$this->reloadMockData();
$vpc_id = $this->latestTemplateVars['vpc_id'];
$this->addVpcMockData($add[$i], $vpc_id);
$num = $i + 1;
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/vpc/add",
$add[$i],
t('Save')
);
$this->assertResponse(200);
$this->assertText(t('The AWS Cloud VPC "@name" has been created.', ['@name' => $add[$i]['name']]));
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc");
$this->assertResponse(200);
$this->assertText($add[$i]['name']);
$add[$i]['vpc_id'] = $vpc_id;
}
// Edit a Vpc.
$edit = $this->createVpcTestFormData(self::AWS_CLOUD_VPC_REPEAT_COUNT);
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$num = $i + 1;
unset($edit[$i]['cidr_block']);
$this->modifyVpcMockData($i, $edit[$i]);
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/vpc/$num/edit",
$edit[$i],
t('Save')
);
$this->assertResponse(200);
$this->assertText(t(
'The AWS Cloud VPC "@name" has been saved.',
['@name' => $edit[$i]['name']]
));
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc");
$this->assertResponse(200);
$this->assertText($edit[$i]['name']);
}
// Update tags for empty.
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Update tags.
$this->updateTagsInMockData($num - 1, 'Vpcs', 'Name', '', FALSE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc");
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$this->assertLink($edit[$i]['name']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['vpc_id']);
}
// Delete name tags.
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Update tags.
$this->updateTagsInMockData($num - 1, 'Vpcs', 'Name', '', TRUE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc");
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['vpc_id']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['vpc_id']);
}
// Update tags.
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$num = $i + 1;
$this->updateTagsInMockData($num - 1, 'Vpcs', 'Name', $edit[$i]['name'], FALSE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc");
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['vpc_id']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$this->assertLink($edit[$i]['name']);
}
// Delete Vpc.
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
$num = $i + 1;
$this->deleteVpcMockData($i);
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc/$num/delete");
$this->assertResponse(200);
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/vpc/$num/delete",
[],
t('Delete')
);
$this->assertResponse(200);
$this->assertText(t(
'The AWS Cloud VPC "@name" has been deleted.',
['@name' => $edit[$i]['name']]
));
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/vpc");
$this->assertResponse(200);
$this->assertNoText($edit[$i]['name']);
}
}
/**
* Tests deleting VPCs with bulk operation.
*/
public function testVpcBulk() {
$cloud_context = $this->cloudContext;
for ($i = 0; $i < self::AWS_CLOUD_VPC_REPEAT_COUNT; $i++) {
// Create VPCs.
$vpcs = $this->createVpcsRandomTestFormData();
$index = 0;
$entities = [];
foreach ($vpcs as $vpc) {
$entities[] = $this->createVpcTestEntity($index++, $vpc['VpcId'], $vpc['Name'], $cloud_context);
}
$this->doTestEntityBulk('vpc', $entities);
}
}
}
