createMock(TunnelRegistry::class); $registry->method('findByRequestHost')->with('dev.example.com')->willReturn([ 'store_code' => 'mgtun_abc', ]); $matcher = new TunnelHostnameMatcher($registry); $request = new Http(); $request->setServerParams(['HTTP_HOST' => 'dev.example.com']); self::assertSame('mgtun_abc', $matcher->getStoreCodeIfRequestHostMatchesState($request)); } public function testGetStoreCodeReturnsNullWhenHttpHostEmpty(): void { $registry = $this->createMock(TunnelRegistry::class); $registry->expects(self::never())->method('findByRequestHost'); $matcher = new TunnelHostnameMatcher($registry); $request = new Http(); $request->setServerParams(['HTTP_HOST' => '']); self::assertNull($matcher->getStoreCodeIfRequestHostMatchesState($request)); } public function testGetStoreCodeReturnsNullWhenNoTunnelMatches(): void { $registry = $this->createMock(TunnelRegistry::class); $registry->method('findByRequestHost')->willReturn(null); $matcher = new TunnelHostnameMatcher($registry); $request = new Http(); $request->setServerParams(['HTTP_HOST' => 'other.com']); self::assertNull($matcher->getStoreCodeIfRequestHostMatchesState($request)); } }