ldc-crm/tests/coverage/Http/Controllers/dashboard.html

286 lines
16 KiB
HTML
Raw Permalink Normal View History

Version 3.0.0 This removes api authentification with token in favor of signature method. Refactorize code and clean up. It add more unit test plus code coverage in test/converage. - Added config.api.timestampTimeout - Added Helper::signRequest This calculates the request signature - Added more unit tests and extend code coverage. - Added rate limiter for web routes - Added RemoveSpaces Sanitizer on api requests - Added stress test suite - Changed AuthServiceProvider api-token to api-hmac - Changed CustomerSeeder to have at least of customer activated (for unit tests) - Changed used transation for saveing multiple models - Changed, in ServiceController generateApiToken to generateServicePassword - Changed, timestamp has to be send in request with a DateTime format, it also has to a UTC value - Composer added brianium/paratest - Composer update - Fixed case where removing single optin could be the wrong one (not for the good service) - Fixed customer delete - Fixed customer would not be resolved by brand. - Fixed Really check that request is json checking body content, preventing sending malformed requests - Remove ApiError::needAuth - Removed api_token - Removed ApiController::authenticate - Removed config.api.tokenTimeout - Removed Header check or usage because of HAProxy doing weird stuff - Removed lock files from gitignore - Removed memcached dependency - Removed unused questions resources api routes - Removed workspace file Migrations - Added unique index on services.bearer_token - Changed customer_id on customer_answer is nullable - Changed services.bearer_pwd length to 312 (the size of the token) - Dropped services.api_token and service.api_token_date
2021-12-19 15:57:24 +01:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dashboard for /home/jeremy/projets/crm/app/Http/Controllers</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="../../_css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="../../_css/nv.d3.min.css" rel="stylesheet" type="text/css">
<link href="../../_css/style.css" rel="stylesheet" type="text/css">
<link href="../../_css/custom.css" rel="stylesheet" type="text/css">
</head>
<body>
<header>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../../index.html">/home/jeremy/projets/crm/app</a></li>
<li class="breadcrumb-item"><a href="../index.html">Http</a></li>
<li class="breadcrumb-item"><a href="index.html">Controllers</a></li>
<li class="breadcrumb-item active">(Dashboard)</li>
</ol>
</nav>
</div>
</div>
</div>
</header>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h2>Classes</h2>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3>Coverage Distribution</h3>
<div id="classCoverageDistribution" style="height: 300px;">
<svg></svg>
</div>
</div>
<div class="col-md-6">
<h3>Complexity</h3>
<div id="classComplexity" style="height: 300px;">
<svg></svg>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3>Insufficient Coverage</h3>
<div class="scrollbox">
<table class="table">
<thead>
<tr>
<th>Class</th>
<th class="text-right">Coverage</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<div class="col-md-6">
<h3>Project Risks</h3>
<div class="scrollbox">
<table class="table">
<thead>
<tr>
<th>Class</th>
<th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<h2>Methods</h2>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3>Coverage Distribution</h3>
<div id="methodCoverageDistribution" style="height: 300px;">
<svg></svg>
</div>
</div>
<div class="col-md-6">
<h3>Complexity</h3>
<div id="methodComplexity" style="height: 300px;">
<svg></svg>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3>Insufficient Coverage</h3>
<div class="scrollbox">
<table class="table">
<thead>
<tr>
<th>Method</th>
<th class="text-right">Coverage</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<div class="col-md-6">
<h3>Project Risks</h3>
<div class="scrollbox">
<table class="table">
<thead>
<tr>
<th>Method</th>
<th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<footer>
<hr/>
<p>
<small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 9.2.10</a> using <a href="https://secure.php.net/" target="_top">PHP 7.3.31-2+ubuntu20.04.1+deb.sury.org+1</a> and <a href="https://phpunit.de/">PHPUnit 9.5.11</a> at Thu Jan 6 12:10:34 CET 2022.</small>
</p>
</footer>
</div>
<script src="../../_js/jquery.min.js" type="text/javascript"></script>
<script src="../../_js/d3.min.js" type="text/javascript"></script>
<script src="../../_js/nv.d3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
nv.addGraph(function() {
var chart = nv.models.multiBarChart();
chart.tooltips(false)
.showControls(false)
.showLegend(false)
.reduceXTicks(false)
.staggerLabels(true)
.yAxis.tickFormat(d3.format('d'));
d3.select('#classCoverageDistribution svg')
.datum(getCoverageDistributionData([0,0,0,0,0,0,0,0,0,0,0,18], "Class Coverage"))
.transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
nv.addGraph(function() {
var chart = nv.models.multiBarChart();
chart.tooltips(false)
.showControls(false)
.showLegend(false)
.reduceXTicks(false)
.staggerLabels(true)
.yAxis.tickFormat(d3.format('d'));
d3.select('#methodCoverageDistribution svg')
.datum(getCoverageDistributionData([0,0,0,0,0,0,0,0,0,0,0,58], "Method Coverage"))
.transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
function getCoverageDistributionData(data, label) {
var labels = [
'0%',
'0-10%',
'10-20%',
'20-30%',
'30-40%',
'40-50%',
'50-60%',
'60-70%',
'70-80%',
'80-90%',
'90-100%',
'100%'
];
var values = [];
$.each(labels, function(key) {
values.push({x: labels[key], y: data[key]});
});
return [
{
key: label,
values: values,
color: "#4572A7"
}
];
}
nv.addGraph(function() {
var chart = nv.models.scatterChart()
.showDistX(true)
.showDistY(true)
.showLegend(false)
.forceX([0, 100]);
chart.tooltipContent(function(graph) {
return '<p>' + graph.point.class + '</p>';
});
chart.xAxis.axisLabel('Code Coverage (in percent)');
chart.yAxis.axisLabel('Cyclomatic Complexity');
d3.select('#classComplexity svg')
.datum(getComplexityData([[100,4,"<a href=\"AnswerController.php.html#14\">App\\Http\\Controllers\\AnswerController<\/a>"],[100,57,"<a href=\"Api\/V1\/ArcadiaController.php.html#19\">App\\Http\\Controllers\\Api\\V1\\ArcadiaController<\/a>"],[100,69,"<a href=\"Api\/V1\/CustomerController.php.html#22\">App\\Http\\Controllers\\Api\\V1\\CustomerController<\/a>"],[100,1,"<a href=\"Api\/V2\/AnswerController.php.html#12\">App\\Http\\Controllers\\Api\\V2\\AnswerController<\/a>"],[100,1,"<a href=\"Api\/V2\/ApiController.php.html#8\">App\\Http\\Controllers\\Api\\V2\\ApiController<\/a>"],[100,8,"<a href=\"Api\/V2\/ArcadiaController.php.html#29\">App\\Http\\Controllers\\Api\\V2\\ArcadiaController<\/a>"],[100,26,"<a href=\"Api\/V2\/CustomerController.php.html#22\">App\\Http\\Controllers\\Api\\V2\\CustomerController<\/a>"],[100,4,"<a href=\"Api\/V2\/OptinController.php.html#14\">App\\Http\\Controllers\\Api\\V2\\OptinController<\/a>"],[100,3,"<a href=\"Api\/V2\/QuestionController.php.html#14\">App\\Http\\Controllers\\Api\\V2\\QuestionController<\/a>"],[100,5,"<a href=\"Api\/V2\/StatsController.php.html#18\">App\\Http\\Controllers\\Api\\V2\\StatsController<\/a>"],[100,2,"<a href=\"BrandController.php.html#13\">App\\Http\\Controllers\\BrandController<\/a>"],[100,0,"<a href=\"Controller.php.html#13\">App\\Http\\Controllers\\Controller<\/a>"],[100,32,"<a href=\"CustomerController.php.html#26\">App\\Http\\Controllers\\CustomerController<\/a>"],[100,5,"<a href=\"LoginController.php.html#11\">App\\Http\\Controllers\\LoginController<\/a>"],[100,12,"<a href=\"QuestionController.php.html#21\">App\\Http\\Controllers\\QuestionController<\/a>"],[100,4,"<a href=\"ServiceController.php.html#16\">App\\Http\\Controllers\\ServiceController<\/a>"],[100,4,"<a href=\"SingleOptinController.php.html#13\">App\\Http\\Controllers\\SingleOptinController<\/a>"],[100,12,"<a href=\"StatsController.php.html#19\">App\\Http\\Controllers\\StatsController<\/a>"]], 'Class Complexity'))
.transition()
.duration(500)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
nv.addGraph(function() {
var chart = nv.models.scatterChart()
.showDistX(true)
.showDistY(true)
.showLegend(false)
.forceX([0, 100]);
chart.tooltipContent(function(graph) {
return '<p>' + graph.point.class + '</p>';
});
chart.xAxis.axisLabel('Code Coverage (in percent)');
chart.yAxis.axisLabel('Method Complexity');
d3.select('#methodComplexity svg')
.datum(getComplexityData([[100,2,"<a href=\"AnswerController.php.html#36\">App\\Http\\Controllers\\AnswerController::indexQuery<\/a>"],[100,2,"<a href=\"AnswerController.php.html#53\">App\\Http\\Controllers\\AnswerController::index<\/a>"],[100,10,"<a href=\"Api\/V1\/ArcadiaController.php.html#25\">App\\Http\\Controllers\\Api\\V1\\ArcadiaController::outgoingMail<\/a>"],[100,4,"<a href=\"Api\/V1\/ArcadiaController.php.html#92\">App\\Http\\Controllers\\Api\\V1\\ArcadiaController::checkShippingRequiredFields<\/a>"],[100,21,"<a href=\"Api\/V1\/ArcadiaController.php.html#122\">App\\Http\\Controllers\\Api\\V1\\ArcadiaController::checkRequiredFields<\/a>"],[100,22,"<a href=\"Api\/V1\/ArcadiaController.php.html#222\">App\\Http\\Controllers\\Api\\V1\\ArcadiaController::makeXml<\/a>"],[100,12,"<a href=\"Api\/V1\/CustomerController.php.html#30\">App\\Http\\Controllers\\Api\\V1\\CustomerController::store<\/a>"],[100,6,"<a href=\"Api\/V1\/CustomerController.php.html#133\">App\\Http\\Controllers\\Api\\V1\\CustomerController::show<\/a>"],[100,22,"<a href=\"Api\/V1\/CustomerController.php.html#168\">App\\Http\\Controllers\\Api\\V1\\CustomerController::update<\/a>"],[100,6,"<a href=\"Api\/V1\/CustomerController.php.html#282\">App\\Http\\Controllers\\Api\\V1\\CustomerController::authenticate<\/a>"],[100,5,"<a href=\"Api\/V1\/CustomerController.php.html#354\">App\\Http\\Controllers\\Api\\V1\\CustomerController::changePassword<\/a>"],[100,4,"<a href=\"Api\/V1\/CustomerController.php.html#398\">App\\Http\\Controllers\\Api\\V1\\CustomerController::activateAccount<\/a>"],[100,4,"<a href=\"Api\/V1\/CustomerController.php.html#431\">App\\Http\\Controllers\\Api\\V1\\CustomerController::delete<\/a>"],[100,4,"<a href=\"Api\/V1\/CustomerController.php.html#463\">App\\Http\\Controllers\\Api\\V1\\CustomerController::toggleOptin<\/a>"],[100,2,"<a href=\"Api\/V1\/CustomerController.php.html#500\">App\\Http\\Controllers\\Api\\V1\\CustomerController::removeOptin<\/a>"],[100,4,"<a href=\"Api\/V1\/CustomerController.php.html#534\">App\\Http\\Controllers\\Api\\V1\\CustomerController::addSingleOptin<\/a>"],[100,1,"<a href=\"Api\/V2\/AnswerController.php.html#22\">App\\Http\\Controllers\\Api\\V2\\AnswerController::storeCustomerAnswers<\/a>"],[100,1,"<a href=\"Api\/V2\/ApiController.php.html#15\">App\\Http\\Controllers\\Api\\V2\\ApiController::ping<\/a>"],[100,1,"<a href=\"Api\/V2\/ArcadiaController.php.html#37\">App\\Http\\Controllers\\Api\\V2\\ArcadiaController::outgoingMailDefault<\/a>"],[100,1,"<a href=\"Api\/V2\/ArcadiaController.php.html#48\">App\\Http\\Controllers\\Api\\V2\\ArcadiaController::outgoingMailGame<\/a>"],[100,4,"<a href=\"Api\/V2\/ArcadiaController.php.html#62\">App\\Http\\Controllers\\Api\\V2\\ArcadiaController::handleArcadiaMail<\/a>"],[100,2,"<a href=\"Api\/V2\/ArcadiaController.php.html#124\">App\\Http\\Controllers\\Api\\V2\\ArcadiaController::makeXml<\/a>"],[100,7,"<a href=\"Api\/V2\/CustomerController.php.html#33\">App\\Http\\Controllers\\Api\\V2\\CustomerController::store<\/a>"],[100,1,"<a href=\"Api\/V2\/CustomerController.php.html#89\">App\\Http\\Controllers\\Api\\V2\\CustomerController::show<\/a>"],[100,5,"<a href=\"Api\/V2\/CustomerController.php.html#106\">App\\Http\\Controllers\\Api\\V2\\CustomerController::update<\/a>"],[100,6,"<a href=\"Api\/V2\/CustomerController.php.html#147\">App\\Http\\Controllers\\Api\\V2\\CustomerController::destroy<\/a>"],[100,4,"<a href=\"Api\/V2\/CustomerController.php.html#199\">App\\Http\\Controllers\\Api\\V2\\CustomerController::authenticate<\/a>"],[100,3,"<a href=\"Api\/V2\/CustomerController.php.html#232\">App\\Http\\Controllers\\Api\\V2\\CustomerController::activateAccount<\/a>"],[100,4,"<a href=\"Api\/V2\/OptinController.php.html#25\">App\\Http\\Controllers\\Api\\V2\\OptinController::optin<\/a>"],[100,1,"<a href=\"Api\/V2\/QuestionController.php.html#22\">App\\Http\\Controllers\\Api\\V2\\QuestionController::index<\/a>"],[100,1,"<a href=\"Api\/V2\/QuestionController.php.html#34\">App\\Http\\Controllers\\Api\\V2\\QuestionController::indexWithResponse<\/a>"],[100,1,"<a href=\"Api\/V2\/Questio
.transition()
.duration(500)
.call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
function getComplexityData(data, label) {
var values = [];
$.each(data, function(key) {
var value = Math.round(data[key][0]*100) / 100;
values.push({
x: value,
y: data[key][1],
class: data[key][2],
size: 0.05,
shape: 'diamond'
});
});
return [
{
key: label,
values: values,
color: "#4572A7"
}
];
}
});
</script>
</body>
</html>