kin: KIN-089 При попытке добавить креды прод сервера для проекта corelock вылетает 500 Internal Server Error
This commit is contained in:
parent
e80e50ba0c
commit
4a65d90218
13 changed files with 1215 additions and 4 deletions
|
|
@ -646,3 +646,91 @@ def test_obsidian_vault_path_can_be_set(conn):
|
|||
models.create_project(conn, "p1", "P1", "/p1")
|
||||
updated = models.update_project(conn, "p1", obsidian_vault_path="/vault/my-notes")
|
||||
assert updated["obsidian_vault_path"] == "/vault/my-notes"
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# KIN-090: Task Attachments
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@pytest.fixture
|
||||
def task_conn(conn):
|
||||
"""conn with seeded project and task for attachment tests."""
|
||||
models.create_project(conn, "prj", "Project", "/tmp/prj")
|
||||
models.create_task(conn, "PRJ-001", "prj", "Fix bug")
|
||||
return conn
|
||||
|
||||
|
||||
def test_create_attachment_returns_dict(task_conn):
|
||||
"""KIN-090: create_attachment возвращает dict со всеми полями."""
|
||||
att = models.create_attachment(
|
||||
task_conn, "PRJ-001", "screenshot.png",
|
||||
"/tmp/prj/.kin/attachments/PRJ-001/screenshot.png",
|
||||
"image/png", 1024,
|
||||
)
|
||||
assert att["id"] is not None
|
||||
assert att["task_id"] == "PRJ-001"
|
||||
assert att["filename"] == "screenshot.png"
|
||||
assert att["path"] == "/tmp/prj/.kin/attachments/PRJ-001/screenshot.png"
|
||||
assert att["mime_type"] == "image/png"
|
||||
assert att["size"] == 1024
|
||||
assert att["created_at"] is not None
|
||||
|
||||
|
||||
def test_create_attachment_persists_in_sqlite(task_conn):
|
||||
"""KIN-090: AC4 — данные вложения персистируются в SQLite."""
|
||||
att = models.create_attachment(
|
||||
task_conn, "PRJ-001", "bug.png",
|
||||
"/tmp/prj/.kin/attachments/PRJ-001/bug.png",
|
||||
"image/png", 512,
|
||||
)
|
||||
fetched = models.get_attachment(task_conn, att["id"])
|
||||
assert fetched is not None
|
||||
assert fetched["filename"] == "bug.png"
|
||||
assert fetched["size"] == 512
|
||||
|
||||
|
||||
def test_list_attachments_empty_for_new_task(task_conn):
|
||||
"""KIN-090: list_attachments возвращает [] для задачи без вложений."""
|
||||
result = models.list_attachments(task_conn, "PRJ-001")
|
||||
assert result == []
|
||||
|
||||
|
||||
def test_list_attachments_returns_all_for_task(task_conn):
|
||||
"""KIN-090: list_attachments возвращает все вложения задачи."""
|
||||
models.create_attachment(task_conn, "PRJ-001", "a.png",
|
||||
"/tmp/prj/.kin/attachments/PRJ-001/a.png", "image/png", 100)
|
||||
models.create_attachment(task_conn, "PRJ-001", "b.jpg",
|
||||
"/tmp/prj/.kin/attachments/PRJ-001/b.jpg", "image/jpeg", 200)
|
||||
result = models.list_attachments(task_conn, "PRJ-001")
|
||||
assert len(result) == 2
|
||||
filenames = {a["filename"] for a in result}
|
||||
assert filenames == {"a.png", "b.jpg"}
|
||||
|
||||
|
||||
def test_list_attachments_isolated_by_task(task_conn):
|
||||
"""KIN-090: list_attachments не возвращает вложения других задач."""
|
||||
models.create_task(task_conn, "PRJ-002", "prj", "Other task")
|
||||
models.create_attachment(task_conn, "PRJ-001", "a.png",
|
||||
"/tmp/.kin/PRJ-001/a.png", "image/png", 100)
|
||||
models.create_attachment(task_conn, "PRJ-002", "b.png",
|
||||
"/tmp/.kin/PRJ-002/b.png", "image/png", 100)
|
||||
assert len(models.list_attachments(task_conn, "PRJ-001")) == 1
|
||||
assert len(models.list_attachments(task_conn, "PRJ-002")) == 1
|
||||
|
||||
|
||||
def test_get_attachment_not_found_returns_none(task_conn):
|
||||
"""KIN-090: get_attachment возвращает None если вложение не найдено."""
|
||||
assert models.get_attachment(task_conn, 99999) is None
|
||||
|
||||
|
||||
def test_delete_attachment_returns_true(task_conn):
|
||||
"""KIN-090: delete_attachment возвращает True при успешном удалении."""
|
||||
att = models.create_attachment(task_conn, "PRJ-001", "del.png",
|
||||
"/tmp/del.png", "image/png", 50)
|
||||
assert models.delete_attachment(task_conn, att["id"]) is True
|
||||
assert models.get_attachment(task_conn, att["id"]) is None
|
||||
|
||||
|
||||
def test_delete_attachment_not_found_returns_false(task_conn):
|
||||
"""KIN-090: delete_attachment возвращает False если запись не найдена."""
|
||||
assert models.delete_attachment(task_conn, 99999) is False
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue