View source
<?php
namespace Drupal\Tests\monitoring_mail\Kernel;
use Drupal\Core\Test\AssertMailTrait;
use Drupal\monitoring\Entity\SensorConfig;
use Drupal\monitoring\Result\SensorResultInterface;
use Drupal\Tests\monitoring\Kernel\MonitoringUnitTestBase;
class MonitoringMailKernelTest extends MonitoringUnitTestBase {
use AssertMailTrait;
public static $modules = [
'dblog',
'monitoring_mail',
'automated_cron',
];
protected function setUp() {
parent::setUp();
$this
->installSchema('dblog', [
'watchdog',
]);
$this
->installConfig([
'system',
'monitoring_mail',
]);
$this
->config('system.site')
->set('name', 'Example')
->save();
\Drupal::moduleHandler()
->loadAllIncludes('install');
monitoring_install();
\Drupal::configFactory()
->getEditable('system.site')
->set('mail', 'site_mail@example.com')
->save();
\Drupal::configFactory()
->getEditable('monitoring.settings')
->set('cron_run_sensors', TRUE)
->save();
\Drupal::configFactory()
->getEditable('monitoring_mail.settings')
->set('mail', 'mail@example.com')
->save();
}
public function testTransitionMailOnSensorRuns() {
$sensor_runner = \Drupal::service('monitoring.sensor_runner');
$sensorConfig = SensorConfig::load('test_sensor_falls');
$this
->assertEmpty($this
->getMails());
$result = $sensor_runner
->runSensors([
$sensorConfig,
])[0];
$this
->assertEquals('CRITICAL', $result
->getStatus());
$this
->assertEquals(1, count($this
->getMails()));
$mails = $this
->getMails();
$this
->assertStringContainsString('test_sensor_falls', $mails[0]['headers']['Message-ID']);
$this
->assertStringContainsString(\Drupal::request()
->getHost(), $mails[0]['headers']['Message-ID']);
$this
->assertEquals('MONITORING Example <site_mail@example.com>', $mails[0]['headers']['From']);
$result = $sensor_runner
->runSensors([
$sensorConfig,
])[0];
$this
->assertEquals('CRITICAL', $result
->getStatus());
$this
->assertEquals(1, count($this
->getMails()));
$sensorConfig->thresholds['critical'] = 0;
\Drupal::configFactory()
->getEditable('monitoring_mail.settings')
->set('severities', [
SensorResultInterface::STATUS_CRITICAL,
SensorResultInterface::STATUS_WARNING,
])
->save();
$result = $sensor_runner
->runSensors([
$sensorConfig,
])[0];
$this
->assertEquals('WARNING', $result
->getStatus());
$this
->assertEquals(2, count($this
->getMails()));
$mails = $this
->getMails();
$this
->assertEquals($mails[0]['headers']['Message-ID'], $mails[1]['headers']['References']);
$sensorConfig->thresholds['warning'] = 0;
$result = $sensor_runner
->runSensors([
$sensorConfig,
])[0];
$this
->assertEquals('OK', $result
->getStatus());
$this
->assertEquals(2, count($this
->getMails()));
}
}