cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/tests/src/Functional/Vpc/SubnetTest.php
modules/cloud_service_providers/aws_cloud/tests/src/Functional/Vpc/SubnetTest.php
<?php
namespace Drupal\Tests\aws_cloud\Functional\Vpc;
use Drupal\Tests\aws_cloud\Functional\AwsCloudTestCase;
/**
* Tests AWS Cloud Subnet.
*
* @group AWS Cloud
*/
class SubnetTest extends AwsCloudTestCase {
const AWS_CLOUD_SUBNET_REPEAT_COUNT = 3;
/**
* {@inheritdoc}
*/
protected function getPermissions() {
return [
'list aws cloud subnet',
'add aws cloud subnet',
'view any aws cloud subnet',
'edit any aws cloud subnet',
'delete any aws cloud subnet',
];
}
/**
* {@inheritdoc}
*/
protected function getMockDataTemplateVars() {
return [
'subnet_id' => 'subnet-' . $this->getRandomAwsId(),
];
}
/**
* Tests CRUD for Subnet information.
*/
public function testSubnet() {
$cloud_context = $this->cloudContext;
// List Subnet for Amazon EC2.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet");
$this->assertResponse(200);
$vpc_ids = $this->updateVpcsMockData(self::AWS_CLOUD_SUBNET_REPEAT_COUNT);
// Add a new Subnet.
$add = $this->createSubnetTestFormData(self::AWS_CLOUD_SUBNET_REPEAT_COUNT, $vpc_ids);
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$this->reloadMockData();
$subnet_id = $this->latestTemplateVars['subnet_id'];
$this->addSubnetMockData($add[$i], $subnet_id);
$num = $i + 1;
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/subnet/add",
$add[$i],
t('Save')
);
$this->assertResponse(200);
$this->assertText(t('The AWS Cloud Subnet "@name" has been created.', ['@name' => $add[$i]['name']]));
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet");
$this->assertResponse(200);
$this->assertText($add[$i]['name']);
$add[$i]['subnet_id'] = $subnet_id;
}
// Edit a Subnet.
$edit = $this->createSubnetTestFormData(self::AWS_CLOUD_SUBNET_REPEAT_COUNT, $vpc_ids);
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$num = $i + 1;
unset($edit[$i]['vpc_id']);
unset($edit[$i]['cidr_block']);
$this->modifySubnetMockData($i, $edit[$i]);
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/subnet/$num/edit",
$edit[$i],
t('Save')
);
$this->assertResponse(200);
$this->assertText(t(
'The AWS Cloud Subnet "@name" has been saved.',
['@name' => $edit[$i]['name']]
));
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet");
$this->assertResponse(200);
$this->assertText($edit[$i]['name']);
}
// Update tags for empty.
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Update tags.
$this->updateTagsInMockData($num - 1, 'Subnets', 'Name', '', FALSE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet");
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$this->assertLink($edit[$i]['name']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['subnet_id']);
}
// Delete name tags.
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Update tags.
$this->updateTagsInMockData($num - 1, 'Subnets', 'Name', '', TRUE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet");
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['subnet_id']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['subnet_id']);
}
// Update tags.
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$num = $i + 1;
$this->updateTagsInMockData($num - 1, 'Subnets', 'Name', $edit[$i]['name'], FALSE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet");
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$this->assertNoLink($edit[$i]['name']);
$this->assertLink($add[$i]['subnet_id']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$this->assertLink($edit[$i]['name']);
}
// Delete Subnet.
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
$num = $i + 1;
$this->deleteSubnetMockData($i);
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet/$num/delete");
$this->assertResponse(200);
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/subnet/$num/delete",
[],
t('Delete')
);
$this->assertResponse(200);
$this->assertText(t(
'The AWS Cloud Subnet "@name" has been deleted.',
['@name' => $edit[$i]['name']]
));
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/subnet");
$this->assertResponse(200);
$this->assertNoText($edit[$i]['name']);
}
}
/**
* Tests deleting subnets with bulk operation.
*/
public function testSubnetBulk() {
$cloud_context = $this->cloudContext;
for ($i = 0; $i < self::AWS_CLOUD_SUBNET_REPEAT_COUNT; $i++) {
// Create Subnets.
$subnets = $this->createSubnetsRandomTestFormData();
$index = 0;
$entities = [];
foreach ($subnets as $subnet) {
$entities[] = $this->createSubnetTestEntity($index++, $subnet['SubnetId'], $subnet['Name'], $cloud_context);
}
$this->doTestEntityBulk('subnet', $entities);
}
}
}
