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'],
        ]));
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc