82 lines
2.9 KiB
Python
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()
|