Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
BO\Zmscitizenapi\Controllers\Availability\AvailableAppointmentsListByOfficeController0%
BO\Zmscitizenapi\Helper\ErrorHandler0%
BO\Zmscitizenapi\Middleware\CsrfMiddleware0%
BO\Zmscitizenapi\Middleware\MaintenanceMiddleware0%
BO\Zmscitizenapi\Middleware\RequestLoggingMiddleware0%
BO\Zmscitizenapi\Models\AvailableAppointmentsByOffice0%
BO\Zmscitizenapi\Services\Captcha\TokenValidationService9%
BO\Zmscitizenapi\Controllers\Office\OfficesServicesRelationsController41%
BO\Zmscitizenapi\Controllers\Captcha\CaptchaChallengeController50%
BO\Zmscitizenapi\Controllers\Captcha\CaptchaController50%
BO\Zmscitizenapi\Controllers\Captcha\CaptchaVerifyController57%
BO\Zmscitizenapi\Middleware\RequestSanitizerMiddleware57%
BO\Zmscitizenapi\Models\Collections\OfficeList61%
BO\Zmscitizenapi\Models\Collections\OfficeServiceRelationList61%
BO\Zmscitizenapi\Models\Collections\ServiceList61%
BO\Zmscitizenapi\Models\Collections\ThinnedScopeList64%
BO\Zmscitizenapi\Helper\DateTimeFormatHelper66%
BO\Zmscitizenapi\Controllers\Scope\ScopesListController75%
BO\Zmscitizenapi\Models\AvailableAppointments75%
BO\Zmscitizenapi\Models\AvailableDays75%
BO\Zmscitizenapi\Controllers\Office\OfficesListController77%
BO\Zmscitizenapi\Controllers\Service\ServicesListController77%
BO\Zmscitizenapi\Services\Captcha\CaptchaService80%
BO\Zmscitizenapi\Middleware\RequestSizeLimitMiddleware80%
BO\Zmscitizenapi\Services\Core\LoggerService81%
BO\Zmscitizenapi\BaseController82%
BO\Zmscitizenapi\Models\Collections\OfficeServiceAndRelationList83%
BO\Zmscitizenapi\Models\Service85%
BO\Zmscitizenapi\Controllers\Appointment\AppointmentByIdController87%
BO\Zmscitizenapi\Controllers\Appointment\AppointmentUpdateController87%
BO\Zmscitizenapi\Controllers\Availability\AvailableAppointmentsListController87%
BO\Zmscitizenapi\Controllers\Availability\AvailableDaysListController87%
BO\Zmscitizenapi\Controllers\Scope\ScopeByIdController87%
BO\Zmscitizenapi\Models\Combinable87%
BO\Zmscitizenapi\Models\OfficeServiceRelation87%
BO\Zmscitizenapi\Services\Core\ExceptionService88%
BO\Zmscitizenapi\Middleware\IpFilterMiddleware88%
BO\Zmscitizenapi\Controllers\Office\OfficeListByServiceController88%
BO\Zmscitizenapi\Controllers\Service\ServiceListByOfficeController88%
BO\Zmscitizenapi\Services\Appointment\AppointmentPreconfirmService89%

Project Risks

