Skip to content

Update OTP method to require PSR-20 Clock #12

Update OTP method to require PSR-20 Clock

Update OTP method to require PSR-20 Clock #12

Triggered via push August 4, 2024 21:51
Status Success
Total duration 48s
Artifacts

infection.yml

on: push
5️⃣ Mutation Testing
41s
5️⃣ Mutation Testing
Fit to window
Zoom out
Zoom in

Annotations

10 warnings
5️⃣ Mutation Testing: src/Factory.php#L24
Escaped Mutant for Mutator "Throw_": @@ @@ { try { $parsed_url = Url::fromString($uri); - $parsed_url->getScheme() === 'otpauth' || throw new InvalidArgumentException('Invalid scheme.'); + $parsed_url->getScheme() === 'otpauth' || new InvalidArgumentException('Invalid scheme.'); } catch (Throwable $throwable) { throw new InvalidArgumentException('Not a valid OTP provisioning URI', $throwable->getCode(), $throwable); }
5️⃣ Mutation Testing: src/Factory.php#L24
Escaped Mutant for Mutator "LogicalOrNegation": @@ @@ { try { $parsed_url = Url::fromString($uri); - $parsed_url->getScheme() === 'otpauth' || throw new InvalidArgumentException('Invalid scheme.'); + !($parsed_url->getScheme() === 'otpauth' || throw new InvalidArgumentException('Invalid scheme.')); } catch (Throwable $throwable) { throw new InvalidArgumentException('Not a valid OTP provisioning URI', $throwable->getCode(), $throwable); }
5️⃣ Mutation Testing: src/Factory.php#L63
Escaped Mutant for Mutator "LogicalOrNegation": @@ @@ return; } if ($otp->getIssuer() !== null) { - $result[0] === $otp->getIssuer() || throw new InvalidArgumentException('Invalid OTP: invalid issuer in parameter'); + !($result[0] === $otp->getIssuer() || throw new InvalidArgumentException('Invalid OTP: invalid issuer in parameter')); $otp->setIssuerIncludedAsParameter(true); } assert($result[0] !== '');
5️⃣ Mutation Testing: src/Factory.php#L66
Escaped Mutant for Mutator "MethodCallRemoval": @@ @@ } if ($otp->getIssuer() !== null) { $result[0] === $otp->getIssuer() || throw new InvalidArgumentException('Invalid OTP: invalid issuer in parameter'); - $otp->setIssuerIncludedAsParameter(true); + } assert($result[0] !== ''); $otp->setIssuer($result[0]);
5️⃣ Mutation Testing: src/Factory.php#L71
Escaped Mutant for Mutator "MethodCallRemoval": @@ @@ $otp->setIssuerIncludedAsParameter(true); } assert($result[0] !== ''); - $otp->setIssuer($result[0]); + } private static function createOTP(Url $parsed_url, ClockInterface $clock): OTPInterface {
5️⃣ Mutation Testing: src/HOTP.php#L39
Escaped Mutant for Mutator "MethodCallRemoval": @@ @@ $htop = new self($secret); $htop->setCounter(self::DEFAULT_COUNTER); $htop->setDigest(self::DEFAULT_DIGEST); - $htop->setDigits(self::DEFAULT_DIGITS); + return $htop; } public static function generate(): self
5️⃣ Mutation Testing: src/HOTP.php#L55
Escaped Mutant for Mutator "LogicalAnd": @@ @@ public function getCounter(): int { $value = $this->getParameter('counter'); - is_int($value) && $value >= 0 || throw new InvalidArgumentException('Invalid "counter" parameter.'); + is_int($value) || $value >= 0 || throw new InvalidArgumentException('Invalid "counter" parameter.'); return $value; } public function getProvisioningUri(): string
5️⃣ Mutation Testing: src/HOTP.php#L55
Escaped Mutant for Mutator "Throw_": @@ @@ public function getCounter(): int { $value = $this->getParameter('counter'); - is_int($value) && $value >= 0 || throw new InvalidArgumentException('Invalid "counter" parameter.'); + is_int($value) && $value >= 0 || new InvalidArgumentException('Invalid "counter" parameter.'); return $value; } public function getProvisioningUri(): string
5️⃣ Mutation Testing: src/HOTP.php#L55
Escaped Mutant for Mutator "LogicalOrNegation": @@ @@ public function getCounter(): int { $value = $this->getParameter('counter'); - is_int($value) && $value >= 0 || throw new InvalidArgumentException('Invalid "counter" parameter.'); + !(is_int($value) && $value >= 0 || throw new InvalidArgumentException('Invalid "counter" parameter.')); return $value; } public function getProvisioningUri(): string
5️⃣ Mutation Testing: src/HOTP.php#L62
Escaped Mutant for Mutator "ArrayItemRemoval": @@ @@ } public function getProvisioningUri(): string { - return $this->generateURI('hotp', ['counter' => $this->getCounter()]); + return $this->generateURI('hotp', []); } /** * If the counter is not provided, the OTP is verified at the actual counter.