composer update
This commit is contained in:
@@ -223,12 +223,17 @@ class BinaryFileResponse extends Response
|
||||
list($pathPrefix, $location) = $part;
|
||||
if (substr($path, 0, \strlen($pathPrefix)) === $pathPrefix) {
|
||||
$path = $location.substr($path, \strlen($pathPrefix));
|
||||
// Only set X-Accel-Redirect header if a valid URI can be produced
|
||||
// as nginx does not serve arbitrary file paths.
|
||||
$this->headers->set($type, $path);
|
||||
$this->maxlen = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->headers->set($type, $path);
|
||||
$this->maxlen = 0;
|
||||
}
|
||||
$this->headers->set($type, $path);
|
||||
$this->maxlen = 0;
|
||||
} elseif ($request->headers->has('Range')) {
|
||||
// Process the range headers.
|
||||
if (!$request->headers->has('If-Range') || $this->hasValidIfRangeHeader($request->headers->get('If-Range'))) {
|
||||
|
||||
11
vendor/symfony/http-foundation/CHANGELOG.md
vendored
11
vendor/symfony/http-foundation/CHANGELOG.md
vendored
@@ -1,6 +1,17 @@
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
4.3.0
|
||||
-----
|
||||
|
||||
* added PHPUnit constraints: `RequestAttributeValueSame`, `ResponseCookieValueSame`, `ResponseHasCookie`,
|
||||
`ResponseHasHeader`, `ResponseHeaderSame`, `ResponseIsRedirected`, `ResponseIsSuccessful`, and `ResponseStatusCodeSame`
|
||||
* deprecated `MimeTypeGuesserInterface` and `ExtensionGuesserInterface` in favor of `Symfony\Component\Mime\MimeTypesInterface`.
|
||||
* deprecated `MimeType` and `MimeTypeExtensionGuesser` in favor of `Symfony\Component\Mime\MimeTypes`.
|
||||
* deprecated `FileBinaryMimeTypeGuesser` in favor of `Symfony\Component\Mime\FileBinaryMimeTypeGuesser`.
|
||||
* deprecated `FileinfoMimeTypeGuesser` in favor of `Symfony\Component\Mime\FileinfoMimeTypeGuesser`.
|
||||
* added `UrlHelper` that allows to get an absolute URL and a relative path for a given path
|
||||
|
||||
4.2.0
|
||||
-----
|
||||
|
||||
|
||||
3
vendor/symfony/http-foundation/Cookie.php
vendored
3
vendor/symfony/http-foundation/Cookie.php
vendored
@@ -29,6 +29,7 @@ class Cookie
|
||||
private $sameSite;
|
||||
private $secureDefault = false;
|
||||
|
||||
const SAMESITE_NONE = 'none';
|
||||
const SAMESITE_LAX = 'lax';
|
||||
const SAMESITE_STRICT = 'strict';
|
||||
|
||||
@@ -126,7 +127,7 @@ class Cookie
|
||||
$sameSite = strtolower($sameSite);
|
||||
}
|
||||
|
||||
if (!\in_array($sameSite, [self::SAMESITE_LAX, self::SAMESITE_STRICT, null], true)) {
|
||||
if (!\in_array($sameSite, [self::SAMESITE_LAX, self::SAMESITE_STRICT, self::SAMESITE_NONE, null], true)) {
|
||||
throw new \InvalidArgumentException('The "sameSite" parameter value is not valid.');
|
||||
}
|
||||
|
||||
|
||||
22
vendor/symfony/http-foundation/File/File.php
vendored
22
vendor/symfony/http-foundation/File/File.php
vendored
@@ -13,8 +13,7 @@ namespace Symfony\Component\HttpFoundation\File;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\Exception\FileException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
|
||||
use Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser;
|
||||
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
|
||||
use Symfony\Component\Mime\MimeTypes;
|
||||
|
||||
/**
|
||||
* A file in the file system.
|
||||
@@ -50,33 +49,28 @@ class File extends \SplFileInfo
|
||||
*
|
||||
* @return string|null The guessed extension or null if it cannot be guessed
|
||||
*
|
||||
* @see ExtensionGuesser
|
||||
* @see MimeTypes
|
||||
* @see getMimeType()
|
||||
*/
|
||||
public function guessExtension()
|
||||
{
|
||||
$type = $this->getMimeType();
|
||||
$guesser = ExtensionGuesser::getInstance();
|
||||
|
||||
return $guesser->guess($type);
|
||||
return MimeTypes::getDefault()->getExtensions($this->getMimeType())[0] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the mime type of the file.
|
||||
*
|
||||
* The mime type is guessed using a MimeTypeGuesser instance, which uses finfo(),
|
||||
* mime_content_type() and the system binary "file" (in this order), depending on
|
||||
* which of those are available.
|
||||
* The mime type is guessed using a MimeTypeGuesserInterface instance,
|
||||
* which uses finfo_file() then the "file" system binary,
|
||||
* depending on which of those are available.
|
||||
*
|
||||
* @return string|null The guessed mime type (e.g. "application/pdf")
|
||||
*
|
||||
* @see MimeTypeGuesser
|
||||
* @see MimeTypes
|
||||
*/
|
||||
public function getMimeType()
|
||||
{
|
||||
$guesser = MimeTypeGuesser::getInstance();
|
||||
|
||||
return $guesser->guess($this->getPathname());
|
||||
return MimeTypes::getDefault()->guessMimeType($this->getPathname());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
|
||||
namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
|
||||
use Symfony\Component\Mime\MimeTypes;
|
||||
|
||||
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* A singleton mime type to file extension guesser.
|
||||
*
|
||||
@@ -22,6 +26,8 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
* $guesser->register(new MyCustomExtensionGuesser());
|
||||
*
|
||||
* The last registered guesser is preferred over previously registered ones.
|
||||
*
|
||||
* @deprecated since Symfony 4.3, use {@link MimeTypes} instead
|
||||
*/
|
||||
class ExtensionGuesser implements ExtensionGuesserInterface
|
||||
{
|
||||
|
||||
@@ -11,8 +11,12 @@
|
||||
|
||||
namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
|
||||
use Symfony\Component\Mime\MimeTypesInterface;
|
||||
|
||||
/**
|
||||
* Guesses the file extension corresponding to a given mime type.
|
||||
*
|
||||
* @deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead
|
||||
*/
|
||||
interface ExtensionGuesserInterface
|
||||
{
|
||||
|
||||
@@ -13,11 +13,16 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
|
||||
use Symfony\Component\Mime\FileBinaryMimeTypeGuesser as NewFileBinaryMimeTypeGuesser;
|
||||
|
||||
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileBinaryMimeTypeGuesser::class, NewFileBinaryMimeTypeGuesser::class), E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* Guesses the mime type with the binary "file" (only available on *nix).
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since Symfony 4.3, use {@link NewFileBinaryMimeTypeGuesser} instead
|
||||
*/
|
||||
class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
|
||||
{
|
||||
|
||||
@@ -13,11 +13,16 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
|
||||
use Symfony\Component\Mime\FileinfoMimeTypeGuesser as NewFileinfoMimeTypeGuesser;
|
||||
|
||||
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', FileinfoMimeTypeGuesser::class, NewFileinfoMimeTypeGuesser::class), E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* Guesses the mime type using the PECL extension FileInfo.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since Symfony 4.3, use {@link NewFileinfoMimeTypeGuesser} instead
|
||||
*/
|
||||
class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
|
||||
{
|
||||
|
||||
@@ -11,8 +11,14 @@
|
||||
|
||||
namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
|
||||
use Symfony\Component\Mime\MimeTypes;
|
||||
|
||||
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeExtensionGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* Provides a best-guess mapping of mime type to file extension.
|
||||
*
|
||||
* @deprecated since Symfony 4.3, use {@link MimeTypes} instead
|
||||
*/
|
||||
class MimeTypeExtensionGuesser implements ExtensionGuesserInterface
|
||||
{
|
||||
@@ -639,6 +645,7 @@ class MimeTypeExtensionGuesser implements ExtensionGuesserInterface
|
||||
'audio/x-aiff' => 'aif',
|
||||
'audio/x-caf' => 'caf',
|
||||
'audio/x-flac' => 'flac',
|
||||
'audio/x-hx-aac-adts' => 'aac',
|
||||
'audio/x-matroska' => 'mka',
|
||||
'audio/x-mpegurl' => 'm3u',
|
||||
'audio/x-ms-wax' => 'wax',
|
||||
|
||||
@@ -13,6 +13,9 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
|
||||
use Symfony\Component\Mime\MimeTypes;
|
||||
|
||||
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', MimeTypeGuesser::class, MimeTypes::class), E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* A singleton mime type guesser.
|
||||
|
||||
@@ -13,11 +13,14 @@ namespace Symfony\Component\HttpFoundation\File\MimeType;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
|
||||
use Symfony\Component\Mime\MimeTypesInterface;
|
||||
|
||||
/**
|
||||
* Guesses the mime type of a file.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead
|
||||
*/
|
||||
interface MimeTypeGuesserInterface
|
||||
{
|
||||
|
||||
@@ -20,7 +20,7 @@ use Symfony\Component\HttpFoundation\File\Exception\IniSizeFileException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\NoFileException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\NoTmpDirFileException;
|
||||
use Symfony\Component\HttpFoundation\File\Exception\PartialFileException;
|
||||
use Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser;
|
||||
use Symfony\Component\Mime\MimeTypes;
|
||||
|
||||
/**
|
||||
* A file uploaded through a form.
|
||||
@@ -140,10 +140,7 @@ class UploadedFile extends File
|
||||
*/
|
||||
public function guessClientExtension()
|
||||
{
|
||||
$type = $this->getClientMimeType();
|
||||
$guesser = ExtensionGuesser::getInstance();
|
||||
|
||||
return $guesser->guess($type);
|
||||
return MimeTypes::getDefault()->getExtensions($this->getClientMimeType())[0] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
2
vendor/symfony/http-foundation/FileBag.php
vendored
2
vendor/symfony/http-foundation/FileBag.php
vendored
@@ -84,7 +84,7 @@ class FileBag extends ParameterBag
|
||||
if (UPLOAD_ERR_NO_FILE == $file['error']) {
|
||||
$file = null;
|
||||
} else {
|
||||
$file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['error']);
|
||||
$file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['error'], false);
|
||||
}
|
||||
} else {
|
||||
$file = array_map([$this, 'convertFileInformation'], $file);
|
||||
|
||||
2
vendor/symfony/http-foundation/Request.php
vendored
2
vendor/symfony/http-foundation/Request.php
vendored
@@ -1907,7 +1907,7 @@ class Request
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Returns the prefix as encoded in the string when the string starts with
|
||||
* the given prefix, false otherwise.
|
||||
*
|
||||
|
||||
@@ -122,8 +122,7 @@ class ResponseHeaderBag extends HeaderBag
|
||||
parent::set($key, $values, $replace);
|
||||
|
||||
// ensure the cache-control header has sensible defaults
|
||||
if (\in_array($uniqueKey, ['cache-control', 'etag', 'last-modified', 'expires'], true)) {
|
||||
$computed = $this->computeCacheControlValue();
|
||||
if (\in_array($uniqueKey, ['cache-control', 'etag', 'last-modified', 'expires'], true) && '' !== $computed = $this->computeCacheControlValue()) {
|
||||
$this->headers['cache-control'] = [$computed];
|
||||
$this->headerNames['cache-control'] = 'Cache-Control';
|
||||
$this->computedCacheControl = $this->parseCacheControl($computed);
|
||||
|
||||
@@ -21,7 +21,7 @@ use Symfony\Component\HttpFoundation\Session\SessionBagInterface;
|
||||
interface FlashBagInterface extends SessionBagInterface
|
||||
{
|
||||
/**
|
||||
* Adds a flash message for type.
|
||||
* Adds a flash message for the given type.
|
||||
*
|
||||
* @param string $type
|
||||
* @param mixed $message
|
||||
@@ -29,12 +29,12 @@ interface FlashBagInterface extends SessionBagInterface
|
||||
public function add($type, $message);
|
||||
|
||||
/**
|
||||
* Registers a message for a given type.
|
||||
* Registers one or more messages for a given type.
|
||||
*
|
||||
* @param string $type
|
||||
* @param string|array $message
|
||||
* @param string|array $messages
|
||||
*/
|
||||
public function set($type, $message);
|
||||
public function set($type, $messages);
|
||||
|
||||
/**
|
||||
* Gets flash messages for a given type.
|
||||
|
||||
54
vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
vendored
Normal file
54
vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
<?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;
|
||||
|
||||
final class RequestAttributeValueSame extends Constraint
|
||||
{
|
||||
private $name;
|
||||
private $value;
|
||||
|
||||
public function __construct(string $name, string $value)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toString(): string
|
||||
{
|
||||
return sprintf('has attribute "%s" with value "%s"', $this->name, $this->value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function matches($request): bool
|
||||
{
|
||||
return $this->value === $request->attributes->get($this->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function failureDescription($request): string
|
||||
{
|
||||
return 'the Request '.$this->toString();
|
||||
}
|
||||
}
|
||||
85
vendor/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php
vendored
Normal file
85
vendor/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
<?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 === $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;
|
||||
}
|
||||
}
|
||||
77
vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
vendored
Normal file
77
vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
<?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();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
53
vendor/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php
vendored
Normal file
53
vendor/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
<?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\Response;
|
||||
|
||||
final class ResponseHasHeader extends Constraint
|
||||
{
|
||||
private $headerName;
|
||||
|
||||
public function __construct(string $headerName)
|
||||
{
|
||||
$this->headerName = $headerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toString(): string
|
||||
{
|
||||
return sprintf('has header "%s"', $this->headerName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function matches($response): bool
|
||||
{
|
||||
return $response->headers->has($this->headerName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function failureDescription($response): string
|
||||
{
|
||||
return 'the Response '.$this->toString();
|
||||
}
|
||||
}
|
||||
55
vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
vendored
Normal file
55
vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
<?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\Response;
|
||||
|
||||
final class ResponseHeaderSame extends Constraint
|
||||
{
|
||||
private $headerName;
|
||||
private $expectedValue;
|
||||
|
||||
public function __construct(string $headerName, string $expectedValue)
|
||||
{
|
||||
$this->headerName = $headerName;
|
||||
$this->expectedValue = $expectedValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toString(): string
|
||||
{
|
||||
return sprintf('has header "%s" with value "%s"', $this->headerName, $this->expectedValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function matches($response): bool
|
||||
{
|
||||
return $this->expectedValue === $response->headers->get($this->headerName, null, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function failureDescription($response): string
|
||||
{
|
||||
return 'the Response '.$this->toString();
|
||||
}
|
||||
}
|
||||
56
vendor/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php
vendored
Normal file
56
vendor/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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\Response;
|
||||
|
||||
final class ResponseIsRedirected extends Constraint
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toString(): string
|
||||
{
|
||||
return 'is redirected';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function matches($response): bool
|
||||
{
|
||||
return $response->isRedirect();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function failureDescription($response): string
|
||||
{
|
||||
return 'the Response '.$this->toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function additionalFailureDescription($response): string
|
||||
{
|
||||
return (string) $response;
|
||||
}
|
||||
}
|
||||
56
vendor/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php
vendored
Normal file
56
vendor/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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\Response;
|
||||
|
||||
final class ResponseIsSuccessful extends Constraint
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toString(): string
|
||||
{
|
||||
return 'is successful';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function matches($response): bool
|
||||
{
|
||||
return $response->isSuccessful();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function failureDescription($response): string
|
||||
{
|
||||
return 'the Response '.$this->toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function additionalFailureDescription($response): string
|
||||
{
|
||||
return (string) $response;
|
||||
}
|
||||
}
|
||||
63
vendor/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php
vendored
Normal file
63
vendor/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
<?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\Response;
|
||||
|
||||
final class ResponseStatusCodeSame extends Constraint
|
||||
{
|
||||
private $statusCode;
|
||||
|
||||
public function __construct(int $statusCode)
|
||||
{
|
||||
$this->statusCode = $statusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toString(): string
|
||||
{
|
||||
return 'status code is '.$this->statusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function matches($response): bool
|
||||
{
|
||||
return $this->statusCode === $response->getStatusCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function failureDescription($response): string
|
||||
{
|
||||
return 'the Response '.$this->toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Response $response
|
||||
*
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function additionalFailureDescription($response): string
|
||||
{
|
||||
return (string) $response;
|
||||
}
|
||||
}
|
||||
@@ -339,6 +339,7 @@ class BinaryFileResponseTest extends ResponseTestCase
|
||||
['/var/www/var/www/files/foo.txt', '/var/www/=/files/', '/files/var/www/files/foo.txt'],
|
||||
['/home/Foo/bar.txt', '/var/www/=/files/,/home/Foo/=/baz/', '/baz/bar.txt'],
|
||||
['/home/Foo/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', '/baz/bar.txt'],
|
||||
['/tmp/bar.txt', '"/var/www/"="/files/", "/home/Foo/"="/baz/"', null],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -13,8 +13,10 @@ namespace Symfony\Component\HttpFoundation\Tests\File;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\HttpFoundation\File\File;
|
||||
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
|
||||
|
||||
/**
|
||||
* @requires extension fileinfo
|
||||
*/
|
||||
class FileTest extends TestCase
|
||||
{
|
||||
protected $file;
|
||||
@@ -22,50 +24,24 @@ class FileTest extends TestCase
|
||||
public function testGetMimeTypeUsesMimeTypeGuessers()
|
||||
{
|
||||
$file = new File(__DIR__.'/Fixtures/test.gif');
|
||||
$guesser = $this->createMockGuesser($file->getPathname(), 'image/gif');
|
||||
|
||||
MimeTypeGuesser::getInstance()->register($guesser);
|
||||
|
||||
$this->assertEquals('image/gif', $file->getMimeType());
|
||||
}
|
||||
|
||||
public function testGuessExtensionWithoutGuesser()
|
||||
{
|
||||
$file = new File(__DIR__.'/Fixtures/directory/.empty');
|
||||
|
||||
$this->assertNull($file->guessExtension());
|
||||
}
|
||||
|
||||
public function testGuessExtensionIsBasedOnMimeType()
|
||||
{
|
||||
$file = new File(__DIR__.'/Fixtures/test');
|
||||
$guesser = $this->createMockGuesser($file->getPathname(), 'image/gif');
|
||||
|
||||
MimeTypeGuesser::getInstance()->register($guesser);
|
||||
|
||||
$this->assertEquals('gif', $file->guessExtension());
|
||||
}
|
||||
|
||||
/**
|
||||
* @requires extension fileinfo
|
||||
*/
|
||||
public function testGuessExtensionWithReset()
|
||||
{
|
||||
$file = new File(__DIR__.'/Fixtures/other-file.example');
|
||||
$guesser = $this->createMockGuesser($file->getPathname(), 'image/gif');
|
||||
MimeTypeGuesser::getInstance()->register($guesser);
|
||||
|
||||
$this->assertEquals('gif', $file->guessExtension());
|
||||
|
||||
MimeTypeGuesser::reset();
|
||||
|
||||
$this->assertNull($file->guessExtension());
|
||||
}
|
||||
|
||||
public function testConstructWhenFileNotExists()
|
||||
{
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
|
||||
$this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
new File(__DIR__.'/Fixtures/not_here');
|
||||
}
|
||||
|
||||
@@ -164,17 +140,4 @@ class FileTest extends TestCase
|
||||
@unlink($targetPath);
|
||||
@rmdir($targetDir);
|
||||
}
|
||||
|
||||
protected function createMockGuesser($path, $mimeType)
|
||||
{
|
||||
$guesser = $this->getMockBuilder('Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface')->getMock();
|
||||
$guesser
|
||||
->expects($this->once())
|
||||
->method('guess')
|
||||
->with($this->equalTo($path))
|
||||
->will($this->returnValue($mimeType))
|
||||
;
|
||||
|
||||
return $guesser;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,11 +17,10 @@ use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
|
||||
|
||||
/**
|
||||
* @requires extension fileinfo
|
||||
* @group legacy
|
||||
*/
|
||||
class MimeTypeTest extends TestCase
|
||||
{
|
||||
protected $path;
|
||||
|
||||
public function testGuessImageWithoutExtension()
|
||||
{
|
||||
$this->assertEquals('image/gif', MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/test'));
|
||||
@@ -29,7 +28,7 @@ class MimeTypeTest extends TestCase
|
||||
|
||||
public function testGuessImageWithDirectory()
|
||||
{
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
$this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
|
||||
MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/directory');
|
||||
}
|
||||
@@ -53,7 +52,7 @@ class MimeTypeTest extends TestCase
|
||||
|
||||
public function testGuessWithIncorrectPath()
|
||||
{
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
$this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
MimeTypeGuesser::getInstance()->guess(__DIR__.'/../Fixtures/not_here');
|
||||
}
|
||||
|
||||
@@ -72,7 +71,7 @@ class MimeTypeTest extends TestCase
|
||||
@chmod($path, 0333);
|
||||
|
||||
if ('0333' == substr(sprintf('%o', fileperms($path)), -4)) {
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException');
|
||||
$this->expectException('Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException');
|
||||
MimeTypeGuesser::getInstance()->guess($path);
|
||||
} else {
|
||||
$this->markTestSkipped('Can not verify chmod operations, change of file permissions failed');
|
||||
|
||||
@@ -33,7 +33,7 @@ class UploadedFileTest extends TestCase
|
||||
|
||||
public function testConstructWhenFileNotExists()
|
||||
{
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
$this->expectException('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
||||
|
||||
new UploadedFile(
|
||||
__DIR__.'/Fixtures/not_here',
|
||||
|
||||
@@ -43,7 +43,8 @@ class JsonResponseTest extends TestCase
|
||||
$this->assertSame('0', $response->getContent());
|
||||
|
||||
$response = new JsonResponse(0.1);
|
||||
$this->assertSame('0.1', $response->getContent());
|
||||
$this->assertEquals('0.1', $response->getContent());
|
||||
$this->assertInternalType('string', $response->getContent());
|
||||
|
||||
$response = new JsonResponse(true);
|
||||
$this->assertSame('true', $response->getContent());
|
||||
@@ -131,7 +132,8 @@ class JsonResponseTest extends TestCase
|
||||
|
||||
$response = JsonResponse::create(0.1);
|
||||
$this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
|
||||
$this->assertSame('0.1', $response->getContent());
|
||||
$this->assertEquals('0.1', $response->getContent());
|
||||
$this->assertInternalType('string', $response->getContent());
|
||||
|
||||
$response = JsonResponse::create(true);
|
||||
$this->assertInstanceOf('Symfony\Component\HttpFoundation\JsonResponse', $response);
|
||||
|
||||
41
vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php
vendored
Normal file
41
vendor/symfony/http-foundation/Tests/Test/Constraint/RequestAttributeValueSameTest.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\RequestAttributeValueSame;
|
||||
|
||||
class RequestAttributeValueSameTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$request = new Request();
|
||||
$request->attributes->set('foo', 'bar');
|
||||
$constraint = new RequestAttributeValueSame('foo', 'bar');
|
||||
$this->assertTrue($constraint->evaluate($request, '', true));
|
||||
$constraint = new RequestAttributeValueSame('bar', 'foo');
|
||||
$this->assertFalse($constraint->evaluate($request, '', true));
|
||||
|
||||
try {
|
||||
$constraint->evaluate($request);
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertEquals("Failed asserting that the Request has attribute \"bar\" with value \"foo\".\n", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
44
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php
vendored
Normal file
44
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseCookieValueSameTest.php
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Cookie;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\ResponseCookieValueSame;
|
||||
|
||||
class ResponseCookieValueSameTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$response = new Response();
|
||||
$response->headers->setCookie(Cookie::create('foo', 'bar', 0, '/path'));
|
||||
$constraint = new ResponseCookieValueSame('foo', 'bar', '/path');
|
||||
$this->assertTrue($constraint->evaluate($response, '', true));
|
||||
$constraint = new ResponseCookieValueSame('foo', 'bar', '/path');
|
||||
$this->assertTrue($constraint->evaluate($response, '', true));
|
||||
$constraint = new ResponseCookieValueSame('foo', 'babar', '/path');
|
||||
$this->assertFalse($constraint->evaluate($response, '', true));
|
||||
|
||||
try {
|
||||
$constraint->evaluate($response);
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertEquals("Failed asserting that the Response has cookie \"foo\" with path \"/path\" with value \"babar\".\n", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
42
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php
vendored
Normal file
42
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasCookieTest.php
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Cookie;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHasCookie;
|
||||
|
||||
class ResponseHasCookieTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$response = new Response();
|
||||
$response->headers->setCookie(Cookie::create('foo', 'bar'));
|
||||
$constraint = new ResponseHasCookie('foo');
|
||||
$this->assertTrue($constraint->evaluate($response, '', true));
|
||||
$constraint = new ResponseHasCookie('bar');
|
||||
$this->assertFalse($constraint->evaluate($response, '', true));
|
||||
|
||||
try {
|
||||
$constraint->evaluate($response);
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertEquals("Failed asserting that the Response has cookie \"bar\".\n", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php
vendored
Normal file
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHasHeaderTest.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHasHeader;
|
||||
|
||||
class ResponseHasHeaderTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$constraint = new ResponseHasHeader('Date');
|
||||
$this->assertTrue($constraint->evaluate(new Response(), '', true));
|
||||
$constraint = new ResponseHasHeader('X-Date');
|
||||
$this->assertFalse($constraint->evaluate(new Response(), '', true));
|
||||
|
||||
try {
|
||||
$constraint->evaluate(new Response());
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertEquals("Failed asserting that the Response has header \"X-Date\".\n", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php
vendored
Normal file
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseHeaderSameTest.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\ResponseHeaderSame;
|
||||
|
||||
class ResponseHeaderSameTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$constraint = new ResponseHeaderSame('Cache-Control', 'no-cache, private');
|
||||
$this->assertTrue($constraint->evaluate(new Response(), '', true));
|
||||
$constraint = new ResponseHeaderSame('Cache-Control', 'public');
|
||||
$this->assertFalse($constraint->evaluate(new Response(), '', true));
|
||||
|
||||
try {
|
||||
$constraint->evaluate(new Response());
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertEquals("Failed asserting that the Response has header \"Cache-Control\" with value \"public\".\n", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php
vendored
Normal file
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsRedirectedTest.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\ResponseIsRedirected;
|
||||
|
||||
class ResponseIsRedirectedTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$constraint = new ResponseIsRedirected();
|
||||
|
||||
$this->assertTrue($constraint->evaluate(new Response('', 301), '', true));
|
||||
$this->assertFalse($constraint->evaluate(new Response(), '', true));
|
||||
|
||||
try {
|
||||
$constraint->evaluate(new Response());
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertContains("Failed asserting that the Response is redirected.\nHTTP/1.0 200 OK", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php
vendored
Normal file
39
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseIsSuccessfulTest.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\ResponseIsSuccessful;
|
||||
|
||||
class ResponseIsSuccessfulTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$constraint = new ResponseIsSuccessful();
|
||||
|
||||
$this->assertTrue($constraint->evaluate(new Response(), '', true));
|
||||
$this->assertFalse($constraint->evaluate(new Response('', 404), '', true));
|
||||
|
||||
try {
|
||||
$constraint->evaluate(new Response('', 404));
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertContains("Failed asserting that the Response is successful.\nHTTP/1.0 404 Not Found", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
41
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php
vendored
Normal file
41
vendor/symfony/http-foundation/Tests/Test/Constraint/ResponseStatusCodeSameTest.php
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
<?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\Tests\Test\Constraint;
|
||||
|
||||
use PHPUnit\Framework\ExpectationFailedException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PHPUnit\Framework\TestFailure;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Test\Constraint\ResponseStatusCodeSame;
|
||||
|
||||
class ResponseStatusCodeSameTest extends TestCase
|
||||
{
|
||||
public function testConstraint(): void
|
||||
{
|
||||
$constraint = new ResponseStatusCodeSame(200);
|
||||
$this->assertTrue($constraint->evaluate(new Response(), '', true));
|
||||
$this->assertFalse($constraint->evaluate(new Response('', 404), '', true));
|
||||
$constraint = new ResponseStatusCodeSame(404);
|
||||
$this->assertTrue($constraint->evaluate(new Response('', 404), '', true));
|
||||
|
||||
$constraint = new ResponseStatusCodeSame(200);
|
||||
try {
|
||||
$constraint->evaluate(new Response('', 404));
|
||||
} catch (ExpectationFailedException $e) {
|
||||
$this->assertContains("Failed asserting that the Response status code is 200.\nHTTP/1.0 404 Not Found", TestFailure::exceptionToString($e));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
143
vendor/symfony/http-foundation/Tests/UrlHelperTest.php
vendored
Normal file
143
vendor/symfony/http-foundation/Tests/UrlHelperTest.php
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
<?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\Tests;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Symfony\Component\HttpFoundation\UrlHelper;
|
||||
use Symfony\Component\Routing\RequestContext;
|
||||
|
||||
class UrlHelperTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider getGenerateAbsoluteUrlData()
|
||||
*/
|
||||
public function testGenerateAbsoluteUrl($expected, $path, $pathinfo)
|
||||
{
|
||||
$stack = new RequestStack();
|
||||
$stack->push(Request::create($pathinfo));
|
||||
$helper = new UrlHelper($stack);
|
||||
|
||||
$this->assertEquals($expected, $helper->getAbsoluteUrl($path));
|
||||
}
|
||||
|
||||
public function getGenerateAbsoluteUrlData()
|
||||
{
|
||||
return [
|
||||
['http://localhost/foo.png', '/foo.png', '/foo/bar.html'],
|
||||
['http://localhost/foo/foo.png', 'foo.png', '/foo/bar.html'],
|
||||
['http://localhost/foo/foo.png', 'foo.png', '/foo/bar'],
|
||||
['http://localhost/foo/bar/foo.png', 'foo.png', '/foo/bar/'],
|
||||
|
||||
['http://example.com/baz', 'http://example.com/baz', '/'],
|
||||
['https://example.com/baz', 'https://example.com/baz', '/'],
|
||||
['//example.com/baz', '//example.com/baz', '/'],
|
||||
|
||||
['http://localhost/foo/bar?baz', '?baz', '/foo/bar'],
|
||||
['http://localhost/foo/bar?baz=1', '?baz=1', '/foo/bar?foo=1'],
|
||||
['http://localhost/foo/baz?baz=1', 'baz?baz=1', '/foo/bar?foo=1'],
|
||||
|
||||
['http://localhost/foo/bar#baz', '#baz', '/foo/bar'],
|
||||
['http://localhost/foo/bar?0#baz', '#baz', '/foo/bar?0'],
|
||||
['http://localhost/foo/bar?baz=1#baz', '?baz=1#baz', '/foo/bar?foo=1'],
|
||||
['http://localhost/foo/baz?baz=1#baz', 'baz?baz=1#baz', '/foo/bar?foo=1'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getGenerateAbsoluteUrlRequestContextData
|
||||
*/
|
||||
public function testGenerateAbsoluteUrlWithRequestContext($path, $baseUrl, $host, $scheme, $httpPort, $httpsPort, $expected)
|
||||
{
|
||||
if (!class_exists('Symfony\Component\Routing\RequestContext')) {
|
||||
$this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
|
||||
}
|
||||
|
||||
$requestContext = new RequestContext($baseUrl, 'GET', $host, $scheme, $httpPort, $httpsPort, $path);
|
||||
$helper = new UrlHelper(new RequestStack(), $requestContext);
|
||||
|
||||
$this->assertEquals($expected, $helper->getAbsoluteUrl($path));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getGenerateAbsoluteUrlRequestContextData
|
||||
*/
|
||||
public function testGenerateAbsoluteUrlWithoutRequestAndRequestContext($path)
|
||||
{
|
||||
if (!class_exists('Symfony\Component\Routing\RequestContext')) {
|
||||
$this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
|
||||
}
|
||||
|
||||
$helper = new UrlHelper(new RequestStack());
|
||||
|
||||
$this->assertEquals($path, $helper->getAbsoluteUrl($path));
|
||||
}
|
||||
|
||||
public function getGenerateAbsoluteUrlRequestContextData()
|
||||
{
|
||||
return [
|
||||
['/foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo.png'],
|
||||
['foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo/foo.png'],
|
||||
['foo.png', '/foo/bar/', 'localhost', 'http', 80, 443, 'http://localhost/foo/bar/foo.png'],
|
||||
['/foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo.png'],
|
||||
['foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo/foo.png'],
|
||||
['foo.png', '/foo/bar/', 'localhost', 'https', 80, 443, 'https://localhost/foo/bar/foo.png'],
|
||||
['/foo.png', '/foo', 'localhost', 'http', 443, 80, 'http://localhost:443/foo.png'],
|
||||
['/foo.png', '/foo', 'localhost', 'https', 443, 80, 'https://localhost:80/foo.png'],
|
||||
];
|
||||
}
|
||||
|
||||
public function testGenerateAbsoluteUrlWithScriptFileName()
|
||||
{
|
||||
$request = Request::create('http://localhost/app/web/app_dev.php');
|
||||
$request->server->set('SCRIPT_FILENAME', '/var/www/app/web/app_dev.php');
|
||||
|
||||
$stack = new RequestStack();
|
||||
$stack->push($request);
|
||||
$helper = new UrlHelper($stack);
|
||||
|
||||
$this->assertEquals(
|
||||
'http://localhost/app/web/bundles/framework/css/structure.css',
|
||||
$helper->getAbsoluteUrl('/app/web/bundles/framework/css/structure.css')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getGenerateRelativePathData()
|
||||
*/
|
||||
public function testGenerateRelativePath($expected, $path, $pathinfo)
|
||||
{
|
||||
if (!method_exists('Symfony\Component\HttpFoundation\Request', 'getRelativeUriForPath')) {
|
||||
$this->markTestSkipped('Your version of Symfony HttpFoundation is too old.');
|
||||
}
|
||||
|
||||
$stack = new RequestStack();
|
||||
$stack->push(Request::create($pathinfo));
|
||||
$urlHelper = new UrlHelper($stack);
|
||||
|
||||
$this->assertEquals($expected, $urlHelper->getRelativePath($path));
|
||||
}
|
||||
|
||||
public function getGenerateRelativePathData()
|
||||
{
|
||||
return [
|
||||
['../foo.png', '/foo.png', '/foo/bar.html'],
|
||||
['../baz/foo.png', '/baz/foo.png', '/foo/bar.html'],
|
||||
['baz/foo.png', 'baz/foo.png', '/foo/bar.html'],
|
||||
|
||||
['http://example.com/baz', 'http://example.com/baz', '/'],
|
||||
['https://example.com/baz', 'https://example.com/baz', '/'],
|
||||
['//example.com/baz', '//example.com/baz', '/'],
|
||||
];
|
||||
}
|
||||
}
|
||||
102
vendor/symfony/http-foundation/UrlHelper.php
vendored
Normal file
102
vendor/symfony/http-foundation/UrlHelper.php
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
<?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;
|
||||
|
||||
use Symfony\Component\Routing\RequestContext;
|
||||
|
||||
/**
|
||||
* A helper service for manipulating URLs within and outside the request scope.
|
||||
*
|
||||
* @author Valentin Udaltsov <udaltsov.valentin@gmail.com>
|
||||
*/
|
||||
final class UrlHelper
|
||||
{
|
||||
private $requestStack;
|
||||
private $requestContext;
|
||||
|
||||
public function __construct(RequestStack $requestStack, ?RequestContext $requestContext = null)
|
||||
{
|
||||
$this->requestStack = $requestStack;
|
||||
$this->requestContext = $requestContext;
|
||||
}
|
||||
|
||||
public function getAbsoluteUrl(string $path): string
|
||||
{
|
||||
if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
if (null === $request = $this->requestStack->getMasterRequest()) {
|
||||
return $this->getAbsoluteUrlFromContext($path);
|
||||
}
|
||||
|
||||
if ('#' === $path[0]) {
|
||||
$path = $request->getRequestUri().$path;
|
||||
} elseif ('?' === $path[0]) {
|
||||
$path = $request->getPathInfo().$path;
|
||||
}
|
||||
|
||||
if (!$path || '/' !== $path[0]) {
|
||||
$prefix = $request->getPathInfo();
|
||||
$last = \strlen($prefix) - 1;
|
||||
if ($last !== $pos = strrpos($prefix, '/')) {
|
||||
$prefix = substr($prefix, 0, $pos).'/';
|
||||
}
|
||||
|
||||
return $request->getUriForPath($prefix.$path);
|
||||
}
|
||||
|
||||
return $request->getSchemeAndHttpHost().$path;
|
||||
}
|
||||
|
||||
public function getRelativePath(string $path): string
|
||||
{
|
||||
if (false !== strpos($path, '://') || '//' === substr($path, 0, 2)) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
if (null === $request = $this->requestStack->getMasterRequest()) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
return $request->getRelativeUriForPath($path);
|
||||
}
|
||||
|
||||
private function getAbsoluteUrlFromContext(string $path): string
|
||||
{
|
||||
if (null === $this->requestContext || '' === $host = $this->requestContext->getHost()) {
|
||||
return $path;
|
||||
}
|
||||
|
||||
$scheme = $this->requestContext->getScheme();
|
||||
$port = '';
|
||||
|
||||
if ('http' === $scheme && 80 !== $this->requestContext->getHttpPort()) {
|
||||
$port = ':'.$this->requestContext->getHttpPort();
|
||||
} elseif ('https' === $scheme && 443 !== $this->requestContext->getHttpsPort()) {
|
||||
$port = ':'.$this->requestContext->getHttpsPort();
|
||||
}
|
||||
|
||||
if ('#' === $path[0]) {
|
||||
$queryString = $this->requestContext->getQueryString();
|
||||
$path = $this->requestContext->getPathInfo().($queryString ? '?'.$queryString : '').$path;
|
||||
} elseif ('?' === $path[0]) {
|
||||
$path = $this->requestContext->getPathInfo().$path;
|
||||
}
|
||||
|
||||
if ('/' !== $path[0]) {
|
||||
$path = rtrim($this->requestContext->getBaseUrl(), '/').'/'.$path;
|
||||
}
|
||||
|
||||
return $scheme.'://'.$host.$port.$path;
|
||||
}
|
||||
}
|
||||
3
vendor/symfony/http-foundation/composer.json
vendored
3
vendor/symfony/http-foundation/composer.json
vendored
@@ -17,6 +17,7 @@
|
||||
],
|
||||
"require": {
|
||||
"php": "^7.1.3",
|
||||
"symfony/mime": "^4.3",
|
||||
"symfony/polyfill-mbstring": "~1.1"
|
||||
},
|
||||
"require-dev": {
|
||||
@@ -32,7 +33,7 @@
|
||||
"minimum-stability": "dev",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.2-dev"
|
||||
"dev-master": "4.3-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user