Files
ServerKit/backend/tests/test_server_permissions.py
T
Juan Denis 313f1a8f6b Remote Docker remove, normalize API & permissions
Add end-to-end support for removing remote Docker networks and volumes and normalize remote API responses. Server: new Flask endpoints to DELETE remote networks/volumes and helpers to compute external base/ws URLs and v1 API paths. Agent: register new handler docker:network:remove and Client.RemoveNetwork implementation. Backend service: RemoteDockerService.remove_network uses agent registry for remote servers and falls back to local DockerService. Models: expand Server permission logic to map agent actions to profile/legacy scopes (DOCKER_READ_ACTIONS, scope expansion and wildcard matching) and add unit tests covering permission mappings. Frontend: handle agent-backed response shapes (unwrapRemoteData, normalizeListResponse), call new removeRemoteNetwork/removeRemoteVolume API methods, update download/install URLs to /api/v1, and tweak several UI texts. Install scripts: change config/log directories, pass --config when registering/starting agent, and update systemd/service/unit and Windows service install paths. README: small wording updates about fleet/remote deployment and monitoring.
2026-04-29 00:11:46 -04:00

49 lines
1.7 KiB
Python

from app.models.server import Server
def test_read_profiles_cover_agent_read_actions():
server = Server(
name='test-server',
permissions=[
'docker:container:read',
'docker:image:read',
'docker:volume:read',
'docker:network:read',
'docker:compose:read',
'system:metrics:read',
],
)
assert server.has_permission('docker:container:list')
assert server.has_permission('docker:container:inspect')
assert server.has_permission('docker:container:logs')
assert server.has_permission('docker:image:list')
assert server.has_permission('docker:volume:list')
assert server.has_permission('docker:network:list')
assert server.has_permission('docker:compose:ps')
assert server.has_permission('system:metrics')
assert server.has_permission('system:info')
assert not server.has_permission('docker:container:start')
assert not server.has_permission('docker:image:pull')
def test_legacy_ui_permissions_still_work_for_existing_servers():
server = Server(
name='test-server',
permissions=['docker:read', 'docker:write', 'system:read'],
)
assert server.has_permission('docker:container:list')
assert server.has_permission('docker:container:start')
assert server.has_permission('docker:image:pull')
assert server.has_permission('system:metrics')
assert server.has_permission('system:info')
def test_wildcard_permissions_still_match_agent_actions():
server = Server(name='test-server', permissions=['docker:container:*'])
assert server.has_permission('docker:container:list')
assert server.has_permission('docker:container:restart')
assert not server.has_permission('docker:image:list')