## Summary - move the Laravel application into `apps/platform` and keep the repository root for orchestration, docs, and tooling - update the local command model, Sail/Docker wiring, runtime paths, and ignore rules around the new platform location - add relocation quickstart/contracts plus focused smoke coverage for bootstrap, command model, routes, and runtime behavior ## Validation - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/PlatformRelocation` - integrated browser smoke validated `/up`, `/`, `/admin`, `/admin/choose-workspace`, and tenant route semantics for `200`, `403`, and `404` ## Remaining Rollout Checks - validate Dokploy build context and working-directory assumptions against the new `apps/platform` layout - confirm web, queue, and scheduler processes all start from the expected working directory in staging/production - verify no legacy volume mounts or asset-publish paths still point at the old root-level `public/` or `storage/` locations Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #213
28 lines
1.1 KiB
PHP
28 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Services\Graph\GraphContractRegistry;
|
|
|
|
it('provides contract registry paths for onboarding verification probes', function (): void {
|
|
$registry = app(GraphContractRegistry::class);
|
|
|
|
$organizationPath = $registry->probePath('organization');
|
|
|
|
expect($organizationPath)->not->toBeNull();
|
|
expect(ltrim((string) $organizationPath, '/'))->toBe('organization');
|
|
|
|
$appId = '00000000-0000-0000-0000-000000000000';
|
|
$servicePrincipalByAppIdPath = $registry->probePath('service_principal_by_app_id', ['{appId}' => $appId]);
|
|
|
|
expect($servicePrincipalByAppIdPath)->not->toBeNull();
|
|
expect((string) $servicePrincipalByAppIdPath)->toContain('servicePrincipals');
|
|
expect((string) $servicePrincipalByAppIdPath)->toContain($appId);
|
|
|
|
$servicePrincipalId = '11111111-1111-1111-1111-111111111111';
|
|
$assignmentsPath = $registry->probePath('service_principal_app_role_assignments', ['{servicePrincipalId}' => $servicePrincipalId]);
|
|
|
|
expect($assignmentsPath)->not->toBeNull();
|
|
expect((string) $assignmentsPath)->toContain("servicePrincipals/{$servicePrincipalId}/appRoleAssignments");
|
|
});
|