Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
MediaWiki\Extension\OATHAuth\Maintenance\MoveRecoveryCodesFromTOTP0%
MediaWiki\Extension\OATHAuth\Maintenance\PopulateUserHandles0%
MediaWiki\Extension\OATHAuth\Maintenance\PurgeExpiredTemporaryRecoveryCodes0%
MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport0%
MediaWiki\Extension\OATHAuth\Maintenance\UpdateSecretsToEncryptedFormat0%
MediaWiki\Extension\OATHAuth\Api\Module\ApiQueryOATH0%
MediaWiki\Extension\OATHAuth\Api\Module\ApiWebAuthn0%
MediaWiki\Extension\OATHAuth\Auth\PasskeyPrimaryAuthenticationProvider0%
MediaWiki\Extension\OATHAuth\Auth\RecoveryCodesSecondaryAuthenticationProvider0%
MediaWiki\Extension\OATHAuth\Auth\TOTPSecondaryAuthenticationProvider0%
MediaWiki\Extension\OATHAuth\Auth\WebAuthnAuthenticationRequest0%
MediaWiki\Extension\OATHAuth\Auth\WebAuthnSecondaryAuthenticationProvider0%
MediaWiki\Extension\OATHAuth\HTMLField\AddKeyLayout0%
MediaWiki\Extension\OATHAuth\HTMLField\NoJsInfoField0%
MediaWiki\Extension\OATHAuth\HTMLField\RegisteredKeyLayout0%
MediaWiki\Extension\OATHAuth\HTMLForm\DisableForm0%
MediaWiki\Extension\OATHAuth\HTMLForm\OATHAuthOOUIHTMLForm0%
MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesRemoveTemporaryForm0%
MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesStatusForm0%
MediaWiki\Extension\OATHAuth\HTMLForm\TOTPEnableForm0%
MediaWiki\Extension\OATHAuth\HTMLForm\WebAuthnAddKeyForm0%
MediaWiki\Extension\OATHAuth\HTMLForm\WebAuthnManageForm0%
MediaWiki\Extension\OATHAuth\Hook\RegistrationCallback0%
MediaWiki\Extension\OATHAuth\Hook\TestHandler0%
MediaWiki\Extension\OATHAuth\Hook\UpdateTables0%
MediaWiki\Extension\OATHAuth\Module\WebAuthn0%
MediaWiki\Extension\OATHAuth\Notifications\DisablePresentationModel0%
MediaWiki\Extension\OATHAuth\Notifications\EnablePresentationModel0%
MediaWiki\Extension\OATHAuth\Notifications\Manager0%
MediaWiki\Extension\OATHAuth\Notifications\RecoveryCodeCountPresentationModel0%
MediaWiki\Extension\OATHAuth\Notifications\RecoveryCodesGeneratedForUserPresentationModel0%
MediaWiki\Extension\OATHAuth\WebAuthnSerializerFactory0%
MediaWiki\Extension\OATHAuth\WebAuthnAuthenticator3%
MediaWiki\Extension\OATHAuth\Hook\HookHandler4%
MediaWiki\Extension\OATHAuth\Key\WebAuthnKey20%
MediaWiki\Extension\OATHAuth\Module\RecoveryCodes20%
MediaWiki\Extension\OATHAuth\Module\TOTP47%
MediaWiki\Extension\OATHAuth\Key\AuthKey60%
MediaWiki\Extension\OATHAuth\Auth\TOTPAuthenticationRequest63%
MediaWiki\Extension\OATHAuth\Auth\RecoveryCodesAuthenticationRequest66%
MediaWiki\Extension\OATHAuth\OATHUserRepository76%
MediaWiki\Extension\OATHAuth\OATHAuthServices81%
MediaWiki\Extension\OATHAuth\Special\OATHManage83%
MediaWiki\Extension\OATHAuth\OATHUser85%
MediaWiki\Extension\OATHAuth\Auth\SecondaryAuthenticationProvider86%
MediaWiki\Extension\OATHAuth\Key\TOTPKey87%

