Only show backup button in navbar if backups are enabled
This commit is contained in:
parent
82bcd27cdc
commit
567273678e
3 changed files with 60 additions and 10 deletions
|
|
@ -131,6 +131,7 @@ templates.env.filters["encode_url"] = lambda url: urllib.parse.quote(url) if url
|
||||||
templates.env.filters["entry_is_whitelisted"] = entry_is_whitelisted
|
templates.env.filters["entry_is_whitelisted"] = entry_is_whitelisted
|
||||||
templates.env.filters["entry_is_blacklisted"] = entry_is_blacklisted
|
templates.env.filters["entry_is_blacklisted"] = entry_is_blacklisted
|
||||||
templates.env.filters["discord_markdown"] = markdownify
|
templates.env.filters["discord_markdown"] = markdownify
|
||||||
|
templates.env.globals["get_backup_path"] = get_backup_path
|
||||||
|
|
||||||
|
|
||||||
@app.post("/add_webhook")
|
@app.post("/add_webhook")
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/webhooks">Webhooks</a>
|
<a class="nav-link" href="/webhooks">Webhooks</a>
|
||||||
</li>
|
</li>
|
||||||
|
{% if get_backup_path() %}
|
||||||
<li class="nav-item nav-link d-none d-md-block">|</li>
|
<li class="nav-item nav-link d-none d-md-block">|</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<form action="/backup" method="post" class="d-inline">
|
<form action="/backup" method="post" class="d-inline">
|
||||||
|
|
@ -29,6 +30,7 @@
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
</li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
{# Search #}
|
{# Search #}
|
||||||
<form action="/search" method="get" class="ms-auto w-50 input-group">
|
<form action="/search" method="get" class="ms-auto w-50 input-group">
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@ from fastapi.testclient import TestClient
|
||||||
from discord_rss_bot.main import app
|
from discord_rss_bot.main import app
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import pytest
|
||||||
from httpx import Response
|
from httpx import Response
|
||||||
|
|
||||||
client: TestClient = TestClient(app)
|
client: TestClient = TestClient(app)
|
||||||
|
|
@ -242,3 +245,47 @@ def test_update_feed_not_found() -> None:
|
||||||
# Check that it returns a 404 status code
|
# Check that it returns a 404 status code
|
||||||
assert response.status_code == 404, f"Expected 404 for non-existent feed, got: {response.status_code}"
|
assert response.status_code == 404, f"Expected 404 for non-existent feed, got: {response.status_code}"
|
||||||
assert "Feed not found" in response.text
|
assert "Feed not found" in response.text
|
||||||
|
|
||||||
|
|
||||||
|
def test_navbar_backup_link_hidden_when_not_configured(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||||
|
"""Test that the backup link is not shown in the navbar when GIT_BACKUP_PATH is not set."""
|
||||||
|
# Ensure GIT_BACKUP_PATH is not set
|
||||||
|
monkeypatch.delenv("GIT_BACKUP_PATH", raising=False)
|
||||||
|
|
||||||
|
# Get the index page
|
||||||
|
response: Response = client.get(url="/")
|
||||||
|
assert response.status_code == 200, f"Failed to get /: {response.text}"
|
||||||
|
|
||||||
|
# Check that the backup button is not in the response
|
||||||
|
assert "Backup" not in response.text or 'action="/backup"' not in response.text, (
|
||||||
|
"Backup button should not be visible when GIT_BACKUP_PATH is not configured"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_navbar_backup_link_visible_when_configured(monkeypatch: pytest.MonkeyPatch, tmp_path: Path) -> None:
|
||||||
|
"""Test that the backup link is shown in the navbar when GIT_BACKUP_PATH is set."""
|
||||||
|
# Set GIT_BACKUP_PATH
|
||||||
|
monkeypatch.setenv("GIT_BACKUP_PATH", str(tmp_path))
|
||||||
|
|
||||||
|
# Get the index page
|
||||||
|
response: Response = client.get(url="/")
|
||||||
|
assert response.status_code == 200, f"Failed to get /: {response.text}"
|
||||||
|
|
||||||
|
# Check that the backup button is in the response
|
||||||
|
assert "Backup" in response.text, "Backup button text should be visible when GIT_BACKUP_PATH is configured"
|
||||||
|
assert 'action="/backup"' in response.text, "Backup form should be visible when GIT_BACKUP_PATH is configured"
|
||||||
|
|
||||||
|
|
||||||
|
def test_backup_endpoint_returns_error_when_not_configured(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||||
|
"""Test that the backup endpoint returns an error when GIT_BACKUP_PATH is not set."""
|
||||||
|
# Ensure GIT_BACKUP_PATH is not set
|
||||||
|
monkeypatch.delenv("GIT_BACKUP_PATH", raising=False)
|
||||||
|
|
||||||
|
# Try to trigger a backup
|
||||||
|
response: Response = client.post(url="/backup")
|
||||||
|
|
||||||
|
# Should redirect to index with error message
|
||||||
|
assert response.status_code == 200, f"Failed to post /backup: {response.text}"
|
||||||
|
assert "Git backup is not configured" in response.text or "GIT_BACKUP_PATH" in response.text, (
|
||||||
|
"Error message about backup not being configured should be shown"
|
||||||
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue