Files
faveo/vendor/bugsnag/bugsnag/tests/Bugsnag/NotificationTest.php
2016-01-04 18:05:45 +05:30

132 lines
4.8 KiB
PHP

<?php
require_once 'Bugsnag_TestCase.php';
class NotificationTest extends Bugsnag_TestCase
{
/** @var Bugsnag_Configuration */
protected $config;
/** @var Bugsnag_Diagnostics */
protected $diagnostics;
/** @var Bugsnag_Notification|PHPUnit_Framework_MockObject_MockObject */
protected $notification;
protected function setUp()
{
$this->config = new Bugsnag_Configuration();
$this->config->apiKey = "6015a72ff14038114c3d12623dfb018f";
$this->config->beforeNotifyFunction = "before_notify_skip_error";
$this->diagnostics = new Bugsnag_Diagnostics($this->config);
$this->notification = $this->getMockBuilder('Bugsnag_Notification')
->setMethods(array("postJSON"))
->setConstructorArgs(array($this->config))
->getMock();
}
public function testNotification()
{
// Create a mock notification object
$this->notification = $this->getMockBuilder('Bugsnag_Notification')
->setMethods(array("postJSON"))
->setConstructorArgs(array($this->config))
->getMock();
// Expect postJSON to be called
$this->notification->expects($this->once())
->method("postJSON")
->with($this->equalTo("https://notify.bugsnag.com"),
$this->anything());
// Add an error to the notification and deliver it
$this->notification->addError($this->getError());
$this->notification->deliver();
}
public function testBeforeNotifySkipsError()
{
$this->notification->expects($this->never())
->method("postJSON");
$this->notification->addError($this->getError("SkipMe", "Message"));
$this->notification->deliver();
}
/**
* Test for ensuring that the addError method calls shouldNotify
*
* If shouldNotify returns false, the error should not be added
*/
public function testAddErrorChecksShouldNotifyFalse()
{
$config = $this->getMockBuilder('Bugsnag_Configuration')
->setMethods(array("shouldNotify"))
->getMock();
$config->expects($this->once())
->method('shouldNotify')
->will($this->returnValue(false));
/** @var Bugsnag_Notification $notification */
$notification = $this->getMockBuilder('Bugsnag_Notification')
->setMethods(array("postJSON"))
->setConstructorArgs(array($config))
->getMock();
$this->assertFalse($notification->addError($this->getError()));
}
/**
* Test for ensuring that the deliver method calls shouldNotify
*
* If shouldNotify returns false, the error should not be sent
*/
public function testDeliverChecksShouldNotify()
{
$config = $this->getMockBuilder('Bugsnag_Configuration')
->setMethods(array("shouldNotify"))
->getMock();
$config->expects($this->once())
->method('shouldNotify')
->will($this->returnValue(false));
/** @var Bugsnag_Notification|PHPUnit_Framework_MockObject_MockObject $notification */
$notification = $this->getMockBuilder('Bugsnag_Notification')
->setMethods(array("postJSON"))
->setConstructorArgs(array($config))
->getMock();
$notification->expects($this->never())
->method("postJSON");
$notification->addError($this->getError());
$notification->deliver();
}
public function testNoEnvironmentByDefault()
{
$_ENV["SOMETHING"] = "blah";
$notification = new Bugsnag_Notification($this->config);
$notification->addError($this->getError());
$notificationArray = $notification->toArray();
$this->assertArrayNotHasKey("Environment", $notificationArray["events"][0]["metaData"]);
}
public function testEnvironmentPresentWhenRequested()
{
$_ENV["SOMETHING"] = "blah";
$this->config->sendEnvironment = true;
$notification = new Bugsnag_Notification($this->config);
$notification->addError($this->getError());
$notificationArray = $notification->toArray();
$this->assertEquals($notificationArray["events"][0]["metaData"]["Environment"]["SOMETHING"], "blah");
}
}
function before_notify_skip_error($error)
{
return $error->name != "SkipMe";
}