<title>Code Coverage for /Users/barnabywalters/Documents/Programming/taproot/indieauth/src/Callback/SingleUserPasswordAuthenticationCallback.php</title>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="38 tests cover line 69"data-content="<ul><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testInvalidConfigRaisesException</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthorizationEndpointReturnsErrorOnMissingParameter</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testRequestsMissingBothPkceParametersReturnsError</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthorizationRequestWithInvalidClientIdOrRedirectUriShowsErrorToUser</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testInvalidStateCodeChallengeOrScopeReturnErrorRedirects</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testHandlesValidAndInvalidMeUrlsCorrectly</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testUnauthenticatedRequestReturnsAuthenticationResponse</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsServerErrorIfAuthenticationResultHasNoMeKey</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnErrorIfFetchingClientIdThrowsException</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfRedirectUriDoesntMatchClientIdWithNoParsedRedirectUris</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfRedirectUriDoesntMatchClientIdOrParsedRedirectUris</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdSufficientlyMatchesRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdExactlyMatchesParsedLinkHeaderRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdExactlyMatchesParsedLinkElementRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testFindsFirstHAppExactlyMatchingClientId</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfApprovalRequestHasNoHash</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfApprovalRequestHasInvalidHash</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testValidApprovalRequestIsHandledCorrectly</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsInternalServerErrorIfAuthCodeCannotBeStored</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorsIfCodeParameterIsMissing</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorsIfParametersAreMissing</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorOnInvalidParameters</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthEndpointTokenExchangeFailsForTokensWithInvalidScope</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthEndpointTokenExchangeReturnsCorrectResponseForValidRequest</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testTokenEndpointReturnsErrorOnNonIndieauthRequest</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testTokenEndpointReturnsErrorIfAccessCodeGrantsNoScopes</li><liclass="c
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 70"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testThrowsExceptionIfSecretIsTooShort</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="70"href="#70">70</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="keyword">throw</span><spanclass="default"> </span><spanclass="keyword">new</span><spanclass="default"> </span><spanclass="default">BadMethodCallException</span><spanclass="keyword">(</span><spanclass="default">"\$secret must be a string with a minimum length of 64 characters."</span><spanclass="keyword">)</span><spanclass="keyword">;</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="37 tests cover line 76"data-content="<ul><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testInvalidConfigRaisesException</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthorizationEndpointReturnsErrorOnMissingParameter</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testRequestsMissingBothPkceParametersReturnsError</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthorizationRequestWithInvalidClientIdOrRedirectUriShowsErrorToUser</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testInvalidStateCodeChallengeOrScopeReturnErrorRedirects</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testHandlesValidAndInvalidMeUrlsCorrectly</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testUnauthenticatedRequestReturnsAuthenticationResponse</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsServerErrorIfAuthenticationResultHasNoMeKey</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnErrorIfFetchingClientIdThrowsException</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfRedirectUriDoesntMatchClientIdWithNoParsedRedirectUris</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfRedirectUriDoesntMatchClientIdOrParsedRedirectUris</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdSufficientlyMatchesRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdExactlyMatchesParsedLinkHeaderRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdExactlyMatchesParsedLinkElementRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testFindsFirstHAppExactlyMatchingClientId</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfApprovalRequestHasNoHash</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfApprovalRequestHasInvalidHash</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testValidApprovalRequestIsHandledCorrectly</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsInternalServerErrorIfAuthCodeCannotBeStored</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorsIfCodeParameterIsMissing</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorsIfParametersAreMissing</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorOnInvalidParameters</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthEndpointTokenExchangeFailsForTokensWithInvalidScope</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthEndpointTokenExchangeReturnsCorrectResponseForValidRequest</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testTokenEndpointReturnsErrorOnNonIndieauthRequest</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testTokenEndpointReturnsErrorIfAccessCodeGrantsNoScopes</li><liclass="c
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 77"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testThrowsExceptionIfUserDataHasNoMeKey</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="77"href="#77">77</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="keyword">throw</span><spanclass="default"> </span><spanclass="keyword">new</span><spanclass="default"> </span><spanclass="default">BadMethodCallException</span><spanclass="keyword">(</span><spanclass="default">'The $user array MUST contain a “me” key, the value which must be the user’s canonical URL as a string.'</span><spanclass="keyword">)</span><spanclass="keyword">;</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="36 tests cover line 80"data-content="<ul><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testInvalidConfigRaisesException</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthorizationEndpointReturnsErrorOnMissingParameter</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testRequestsMissingBothPkceParametersReturnsError</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthorizationRequestWithInvalidClientIdOrRedirectUriShowsErrorToUser</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testInvalidStateCodeChallengeOrScopeReturnErrorRedirects</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testHandlesValidAndInvalidMeUrlsCorrectly</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testUnauthenticatedRequestReturnsAuthenticationResponse</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsServerErrorIfAuthenticationResultHasNoMeKey</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnErrorIfFetchingClientIdThrowsException</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfRedirectUriDoesntMatchClientIdWithNoParsedRedirectUris</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfRedirectUriDoesntMatchClientIdOrParsedRedirectUris</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdSufficientlyMatchesRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdExactlyMatchesParsedLinkHeaderRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsAuthorizationFormIfClientIdExactlyMatchesParsedLinkElementRedirectUri</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testFindsFirstHAppExactlyMatchingClientId</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfApprovalRequestHasNoHash</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsErrorIfApprovalRequestHasInvalidHash</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testValidApprovalRequestIsHandledCorrectly</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testReturnsInternalServerErrorIfAuthCodeCannotBeStored</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorsIfCodeParameterIsMissing</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorsIfParametersAreMissing</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testExchangeFlowsReturnErrorOnInvalidParameters</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthEndpointTokenExchangeFailsForTokensWithInvalidScope</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testAuthEndpointTokenExchangeReturnsCorrectResponseForValidRequest</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testTokenEndpointReturnsErrorOnNonIndieauthRequest</li><liclass="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testTokenEndpointReturnsErrorIfAccessCodeGrantsNoScopes</li><liclass="c
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 81"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testThrowsExceptionIfHashedPasswordIsInvalid</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="81"href="#81">81</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="keyword">throw</span><spanclass="default"> </span><spanclass="keyword">new</span><spanclass="default"> </span><spanclass="default">BadMethodCallException</span><spanclass="keyword">(</span><spanclass="default">'The provided $hashedPassword was not a valid hash created by the password_hash() function.'</span><spanclass="keyword">)</span><spanclass="keyword">;</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 96"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsUserDataOnResponseWithValidHashCookie</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="96"href="#96">96</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="keyword">return</span><spanclass="default"> </span><spanclass="default">$this</span><spanclass="default">-></span><spanclass="default">user</span><spanclass="keyword">;</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 102"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsCookieRedirectOnAuthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="102"href="#102">102</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">$response</span><spanclass="default"> </span><spanclass="keyword">=</span><spanclass="default"> </span><spanclass="keyword">new</span><spanclass="default"> </span><spanclass="default">Response</span><spanclass="keyword">(</span><spanclass="default">302</span><spanclass="keyword">,</span><spanclass="default"> </span><spanclass="keyword">[</span><spanclass="default">'Location'</span><spanclass="default"> </span><spanclass="default">=></span><spanclass="default"> </span><spanclass="default">$formAction</span><spanclass="keyword">]</span><spanclass="keyword">)</span><spanclass="keyword">;</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 105"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsCookieRedirectOnAuthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="105"href="#105">105</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">$response</span><spanclass="default"> </span><spanclass="keyword">=</span><spanclass="default"> </span><spanclass="default">FigCookies</span><spanclass="default">\</span><spanclass="default">FigResponseCookies</span><spanclass="default">::</span><spanclass="default">set</span><spanclass="keyword">(</span><spanclass="default">$response</span><spanclass="keyword">,</span><spanclass="default"> </span><spanclass="default">FigCookies</span><spanclass="default">\</span><spanclass="default">SetCookie</span><spanclass="default">::</span><spanclass="default">create</span><spanclass="keyword">(</span><spanclass="default">self</span><spanclass="default">::</span><spanclass="default">LOGIN_HASH_COOKIE</span><spanclass="keyword">)</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 106"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsCookieRedirectOnAuthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="106"href="#106">106</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">-></span><spanclass="default">withValue</span><spanclass="keyword">(</span><spanclass="default">hash_hmac</span><spanclass="keyword">(</span><spanclass="default">'SHA256'</span><spanclass="keyword">,</span><spanclass="default"> </span><spanclass="default">json_encode</span><spanclass="keyword">(</span><spanclass="default">$this</span><spanclass="default">-></span><spanclass="default">user</span><spanclass="keyword">)</span><spanclass="keyword">,</span><spanclass="default"> </span><spanclass="default">$this</span><spanclass="default">-></span><spanclass="default">secret</span><spanclass="keyword">)</span><spanclass="keyword">)</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 107"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsCookieRedirectOnAuthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="107"href="#107">107</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">-></span><spanclass="default">withMaxAge</span><spanclass="keyword">(</span><spanclass="default">$this</span><spanclass="default">-></span><spanclass="default">ttl</span><spanclass="keyword">)</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 108"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsCookieRedirectOnAuthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="108"href="#108">108</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">-></span><spanclass="default">withSecure</span><spanclass="keyword">(</span><spanclass="default">$request</span><spanclass="default">-></span><spanclass="default">getUri</span><spanclass="keyword">(</span><spanclass="keyword">)</span><spanclass="default">-></span><spanclass="default">getScheme</span><spanclass="keyword">(</span><spanclass="keyword">)</span><spanclass="default"> </span><spanclass="default">==</span><spanclass="default"> </span><spanclass="default">'https'</span><spanclass="keyword">)</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 109"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsCookieRedirectOnAuthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="109"href="#109">109</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">-></span><spanclass="default">withDomain</span><spanclass="keyword">(</span><spanclass="default">$request</span><spanclass="default">-></span><spanclass="default">getUri</span><spanclass="keyword">(</span><spanclass="keyword">)</span><spanclass="default">-></span><spanclass="default">getHost</span><spanclass="keyword">(</span><spanclass="keyword">)</span><spanclass="keyword">)</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 112"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testReturnsCookieRedirectOnAuthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="112"href="#112">112</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="keyword">return</span><spanclass="default"> </span><spanclass="default">$response</span><spanclass="keyword">;</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 116"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testShowsAuthenticationFormOnUnauthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="116"href="#116">116</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="keyword">return</span><spanclass="default"> </span><spanclass="keyword">new</span><spanclass="default"> </span><spanclass="default">Response</span><spanclass="keyword">(</span><spanclass="default">200</span><spanclass="keyword">,</span><spanclass="default"> </span><spanclass="keyword">[</span><spanclass="default">'content-type'</span><spanclass="default"> </span><spanclass="default">=></span><spanclass="default"> </span><spanclass="default">'text/html'</span><spanclass="keyword">]</span><spanclass="keyword">,</span><spanclass="default"> </span><spanclass="default">renderTemplate</span><spanclass="keyword">(</span><spanclass="default">$this</span><spanclass="default">-></span><spanclass="default">formTemplate</span><spanclass="keyword">,</span><spanclass="default"> </span><spanclass="keyword">[</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 117"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testShowsAuthenticationFormOnUnauthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="117"href="#117">117</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">'formAction'</span><spanclass="default"> </span><spanclass="default">=></span><spanclass="default"> </span><spanclass="default">$formAction</span><spanclass="keyword">,</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 118"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testShowsAuthenticationFormOnUnauthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="118"href="#118">118</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">'request'</span><spanclass="default"> </span><spanclass="default">=></span><spanclass="default"> </span><spanclass="default">$request</span><spanclass="keyword">,</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 119"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\SingleUserPasswordAuthenticationCallbackTest::testShowsAuthenticationFormOnUnauthenticatedRequest</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="119"href="#119">119</a></td><tdclass="col-11 codeLine"><spanclass="default"> </span><spanclass="default">'csrfFormElement'</span><spanclass="default"> </span><spanclass="default">=></span><spanclass="default"> </span><spanclass="default">'<input type="hidden" name="'</span><spanclass="default"> </span><spanclass="keyword">.</span><spanclass="default"> </span><spanclass="default">htmlentities</span><spanclass="keyword">(</span><spanclass="default">$this</span><spanclass="default">-></span><spanclass="default">csrfKey</span><spanclass="keyword">)</span><spanclass="default"> </span><spanclass="keyword">.</span><spanclass="default"> </span><spanclass="default">'" value="'</span><spanclass="default"> </span><spanclass="keyword">.</span><spanclass="default"> </span><spanclass="default">htmlentities</span><spanclass="keyword">(</span><spanclass="default">$request</span><spanclass="default">-></span><spanclass="default">getAttribute</span><spanclass="keyword">(</span><spanclass="default">$this</span><spanclass="default">-></span><spanclass="default">csrfKey</span><spanclass="keyword">)</span><spanclass="keyword">)</span><spanclass="default"> </span><spanclass="keyword">.</span><spanclass="default"> </span><spanclass="default">'" />'</span></td></tr>
<trclass="covered-by-large-tests popin d-flex"><tddata-title="1 test covers line 122"data-content="<ul><li class="covered-by-large-tests">Taproot\IndieAuth\Test\ServerTest::testInvalidConfigRaisesException</li></ul>"data-placement="top"data-html="true"class="col-1 text-right"><aid="122"href="#122">122</a></td><tdclass="col-11 codeLine"><spanclass="keyword">}</span></td></tr>
<small>Generated by <ahref="https://github.com/sebastianbergmann/php-code-coverage"target="_top">php-code-coverage 9.2.6</a> using <ahref="https://secure.php.net/"target="_top">PHP 7.4.19</a> with <ahref="https://xdebug.org/">Xdebug 3.0.4</a> and <ahref="https://phpunit.de/">PHPUnit 9.5.5</a> at Fri Jun 18 14:09:49 UTC 2021.</small>