Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
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\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\OATHUser0%
MediaWiki\Extension\OATHAuth\WebAuthnSerializerFactory0%
MediaWiki\Extension\OATHAuth\WebAuthnAuthenticator3%
MediaWiki\Extension\OATHAuth\Hook\HookHandler4%
MediaWiki\Extension\OATHAuth\Key\WebAuthnKey11%
MediaWiki\Extension\OATHAuth\Module\RecoveryCodes21%
MediaWiki\Extension\OATHAuth\Module\TOTP47%
MediaWiki\Extension\OATHAuth\Key\AuthKey60%
MediaWiki\Extension\OATHAuth\Auth\TOTPAuthenticationRequest63%
MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry64%
MediaWiki\Extension\OATHAuth\Auth\RecoveryCodesAuthenticationRequest66%
MediaWiki\Extension\OATHAuth\OATHAuthServices75%
MediaWiki\Extension\OATHAuth\OATHUserRepository76%
MediaWiki\Extension\OATHAuth\Key\RecoveryCodeKeys81%
MediaWiki\Extension\OATHAuth\Special\OATHManage81%
MediaWiki\Extension\OATHAuth\Key\TOTPKey82%
MediaWiki\Extension\OATHAuth\Api\Module\ApiOATHValidate82%
MediaWiki\Extension\OATHAuth\Auth\SecondaryAuthenticationProvider86%
MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesTrait89%

Project Risks

Class CRAP
MediaWiki\Extension\OATHAuth\WebAuthnAuthenticator2416
MediaWiki\Extension\OATHAuth\Hook\HookHandler1490
MediaWiki\Extension\OATHAuth\Key\WebAuthnKey1101
MediaWiki\Extension\OATHAuth\Api\Module\ApiWebAuthn600
MediaWiki\Extension\OATHAuth\Module\WebAuthn506
MediaWiki\Extension\OATHAuth\OATHUser342
MediaWiki\Extension\OATHAuth\Auth\PasskeyPrimaryAuthenticationProvider306
MediaWiki\Extension\OATHAuth\Module\RecoveryCodes232
MediaWiki\Extension\OATHAuth\Api\Module\ApiQueryOATH210
MediaWiki\Extension\OATHAuth\Auth\WebAuthnSecondaryAuthenticationProvider210
MediaWiki\Extension\OATHAuth\Special\OATHManage206
MediaWiki\Extension\OATHAuth\HTMLForm\TOTPEnableForm132
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\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\Key\RecoveryCodeKeys32
MediaWiki\Extension\OATHAuth\OATHAuthModuleRegistry30
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\Api\Module\ApiOATHValidate16
MediaWiki\Extension\OATHAuth\HTMLForm\RecoveryCodesTrait13
MediaWiki\Extension\OATHAuth\Hook\UpdateTables6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
isInternal0%
getExamplesMessages0%
__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%
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%
onGetUserPermissionsErrors0%
onUserGetRights0%
getOathManageModuleData0%
onBeforePageDisplay0%
onRegistration0%
__construct0%
onUnitTestsAfterDatabaseSetup0%
onUnitTestsBeforeDatabaseTeardown0%
onLoadExtensionSchemaUpdates0%
getCreatedTimestamp0%
supportsPasswordlessLogin0%
removeRecoveryCode0%
newKey0%
jsonSerialize0%
setPasswordlessSupport0%
setFriendlyName0%
getAttestedCredentialData0%
getUserHandle0%
getSignCounter0%
setSignCounter0%
getAttestationType0%
getTrustPath0%
verify0%
verifyRegistration0%
getType0%
getTransports0%
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%
getModuleByKey0%
getAllModules0%
getModuleId0%
getModuleRegistry0%
getUserRepository0%
getWebAuthnAuthenticator0%
__construct0%
getUser0%
getCentralId0%
getIssuer0%
getAccount0%
getKeys0%
getKeysForModule0%
getKeyById0%
removeKey0%
removeKeysForModule0%
addKey0%
isTwoFactorAuthEnabled0%
disable0%
getNonSpecialKeys0%
userHasNonSpecialEnabledKeys0%
getUserHandle0%
setUserHandle0%
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%
build2FARequiredNotice29%
checkPermissions41%
addModuleHTML42%
getDefaultModule50%
getClientIP50%
isPrivilegedUser50%
verify61%
buildIrremovableKeyNotice71%
addCustomContent72%
getKeyNameAndDescription73%
getServerId75%
generateRecoveryCodesContent75%
jsonSerialize80%
beginSecondaryAuthentication81%
verify81%
sendEmailWithRecoveryCodes84%
newFromArray85%
updateCheckUserData85%
getModuleFromRequest87%
logFailedVerification87%

Project Risks

Method CRAP
onAuthChangeFormFields132
execute90
onGetPreferences72
beginPrimaryAuthentication56
checkPermissions42
continueSecondaryAuthentication42
continueRegistration42
registrationCeremony30
getManageForm30
getAuthenticationRequests20
continueSecondaryAuthentication20
continueSecondaryAuthentication20
beginSecondaryAuthentication20
onSubmit20
getDisabledGroups20
onGetUserPermissionsErrors20
checkFriendlyName20
authenticationCeremony20
ensureExistence20
getSecondaryLinks20
removeAllOfType20
getGenericContent20
determineUser20
continueAuthentication20
getAuthInfo20
getServerName20
checkPermissions13
register12
onSubmit12
getHTML12
onUserGetRights12
onBeforePageDisplay12
removeRecoveryCode12
findOneByCredentialId12
verify12
getBodyMessage12
getModuleByKey12
startAuthenticationInternal12
getPendingRequests12
getRegisterInfo12
getDefaultModule10
build2FARequiredNotice9
addCustomContent8
verify8
buildIrremovableKeyNotice6
needsToken6
checkModule6
getAuthInfo6
getRegisterInfo6
beginSecondaryAuthentication6
beginSecondaryAuthentication6
loadFromSubmission6
getDescriptors6
displayForm6
getDescriptors6
getRecoveryKeysFromSessionOrDefault6
getDescriptors6
onUserEffectiveGroups6
onUnitTestsAfterDatabaseSetup6
onUnitTestsBeforeDatabaseTeardown6
onLoadExtensionSchemaUpdates6
verify6
verifyRegistration6
newKey6
newKey6
getManageForm6
newKey6
getAddKeyMessage6
getHeaderMessageKey6
getSecondaryLinks6
getSecondaryLinks6
notifyDisabled6
notifyEnabled6
notifyRecoveryTokensRemaining6
notifyRecoveryTokensGeneratedForUser6
getSecondaryLinks6
getAllModules6
getModuleId6
getIssuer6
updateKey6
shouldShowGenericButtons6
canAuthenticate6
canRegister6
startRegistration6
getModuleFromRequest5
addModuleHTML4
getKeyNameAndDescription4
getServerId4
generateRecoveryCodesContent4
beginSecondaryAuthentication4
verify4
newFromArray4
jsonSerialize3
sendEmailWithRecoveryCodes3
updateCheckUserData3
getClientIP2
isPrivilegedUser2
logFailedVerification2