public function WebhookPostTest::testWebhookPost in Zoom API 8
Same name and namespace in other branches
- 2.0.x tests/src/Functional/WebhookPostTest.php \Drupal\Tests\zoomapi\Functional\WebhookPostTest::testWebhookPost()
 
Test Webhook Post with header.
File
- tests/
src/ Functional/ WebhookPostTest.php, line 80  
Class
- WebhookPostTest
 - Webhook post tests.
 
Namespace
Drupal\Tests\zoomapi\FunctionalCode
public function testWebhookPost() {
  // Create a test key.
  $key = $this
    ->createTestKey('zoomapi_webhook_test_key', 'authentication', 'config');
  // Update Zoomapi config.
  $this
    ->drupalGet(Url::fromRoute('zoomapi.settings'));
  $edit = [
    'webhook_verification_token' => 'zoomapi_webhook_test_key',
  ];
  $this
    ->drupalPostForm(NULL, $edit, 'Save configuration');
  $url = Url::fromRoute('zoomapi.webhooks')
    ->setAbsolute()
    ->toString();
  // Mock payload.
  $options = [
    'headers' => [
      'authorization' => 'taco',
    ],
    'http_errors' => FALSE,
    'json' => [
      'event' => 'meeting.started',
      'payload' => [],
    ],
  ];
  // Post to the webhook controller.
  $res = $this
    ->getHttpClient()
    ->post($url, $options);
  $this
    ->assertEquals($res
    ->getStatusCode(), 200, 'Authorization header matched. Post was successful.');
  // Fail with an incorrect authorization header.
  $options['headers']['authorization'] = 'burrito';
  $res = $this
    ->getHttpClient()
    ->post($url, $options);
  $this
    ->assertEquals($res
    ->getStatusCode(), 403, 'Authorization header did not match. Post was denied.');
  // Empty out the payload.
  $options['headers']['authorization'] = 'taco';
  unset($options['json']);
  $res = $this
    ->getHttpClient()
    ->post($url, $options);
  $this
    ->assertEquals($res
    ->getStatusCode(), 400, 'Payload was empty.');
}