Class CRAP
BO\Zmscitizenapi\Middleware\CsrfMiddleware272
BO\Zmscitizenapi\Helper\ErrorHandler110
BO\Zmscitizenapi\Middleware\RequestSanitizerMiddleware57
BO\Zmscitizenapi\Services\Core\LoggerService44
BO\Zmscitizenapi\Services\Captcha\TokenValidationService43
BO\Zmscitizenapi\Services\Core\ExceptionService36
BO\Zmscitizenapi\Middleware\IpFilterMiddleware30
BO\Zmscitizenapi\Controllers\Availability\AvailableAppointmentsListByOfficeController30
BO\Zmscitizenapi\Models\AvailableAppointmentsByOffice30
BO\Zmscitizenapi\Services\Appointment\AppointmentPreconfirmService19
BO\Zmscitizenapi\Services\Captcha\CaptchaService19
BO\Zmscitizenapi\BaseController12
BO\Zmscitizenapi\Models\Collections\ThinnedScopeList12
BO\Zmscitizenapi\Middleware\RequestLoggingMiddleware12
BO\Zmscitizenapi\Models\Collections\OfficeList11
BO\Zmscitizenapi\Models\Collections\OfficeServiceRelationList11
BO\Zmscitizenapi\Models\Collections\ServiceList11
BO\Zmscitizenapi\Controllers\Office\OfficesServicesRelationsController10
BO\Zmscitizenapi\Controllers\Captcha\CaptchaChallengeController8
BO\Zmscitizenapi\Controllers\Captcha\CaptchaController8
BO\Zmscitizenapi\Helper\DateTimeFormatHelper7
BO\Zmscitizenapi\Models\Combinable7
BO\Zmscitizenapi\Controllers\Captcha\CaptchaVerifyController6
BO\Zmscitizenapi\Middleware\MaintenanceMiddleware6
BO\Zmscitizenapi\Controllers\Scope\ScopesListController5
BO\Zmscitizenapi\Models\AvailableAppointments5
BO\Zmscitizenapi\Models\AvailableDays5
BO\Zmscitizenapi\Controllers\Office\OfficesListController5
BO\Zmscitizenapi\Controllers\Service\ServicesListController5
BO\Zmscitizenapi\Middleware\RequestSizeLimitMiddleware5
BO\Zmscitizenapi\Models\Collections\OfficeServiceAndRelationList5
BO\Zmscitizenapi\Models\Service5
BO\Zmscitizenapi\Controllers\Appointment\AppointmentByIdController5
BO\Zmscitizenapi\Controllers\Appointment\AppointmentUpdateController5
BO\Zmscitizenapi\Controllers\Availability\AvailableAppointmentsListController5
BO\Zmscitizenapi\Controllers\Availability\AvailableDaysListController5
BO\Zmscitizenapi\Controllers\Scope\ScopeByIdController5
BO\Zmscitizenapi\Models\OfficeServiceRelation5
BO\Zmscitizenapi\Controllers\Office\OfficeListByServiceController5
BO\Zmscitizenapi\Controllers\Service\ServiceListByOfficeController5

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
getCsrfConfig0%
getExceptionContext0%
readResponse0%
__construct0%
readResponse0%
__invoke0%
getStatusCode0%
formatErrorPayload0%
getErrorMessage0%
logError0%
__construct0%
process0%
validateToken0%
ensureTokenExists0%
generateNewToken0%
getStoredToken0%
getToken0%
process0%
isLocked0%
__construct0%
process0%
sanitizeObject0%
sanitizeObjectWithDepth0%
jsonSerialize0%
__construct0%
ensureValid0%
toArray0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
jsonSerialize0%
getCaptchaToken0%
jsonSerialize0%
getProvider0%
getShortName0%
getCaptchaActivatedRequired0%
getDisplayInfo0%
validateCaptchaToken0%
getLanguageContext0%
validateCaptcha21%
readResponse33%
readResponse45%
readResponse45%
validateCacheDirectory50%
getInternalDateFromISO50%
getInternalDateFromTimestamp50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
ensureValid50%
readResponse53%
__construct57%
__construct57%
__construct57%
__construct57%
sanitizeString62%
sanitizeRequest63%
logWarning66%
logInfo66%
validateGetProcessFreeSlots66%
sanitizeDataWithDepth70%
readResponse71%
readResponse71%
readResponse71%
verifySolution71%
logRequest74%
getHighestStatusCode75%
getAvailableAppointmentsListByOffice75%
updateClientData75%
preconfirmAppointment75%
confirmAppointment75%
cancelAppointment75%
sendPreconfirmationEmail75%
sendConfirmationEmail75%
sendCancellationEmail75%
createJsonResponse76%
checkRateLimit77%
process77%
getScopesByProviderId77%
isIpInRange78%
cancelProcess80%
confirmProcess80%
preconfirmProcess80%
saveProcessUpdate80%
reserveTimeslot80%
processToThinnedProcess81%
process83%
createChallenge83%
validateServiceLocationCombination83%
processPreconfirm84%
readResponse85%
readResponse85%
readResponse85%
readResponse85%
readResponse85%
readResponse85%
readResponse85%
validateServerPostRequest85%
getOffices85%
getScopes85%
getServices85%
getRequestRelationList85%
processConfirm86%
findMatchingProcess88%
scopeToThinnedScope88%
validateGetBookableFreeDays88%
process89%
handleException89%

Project Risks

Method CRAP
sanitizeObjectWithDepth42
validateCaptchaToken42
processToThinnedProcess38
handleException33
validateCaptcha30
process30
scopeToThinnedScope21
readResponse20
validateToken20
logRequest17
validateGetBookableFreeDays14
isIpInRange12
getErrorMessage12
checkRateLimit11
readResponse8
verifySolution8
findMatchingProcess8
createJsonResponse7
process7
processPreconfirm7
processConfirm7
readResponse6
readResponse6
getHighestStatusCode6
validateServiceLocationCombination6
process6
validateCacheDirectory6
__invoke6
getStatusCode6
formatErrorPayload6
__construct6
ensureTokenExists6
process6
process6
ensureValid6
sanitizeDataWithDepth5
readResponse5
__construct5
__construct5
__construct5
__construct5
createChallenge5
readResponse4
readResponse4
readResponse4
process4
getScopesByProviderId4
getInternalDateFromISO4
readResponse4
readResponse4
readResponse4
readResponse4
readResponse4
readResponse4
readResponse4
validateServerPostRequest4
sanitizeString3
sanitizeRequest3
validateGetProcessFreeSlots3
getAvailableAppointmentsListByOffice3
cancelProcess3
confirmProcess3
preconfirmProcess3
saveProcessUpdate3
getOffices3
getScopes3
getServices3
getRequestRelationList3
getInternalDateFromTimestamp2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
ensureValid2
logWarning2
logInfo2
updateClientData2
preconfirmAppointment2
confirmAppointment2
cancelAppointment2
sendPreconfirmationEmail2
sendConfirmationEmail2
sendCancellationEmail2
reserveTimeslot2