cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/tests/src/Functional/Ec2/ElasticIpTest.php
modules/cloud_service_providers/aws_cloud/tests/src/Functional/Ec2/ElasticIpTest.php
<?php
namespace Drupal\Tests\aws_cloud\Functional\Ec2;
use Drupal\Tests\aws_cloud\Functional\AwsCloudTestCase;
use Drupal\Tests\aws_cloud\Functional\Utils;
/**
* Tests AWS Cloud Elastic IP.
*
* @group AWS Cloud
*/
class ElasticIpTest extends AwsCloudTestCase {
const AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT = 3;
/**
* {@inheritdoc}
*/
protected function getPermissions() {
return [
'list aws cloud elastic ip',
'add aws cloud elastic ip',
'view any aws cloud elastic ip',
'edit any aws cloud elastic ip',
'delete any aws cloud elastic ip',
];
}
/**
* {@inheritdoc}
*/
protected function getMockDataTemplateVars() {
return [
// For Elastic IP.
'public_ip' => Utils::getRandomPublicIp(),
'allocation_id' => 'eipalloc-' . $this->getRandomAwsId(),
'domain' => 'vpc',
// For Instance.
'instance_id' => 'i-' . $this->getRandomAwsId(),
// For NetworkInterface.
'network_interface_id' => 'eni-' . $this->getRandomAwsId(),
'vpc_id' => 'vpc-' . $this->getRandomAwsId(),
'description' => 'description-' . $this->random->name(64, TRUE),
'subnet_id' => 'subnet_id-' . $this->getRandomAwsId(),
'is_primary' => TRUE,
'primary_private_ip' => Utils::getRandomPrivateIp(),
'secondary_private_ip' => Utils::getRandomPrivateIp(),
'attachment_id' => 'attachment-' . $this->getRandomAwsId(),
];
}
/**
* Tests CRUD for Elastic IP information.
*/
public function testElasticIp() {
$cloud_context = $this->cloudContext;
// List Elastic IP for Amazon EC2.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$this->assertResponse(200, t('List | HTTP 200: Elastic IP'));
$this->assertNoText(t('Notice'), t('Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Make sure w/o Warnings'));
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip/add");
// Add a new Elastic IP.
$add = $this->createElasticIpTestFormData(self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT);
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->reloadMockData();
$domain = $this->getRandomDomain();
$this->updateDomainMockData($domain);
$num = $i + 1;
$this->drupalPostForm("/clouds/aws_cloud/$cloud_context/elastic_ip/add",
$add[$i],
t('Save'));
$this->assertResponse(200, t('Add | HTTP 200: The new AWS Cloud Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Add | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Add | Make sure w/o Warnings'));
$this->assertText($add[$i]['name'], t('Elastic IP: @name', ['@name' => $add[$i]['name']]));
$this->assertText(
t('The AWS Cloud Elastic IP "@name', [
'@name' => $add[$i]['name'],
]),
t('Confirm Message: The AWS Cloud Elastic IP "@name" has been created.', [
'@name' => $add[$i]['name'],
])
);
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip/$num");
$this->assertResponse(200, t('Add | View | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Add | View | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Add | View | Make sure w/o Warnings'));
// Make sure domain is updated.
$this->assertText($domain, t('Add | View | Make sure domain: @domain', ['@domain' => $domain]));
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$this->assertResponse(200, t('Add | List | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Add | List | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Add | List | Make sure w/o Warnings'));
for ($j = 0; $j < $i + 1; $j++) {
$this->assertText(
$add[$j]['name'],
t('Add | List | Make sure w/ Listing: @name', [
'@name' => $add[$i]['name'],
])
);
}
}
// Edit an Elastic IP information.
$edit = $this->createElasticIpTestFormData(self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT);
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
unset($edit[$i]['domain']);
$this->drupalPostForm("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/edit",
$edit[$i],
t('Save'));
$this->assertResponse(200, t('Edit | HTTP 200: The new AWS Cloud Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Edit | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Edit | Make sure w/o Warnings'));
$this->assertText(
t('The AWS Cloud Elastic IP "@name" has been saved.', [
'@name' => $edit[$i]['name'],
]),
t('Confirm Message: Edit | The AWS Cloud Elastic IP "@name" has been saved.', [
'@name' => $edit[$i]['name'],
])
);
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$this->assertResponse(200, t('Edit | List | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Edit | List | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Edit | List | Make sure w/o Warnings'));
for ($j = 0; $j < $i + 1; $j++) {
$this->assertText($edit[$j]['name'],
t('Make sure w/ Listing: @name', [
'@name' => $edit[$j]['name'],
]));
}
}
// Delete Elastic IP
// 3 times.
$this->updateInstanceMockData();
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/delete");
$this->assertResponse(200, t('Delete | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Delete | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Delete | Make sure w/o Warnings'));
$this->drupalPostForm("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/delete",
[],
t('Delete'));
$this->assertResponse(200, t('Delete | HTTP 200: The Cloud Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Delete | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Delete | Make sure w/o Warnings'));
$this->assertText($edit[$i]['name'], t('Name: @name', ['@name' => $edit[$i]['name']]));
$this->assertText(
t('The AWS Cloud Elastic IP "@name" has been deleted.', [
'@name' => $edit[$i]['name'],
]),
t('Confirm Message: Delete | The AWS Cloud Elastic IP "@name" has been deleted.', [
'@name' => $edit[$i]['name'],
])
);
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$this->assertResponse(200, t('Delete | List | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Delete | List | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Delete | List | Make sure w/o Warnings'));
for ($j = 0; $j < $i + 1; $j++) {
$this->assertNoText($edit[$j]['name'],
t('Delete | List | Make sure w/ Listing: @name', [
'@name' => $edit[$j]['name'],
]));
}
}
}
/**
* Get Random domain.
*
* @return string
* a random domain.
*/
private function getRandomDomain() {
$domains = ['standard', 'vpc'];
return $domains[array_rand($domains)];
}
/**
* Tests deleting Elastic IPs with bulk delete operation.
*/
public function testElasticIpBulkDelete() {
$cloud_context = $this->cloudContext;
$this->deleteAllElasticIpInMockData();
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
// Create Elastic IPs.
$elastic_ips = $this->createElasticIpRandomTestFormData();
$elastic_ips_count = count($elastic_ips);
$network_interface_data = $this->createNetworkInterfaceTestFormData($elastic_ips_count, TRUE);
for ($j = 0; $j < $elastic_ips_count; $j++) {
$elastic_ip = $elastic_ips[$j];
// Setup a test instance.
$instance_id = 'i-' . $this->getRandomAwsId();
$instance = $this->createInstanceTestEntity($j, $elastic_ip['PublicIp'], $instance_id);
$instance_id = $this->addInstanceMockData($instance->getName(), $instance->getKeyPairName());
// Setup a test network interface.
$this->createNetworkInterfaceTestEntity($j, '', '', $instance_id);
$this->addNetworkInterfaceMockData($network_interface_data[$j]);
// Setup a test Elastic IP.
$this->createElasticIpTestEntity($j, $elastic_ip['Name'], $elastic_ip['PublicIp'], $cloud_context);
$this->addElasticIpMockData($elastic_ip['Name'], $elastic_ip['PublicIp'], 'standard');
}
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$data = [];
$data['action'] = 'aws_cloud_elastic_ip_delete_action';
$checkboxes = $this->cssSelect('input[type=checkbox]');
foreach ($checkboxes as $checkbox) {
if ($checkbox->getAttribute('name') == NULL) {
continue;
}
$data[$checkbox->getAttribute('name')] = $checkbox->getAttribute('value');
}
// Confirm.
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/elastic_ip",
$data,
t('Apply to selected items')
);
$this->assertResponse(200);
// Al lower case of Elastic IP is correct since the original @label linked
// \Drupal\core\Entity\EntityType::getSingularLabel makes the string
// lowercase.
$message = 'Are you sure you want to delete these aws cloud elastic ip entities?';
if ($elastic_ips_count == 1) {
$message = 'Are you sure you want to delete this aws cloud elastic ip?';
}
$this->assertText($message);
foreach ($elastic_ips as $elastic_ip) {
$this->assertText($elastic_ip['Name']);
}
// Delete.
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/elastic_ip/delete_multiple",
[],
t('Delete')
);
$this->assertResponse(200);
if ($elastic_ips_count == 1) {
$this->assertText("Deleted $elastic_ips_count Elastic IP.");
}
else {
$this->assertText("Deleted $elastic_ips_count Elastic IPs.");
}
foreach ($elastic_ips as $elastic_ip) {
$name = $elastic_ip['Name'];
$this->assertText("The AWS Cloud Elastic IP \"$name\" has been deleted.");
$this->deleteFirstElasticIpMockData();
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
$this->assertText(t('Updated Elastic IPs.'));
foreach ($elastic_ips as $elastic_ip) {
$name = $elastic_ip['Name'];
$this->assertNoText($name);
}
}
}
/**
* Tests disassociating Elastic IPs with bulk operation.
*/
public function testElasticIpBulkDisassociate() {
$cloud_context = $this->cloudContext;
$this->deleteFirstElasticIpMockData();
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
// Create Elastic IPs.
$elastic_ips = $this->createElasticIpRandomTestFormData();
$elastic_ips_count = count($elastic_ips);
$network_interface_data = $this->createNetworkInterfaceTestFormData($elastic_ips_count, TRUE);
for ($j = 0; $j < $elastic_ips_count; $j++) {
$elastic_ip = $elastic_ips[$j];
// Setup a test instance.
$instance_id = 'i-' . $this->getRandomAwsId();
$instance = $this->createInstanceTestEntity($j, $elastic_ip['PublicIp'], $instance_id);
$this->addInstanceMockData($instance->getName(), $instance->getKeyPairName());
// Setup a test network interface.
$this->createNetworkInterfaceTestEntity($j, '', '', $instance_id);
$this->addNetworkInterfaceMockData($network_interface_data[$j]);
// Setup a test Elastic IP.
// Associate EIP to the instance.
$elastic_ips[$j]['InstanceId'] = $instance_id;
$eip = $this->createElasticIpTestEntity($j, $elastic_ip['Name'], $elastic_ip['PublicIp'], $cloud_context);
$this->addElasticIpMockData($elastic_ip['Name'], $elastic_ip['PublicIp'], 'standard');
// Associate Elastic IP in mock data.
$association_id = $this->random->name(8, TRUE);
$eip->setAssociationId($association_id);
$eip->setAllocationId($elastic_ip['Name']);
$eip->setInstanceId($instance_id);
$eip->save();
$this->updateElasticIpMockData($j, $elastic_ip['Name'], $association_id, $instance_id);
}
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$data = [];
$data['action'] = 'aws_cloud_elastic_ip_disassociate_action';
$checkboxes = $this->cssSelect('input[type=checkbox]');
foreach ($checkboxes as $checkbox) {
if ($checkbox->getAttribute('name') == NULL) {
continue;
}
$data[$checkbox->getAttribute('name')] = $checkbox->getAttribute('value');
}
// Confirm.
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/elastic_ip",
$data,
t('Apply to selected items')
);
$this->assertResponse(200);
$message = 'Are you sure you want to disassociate these aws cloud elastic ip entities?';
if ($elastic_ips_count == 1) {
$message = 'Are you sure you want to disassociate this aws cloud elastic ip?';
}
$this->assertText($message);
foreach ($elastic_ips as $elastic_ip) {
$this->assertText($elastic_ip['Name']);
}
// Disassociate.
$this->drupalPostForm(
"/clouds/aws_cloud/$cloud_context/elastic_ip/disassociate_multiple",
[],
t('Disassociate')
);
$this->assertResponse(200);
if ($elastic_ips_count == 1) {
$this->assertText("Disassociated $elastic_ips_count Elastic IP.");
}
else {
$this->assertText("Disassociated $elastic_ips_count Elastic IPs.");
}
for ($j = 0; $j < $elastic_ips_count; $j++) {
$elastic_ip = $elastic_ips[$j];
$name = $elastic_ip['Name'];
$this->assertText("The AWS Cloud Elastic IP \"$name\" has been disassociated.");
$this->updateElasticIpMockData($j, $elastic_ip['Name'], NULL, NULL);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
$this->assertText(t('Updated Elastic IPs.'));
// Make sure if disassociated from an instance.
foreach ($elastic_ips as $elastic_ip) {
$this->assertNoText($elastic_ip['InstanceId']);
}
}
}
/**
* Test updating Elastic IPs.
*/
public function testUpdateElasticIpList() {
$cloud_context = $this->cloudContext;
$this->deleteAllElasticIpInMockData();
// Add a new Elastic IP.
$add = $this->createElasticIpTestFormData(self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT);
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
$add[$i]['public_ip'] = Utils::getRandomPublicIp();
$this->addElasticIpMockData($add[$i]['name'], $add[$i]['public_ip'], $add[$i]['domain']);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$this->assertResponse(200, t('Edit | List | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Edit | List | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Edit | List | Make sure w/o Warnings'));
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertNoText($add[$i]['name'],
t('Edit | List | Make sure w/ Listing: @name', [
'@name' => $add[$i]['name'],
]));
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
$this->assertText(t('Updated Elastic IPs.'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertText($add[$i]['name'],
t('Edit | List | Make sure w/ Listing: @name', [
'@name' => $add[$i]['name'],
]));
}
// Make sure detailed and edit view.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Confirm the detailed view.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip/$num");
$this->assertLink(t('Edit'));
$this->assertLinkByHref("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/edit");
$this->assertLink(t('Associate Elastic IP'));
$this->assertLinkByHref("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/associate");
$this->assertLink(t('Delete'));
$this->assertLinkByHref("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/delete");
$this->assertLink(t('List AWS Cloud Elastic IPs'));
// Click 'Refresh'.
$this->clickLink(t('List AWS Cloud Elastic IPs'));
$this->assertResponse(200, t('Edit | List | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Edit | List | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Edit | List | Make sure w/o Warnings'));
// Confirm the edit view.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/edit");
$this->assertNoLink(t('Edit'));
$this->assertLink(t('Associate Elastic IP'));
$this->assertLinkByHref("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/associate");
$this->assertLink(t('Delete'));
$this->assertLinkByHref("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/delete");
}
// Edit Elastic IP information.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Setup a test instance.
$instance_id = 'i-' . $this->getRandomAwsId();
// Change Elastic IP Name in mock data.
$add[$i]['name'] = sprintf('eip-entity #%d - %s - %s', $i + 1, date('Y/m/d H:i:s'), $this->random->name(32, TRUE));
$add[$i]['association_id'] = $this->random->name(8, TRUE);
$this->updateElasticIpMockData($i, $add[$i]['name'], $add[$i]['association_id'], $instance_id);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$this->assertResponse(200, t('Edit | List | HTTP 200: Elastic IP #@num', ['@num' => $num]));
$this->assertNoText(t('Notice'), t('Edit | List | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Edit | List | Make sure w/o Warnings'));
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertNoText($add[$i]['name'],
t('Edit | List | Make sure w/ Listing: @name', [
'@name' => $add[$i]['name'],
]));
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
$this->assertText(t('Updated Elastic IPs.'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertText($add[$i]['name'],
t('Edit | List | Make sure w/ Listing: @name', [
'@name' => $add[$i]['name'],
]));
}
// Make sure detailed and edit view.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Confirm the detailed view.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip/$num");
$this->assertLink(t('Disassociate'));
// Confirm the edit view.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/edit");
$this->assertLink(t('Disassociate Elastic IP'));
$this->assertLinkByHref("/clouds/aws_cloud/$cloud_context/elastic_ip/$num/disassociate");
}
// Update Elastic IP tags.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Update tags.
$add[$i]['tags_name'] = $this->getRandomAwsId();
$this->updateTagsInMockData($num - 1, 'Addresses', 'Name', $add[$i]['tags_name'], FALSE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertNoLink($add[$i]['tags_name']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertLink($add[$i]['tags_name']);
}
// Update Elastic IP tags for empty.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Update tags.
$this->updateTagsInMockData($num - 1, 'Addresses', 'Name', '', FALSE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertLink($add[$i]['tags_name']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertNoLink($add[$i]['tags_name']);
$this->assertLink($add[$i]['public_ip']);
}
// Delete Elastic IP tags.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$num = $i + 1;
// Update tags.
$this->updateTagsInMockData($num - 1, 'Addresses', 'Name', '', TRUE);
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertNoLink($add[$i]['tags_name']);
$this->assertLink($add[$i]['public_ip']);
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertNoLink($add[$i]['tags_name']);
$this->assertLink($add[$i]['public_ip']);
}
// Delete Elastic IP in mock data.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->deleteFirstElasticIpMockData();
}
// Make sure listing.
$this->drupalGet("/clouds/aws_cloud/$cloud_context/elastic_ip");
$this->assertResponse(200, t('Edit | List | HTTP 200: Elastic IP #@num', ['@num' => $num + 1]));
$this->assertNoText(t('Notice'), t('Edit | List | Make sure w/o Notice'));
$this->assertNoText(t('warning'), t('Edit | List | Make sure w/o Warnings'));
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertText($add[$i]['name'],
t('Edit | List | Make sure w/ Listing: @name', [
'@name' => $add[$i]['name'],
]));
}
// Click 'Refresh'.
$this->clickLink(t('Refresh'));
$this->assertText(t('Updated Elastic IPs.'));
// Make sure listing.
for ($i = 0; $i < self::AWS_CLOUD_ELASTIC_IP_REPEAT_COUNT; $i++) {
$this->assertNoText($add[$i]['name'],
t('Edit | List | Make sure w/ Listing: @name', [
'@name' => $add[$i]['name'],
]));
}
}
}
