MailgunAdminSettingsFormTest.php in Mailgun 8
File
tests/src/Functional/MailgunAdminSettingsFormTest.php
View source
<?php
namespace Drupal\Tests\mailgun\Functional;
use Drupal\Core\Url;
use Drupal\mailgun\MailgunHandlerInterface;
class MailgunAdminSettingsFormTest extends MailgunFunctionalTestBase {
protected static $modules = [
'mailgun',
'mailgun_test',
];
public function testSettingsFormSubmit() {
$admin_user = $this
->drupalCreateUser($this->permissions);
$this
->drupalLogin($admin_user);
$this
->drupalGet(Url::fromRoute('mailgun.admin_settings_form'));
$api_key_field = $this
->assertSession()
->elementExists('css', 'input[name="api_key"]');
$this
->assertTrue($api_key_field
->hasAttribute('required'));
$this
->assertSession()
->elementNotExists('css', 'input[name="api_endpoint"]');
$this
->submitSettingsForm([
'api_key' => 'invalid_value',
], "Couldn't connect to the Mailgun API. Please check your API settings.");
$this
->submitSettingsForm([
'api_key' => 'key-1234567890notworkingabcdefghijkl',
], "Couldn't connect to the Mailgun API. Please check your API settings.");
$this
->submitSettingsForm([
'api_key' => 'key-1234567890workingabcdefghijklmno',
], 'The configuration options have been saved.');
$field_values = [
'api_endpoint' => 'https://api.eu.mailgun.net',
'debug_mode' => TRUE,
'test_mode' => TRUE,
'use_theme' => FALSE,
'use_queue' => TRUE,
'tagging_mailkey' => TRUE,
'tracking_opens' => 'no',
'tracking_clicks' => 'yes',
];
$this
->submitSettingsForm($field_values, 'The configuration options have been saved.');
$this->mailgunConfig = $this
->config(MailgunHandlerInterface::CONFIG_NAME);
foreach ($field_values as $field_name => $field_value) {
$this
->assertEquals($field_value, $this->mailgunConfig
->get($field_name));
}
}
private function submitSettingsForm(array $values, $result_message) {
foreach ($values as $field_name => $field_value) {
$this
->getSession()
->getPage()
->fillField($field_name, $field_value);
}
$this
->getSession()
->getPage()
->pressButton('Save configuration');
$this
->assertSession()
->pageTextContains($result_message);
}
}