createMock(AdminPathDetector::class); $admin->method('isAdminPath')->willReturn(true); $tunnel = $this->createMock(TunnelRequestDetector::class); $tunnel->expects(self::never())->method('getTunnelStoreCode'); $stores = $this->createMock(StoreRepositoryInterface::class); $plugin = new StoreFromMageSailHeaderPlugin($admin, $tunnel, $stores); $request = new Http(); $proceed = static fn ($n, $d = null) => 'proceeded'; self::assertSame( ScopeInterface::SCOPE_WEBSITE, $plugin->aroundGetServerValue($request, $proceed, StoreManager::PARAM_RUN_TYPE) ); self::assertSame( '', $plugin->aroundGetServerValue($request, $proceed, StoreManager::PARAM_RUN_CODE) ); self::assertSame( 'proceeded', $plugin->aroundGetServerValue($request, $proceed, 'other') ); } public function testTunnelStoreCodeReturnedForMageRunCodeWhenValid(): void { $admin = $this->createMock(AdminPathDetector::class); $admin->method('isAdminPath')->willReturn(false); $tunnel = $this->createMock(TunnelRequestDetector::class); $tunnel->method('getTunnelStoreCode')->willReturn('mgtun_ok'); $store = $this->createMock(StoreInterface::class); $stores = $this->createMock(StoreRepositoryInterface::class); $stores->method('get')->with('mgtun_ok')->willReturn($store); $plugin = new StoreFromMageSailHeaderPlugin($admin, $tunnel, $stores); $request = new Http(); $request->setServerParams([]); $proceed = static fn () => null; self::assertSame( 'mgtun_ok', $plugin->aroundGetServerValue($request, $proceed, StoreManager::PARAM_RUN_CODE) ); self::assertSame( 'store', $plugin->aroundGetServerValue($request, $proceed, StoreManager::PARAM_RUN_TYPE) ); } public function testUnknownCandidateStripsRunCodeToEmptyString(): void { $admin = $this->createMock(AdminPathDetector::class); $admin->method('isAdminPath')->willReturn(false); $tunnel = $this->createMock(TunnelRequestDetector::class); $tunnel->method('getTunnelStoreCode')->willReturn(null); $stores = $this->createMock(StoreRepositoryInterface::class); $stores->method('get')->willThrowException(new NoSuchEntityException()); $plugin = new StoreFromMageSailHeaderPlugin($admin, $tunnel, $stores); $request = new Http(); $request->setServerParams([StoreManager::PARAM_RUN_CODE => 'ghost']); $proceed = static fn () => 'skip'; self::assertSame( '', $plugin->aroundGetServerValue($request, $proceed, StoreManager::PARAM_RUN_CODE) ); } }