52 lines
3.2 KiB
PHP
52 lines
3.2 KiB
PHP
<?php
|
|
|
|
it('registers superuser replication endpoints and permissions', function (): void {
|
|
$content = file_get_contents(app_path('routes/superuserReplicationRoute.php'));
|
|
|
|
expect($content)->not->toBeFalse();
|
|
expect($content)->toContain('/superuser/replication');
|
|
expect($content)->toContain('/superuser/replication/databases');
|
|
expect($content)->toContain('/superuser/replication/redis');
|
|
expect($content)->toContain('/superuser/replication/minio');
|
|
expect($content)->toContain('/superuser/replication/compose-template');
|
|
expect($content)->toContain('/superuser/replication/test-credentials');
|
|
expect($content)->toContain('/superuser/replication/{kind}/{id}/test');
|
|
expect($content)->toContain('/superuser/replication/{kind}/{id}/provision');
|
|
expect($content)->toContain('/superuser/replication/{kind}/{id}/promote');
|
|
expect($content)->toContain("\$this->patch('/superuser/replication/{kind}/{id}'");
|
|
expect($content)->toContain("requireClassicSuperuserPermission('superuser_replication_view')");
|
|
expect($content)->toContain("requireClassicSuperuserPermission('superuser_replication_manage')");
|
|
expect($content)->toContain("requireClassicSuperuserPermission('superuser_replication_promote')");
|
|
expect($content)->toContain("requireClassicSuperuserPermission('superuser_replication_remove')");
|
|
});
|
|
|
|
it('documents replication management in openapi', function (): void {
|
|
$content = file_get_contents(app_path('openapi.yaml'));
|
|
|
|
expect($content)->toContain('/superuser/replication:');
|
|
expect($content)->toContain('operationId: getSuperuserReplication');
|
|
expect($content)->toContain('operationId: generateSuperuserReplicationComposeTemplate');
|
|
expect($content)->toContain('operationId: testSuperuserReplicationCredentials');
|
|
expect($content)->toContain('operationId: addSuperuserMinioReplicationHost');
|
|
expect($content)->toContain('operationId: renameSuperuserReplicationHost');
|
|
expect($content)->toContain('enum: [database, redis, minio]');
|
|
expect($content)->toContain('space_headroom_percent');
|
|
expect($content)->toContain('SuperuserReplicationStatus');
|
|
expect($content)->toContain('SuperuserReplicationHostCreateRequest');
|
|
expect($content)->toContain('SuperuserReplicationHostRenameRequest');
|
|
expect($content)->toContain('SuperuserReplicationComposeTemplateRequest');
|
|
});
|
|
|
|
it('rejects subuser sessions before checking replication permissions', function (): void {
|
|
$content = file_get_contents(app_path('routes/superuserReplicationRoute.php'));
|
|
|
|
expect($content)->not->toBeFalse();
|
|
expect($content)->toContain('private function requireClassicSuperuserPermission(string $permission): bool');
|
|
expect($content)->toContain('get_subuser() !== false');
|
|
expect($content)->toContain("Subuser sessions cannot manage replication.");
|
|
expect($content)->toContain("\$response->error('Subuser sessions cannot manage replication.', 403);");
|
|
expect($content)->toContain('return $this->requirePermission($permission);');
|
|
expect(preg_match_all("/requireClassicSuperuserPermission\\('superuser_replication_/", $content))->toBe(11);
|
|
expect($content)->not->toContain("requirePermission('superuser_replication_");
|
|
});
|