1111
1212use OxidEsales \Eshop \Core \Config ;
1313use OxidEsales \Eshop \Core \Registry ;
14+ use OxidEsales \Eshop \Core \Request ;
1415use OxidEsales \Eshop \Core \Session ;
1516use OxidEsales \EshopCommunity \Application \Controller \FrontendController ;
1617use OxidEsales \EshopCommunity \Internal \Transition \ShopEvents \ViewRenderedEvent ;
@@ -41,6 +42,10 @@ public function testOnViewRenderedStoresCurrentUrl(): void
4142 $ configStub ->method ('getTopActiveView ' )->willReturn ($ viewStub );
4243 Registry::set (Config::class, $ configStub );
4344
45+ $ requestStub = $ this ->createStub (Request::class);
46+ $ requestStub ->method ('getRequestParameter ' )->with ('fnc ' )->willReturn (null );
47+ Registry::set (Request::class, $ requestStub );
48+
4449 $ sessionMock = $ this ->createMock (Session::class);
4550 $ sessionMock ->expects ($ this ->once ())
4651 ->method ('setVariable ' )
@@ -99,6 +104,10 @@ public function testOnViewRenderedSkipsTwoFactorAuthController(): void
99104 $ configStub ->method ('getTopActiveView ' )->willReturn ($ viewStub );
100105 Registry::set (Config::class, $ configStub );
101106
107+ $ requestStub = $ this ->createStub (Request::class);
108+ $ requestStub ->method ('getRequestParameter ' )->with ('fnc ' )->willReturn (null );
109+ Registry::set (Request::class, $ requestStub );
110+
102111 $ sessionMock = $ this ->createMock (Session::class);
103112 $ sessionMock ->expects ($ this ->never ())->method ('setVariable ' );
104113 Registry::set (Session::class, $ sessionMock );
@@ -137,6 +146,58 @@ public function testOnViewRenderedSkipsWhenGetLinkThrowsException(): void
137146 $ configStub ->method ('getTopActiveView ' )->willReturn ($ viewStub );
138147 Registry::set (Config::class, $ configStub );
139148
149+ $ requestStub = $ this ->createStub (Request::class);
150+ $ requestStub ->method ('getRequestParameter ' )->with ('fnc ' )->willReturn (null );
151+ Registry::set (Request::class, $ requestStub );
152+
153+ $ sessionMock = $ this ->createMock (Session::class);
154+ $ sessionMock ->expects ($ this ->never ())->method ('setVariable ' );
155+ Registry::set (Session::class, $ sessionMock );
156+
157+ $ sut = new StoreCurrentUrlSubscriber ();
158+ $ eventStub = $ this ->createStub (ViewRenderedEvent::class);
159+
160+ $ sut ->onViewRendered ($ eventStub );
161+ }
162+
163+ public function testOnViewRenderedSkipsLogoutFunction (): void
164+ {
165+ $ viewStub = $ this ->createStub (FrontendController::class);
166+ $ viewStub ->method ('getClassKey ' )->willReturn ('start ' );
167+
168+ $ configStub = $ this ->createStub (Config::class);
169+ $ configStub ->method ('isAdmin ' )->willReturn (false );
170+ $ configStub ->method ('getTopActiveView ' )->willReturn ($ viewStub );
171+ Registry::set (Config::class, $ configStub );
172+
173+ $ requestStub = $ this ->createStub (Request::class);
174+ $ requestStub ->method ('getRequestParameter ' )->with ('fnc ' )->willReturn ('logout ' );
175+ Registry::set (Request::class, $ requestStub );
176+
177+ $ sessionMock = $ this ->createMock (Session::class);
178+ $ sessionMock ->expects ($ this ->never ())->method ('setVariable ' );
179+ Registry::set (Session::class, $ sessionMock );
180+
181+ $ sut = new StoreCurrentUrlSubscriber ();
182+ $ eventStub = $ this ->createStub (ViewRenderedEvent::class);
183+
184+ $ sut ->onViewRendered ($ eventStub );
185+ }
186+
187+ public function testOnViewRenderedSkipsLogoutFunctionCaseInsensitive (): void
188+ {
189+ $ viewStub = $ this ->createStub (FrontendController::class);
190+ $ viewStub ->method ('getClassKey ' )->willReturn ('start ' );
191+
192+ $ configStub = $ this ->createStub (Config::class);
193+ $ configStub ->method ('isAdmin ' )->willReturn (false );
194+ $ configStub ->method ('getTopActiveView ' )->willReturn ($ viewStub );
195+ Registry::set (Config::class, $ configStub );
196+
197+ $ requestStub = $ this ->createStub (Request::class);
198+ $ requestStub ->method ('getRequestParameter ' )->with ('fnc ' )->willReturn ('Logout ' );
199+ Registry::set (Request::class, $ requestStub );
200+
140201 $ sessionMock = $ this ->createMock (Session::class);
141202 $ sessionMock ->expects ($ this ->never ())->method ('setVariable ' );
142203 Registry::set (Session::class, $ sessionMock );
@@ -146,4 +207,33 @@ public function testOnViewRenderedSkipsWhenGetLinkThrowsException(): void
146207
147208 $ sut ->onViewRendered ($ eventStub );
148209 }
210+
211+ public function testOnViewRenderedStoresUrlWithOtherFunction (): void
212+ {
213+ $ currentUrl = uniqid ();
214+
215+ $ viewStub = $ this ->createStub (FrontendController::class);
216+ $ viewStub ->method ('getClassKey ' )->willReturn ('details ' );
217+ $ viewStub ->method ('getLink ' )->willReturn ($ currentUrl );
218+
219+ $ configStub = $ this ->createStub (Config::class);
220+ $ configStub ->method ('isAdmin ' )->willReturn (false );
221+ $ configStub ->method ('getTopActiveView ' )->willReturn ($ viewStub );
222+ Registry::set (Config::class, $ configStub );
223+
224+ $ requestStub = $ this ->createStub (Request::class);
225+ $ requestStub ->method ('getRequestParameter ' )->with ('fnc ' )->willReturn ('tobasket ' );
226+ Registry::set (Request::class, $ requestStub );
227+
228+ $ sessionMock = $ this ->createMock (Session::class);
229+ $ sessionMock ->expects ($ this ->once ())
230+ ->method ('setVariable ' )
231+ ->with (AuthorizeService::OTP_TARGET_URL , $ currentUrl );
232+ Registry::set (Session::class, $ sessionMock );
233+
234+ $ sut = new StoreCurrentUrlSubscriber ();
235+ $ eventStub = $ this ->createStub (ViewRenderedEvent::class);
236+
237+ $ sut ->onViewRendered ($ eventStub );
238+ }
149239}
0 commit comments