2025-05-24 23:40:23 +08:00
|
|
|
{ ... }:
|
|
|
|
{
|
|
|
|
name = "tt-rss-nixos";
|
2024-11-16 23:27:27 +01:00
|
|
|
|
2025-05-24 23:40:23 +08:00
|
|
|
nodes.machine =
|
|
|
|
{ pkgs, ... }:
|
|
|
|
{
|
|
|
|
services.tt-rss = {
|
|
|
|
enable = true;
|
|
|
|
virtualHost = "localhost";
|
|
|
|
selfUrlPath = "http://localhost/";
|
|
|
|
pluginPackages = with pkgs; [
|
|
|
|
tt-rss-plugin-auth-ldap
|
|
|
|
tt-rss-plugin-feediron
|
|
|
|
];
|
|
|
|
plugins = [
|
|
|
|
"auth_internal"
|
|
|
|
"feediron"
|
|
|
|
"note"
|
|
|
|
];
|
|
|
|
singleUserMode = true;
|
|
|
|
themePackages = with pkgs; [ tt-rss-theme-feedly ];
|
2024-11-16 23:27:27 +01:00
|
|
|
};
|
2025-05-24 23:40:23 +08:00
|
|
|
};
|
2024-11-16 23:27:27 +01:00
|
|
|
|
2025-05-24 23:40:23 +08:00
|
|
|
testScript = ''
|
|
|
|
import json
|
|
|
|
import re
|
|
|
|
machine.wait_for_unit("tt-rss.service")
|
2024-12-22 15:46:58 +01:00
|
|
|
|
2025-05-24 23:40:23 +08:00
|
|
|
matches = re.search('__csrf_token = "([^"]*)"', machine.succeed("curl -sSfL --cookie cjar --cookie-jar cjar -sSfL http://localhost/"))
|
|
|
|
if matches is None:
|
|
|
|
assert False, "CSRF token not found"
|
|
|
|
csrf_token = matches.group(1)
|
2024-12-22 15:46:58 +01:00
|
|
|
|
2025-05-24 23:40:23 +08:00
|
|
|
# Ensure themes are loaded. No API found for these, so it's a crude check.
|
|
|
|
preference_page = machine.succeed("curl -sSfL --cookie cjar --cookie-jar cjar http://localhost/backend.php?op=Pref_Prefs")
|
|
|
|
assert "feedly" in preference_page
|
2024-12-22 15:46:58 +01:00
|
|
|
|
2025-05-24 23:40:23 +08:00
|
|
|
plugins = json.loads(machine.succeed(f"curl -sSfL --cookie cjar --cookie-jar cjar 'http://localhost/backend.php' -X POST --data-raw 'op=Pref_Prefs&method=getPluginsList&csrf_token={csrf_token}'"))["plugins"]
|
|
|
|
expected_plugins = ["auth_internal", "auth_ldap", "feediron", "note"];
|
|
|
|
found_plugins = [p["name"] for p in plugins if p["name"] in expected_plugins]
|
|
|
|
assert len(found_plugins) == len(expected_plugins), f"Expected plugins {expected_plugins}, found {found_plugins}"
|
|
|
|
'';
|
|
|
|
}
|