2025-10-15 17:41:05 +02:00

82 lines
2.9 KiB
Python

import pytest
from django.urls import reverse
from project.remotectl.models import RemoteHost, BatchScript, CommandTask
@pytest.mark.django_db
def test_host_crud(client, user_factory):
user = user_factory(username='u1')
client.force_login(user)
# create
resp = client.post(reverse('host_create'), {
'name': 'TestHost', 'hostname': '127.0.0.1', 'port': 22, 'username': 'root',
'auth_method': 'ssh_key', 'key_path': '', 'strict_host_key_checking': True, 'notes': 'n'
})
assert resp.status_code == 302
assert RemoteHost.objects.filter(name='TestHost').exists()
host = RemoteHost.objects.get(name='TestHost')
# edit
resp = client.post(f"/hosts/{host.id}/edit/", {
'name': 'TestHost2', 'hostname': '127.0.0.1', 'port': 22, 'username': 'root',
'auth_method': 'ssh_key', 'key_path': '', 'strict_host_key_checking': True, 'notes': 'n2'
})
assert resp.status_code == 302
host.refresh_from_db()
assert host.name == 'TestHost2'
# list
resp = client.get(reverse('host_list'))
assert resp.status_code == 200
assert 'TestHost2' in resp.content.decode()
@pytest.mark.django_db
def test_batch_crud(client, user_factory):
user = user_factory(username='u2')
client.force_login(user)
# create
resp = client.post(reverse('batch_create'), {
'name': 'batch1', 'description': 'desc', 'script': 'echo one'
})
assert resp.status_code == 302
b = BatchScript.objects.get(name='batch1')
# edit
resp = client.post(f"/batches/{b.id}/edit/", {
'name': 'batch1', 'description': 'desc2', 'script': 'echo two'
})
assert resp.status_code == 302
b.refresh_from_db()
assert 'two' in b.script
# list json
resp = client.get(reverse('batch_list_json'))
assert resp.status_code == 200
assert 'batch1' in resp.json()[0]['name']
# delete
resp = client.post(f"/batches/{b.id}/delete/")
assert resp.status_code == 302
assert not BatchScript.objects.filter(id=b.id).exists()
@pytest.mark.django_db
def test_task_crud_and_json(client, user_factory):
user = user_factory(username='u3')
client.force_login(user)
# create
resp = client.post(reverse('task_create'), {
'name': 'task1', 'label': 'Task One', 'command': 'uptime', 'description': 'd'
})
assert resp.status_code == 302
t = CommandTask.objects.get(name='task1')
# edit
resp = client.post(f"/tasks/{t.id}/edit/", {
'name': 'task1', 'label': 'Task 1', 'command': 'echo hi', 'description': 'd2'
})
assert resp.status_code == 302
t.refresh_from_db()
assert 'echo hi' in t.command
# json list
resp = client.get(reverse('task_list_json'))
assert resp.status_code == 200
data = resp.json()
assert any(item['name'] == 'task1' for item in data)
# delete
resp = client.post(f"/tasks/{t.id}/delete/")
assert resp.status_code == 302
assert not CommandTask.objects.filter(id=t.id).exists()