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);
    }
  }

}

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

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