Issues (3627)

Test/EventListener/CoreSubscriberTest.php (1 issue)

1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * @copyright   2020 Mautic Contributors. All rights reserved
7
 * @author      Mautic
8
 *
9
 * @link        https://mautic.org
10
 *
11
 * @license     GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
12
 */
13
14
namespace Mautic\CoreBundle\Test\EventListener;
15
16
use Mautic\CoreBundle\Controller\MauticController;
17
use Mautic\CoreBundle\CoreEvents;
18
use Mautic\CoreBundle\EventListener\CoreSubscriber;
19
use Mautic\CoreBundle\Factory\MauticFactory;
20
use Mautic\CoreBundle\Helper\BundleHelper;
21
use Mautic\CoreBundle\Helper\CoreParametersHelper;
22
use Mautic\CoreBundle\Helper\UserHelper;
23
use Mautic\CoreBundle\Menu\MenuHelper;
24
use Mautic\CoreBundle\Service\FlashBag;
25
use Mautic\CoreBundle\Templating\Helper\AssetsHelper;
26
use Mautic\FormBundle\Entity\FormRepository;
27
use Mautic\UserBundle\Model\UserModel;
28
use PHPUnit\Framework\MockObject\MockObject;
29
use PHPUnit\Framework\TestCase;
30
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
31
use Symfony\Component\HttpFoundation\Request;
32
use Symfony\Component\HttpFoundation\RequestStack;
33
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
34
use Symfony\Component\HttpKernel\KernelEvents;
35
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
36
use Symfony\Component\Security\Http\SecurityEvents;
37
use Symfony\Component\Translation\TranslatorInterface;
38
39
class CoreSubscriberTest extends TestCase
40
{
41
    /**
42
     * @var BundleHelper|MockObject
43
     */
44
    private $bundleHelper;
45
46
    /**
47
     * @var MenuHelper|MockObject
48
     */
49
    private $menuHelper;
50
51
    /**
52
     * @var UserHelper|MockObject
53
     */
54
    private $userHelper;
55
56
    /**
57
     * @var AssetsHelper|MockObject
58
     */
59
    private $assetsHelper;
60
61
    /**
62
     * @var CoreParametersHelper|MockObject
63
     */
64
    private $coreParametersHelper;
65
66
    /**
67
     * @var MockObject|AuthorizationChecker
68
     */
69
    private $securityContext;
70
71
    /**
72
     * @var UserModel|MockObject
73
     */
74
    private $userModel;
75
76
    /**
77
     * @var MockObject|EventDispatcherInterface
78
     */
79
    private $dispatcher;
80
81
    /**
82
     * @var MockObject|TranslatorInterface
83
     */
84
    private $translator;
85
86
    /**
87
     * @var MockObject|RequestStack
88
     */
89
    private $requestStack;
90
91
    /**
92
     * @var FormRepository|MockObject
93
     */
94
    private $formRepository;
95
96
    /**
97
     * @var MauticFactory|MockObject
98
     */
99
    private $factory;
100
101
    /**
102
     * @var FlashBag|MockObject
103
     */
104
    private $flashBag;
105
106
    /**
107
     * @var CoreSubscriber
108
     */
109
    private $subscriber;
110
111
    protected function setUp(): void
112
    {
113
        $this->bundleHelper         = $this->createMock(BundleHelper::class);
114
        $this->menuHelper           = $this->createMock(MenuHelper::class);
115
        $this->userHelper           = $this->createMock(UserHelper::class);
116
        $this->assetsHelper         = $this->createMock(AssetsHelper::class);
117
        $this->coreParametersHelper = $this->createMock(CoreParametersHelper::class);
118
        $this->securityContext      = $this->createMock(AuthorizationChecker::class);
119
        $this->userModel            = $this->createMock(UserModel::class);
120
        $this->dispatcher           = $this->createMock(EventDispatcherInterface::class);
121
        $this->translator           = $this->createMock(TranslatorInterface::class);
122
        $this->requestStack         = $this->createMock(RequestStack::class);
123
124
        $this->formRepository = $this->createMock(FormRepository::class);
125
        $this->factory        = $this->createMock(MauticFactory::class);
126
        $this->flashBag       = $this->createMock(FlashBag::class);
127
128
        $this->subscriber = new CoreSubscriber(
129
            $this->bundleHelper,
130
            $this->menuHelper,
131
            $this->userHelper,
132
            $this->assetsHelper,
133
            $this->coreParametersHelper,
134
            $this->securityContext,
135
            $this->userModel,
136
            $this->dispatcher,
137
            $this->translator,
138
            $this->requestStack,
139
            $this->formRepository,
140
            $this->factory,
141
            $this->flashBag
142
        );
143
144
        parent::setUp();
145
    }
146
147
    public function testGetSubscribedEvents(): void
148
    {
149
        self::assertSame(
150
            [
151
                KernelEvents::CONTROLLER => [
152
                    ['onKernelController', 0],
153
                    ['onKernelRequestAddGlobalJS', 0],
154
                ],
155
                CoreEvents::BUILD_MENU            => ['onBuildMenu', 9999],
156
                CoreEvents::BUILD_ROUTE           => ['onBuildRoute', 0],
157
                CoreEvents::FETCH_ICONS           => ['onFetchIcons', 9999],
158
                SecurityEvents::INTERACTIVE_LOGIN => ['onSecurityInteractiveLogin', 0],
159
            ],
160
            CoreSubscriber::getSubscribedEvents()
161
        );
162
    }
163
164
    public function testOnKernelController()
165
    {
166
        $user = null;
167
168
        $this->userHelper->expects(self::once())
169
            ->method('getUser')
170
            ->willReturn($user);
171
172
        $request    = $this->createMock(Request::class);
173
        $controller = $this->getMockBuilder(MauticController::class)
0 ignored issues
show
Deprecated Code introduced by
The function PHPUnit\Framework\MockOb...ckBuilder::setMethods() has been deprecated: https://github.com/sebastianbergmann/phpunit/pull/3687 ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

173
        $controller = /** @scrutinizer ignore-deprecated */ $this->getMockBuilder(MauticController::class)

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
174
            ->setMethods(['initialize', 'setRequest', 'setFactory', 'setUser', 'setCoreParametersHelper', 'setDispatcher', 'setTranslator', 'setFlashBag'])
175
            ->getMock();
176
        $controllers = [$controller];
177
178
        $event = $this->createMock(FilterControllerEvent::class);
179
        $event->expects(self::once())
180
            ->method('getController')
181
            ->willReturn($controllers);
182
        $event->expects(self::once())
183
            ->method('getRequest')
184
            ->willReturn($request);
185
186
        $controller->expects(self::once())
187
            ->method('setRequest')
188
            ->with($request);
189
        $controller->expects(self::once())
190
            ->method('setFactory')
191
            ->with($this->factory);
192
        $controller->expects(self::once())
193
            ->method('setUser')
194
            ->with($user);
195
        $controller->expects(self::once())
196
            ->method('setCoreParametersHelper')
197
            ->with($this->coreParametersHelper);
198
        $controller->expects(self::once())
199
            ->method('setCoreParametersHelper')
200
            ->with($this->coreParametersHelper);
201
        $controller->expects(self::once())
202
            ->method('setDispatcher')
203
            ->with($this->dispatcher);
204
        $controller->expects(self::once())
205
            ->method('setTranslator')
206
            ->with($this->translator);
207
        $controller->expects(self::once())
208
            ->method('setFlashBag')
209
            ->with($this->flashBag);
210
        $controller->expects(self::once())
211
            ->method('initialize')
212
            ->with($event);
213
214
        $this->subscriber->onKernelController($event);
215
    }
216
}
217