TenantAtlas/tests/Feature/Guards/NoLegacyRunBackfillTest.php
2026-02-12 13:39:24 +01:00

64 lines
2.0 KiB
PHP

<?php
use Illuminate\Support\Collection;
it('does not backfill canonical operation runs from legacy run tables', function () {
$root = base_path();
$directories = [
$root.'/app',
$root.'/database/migrations',
];
$forbiddenPatterns = [
'/insert\s+into\s+["`]?operation_runs["`]?.{0,1200}\b(?:inventory_sync_runs|entra_group_sync_runs|backup_schedule_runs)\b/is',
'/\bOperationRun::query\(\)->(?:create|insert|upsert|updateOrCreate)\(.{0,1200}\b(?:InventorySyncRun|EntraGroupSyncRun|BackupScheduleRun)\b/is',
];
/** @var Collection<int, string> $files */
$files = collect($directories)
->filter(fn (string $dir): bool => is_dir($dir))
->flatMap(function (string $dir): array {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS)
);
$paths = [];
foreach ($iterator as $file) {
if (! $file->isFile() || $file->getExtension() !== 'php') {
continue;
}
$paths[] = $file->getPathname();
}
return $paths;
})
->values();
$hits = [];
foreach ($files as $path) {
$contents = file_get_contents($path);
if (! is_string($contents) || $contents === '') {
continue;
}
foreach ($forbiddenPatterns as $pattern) {
if (! preg_match($pattern, $contents, $matches, PREG_OFFSET_CAPTURE)) {
continue;
}
$offset = (int) ($matches[0][1] ?? 0);
$lineNumber = substr_count(substr($contents, 0, $offset), "\n") + 1;
$excerpt = trim((string) ($matches[0][0] ?? ''));
$hits[] = str_replace($root.'/', '', $path).':'.$lineNumber.' -> '.str($excerpt)->limit(160)->value();
}
}
expect($hits)->toBeEmpty('Found legacy-to-canonical backfill patterns:\n'.implode("\n", $hits));
});