Project Risks

Class CRAP
MediaWiki\Extension\OATHAuth\WebAuthnAuthenticator2416
MediaWiki\Extension\OATHAuth\Hook\HookHandler1426
MediaWiki\Extension\OATHAuth\Key\WebAuthnKey817
MediaWiki\Extension\OATHAuth\Api\Module\ApiWebAuthn600
MediaWiki\Extension\OATHAuth\Module\WebAuthn506
MediaWiki\Extension\OATHAuth\Auth\PasskeyPrimaryAuthenticationProvider306
MediaWiki\Extension\OATHAuth\Module\RecoveryCodes262
MediaWiki\Extension\OATHAuth\Auth\WebAuthnSecondaryAuthenticationProvider210
MediaWiki\Extension\OATHAuth\Special\OATHManage199
MediaWiki\Extension\OATHAuth\Maintenance\UpdateSecretsToEncryptedFormat132
MediaWiki\Extension\OATHAuth\HTMLForm\TOTPEnableForm132
MediaWiki\Extension\OATHAuth\Maintenance\MoveRecoveryCodesFromTOTP90
MediaWiki\Extension\OATHAuth\Api\Module\ApiQueryOATH90
MediaWiki\Extension\OATHAuth\Auth\RecoveryCodesSecondaryAuthenticationProvider90
MediaWiki\Extension\OATHAuth\Auth\TOTPSecondaryAuthenticationProvider90
MediaWiki\Extension\OATHAuth\Notifications\DisablePresentationModel90
MediaWiki\Extension\OATHAuth\Notifications\Manager90
MediaWiki\Extension\OATHAuth\Module\TOTP78
MediaWiki\Extension\OATHAuth\Maintenance\PopulateUserHandles72
MediaWiki\Extension\OATHAuth\Maintenance\UpdateForMultipleDevicesSupport72
MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesRemoveTemporaryForm72
MediaWiki\Extension\OATHAuth\Notifications\RecoveryCodesGeneratedForUserPresentationModel72
MediaWiki\Extension\OATHAuth\HTMLForm\WebAuthnAddKeyForm56
MediaWiki\Extension\OATHAuth\HTMLForm\WebAuthnManageForm56
MediaWiki\Extension\OATHAuth\OATHUserRepository53
MediaWiki\Extension\OATHAuth\Auth\WebAuthnAuthenticationRequest42
MediaWiki\Extension\OATHAuth\HTMLForm\DisableForm42
MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesStatusForm30
MediaWiki\Extension\OATHAuth\Hook\TestHandler30
MediaWiki\Extension\OATHAuth\Notifications\EnablePresentationModel30
MediaWiki\Extension\OATHAuth\Notifications\RecoveryCodeCountPresentationModel30
MediaWiki\Extension\OATHAuth\Auth\SecondaryAuthenticationProvider29
MediaWiki\Extension\OATHAuth\Key\TOTPKey24
MediaWiki\Extension\OATHAuth\Maintenance\PurgeExpiredTemporaryRecoveryCodes20
MediaWiki\Extension\OATHAuth\OATHUser19
MediaWiki\Extension\OATHAuth\Hook\UpdateTables6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
__construct0%
doDBUpdates0%
updateRow0%
getUpdateKey0%
__construct0%
doDBUpdates0%
getUpdateKey0%
__construct0%
execute0%
__construct0%
doDBUpdates0%
getUpdateKey0%
__construct0%
doDBUpdates0%
getUpdateKey0%
__construct0%
execute0%
getCacheMode0%
isInternal0%
getAllowedParams0%
getExamplesMessages0%
__construct0%
execute0%
needsToken0%
mustBePosted0%
isWriteMode0%
getSummaryMessage0%
getAllowedParams0%
checkPermissions0%
checkModule0%
getAuthInfo0%
getRegisterInfo0%
register0%
getOATHUser0%
__construct0%
getAuthenticationRequests0%
beginPrimaryAuthentication0%
accountCreationType0%
beginPrimaryAccountCreation0%
testUserExists0%
providerAllowsAuthenticationDataChange0%
providerChangeAuthenticationData0%
describeCredentials0%
__construct0%
getAuthenticationRequests0%
beginSecondaryAuthentication0%
continueSecondaryAuthentication0%
beginSecondaryAccountCreation0%
getAuthenticationRequests0%
beginSecondaryAccountCreation0%
describeCredentials0%
__construct0%
getAuthenticationRequests0%
beginSecondaryAuthentication0%
continueSecondaryAuthentication0%
beginSecondaryAccountCreation0%
__construct0%
describeCredentials0%
getFieldInfo0%
loadFromSubmission0%
getSubmittedData0%
getAuthenticationRequests0%
getOATHUser0%
beginSecondaryAuthentication0%
continueSecondaryAuthentication0%
addModules0%
beginSecondaryAccountCreation0%
getInputHTML0%
__construct0%
getInputOOUI0%
getInputHTML0%
getInputHTML0%
onSuccess0%
getDescriptors0%
onSubmit0%
__construct0%
show0%
displayForm0%
getDescriptors0%
getLogger0%
wrapFieldSetSection0%
__construct0%
getHTML0%
getDescriptors0%
onSuccess0%
onSubmit0%
getHTML0%
getDescriptors0%
onSuccess0%
onSubmit0%
getHTML0%
onSuccess0%
getDescriptors0%
getRecoveryKeysFromSessionOrDefault0%
generateAltStep2Content0%
getSecretForDisplay0%
onSubmit0%
__construct0%
getHTML0%
onSuccess0%
onSubmit0%
getDescriptors0%
__construct0%
getHTML0%
getButtons0%
onSuccess0%
onSubmit0%
getDescriptors0%
onAuthChangeFormFields0%
onGetPreferences0%
getDisabledGroups0%
onUserEffectiveGroups0%
onUserGetRights0%
getOathManageModuleData0%
onBeforePageDisplay0%
onRegistration0%
__construct0%
onUnitTestsAfterDatabaseSetup0%
onUnitTestsBeforeDatabaseTeardown0%
onLoadExtensionSchemaUpdates0%
getCreatedTimestamp0%
supportsPasswordlessLogin0%
newKey0%
setFriendlyName0%
getAttestedCredentialData0%
getUserHandle0%
getSignCounter0%
setSignCounter0%
getAttestationType0%
getTrustPath0%
verify0%
verifyRegistration0%
getType0%
checkFriendlyName0%
registrationCeremony0%
authenticationCeremony0%
getHost0%
findOneByCredentialId0%
getAttestationSupportManager0%
getModule0%
getName0%
getDisplayName0%
newKey0%
getSecondaryAuthProvider0%
ensureExistence0%
isEnabled0%
getManageForm0%
getDescriptionMessage0%
getDisableWarningMessage0%
getAddKeyMessage0%
getLoginSwitchButtonMessage0%
isSpecial0%
getName0%
getDisplayName0%
newKey0%
getSecondaryAuthProvider0%
isEnabled0%
getManageForm0%
getDescriptionMessage0%
getDisableWarningMessage0%
getAddKeyMessage0%
getLoginSwitchButtonMessage0%
isSpecial0%
factory0%
getWebAuthnKeys0%
getName0%
getDisplayName0%
newKey0%
getSecondaryAuthProvider0%
isEnabled0%
verify0%
getManageForm0%
getDescriptionMessage0%
getDisableWarningMessage0%
getAddKeyMessage0%
isSpecial0%
getLoginSwitchButtonMessage0%
getIconType0%
getHeaderMessageKey0%
getPrimaryLink0%
getSecondaryLinks0%
getBodyMessage0%
getIconType0%
getPrimaryLink0%
getSecondaryLinks0%
getBodyMessage0%
isEnabled0%
notifyDisabled0%
notifyEnabled0%
notifyRecoveryTokensRemaining0%
notifyRecoveryTokensGeneratedForUser0%
getIconType0%
getPrimaryLink0%
getSecondaryLinks0%
getBodyMessage0%
getIconType0%
getPrimaryLink0%
getSecondaryLinks0%
getHeaderMessage0%
getBodyMessage0%
getUserRepository0%
getWebAuthnAuthenticator0%
removeKeysForModule0%
updateKey0%
removeAllOfType0%
remove0%
removeAll0%
getGroupName0%
doesWrites0%
getGroupName0%
doesWrites0%
getGenericContent0%
shouldShowGenericButtons0%
isModuleEnabled0%
getGroupName0%
doesWrites0%
getGroupName0%
doesWrites0%
getRequest0%
canAuthenticate0%
canRegister0%
startAuthentication0%
startPasswordlessAuthentication0%
startAuthenticationInternal0%
determineUser0%
continueAuthentication0%
startRegistration0%
continueRegistration0%
getChallengeFromCredential0%
addPendingRequest0%
clearPendingRequests0%
getPendingRequests0%
getPendingRequestWithChallenge0%
filterExpiredRequests0%
getAuthInfo0%
getRegisterInfo0%
getServerName0%
__construct0%
create0%
build2FARequiredNotice32%
checkPermissions41%
addModuleHTML42%
getDefaultModule50%
getClientIP50%
isPrivilegedUser50%
verify65%
getIssuer66%
buildIrremovableKeyNotice71%
addCustomContent72%
getKeyNameAndDescription73%
getServerId75%
beginSecondaryAuthentication81%
verify81%
sendEmailWithRecoveryCodes84%
getModuleFromRequest87%

Project Risks

Method CRAP
onAuthChangeFormFields156
doDBUpdates90
onGetPreferences72
beginPrimaryAuthentication56
doDBUpdates42
doDBUpdates42
doDBUpdates42
checkPermissions42
continueSecondaryAuthentication42
continueRegistration42
registrationCeremony30
getManageForm30
execute20
getAuthenticationRequests20
continueSecondaryAuthentication20
continueSecondaryAuthentication20
beginSecondaryAuthentication20
onSubmit20
getDisabledGroups20
onUserEffectiveGroups20
checkFriendlyName20
authenticationCeremony20
ensureExistence20
getSecondaryLinks20
removeAllOfType20
getGenericContent20
determineUser20
continueAuthentication20
getAuthInfo20
getServerName20
checkPermissions13
execute12
register12
onSubmit12
__construct12
getHTML12
onUserGetRights12
onBeforePageDisplay12
findOneByCredentialId12
verify12
getBodyMessage12
startAuthenticationInternal12
getPendingRequests12
getRegisterInfo12
getDefaultModule10
build2FARequiredNotice9
addCustomContent8
verify7
buildIrremovableKeyNotice6
needsToken6
checkModule6
getAuthInfo6
getRegisterInfo6
beginSecondaryAuthentication6
beginSecondaryAuthentication6
loadFromSubmission6
getDescriptors6
displayForm6
getDescriptors6
getDescriptors6
getRecoveryKeysFromSessionOrDefault6
getDescriptors6
onUnitTestsAfterDatabaseSetup6
onUnitTestsBeforeDatabaseTeardown6
onLoadExtensionSchemaUpdates6
verify6
verifyRegistration6
newKey6
getManageForm6
newKey6
getManageForm6
newKey6
getAddKeyMessage6
getHeaderMessageKey6
getSecondaryLinks6
getSecondaryLinks6
notifyDisabled6
notifyEnabled6
notifyRecoveryTokensRemaining6
notifyRecoveryTokensGeneratedForUser6
getSecondaryLinks6
updateKey6
shouldShowGenericButtons6
canAuthenticate6
canRegister6
startRegistration6
getModuleFromRequest5
addModuleHTML4
getKeyNameAndDescription4
getServerId4
beginSecondaryAuthentication4
verify4
sendEmailWithRecoveryCodes3
getClientIP2
isPrivilegedUser2
getIssuer2