| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | <?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\HttpFoundation\Test\Constraint;use PHPUnit\Framework\Constraint\Constraint;use Symfony\Component\HttpFoundation\Cookie;use Symfony\Component\HttpFoundation\Response;final class ResponseCookieValueSame extends Constraint{    private $name;    private $value;    private $path;    private $domain;    public function __construct(string $name, string $value, string $path = '/', ?string $domain = null)    {        $this->name = $name;        $this->value = $value;        $this->path = $path;        $this->domain = $domain;    }    /**     * {@inheritdoc}     */    public function toString(): string    {        $str = sprintf('has cookie "%s"', $this->name);        if ('/' !== $this->path) {            $str .= sprintf(' with path "%s"', $this->path);        }        if ($this->domain) {            $str .= sprintf(' for domain "%s"', $this->domain);        }        $str .= sprintf(' with value "%s"', $this->value);        return $str;    }    /**     * @param Response $response     *     * {@inheritdoc}     */    protected function matches($response): bool    {        $cookie = $this->getCookie($response);        if (!$cookie) {            return false;        }        return $this->value === (string) $cookie->getValue();    }    /**     * @param Response $response     *     * {@inheritdoc}     */    protected function failureDescription($response): string    {        return 'the Response '.$this->toString();    }    protected function getCookie(Response $response): ?Cookie    {        $cookies = $response->headers->getCookies();        $filteredCookies = array_filter($cookies, function (Cookie $cookie) {            return $cookie->getName() === $this->name && $cookie->getPath() === $this->path && $cookie->getDomain() === $this->domain;        });        return reset($filteredCookies) ?: null;    }}
 |