Skip to content

Commit

Permalink
Added ApigeeEdgeKernelTestBase as base class for Kernel testcases for…
Browse files Browse the repository at this point in the history
… Hybrid org (#981)
  • Loading branch information
shishir-intelli authored Nov 16, 2023
1 parent 647289b commit 4b31084
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@

namespace Drupal\Tests\apigee_edge_teams\Kernel\ApigeeX\Entity;

use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\apigee_edge\Kernel\ApigeeEdgeKernelTestTrait;
use Drupal\Tests\apigee_edge\Kernel\ApigeeX\ApigeeEdgeKernelTestBase;
use Drupal\Tests\apigee_mock_api_client\Traits\ApigeeMockApiClientHelperTrait;

/**
Expand All @@ -32,7 +32,7 @@
* @group apigee_edge_teams
* @group apigee_edge_teams_kernel
*/
class TeamViewBuilderTest extends KernelTestBase {
class TeamViewBuilderTest extends ApigeeEdgeKernelTestBase {

use ApigeeMockApiClientHelperTrait, ApigeeEdgeKernelTestTrait;

Expand Down Expand Up @@ -84,6 +84,7 @@ protected function setUp(): void {
$this->installSchema('user', ['users_data']);

$this->apigeeTestHelperSetup();
$this->storeToken();
$this->addApigeexOrganizationMatchedResponse();
$this->entity = $this->createApigeexTeam();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
namespace Drupal\Tests\apigee_edge_teams\Kernel\ApigeeX;

use Apigee\Edge\Api\ApigeeX\Entity\AppGroup;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\apigee_edge\Kernel\ApigeeX\ApigeeEdgeKernelTestBase;
use Drupal\Tests\apigee_edge\Traits\EntityControllerCacheUtilsTrait;

/**
Expand All @@ -31,7 +31,7 @@
* @group apigee_edge_teams
* @group apigee_edge_teams_kernel
*/
class EntityControllerCacheTest extends KernelTestBase {
class EntityControllerCacheTest extends ApigeeEdgeKernelTestBase {

use EntityControllerCacheUtilsTrait;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
use Drupal\apigee_edge_teams\Entity\TeamInvitation;
use Drupal\apigee_edge_teams\Entity\TeamInvitationInterface;
use Drupal\apigee_edge_teams\Entity\TeamRoleInterface;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\apigee_edge\Kernel\ApigeeX\ApigeeEdgeKernelTestBase;
use Drupal\Tests\apigee_mock_api_client\Traits\ApigeeMockApiClientHelperTrait;

/**
Expand All @@ -35,7 +35,7 @@
* @group apigee_edge_teams
* @group apigee_edge_teams_kernel
*/
class TeamInvitationEventsTest extends KernelTestBase {
class TeamInvitationEventsTest extends ApigeeEdgeKernelTestBase {

use ApigeeMockApiClientHelperTrait {
apigeeTestHelperSetup as baseSetUp;
Expand Down Expand Up @@ -79,6 +79,7 @@ protected function setUp(): void {

$this->baseSetUp();

$this->storeToken();
$this->addApigeexOrganizationMatchedResponse();
}

Expand Down
82 changes: 82 additions & 0 deletions tests/src/Kernel/ApigeeX/ApigeeEdgeKernelTestBase.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?php

/**
* Copyright 2023 Google Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

namespace Drupal\Tests\apigee_edge\Kernel\ApigeeX;

use Drupal\apigee_edge\OauthTokenFileStorage;
use Drupal\apigee_edge\Plugin\EdgeKeyTypeInterface;
use Drupal\KernelTests\KernelTestBase;

/**
* Base class for kernel tests.
*/
abstract class ApigeeEdgeKernelTestBase extends KernelTestBase {

/**
* {@inheritdoc}
*/
protected function setUp(): void {
// Skipping the test if instance type is Public.
$instance_type = getenv('APIGEE_EDGE_INSTANCE_TYPE');
if (!empty($instance_type) && $instance_type === EdgeKeyTypeInterface::INSTANCE_TYPE_PUBLIC) {
$this->markTestSkipped('This test suite is expecting a HYBRID instance type.');
}
parent::setUp();
}

/**
* Stores pre-configured token storage service for testing.
*/
protected function storeToken() {
// Storing the token for Appigeex Hybrid Org.
$this->testTokenData = [
'access_token' => mb_strtolower($this->randomMachineName(32)),
'token_type' => 'bearer',
'expires_in' => 300,
'refresh_token' => mb_strtolower($this->randomMachineName(32)),
'scope' => 'create',
];
$storage = $this->tokenStorage();

// Save the token.
$storage->saveToken($this->testTokenData);
}

/**
* Returns a pre-configured token storage service for testing.
*
* @param bool $rebuild
* Enforces rebuild of the container and with the the token storage
* service.
*
* @return \Drupal\apigee_edge\OauthTokenFileStorage
* The configured and initialized OAuth file token storage service.
*
* @throws \Exception
*/
private function tokenStorage(bool $rebuild = FALSE): OauthTokenFileStorage {
$config = $this->config('apigee_edge.auth');
$config->set('oauth_token_storage_location', OauthTokenFileStorage::DEFAULT_DIRECTORY)->save();
if ($rebuild) {
$this->container->get('kernel')->rebuildContainer();
}
return $this->container->get('apigee_edge.authentication.oauth_token_storage');
}

}

0 comments on commit 4b31084

Please sign in to comment.