Skip to content

Commit 42aa0fc

Browse files
author
Sam Stevens
committed
add tests
1 parent 23335c0 commit 42aa0fc

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<?php
2+
3+
namespace Bugsnag\BugsnagBundle\Tests\Callbacks;
4+
5+
use Bugsnag\BugsnagBundle\Callbacks\UserSettingCallback;
6+
use Bugsnag\Report;
7+
use PHPUnit\Framework\TestCase;
8+
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
9+
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
10+
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
11+
use Symfony\Component\Security\Core\User\User;
12+
13+
class UserSettingCallbackTest extends TestCase
14+
{
15+
public function testUserNotSetWhenDisabled()
16+
{
17+
$tokenStorageMock = $this->getMockBuilder(TokenStorageInterface::class)
18+
->getMock();
19+
20+
$authorizationChecker = $this->getMockBuilder(AuthorizationCheckerInterface::class)
21+
->getMock();
22+
23+
$reportMock = $this->getBugsnagReportMock();
24+
$reportMock
25+
->expects($this->never())
26+
->method('setUser');
27+
28+
$callback = new UserSettingCallback($tokenStorageMock, $authorizationChecker, false);
29+
$callback->registerCallback($reportMock);
30+
}
31+
32+
public function testUserNotSetWhenServicesNotPassed()
33+
{
34+
$reportMock = $this->getBugsnagReportMock();
35+
$reportMock
36+
->expects($this->never())
37+
->method('setUser');
38+
39+
$callback = new UserSettingCallback(null, null, true);
40+
$callback->registerCallback($reportMock);
41+
}
42+
43+
public function testUserIsSetWhenLoggedIn()
44+
{
45+
$user = new User('example', 'example');
46+
47+
$tokenMock = $this->getMockBuilder(TokenInterface::class)
48+
->getMock();
49+
50+
$tokenMock
51+
->expects($this->once())
52+
->method('getUser')
53+
->willReturn($user);
54+
55+
$tokenStorageMock = $this->getMockBuilder(TokenStorageInterface::class)
56+
->getMock();
57+
58+
$tokenStorageMock
59+
->expects($this->once())
60+
->method('getToken')
61+
->willReturn($tokenMock);
62+
63+
$authorizationChecker = $this->getMockBuilder(AuthorizationCheckerInterface::class)
64+
->getMock();
65+
66+
$authorizationChecker
67+
->expects($this->once())
68+
->method('isGranted')
69+
->with('IS_AUTHENTICATED_REMEMBERED')
70+
->willReturn(true);
71+
72+
$reportMock = $this->getBugsnagReportMock();
73+
$reportMock
74+
->expects($this->once())
75+
->method('setUser')
76+
->with([
77+
'id' => $user->getUsername()
78+
]);
79+
80+
$callback = new UserSettingCallback($tokenStorageMock, $authorizationChecker, true);
81+
$callback->registerCallback($reportMock);
82+
}
83+
84+
private function getBugsnagReportMock()
85+
{
86+
return $this->getMockBuilder(Report::class)
87+
->disableOriginalConstructor()
88+
->getMock();
89+
}
90+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace Bugsnag\BugsnagBundle\Tests\DependencyInjection\Compiler;
4+
5+
use Bugsnag\BugsnagBundle\DependencyInjection\ClientFactory;
6+
use Bugsnag\BugsnagBundle\DependencyInjection\Compiler\CallbackRegisteringPass;
7+
use PHPUnit\Framework\TestCase;
8+
use Symfony\Component\DependencyInjection\ContainerBuilder;
9+
use Symfony\Component\DependencyInjection\Definition;
10+
use Symfony\Component\DependencyInjection\Reference;
11+
12+
class CallbackRegisteringPassTest extends TestCase
13+
{
14+
public function testTaggedCallbacksAreAddedToFactoryServiceDefinition()
15+
{
16+
$containerBuilder = new ContainerBuilder();
17+
18+
$factory = new Definition(ClientFactory::class);
19+
$containerBuilder->setDefinition(CallbackRegisteringPass::FACTORY_SERVICE_NAME, $factory);
20+
21+
$taggedCallbackOne = new Definition();
22+
$taggedCallbackOne->addTag(CallbackRegisteringPass::TAG_NAME);
23+
$containerBuilder->setDefinition('callback_1', $taggedCallbackOne);
24+
25+
$taggedCallbackTwo = new Definition();
26+
$taggedCallbackTwo->addTag(CallbackRegisteringPass::TAG_NAME, ['method' => 'customMethod']);
27+
$containerBuilder->setDefinition('callback_2', $taggedCallbackTwo);
28+
29+
$pass = new CallbackRegisteringPass();
30+
$pass->process($containerBuilder);
31+
32+
$this->assertSame(2, count($factory->getMethodCalls()));
33+
$this->assertSame('addCallback', $factory->getMethodCalls()[0][0]);
34+
$this->assertEquals([new Reference('callback_1'), 'registerCallback'], $factory->getMethodCalls()[0][1][0]);
35+
$this->assertSame('addCallback', $factory->getMethodCalls()[1][0]);
36+
$this->assertEquals([new Reference('callback_2'), 'customMethod'], $factory->getMethodCalls()[1][1][0]);
37+
}
38+
}

0 commit comments

Comments
 (0)