Add department_selfserve_path_confirmations table and enhance PingApiTest
Introduce a new database table `department_selfserve_path_confirmations` to store path confirmations related to department configurations. Update `PingApiTest` to verify additional keys, ensuring `backend_version` and `api_commit_sha` are checked in the response.
This commit is contained in:
@@ -62,6 +62,40 @@ it('verifies CI release gate bearer tokens from dedicated release credentials',
|
||||
}
|
||||
});
|
||||
|
||||
it('normalizes app-specific release gate auto-sync metadata', function (): void {
|
||||
$manager = new release_manager();
|
||||
$normalizeGate = new ReflectionMethod(release_manager::class, 'normalizeReleaseGateInput');
|
||||
$normalizeGate->setAccessible(true);
|
||||
$appMatches = new ReflectionMethod(release_manager::class, 'releaseGateAppMatches');
|
||||
$appMatches->setAccessible(true);
|
||||
|
||||
$gate = $normalizeGate->invoke($manager, [
|
||||
'channel_slug' => 'stable',
|
||||
'app' => 'api',
|
||||
'repository' => 'https://github.com/copenhagentruckwash/api.git',
|
||||
'branch' => 'master',
|
||||
'expected_commit' => 'd52ceb85138740c45f20cda9b7ed9b7a21f0d4e8',
|
||||
'workflow_url' => 'https://github.com/copenhagentruckwash/api/actions/runs/123',
|
||||
'auto_sync' => true,
|
||||
], ['slug' => 'stable']);
|
||||
|
||||
expect($gate)->toMatchArray([
|
||||
'channel_slug' => 'stable',
|
||||
'route_slug' => 'master',
|
||||
'app' => 'api',
|
||||
'repository' => 'copenhagentruckwash/api',
|
||||
'branch' => 'master',
|
||||
'expected_commit' => 'd52ceb85138740c45f20cda9b7ed9b7a21f0d4e8',
|
||||
'workflow_url' => 'https://github.com/copenhagentruckwash/api/actions/runs/123',
|
||||
'auto_sync' => true,
|
||||
]);
|
||||
|
||||
expect($appMatches->invoke($manager, ['app' => 'api'], 'api'))->toBeTrue();
|
||||
expect($appMatches->invoke($manager, ['apps' => ['frontend', 'api']], 'api'))->toBeTrue();
|
||||
expect($appMatches->invoke($manager, [], 'frontend'))->toBeTrue();
|
||||
expect($appMatches->invoke($manager, [], 'api'))->toBeFalse();
|
||||
});
|
||||
|
||||
it('normalizes GitHub repository identifiers for private repository access checks', function (): void {
|
||||
expect(release_manager::normalizeGithubRepositoryName('truckwash/backend-php'))->toBe('truckwash/backend-php');
|
||||
expect(release_manager::normalizeGithubRepositoryName('https://github.com/truckwash/front-end-vue.git'))->toBe('truckwash/front-end-vue');
|
||||
@@ -727,6 +761,8 @@ it('defines release manager schema, routes, permissions, and system-status integ
|
||||
expect($schema)->toContain('CREATE TABLE IF NOT EXISTS release_channel_versions');
|
||||
expect($schema)->toContain('CREATE TABLE IF NOT EXISTS release_assignments');
|
||||
expect($schema)->toContain('CREATE TABLE IF NOT EXISTS release_deployment_targets');
|
||||
expect($schema)->toContain('CREATE TABLE IF NOT EXISTS release_auto_sync_events');
|
||||
expect($schema)->toContain('UNIQUE KEY uq_release_auto_sync_event');
|
||||
expect($schema)->toContain('CREATE TABLE IF NOT EXISTS release_service_sets');
|
||||
expect($schema)->toContain('CREATE TABLE IF NOT EXISTS release_deployments');
|
||||
expect($schema)->toContain('CREATE TABLE IF NOT EXISTS release_bundles');
|
||||
@@ -796,6 +832,9 @@ it('defines release manager schema, routes, permissions, and system-status integ
|
||||
expect($manager)->toContain('verifyGithubSignature');
|
||||
expect($manager)->toContain('verifyReleaseGateToken');
|
||||
expect($manager)->toContain('normalizeReleaseGateInput');
|
||||
expect($manager)->toContain('processReleaseGateAutoSync');
|
||||
expect($manager)->toContain('release_auto_sync_events');
|
||||
expect($manager)->toContain('require_readiness');
|
||||
expect($manager)->toContain('release-manifest.json');
|
||||
expect($manager)->toContain('static_artifact');
|
||||
expect($manager)->toContain('api_gateway');
|
||||
|
||||
Reference in New Issue
Block a user