ldc-crm/tests/coverage/Exceptions/Handler.php.html

387 lines
122 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>Code Coverage for /home/jeremy/projets/crm/app/Exceptions/Handler.php</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/octicons.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">Exceptions</a></li>
<li class="breadcrumb-item active">Handler.php</li>
</ol>
</nav>
</div>
</div>
</div>
</header>
<div class="container-fluid">
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<td>&nbsp;</td>
<td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
<td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
<td colspan="3"><div align="center"><strong>Lines</strong></div></td>
</tr>
</thead>
<tbody>
<tr>
<td class="danger">Total</td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="warning big"> <div class="progress">
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="75.00" aria-valuemin="0" aria-valuemax="100" style="width: 75.00%">
<span class="sr-only">75.00% covered (warning)</span>
</div>
</div>
</td>
<td class="warning small"><div align="right">75.00%</div></td>
<td class="warning small"><div align="right">3&nbsp;/&nbsp;4</div></td>
<td class="warning small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="90.00" aria-valuemin="0" aria-valuemax="100" style="width: 90.00%">
<span class="sr-only">90.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">90.00%</div></td>
<td class="success small"><div align="right">36&nbsp;/&nbsp;40</div></td>
</tr>
<tr>
<td class="danger"><abbr title="App\Exceptions\Handler">Handler</abbr></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="warning big"> <div class="progress">
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="75.00" aria-valuemin="0" aria-valuemax="100" style="width: 75.00%">
<span class="sr-only">75.00% covered (warning)</span>
</div>
</div>
</td>
<td class="warning small"><div align="right">75.00%</div></td>
<td class="warning small"><div align="right">3&nbsp;/&nbsp;4</div></td>
<td class="warning small">14.20</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="90.00" aria-valuemin="0" aria-valuemax="100" style="width: 90.00%">
<span class="sr-only">90.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">90.00%</div></td>
<td class="success small"><div align="right">36&nbsp;/&nbsp;40</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#48"><abbr title="register()">register</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#59"><abbr title="render($request, Throwable $e)">render</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">3</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
</tr>
<tr>
<td class="danger" colspan="4">&nbsp;<a href="#76"><abbr title="handleApiV2Exception(Illuminate\Http\Request $request, Throwable $e): Illuminate\Http\JsonResponse">handleApiV2Exception</abbr></a></td>
<td class="danger big"> <div class="progress">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
<span class="sr-only">0.00% covered (danger)</span>
</div>
</div>
</td>
<td class="danger small"><div align="right">0.00%</div></td>
<td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
<td class="danger small">9.14</td>
<td class="warning big"> <div class="progress">
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="87.88" aria-valuemin="0" aria-valuemax="100" style="width: 87.88%">
<span class="sr-only">87.88% covered (warning)</span>
</div>
</div>
</td>
<td class="warning small"><div align="right">87.88%</div></td>
<td class="warning small"><div align="right">29&nbsp;/&nbsp;33</div></td>
</tr>
<tr>
<td class="success" colspan="4">&nbsp;<a href="#159"><abbr title="getReponse(Illuminate\Http\Request $request, int $httpCode, int $apiCode, string $message, array $data): Illuminate\Http\JsonResponse">getReponse</abbr></a></td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
<td class="success small">1</td>
<td class="success big"> <div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
<span class="sr-only">100.00% covered (success)</span>
</div>
</div>
</td>
<td class="success small"><div align="right">100.00%</div></td>
<td class="success small"><div align="right">4&nbsp;/&nbsp;4</div></td>
</tr>
</tbody>
</table>
</div>
<table id="code" class="table table-borderless table-condensed">
<tbody>
<tr class=" d-flex"><td class="col-1 text-right"><a id="1" href="#1">1</a></td><td class="col-11 codeLine"><span class="default">&lt;?php</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="2" href="#2">2</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="3" href="#3">3</a></td><td class="col-11 codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Exceptions</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="4" href="#4">4</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="5" href="#5">5</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Enums</span><span class="default">\</span><span class="default">ApiError</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="6" href="#6">6</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Enums</span><span class="default">\</span><span class="default">ApiStatus</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="7" href="#7">7</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Exceptions</span><span class="default">\</span><span class="default">Api</span><span class="default">\</span><span class="default">V2</span><span class="default">\</span><span class="default">ApiErrorException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="8" href="#8">8</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Resources</span><span class="default">\</span><span class="default">Api</span><span class="default">\</span><span class="default">V2</span><span class="default">\</span><span class="default">ApiResponse</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">V2ApiResponse</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="9" href="#9">9</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">App</span><span class="default">\</span><span class="default">Lib</span><span class="default">\</span><span class="default">Helper</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="10" href="#10">10</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">Access</span><span class="default">\</span><span class="default">AuthorizationException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="11" href="#11">11</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Auth</span><span class="default">\</span><span class="default">AuthenticationException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="12" href="#12">12</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Database</span><span class="default">\</span><span class="default">Eloquent</span><span class="default">\</span><span class="default">ModelNotFoundException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="13" href="#13">13</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Exceptions</span><span class="default">\</span><span class="default">ThrottleRequestsException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="14" href="#14">14</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">JsonResponse</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="15" href="#15">15</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Http</span><span class="default">\</span><span class="default">Request</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="16" href="#16">16</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Illuminate</span><span class="default">\</span><span class="default">Validation</span><span class="default">\</span><span class="default">ValidationException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="17" href="#17">17</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Kwaadpepper</span><span class="default">\</span><span class="default">ExceptionHandler</span><span class="default">\</span><span class="default">Exceptions</span><span class="default">\</span><span class="default">ExceptionHandler</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="18" href="#18">18</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Symfony</span><span class="default">\</span><span class="default">Component</span><span class="default">\</span><span class="default">HttpKernel</span><span class="default">\</span><span class="default">Exception</span><span class="default">\</span><span class="default">MethodNotAllowedHttpException</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="19" href="#19">19</a></td><td class="col-11 codeLine"><span class="keyword">use</span><span class="default">&nbsp;</span><span class="default">Throwable</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="20" href="#20">20</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="21" href="#21">21</a></td><td class="col-11 codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">Handler</span><span class="default">&nbsp;</span><span class="keyword">extends</span><span class="default">&nbsp;</span><span class="default">ExceptionHandler</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="22" href="#22">22</a></td><td class="col-11 codeLine"><span class="keyword">{</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="23" href="#23">23</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="24" href="#24">24</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;list&nbsp;of&nbsp;the&nbsp;exception&nbsp;types&nbsp;that&nbsp;are&nbsp;not&nbsp;reported.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="25" href="#25">25</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="26" href="#26">26</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="27" href="#27">27</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="28" href="#28">28</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$dontReport</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="29" href="#29">29</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiErrorException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="30" href="#30">30</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">RedirectTo</span><span class="default">::</span><span class="keyword">class</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="31" href="#31">31</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="32" href="#32">32</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="33" href="#33">33</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="34" href="#34">34</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;list&nbsp;of&nbsp;the&nbsp;inputs&nbsp;that&nbsp;are&nbsp;never&nbsp;flashed&nbsp;for&nbsp;validation&nbsp;exceptions.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="35" href="#35">35</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="36" href="#36">36</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="37" href="#37">37</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="38" href="#38">38</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span class="default">&nbsp;</span><span class="default">$dontFlash</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="39" href="#39">39</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password'</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="40" href="#40">40</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">'password_confirmation'</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="41" href="#41">41</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="42" href="#42">42</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="43" href="#43">43</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="44" href="#44">44</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Register&nbsp;the&nbsp;exception&nbsp;handling&nbsp;callbacks&nbsp;for&nbsp;the&nbsp;application.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="45" href="#45">45</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="46" href="#46">46</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="47" href="#47">47</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="48" href="#48">48</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">register</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="49" href="#49">49</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="29 tests cover line 50" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testOnlyJsonCallsAreHandled&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="50" href="#50">50</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="51" href="#51">51</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="52" href="#52">52</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="53" href="#53">53</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Render&nbsp;an&nbsp;exception&nbsp;into&nbsp;an&nbsp;HTTP&nbsp;response.</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="54" href="#54">54</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="55" href="#55">55</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;mixed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$request</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="56" href="#56">56</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;&nbsp;\Throwable&nbsp;$e</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="57" href="#57">57</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Symfony\Component\HttpFoundation\Response</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="58" href="#58">58</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="59" href="#59">59</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">render</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">Throwable</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="60" href="#60">60</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="29 tests cover line 61" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testOnlyJsonCallsAreHandled&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="61" href="#61">61</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</sp
<tr class="covered-by-large-tests popin d-flex"><td data-title="28 tests cover line 62" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="62" href="#62">62</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="de
<tr class=" d-flex"><td class="col-1 text-right"><a id="63" href="#63">63</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="default">&nbsp;</span><span class="comment">//end&nbsp;if</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="64" href="#64">64</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;@codeCoverageIgnoreStart</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="65" href="#65">65</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">parent</span><span class="default">::</span><span class="default">render</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="66" href="#66">66</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;@codeCoverageIgnoreEnd</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="67" href="#67">67</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="68" href="#68">68</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="69" href="#69">69</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="70" href="#70">70</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Generate&nbsp;a&nbsp;json&nbsp;response&nbsp;for&nbsp;any&nbsp;apiV2&nbsp;error&nbsp;case</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="71" href="#71">71</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="72" href="#72">72</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Request&nbsp;&nbsp;&nbsp;&nbsp;$request</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="73" href="#73">73</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;\Throwable&nbsp;$e</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="74" href="#74">74</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;JsonResponse</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="75" href="#75">75</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="76" href="#76">76</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">handleApiV2Exception</span><span class="keyword">(</span><span class="default">Request</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">\</span><span class="default">Throwable</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="default">JsonResponse</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="77" href="#77">77</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="28 tests cover line 78" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="78" href="#78">78</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">switch</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">get_class</span><span class="keyword">(</span><span cla
<tr class=" d-flex"><td class="col-1 text-right"><a id="79" href="#79">79</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">AuthenticationException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">:</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="80" href="#80">80</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;AuthenticationException&nbsp;$e&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="3 tests cover line 81" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="81" href="#81">81</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="82" href="#82">82</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="3 tests cover line 83" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="83" href="#83">83</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">401</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="3 tests cover line 84" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="84" href="#84">84</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">apiAuthFailed</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">value</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="3 tests cover line 85" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="85" href="#85">85</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">sprintf</span><span class="keyword">(</span><span class="default">'%s,&nbsp;%s'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">apiAuthFailed</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">label</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getMessage</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="86" href="#86">86</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="87" href="#87">87</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">MethodNotAllowedHttpException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">:</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="88" href="#88">88</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;MethodNotAllowedHttpException&nbsp;$e&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 89" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="89" href="#89">89</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="90" href="#90">90</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 91" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="91" href="#91">91</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getStatusCode</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 92" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="92" href="#92">92</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">methodNotAllowed</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">value</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 93" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="93" href="#93">93</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">sprintf</span><span class="keyword">(</span><span class="default">'%s,&nbsp;%s'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">methodNotAllowed</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">label</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getMessage</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="94" href="#94">94</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="95" href="#95">95</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">ValidationException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">:</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="96" href="#96">96</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;ValidationException&nbsp;$e&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="8 tests cover line 97" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="97" href="#97">97</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="8 tests cover line 98" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="98" href="#98">98</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="8 tests cover line 99" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="99" href="#99">99</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">status</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="8 tests cover line 100" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="100" href="#100">100</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">validationFailed</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">value</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="8 tests cover line 101" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="101" href="#101">101</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">sprintf</span><span class="keyword">(</span><span class="default">ApiError</span><span class="default">::</span><span class="default">validationFailed</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">label</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getMessage</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="8 tests cover line 102" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="102" href="#102">102</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">[</span><span class="default">'errors'</span><span class="default">&nbsp;</span><span class="default">=&gt;</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">errors</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">]</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="103" href="#103">103</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="104" href="#104">104</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">ModelNotFoundException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">:</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="105" href="#105">105</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;ModelNotFoundException&nbsp;$e&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 106" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="106" href="#106">106</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="107" href="#107">107</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 108" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="108" href="#108">108</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">404</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 109" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="109" href="#109">109</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">modelNotFound</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">value</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 110" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="110" href="#110">110</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">sprintf</span><span class="keyword">(</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 111" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="111" href="#111">111</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">modelNotFound</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">label</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="6 tests cover line 112" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="112" href="#112">112</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">\</span><span class="default">array_slice</span><span class="keyword">(</span><span class="default">explode</span><span class="keyword">(</span><span class="default">'\\'</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getModel</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">-</span><span class="default">1</span><span class="keyword">)</span><span class="keyword">[</span><span class="default">0</span><span class="keyword">]</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="113" href="#113">113</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="114" href="#114">114</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="115" href="#115">115</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">ApiErrorException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">:</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="116" href="#116">116</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;ApiErrorException&nbsp;$e&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 117" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="117" href="#117">117</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="118" href="#118">118</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 119" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="119" href="#119">119</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getStatusCode</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 120" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="120" href="#120">120</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getCode</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="9 tests cover line 121" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="121" href="#121">121</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getMessage</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="122" href="#122">122</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="123" href="#123">123</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">ThrottleRequestsException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">:</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="124" href="#124">124</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;ThrottleRequestsException&nbsp;$e&nbsp;*/</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 125" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="125" href="#125">125</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="126" href="#126">126</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 127" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="127" href="#127">127</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">429</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 128" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="128" href="#128">128</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">throttleRequestsException</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">value</span><span class="keyword">,</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="1 test covers line 129" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="129" href="#129">129</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">throttleRequestsException</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">label</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="130" href="#130">130</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="131" href="#131">131</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">AuthorizationException</span><span class="default">::</span><span class="keyword">class</span><span class="keyword">:</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="132" href="#132">132</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;@var&nbsp;AuthorizationException&nbsp;$e&nbsp;*/</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="133" href="#133">133</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="134" href="#134">134</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="135" href="#135">135</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">403</span><span class="keyword">,</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="136" href="#136">136</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">authorizationException</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">value</span><span class="keyword">,</span></td></tr>
<tr class="danger d-flex"><td class="col-1 text-right"><a id="137" href="#137">137</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiError</span><span class="default">::</span><span class="default">authorizationException</span><span class="keyword">(</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">label</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="138" href="#138">138</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="139" href="#139">139</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span><span class="default">&nbsp;</span><span class="comment">//end&nbsp;switch</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="140" href="#140">140</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;@codeCoverageIgnoreStart</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="141" href="#141">141</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">config</span><span class="keyword">(</span><span class="default">'app.env'</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">'testing'</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="142" href="#142">142</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;phpcs:ignore&nbsp;Squiz.PHP.DiscouragedFunctions.Found</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="143" href="#143">143</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">print_r</span><span class="keyword">(</span><span class="default">(string)</span><span class="default">$e</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="144" href="#144">144</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="145" href="#145">145</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">getReponse</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">500</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getCode</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="default">-&gt;</span><span class="default">getMessage</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="146" href="#146">146</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;@codeCoverageIgnoreEnd</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="147" href="#147">147</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="148" href="#148">148</a></td><td class="col-11 codeLine"></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="149" href="#149">149</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="150" href="#150">150</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Generate&nbsp;an&nbsp;ApiV2&nbsp;json&nbsp;response</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="151" href="#151">151</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="152" href="#152">152</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;Request&nbsp;$request</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="153" href="#153">153</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;integer&nbsp;$httpCode</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="154" href="#154">154</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;integer&nbsp;$apiCode</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="155" href="#155">155</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;&nbsp;$message</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="156" href="#156">156</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;array&nbsp;&nbsp;&nbsp;$data</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="157" href="#157">157</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;JsonResponse</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="158" href="#158">158</a></td><td class="col-11 codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="159" href="#159">159</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">static</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">getReponse</span><span class="keyword">(</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="160" href="#160">160</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">Request</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="161" href="#161">161</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">int</span><span class="default">&nbsp;</span><span class="default">$httpCode</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="162" href="#162">162</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">int</span><span class="default">&nbsp;</span><span class="default">$apiCode</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="163" href="#163">163</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">string</span><span class="default">&nbsp;</span><span class="default">$message</span><span class="keyword">,</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="164" href="#164">164</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">array</span><span class="default">&nbsp;</span><span class="default">$data</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">[</span><span class="keyword">]</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="165" href="#165">165</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="default">JsonResponse</span><span class="default">&nbsp;</span><span class="keyword">{</span></td></tr>
<tr class="covered-by-large-tests popin d-flex"><td data-title="28 tests cover line 166" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="166" href="#166">166</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">new</span><span class="default">&nbsp;</span><span
<tr class="covered-by-large-tests popin d-flex"><td data-title="28 tests cover line 167" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="167" href="#167">167</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">(object)</span><span class="default">array_merge</span><span class="keyword">(</span><span class="default">$data</span><span cl
<tr class="covered-by-large-tests popin d-flex"><td data-title="28 tests cover line 168" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="168" href="#168">168</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">ApiStatus</span><span class="default">::</span><span class="default">KO</span><span class="keyword">(</span><span class="keywor
<tr class="covered-by-large-tests popin d-flex"><td data-title="28 tests cover line 169" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailMissing&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailWrongFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testTimestampMiddlewareCheckFailIfTooOld&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testApiThrottle&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testWrongMethodCall&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailNoToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailUnknownToken&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\ApiTest::testAuthFailWrongSignature&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongPassword&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfWrongEmail&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiAuthenticateCustomerShouldFailIfCustomerNotActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerShouldFailIfCustomerAlreadyExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiStoreCustomerValidationFailures&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testActivateCustomerAlreadyActivated&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerOk&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiUpdateCustomerShouldFailWhenNothingChanges&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiGetCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\CustomerTest::testApiCompletelyDestroyCustomer&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionIndexWithAnswersWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testUnAnsweredIndexWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\QuestionTest::testQuestionSetAnswerWhenCustomerNotFound&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\SingleOptinTest::testSingleOptinShouldFailIfCustomerExists&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByBrandShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidQuestion&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDate&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;Tests\CRM\ApiV2\StatsTest::testStatsByQuestionShouldFailWithInvalidDateFormat&lt;/li&gt;&lt;/ul&gt;" data-placement="top" data-html="true" class="col-1 text-right"><a id="169" href="#169">169</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">)</span><span class="keyword">)</span><span class="default">-&gt;</span><span class="default">toResponse</span><span class="keyword">(</span><span clas
<tr class=" d-flex"><td class="col-1 text-right"><a id="170" href="#170">170</a></td><td class="col-11 codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
<tr class=" d-flex"><td class="col-1 text-right"><a id="171" href="#171">171</a></td><td class="col-11 codeLine"><span class="keyword">}</span></td></tr>
</tbody>
</table>
<footer>
<hr/>
<h4>Legend</h4>
<p><span class="success"><strong>Executed</strong></span><span class="danger"><strong>Not Executed</strong></span><span class="warning"><strong>Dead Code</strong></span></p>
<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>
<a title="Back to the top" id="toplink" href="#">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
</a>
</footer>
</div>
<script src="../_js/jquery.min.js" type="text/javascript"></script>
<script src="../_js/popper.min.js" type="text/javascript"></script>
<script src="../_js/bootstrap.min.js" type="text/javascript"></script>
<script src="../_js/file.js" type="text/javascript"></script>
</body>
</html>