| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | <?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 ResponseHasCookie extends Constraint{    private $name;    private $path;    private $domain;    public function __construct(string $name, string $path = '/', string $domain = null)    {        $this->name = $name;        $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);        }        return $str;    }    /**     * @param Response $response     *     * {@inheritdoc}     */    protected function matches($response): bool    {        return null !== $this->getCookie($response);    }    /**     * @param Response $response     *     * {@inheritdoc}     */    protected function failureDescription($response): string    {        return 'the Response '.$this->toString();    }    private 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;    }}
 |