2ad6e9cf02
API CI/CD / Validate (composer + pint) (push) Successful in 2m51s
API CI/CD / Test (PHPUnit) (push) Failing after 3m6s
API CI/CD / Build frontend assets (push) Failing after 5m23s
API CI/CD / Security audit (push) Failing after 34s
API CI/CD / Deploy to shared hosting (PHP) (push) Has been skipped
32 lines
1.6 KiB
PHP
32 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Api\V1\FullSurface;
|
|
|
|
use Tests\Feature\Api\V1\FullSurface\Support\FullSurfaceE2EContractCase;
|
|
|
|
class ApiBatch20ContinuityComplianceRiskRegisterTest extends FullSurfaceE2EContractCase
|
|
{
|
|
public function test_batch20_continuity_and_compliance_route_families_remain_visible(): void
|
|
{
|
|
$families = [
|
|
'legal hold and retention conflict' => ['privacy', 'retention', 'archive', 'purge'],
|
|
'cash drawer and receipt integrity' => ['cash', 'payment', 'receipt', 'finance'],
|
|
'scholarship and discount eligibility' => ['scholarship', 'discount', 'voucher', 'fees'],
|
|
'gradebook locks and amendments' => ['scores', 'grade', 'report-card', 'teacher'],
|
|
'attendance device and geofence trust' => ['attendance', 'scanner', 'kiosk', 'badge'],
|
|
'transportation pickup safety' => ['transport', 'bus', 'pickup', 'guardian'],
|
|
'emergency broadcast controls' => ['emergency', 'broadcast', 'notification', 'calendar'],
|
|
'external integration key rotation' => ['paypal', 'payment-notification', 'verify-payment', 'sync'],
|
|
'audit export redaction' => ['audit', 'logs', 'export', 'reports'],
|
|
'analytics warehouse export' => ['analytics', 'dashboard', 'summary', 'export'],
|
|
];
|
|
|
|
foreach ($families as $label => $needles) {
|
|
$this->assertNotEmpty(
|
|
$this->apiRoutesContainingAny($needles),
|
|
'Batch 20 continuity/compliance family missing or renamed without updating risk register: '.$label
|
|
);
|
|
}
|
|
}
|
|
}
|