1 | <?php |
||||||
2 | |||||||
3 | /* |
||||||
4 | * This file is part of the FOSHttpCache package. |
||||||
5 | * |
||||||
6 | * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/> |
||||||
7 | * |
||||||
8 | * For the full copyright and license information, please view the LICENSE |
||||||
9 | * file that was distributed with this source code. |
||||||
10 | */ |
||||||
11 | |||||||
12 | namespace FOS\HttpCache\Test\PHPUnit; |
||||||
13 | |||||||
14 | use PHPUnit\Runner\Version; |
||||||
0 ignored issues
–
show
|
|||||||
15 | use Psr\Http\Message\ResponseInterface; |
||||||
16 | |||||||
17 | /** |
||||||
18 | * This trait is used to have the same code and behavior between AbstractCacheConstraint and its legacy version. |
||||||
19 | */ |
||||||
20 | trait AbstractCacheConstraintTrait |
||||||
21 | { |
||||||
22 | protected $header = 'X-Cache'; |
||||||
23 | |||||||
24 | /** |
||||||
25 | * Constructor. |
||||||
26 | * |
||||||
27 | * @param string $header Cache debug header; defaults to X-Cache-Debug |
||||||
28 | */ |
||||||
29 | 29 | public function __construct($header = null) |
|||||
30 | { |
||||||
31 | 29 | if ($header) { |
|||||
32 | 3 | $this->header = $header; |
|||||
33 | } |
||||||
34 | |||||||
35 | 29 | if (version_compare(Version::id(), '8.0.0', '<')) { |
|||||
36 | parent::__construct(); |
||||||
37 | } |
||||||
38 | 29 | } |
|||||
39 | |||||||
40 | /** |
||||||
41 | * {@inheritdoc} |
||||||
42 | * |
||||||
43 | * @param ResponseInterface $other The guzzle response object |
||||||
44 | */ |
||||||
45 | 29 | public function matches($other): bool |
|||||
46 | { |
||||||
47 | 29 | if (!$other instanceof ResponseInterface) { |
|||||
0 ignored issues
–
show
|
|||||||
48 | throw new \RuntimeException(sprintf('Expected a GuzzleHttp\Psr7\Response but got %s', get_class($other))); |
||||||
49 | } |
||||||
50 | 29 | if (!$other->hasHeader($this->header)) { |
|||||
51 | 1 | $message = sprintf( |
|||||
52 | 'Response has no "%s" header. Configure your caching proxy ' |
||||||
53 | 1 | .'to set the header with cache hit/miss status.', |
|||||
54 | 1 | $this->header |
|||||
55 | ); |
||||||
56 | 1 | if (200 !== $other->getStatusCode()) { |
|||||
57 | $message .= sprintf("\nStatus code of response is %s.", $other->getStatusCode()); |
||||||
58 | } |
||||||
59 | |||||||
60 | 1 | $message .= "\nThe response headers are:\n\n"; |
|||||
61 | |||||||
62 | 1 | foreach ($other->getHeaders() as $name => $values) { |
|||||
63 | foreach ($values as $value) { |
||||||
64 | $message .= $name.': '.$value."\n"; |
||||||
65 | } |
||||||
66 | } |
||||||
67 | |||||||
68 | 1 | $body = $other->getBody(); |
|||||
69 | 1 | $body->rewind(); |
|||||
70 | 1 | $message .= sprintf("\nThe response body is:\n\n %s", $body->getContents()); |
|||||
71 | |||||||
72 | 1 | throw new \RuntimeException($message); |
|||||
73 | } |
||||||
74 | |||||||
75 | 28 | return false !== strpos((string) $other->getHeaderLine($this->header), $this->getValue()); |
|||||
0 ignored issues
–
show
It seems like
getValue() must be provided by classes using this trait. How about adding it as abstract method to this trait?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
76 | } |
||||||
77 | |||||||
78 | /** |
||||||
79 | * {@inheritdoc} |
||||||
80 | */ |
||||||
81 | 2 | public function failureDescription($other): string |
|||||
82 | { |
||||||
83 | 2 | return sprintf( |
|||||
84 | 2 | 'response (with status code %s) %s', |
|||||
85 | 2 | $other->getStatusCode(), |
|||||
86 | 2 | $this->toString() |
|||||
0 ignored issues
–
show
It seems like
toString() must be provided by classes using this trait. How about adding it as abstract method to this trait?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
87 | ); |
||||||
88 | } |
||||||
89 | } |
||||||
90 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths