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

}

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

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