TandoorRecipes/cookbook/tests/edits/test_edits_home_assistant_config.py
2024-01-13 11:56:51 +01:00

71 lines
2.1 KiB
Python

import pytest
from django.contrib import auth
from django.contrib import messages
from django.contrib.messages import get_messages
from django.urls import reverse
from cookbook.models import HomeAssistantConfig
EDIT_VIEW_NAME = 'edit_home_assistant_config'
@pytest.fixture
def home_assistant_config_obj(a1_s1, space_1):
return HomeAssistantConfig.objects.create(
name='HomeAssistant 1',
token='token',
url='http://localhost:8123/api',
todo_entity='todo.shopping_list',
enabled=True,
created_by=auth.get_user(a1_s1),
space=space_1,
)
def test_edit_home_assistant_config(home_assistant_config_obj: HomeAssistantConfig, a1_s1, a1_s2):
new_token = '1234_token'
r = a1_s1.post(
reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}),
{
'name': home_assistant_config_obj.name,
'url': home_assistant_config_obj.url,
'token': new_token,
'todo_entity': home_assistant_config_obj.todo_entity,
'enabled': home_assistant_config_obj.enabled,
}
)
assert r.status_code == 200
r_messages = [m for m in get_messages(r.wsgi_request)]
assert not any(m.level > messages.SUCCESS for m in r_messages)
home_assistant_config_obj.refresh_from_db()
assert home_assistant_config_obj.token == new_token
r = a1_s2.post(
reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}),
{
'name': home_assistant_config_obj.name,
'url': home_assistant_config_obj.url,
'todo_entity': home_assistant_config_obj.todo_entity,
'token': new_token,
'enabled': home_assistant_config_obj.enabled,
}
)
assert r.status_code == 404
@pytest.mark.parametrize(
"arg", [
['a_u', 302],
['g1_s1', 302],
['u1_s1', 302],
['a1_s1', 200],
['g1_s2', 302],
['u1_s2', 302],
['a1_s2', 404],
])
def test_view_permission(arg, request, home_assistant_config_obj):
c = request.getfixturevalue(arg[0])
assert c.get(reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk})).status_code == arg[1]