Preparing 5.0.0 #703
This run and associated checks have been archived and are scheduled for deletion.
Learn more about checks retention
integrate.yml
on: pull_request
3️⃣ Static Analysis
30s
4️⃣ Coding Standards
1m 20s
5️⃣ Mutation Testing
6m 11s
6️⃣ Rector Checkstyle
36s
7️⃣ Exported files
4s
Matrix: 2️⃣ JS tests
Matrix: 2️⃣ Unit and functional tests
Annotations
11 errors and 10 warnings
3️⃣ Static Analysis:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L1
Ignored error pattern #^Access to an undefined property Webauthn\\MetadataService\\CertificateChain\\PhpCertificateChainValidator\:\:\$requestFactory\.$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L1
Ignored error pattern #^Call to an undefined method Symfony\\Contracts\\HttpClient\\HttpClientInterface\:\:sendRequest\(\)\.$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L1
Ignored error pattern #^Instanceof between Symfony\\Contracts\\HttpClient\\HttpClientInterface and Symfony\\Contracts\\HttpClient\\HttpClientInterface will always evaluate to true\.$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/symfony/src/Controller/AssertionControllerFactory.php#L1
Ignored error pattern #^Parameter \#8 \$publicKeyCredentialSourceRepository of class Webauthn\\Bundle\\Controller\\AssertionResponseController constructor expects Webauthn\\Bundle\\Repository\\PublicKeyCredentialSourceRepositoryInterface\|null, Webauthn\\Bundle\\Repository\\PublicKeyCredentialSourceRepositoryInterface\|Webauthn\\PublicKeyCredentialSourceRepository given\.$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/symfony/src/Controller/AssertionControllerFactory.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/symfony/src/Controller/AssertionControllerFactory.php#L1
Ignored error pattern #^Parameter \$publicKeyCredentialLoader of method Webauthn\\Bundle\\Controller\\AssertionControllerFactory\:\:__construct\(\) has typehint with deprecated class Webauthn\\PublicKeyCredentialLoader\:
since 4\.8\.0 and will be removed in 5\.0\.0\. Please use the Symfony serializer instead$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/symfony/src/Controller/AssertionControllerFactory.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/symfony/src/Controller/AssertionControllerFactory.php#L1
Ignored error pattern #^Parameter \$publicKeyCredentialSourceRepository of method Webauthn\\Bundle\\Controller\\AssertionControllerFactory\:\:__construct\(\) has typehint with deprecated interface Webauthn\\PublicKeyCredentialSourceRepository\.$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/symfony/src/Controller/AssertionControllerFactory.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/symfony/src/Controller/AssertionResponseController.php#L1
Ignored error pattern #^Call to an undefined method Symfony\\Component\\HttpFoundation\\Request\:\:getContentType\(\)\.$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/symfony/src/Controller/AssertionResponseController.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/symfony/src/Controller/AssertionResponseController.php#L1
Ignored error pattern #^Call to function method_exists\(\) with Symfony\\Component\\HttpFoundation\\Request and 'getContentTypeFormat' will always evaluate to true\.$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/symfony/src/Controller/AssertionResponseController.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/symfony/src/Controller/AssertionResponseController.php#L1
Ignored error pattern #^Parameter \$publicKeyCredentialLoader of method Webauthn\\Bundle\\Controller\\AssertionResponseController\:\:__construct\(\) has typehint with deprecated class Webauthn\\PublicKeyCredentialLoader\:
since 4\.8\.0 and will be removed in 5\.0\.0\. Please use the Symfony serializer instead$# in path /home/runner/work/webauthn-framework/webauthn-framework/src/symfony/src/Controller/AssertionResponseController.php was not matched in reported errors.
|
3️⃣ Static Analysis:
src/symfony/src/Controller/AssertionResponseController.php#L64
Parameter #1 $publicKeyCredentialSource of method Webauthn\AuthenticatorAssertionResponseValidator::check() expects Webauthn\PublicKeyCredentialSource, string|Webauthn\PublicKeyCredentialSource given.
|
5️⃣ Mutation Testing
Process completed with exit code 2.
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/CertificateToolbox.php#L36
Escaped Mutant for Mutator "PublicVisibility":
--- Original
+++ New
@@ @@
$pem .= chunk_split($data, 64, PHP_EOL);
return $pem . (self::PEM_FOOTER . $type . '-----' . PHP_EOL);
}
- public static function convertDERToPEM(string $data, string $type = 'CERTIFICATE') : string
+ protected static function convertDERToPEM(string $data, string $type = 'CERTIFICATE') : string
{
if (str_contains($data, self::PEM_HEADER)) {
return $data;
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L69
Escaped Mutant for Mutator "MethodCallRemoval":
--- Original
+++ New
@@ @@
$this->dispatcher->dispatch(BeforeCertificateChainValidation::create($untrustedCertificates, $trustedCertificate));
try {
if ($this->validateChain($untrustedCertificates, $trustedCertificate)) {
- $this->dispatcher->dispatch(CertificateChainValidationSucceeded::create($untrustedCertificates, $trustedCertificate));
+
return;
}
} catch (Throwable $exception) {
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L119
Escaped Mutant for Mutator "SpreadOneItem":
--- Original
+++ New
@@ @@
if (!$this->validateCertificates($trustedCertificate, ...$untrustedCertificates)) {
return false;
}
- $certificates = [$trustedCertificate, ...$untrustedCertificates];
+ $certificates = [$trustedCertificate, [...$untrustedCertificates][0]];
$numCerts = count($certificates);
for ($i = 1; $i < $numCerts; $i++) {
if ($this->isRevoked($certificates[$i])) {
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L119
Escaped Mutant for Mutator "ArrayItemRemoval":
--- Original
+++ New
@@ @@
if (!$this->validateCertificates($trustedCertificate, ...$untrustedCertificates)) {
return false;
}
- $certificates = [$trustedCertificate, ...$untrustedCertificates];
+ $certificates = [...$untrustedCertificates];
$numCerts = count($certificates);
for ($i = 1; $i < $numCerts; $i++) {
if ($this->isRevoked($certificates[$i])) {
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L121
Escaped Mutant for Mutator "IncrementInteger":
--- Original
+++ New
@@ @@
}
$certificates = [$trustedCertificate, ...$untrustedCertificates];
$numCerts = count($certificates);
- for ($i = 1; $i < $numCerts; $i++) {
+ for ($i = 2; $i < $numCerts; $i++) {
if ($this->isRevoked($certificates[$i])) {
throw CertificateChainException::create($untrustedCertificates, [$trustedCertificate], 'Unable to validate the certificate chain. Revoked certificate found.');
}
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L121
Escaped Mutant for Mutator "LessThanNegotiation":
--- Original
+++ New
@@ @@
}
$certificates = [$trustedCertificate, ...$untrustedCertificates];
$numCerts = count($certificates);
- for ($i = 1; $i < $numCerts; $i++) {
+ for ($i = 1; $i >= $numCerts; $i++) {
if ($this->isRevoked($certificates[$i])) {
throw CertificateChainException::create($untrustedCertificates, [$trustedCertificate], 'Unable to validate the certificate chain. Revoked certificate found.');
}
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L121
Escaped Mutant for Mutator "For_":
--- Original
+++ New
@@ @@
}
$certificates = [$trustedCertificate, ...$untrustedCertificates];
$numCerts = count($certificates);
- for ($i = 1; $i < $numCerts; $i++) {
+ for ($i = 1; false; $i++) {
if ($this->isRevoked($certificates[$i])) {
throw CertificateChainException::create($untrustedCertificates, [$trustedCertificate], 'Unable to validate the certificate chain. Revoked certificate found.');
}
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L162
Escaped Mutant for Mutator "Foreach_":
--- Original
+++ New
@@ @@
}
throw InvalidCertificateException::create($subject->toPEM()->string(), 'Failed to get CRL distribution points: ' . $e->getMessage(), $e);
}
- foreach ($urls as $url) {
+ foreach (array() as $url) {
try {
$revokedCertificates = $this->retrieveRevokedSerialNumbers($url);
if (in_array($csn, $revokedCertificates, true)) {
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L218
Escaped Mutant for Mutator "Throw_":
--- Original
+++ New
@@ @@
return $sequence->at(0)->asInteger()->number();
}, $list->elements());
} catch (Throwable $e) {
- throw CertificateRevocationListException::create($url, 'Failed to download the CRL', $e);
+ CertificateRevocationListException::create($url, 'Failed to download the CRL', $e);
}
}
/**
|
5️⃣ Mutation Testing:
src/metadata-service/src/CertificateChain/PhpCertificateChainValidator.php#L232
Escaped Mutant for Mutator "IfNegation":
--- Original
+++ New
@@ @@
try {
$urls = [];
$extensions = $subject->tbsCertificate()->extensions();
- if ($extensions->hasCRLDistributionPoints()) {
+ if (!$extensions->hasCRLDistributionPoints()) {
$crlDists = $extensions->crlDistributionPoints();
foreach ($crlDists->distributionPoints() as $dist) {
$url = $dist->fullName()->names()->firstURI();
|