View source
<?php
namespace Drupal\Tests\apigee_edge_actions\Kernel\Plugin\RulesEvent;
use Drupal\apigee_edge\Entity\ApiProduct;
use Drupal\rules\Context\ContextConfig;
use Drupal\Tests\apigee_edge_actions\Kernel\ApigeeEdgeActionsRulesKernelTestBase;
class EdgeEntityRemoveProductEventTest extends ApigeeEdgeActionsRulesKernelTestBase {
public static $modules = [
'apigee_edge_actions',
'apigee_edge_actions_debug',
'apigee_edge',
'apigee_edge_teams',
'apigee_mock_api_client',
'dblog',
'key',
'options',
];
public function testEvent() {
$rule = $this->expressionManager
->createRule();
$rule
->addAction('apigee_edge_actions_log_message', ContextConfig::create()
->setValue('message', "Product {{ api_product_name }} was removed from app {{ developer_app.name }}.")
->process('message', 'rules_tokens'));
$config_entity = $this->storage
->create([
'id' => 'app_insert_rule',
'events' => [
[
'event_name' => 'apigee_edge_actions_entity_remove_product:developer_app',
],
],
'expression' => $rule
->getConfiguration(),
]);
$config_entity
->save();
$developer_app = $this
->createDeveloperApp();
$api_product = ApiProduct::create([
'name' => $this
->randomMachineName(),
'displayName' => $this
->getRandomGenerator()
->word(16),
'approvalType' => ApiProduct::APPROVAL_TYPE_AUTO,
]);
$this->stack
->queueMockResponse([
'api_product' => [
'product' => $api_product,
],
]);
$api_product
->save();
$this->stack
->queueMockResponse([
'api_product' => [
'product' => $api_product,
],
]);
$this
->queueDeveloperResponse($this->account);
$this
->queueDeveloperAppResponse($developer_app);
$credential_factory = \Drupal::service('apigee_edge.controller.developer_app_credential_factory');
$app_credential_controller = $credential_factory
->developerAppCredentialController($this->account
->uuid(), $developer_app
->getName());
$consumer_key = $this
->randomString();
$app_credential_controller
->addProducts($consumer_key, [
$api_product
->id(),
]);
$this->stack
->queueMockResponse([
'api_product' => [
'product' => $api_product,
],
]);
$app_credential_controller
->deleteApiProduct($consumer_key, $api_product
->id());
$this
->assertLogsContains("Event apigee_edge_actions_entity_remove_product:developer_app was dispatched.");
$this
->assertLogsContains("Product {$api_product->getName()} was removed from app {$developer_app->getName()}.");
}
}