/** * Test copying of redirect response. * * @covers ::createFromRedirectResponse * @covers ::fromResponse */ public function testRedirectCopy() { $redirect = new RedirectResponse('/magic_redirect_url', 301, ['x-cache-foobar' => 123]); $redirect->setProtocolVersion('2.0'); $redirect->setCharset('ibm-943_P14A-2000'); $redirect->headers->setCookie(new Cookie('name', 'value')); // Make a cloned redirect. $secureRedirect = SecuredRedirectStub::createFromRedirectResponse($redirect); $this->assertEquals('/magic_redirect_url', $secureRedirect->getTargetUrl()); $this->assertEquals(301, $secureRedirect->getStatusCode()); // We pull the headers from the original redirect because there are default headers applied. $headers1 = $redirect->headers->allPreserveCase(); $headers2 = $secureRedirect->headers->allPreserveCase(); // We unset cache headers so we don't test arcane Symfony weirdness. // https://github.com/symfony/symfony/issues/16171 unset($headers1['Cache-Control'], $headers2['Cache-Control']); $this->assertEquals($headers1, $headers2); $this->assertEquals('2.0', $secureRedirect->getProtocolVersion()); $this->assertEquals('ibm-943_P14A-2000', $secureRedirect->getCharset()); $this->assertEquals($redirect->headers->getCookies(), $secureRedirect->headers->getCookies()); }