diff --git a/nixos/tests/web-apps/tt-rss.nix b/nixos/tests/web-apps/tt-rss.nix index 7bd4413d7286..1dc2daf535d7 100644 --- a/nixos/tests/web-apps/tt-rss.nix +++ b/nixos/tests/web-apps/tt-rss.nix @@ -10,13 +10,38 @@ import ../make-test-python.nix ( 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 ]; }; }; testScript = '' + import json + import re machine.wait_for_unit("tt-rss.service") - machine.succeed("curl -sSfL http://localhost/ | grep 'Tiny Tiny RSS'") + + 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) + + # 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 + + 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}" ''; } ) diff --git a/pkgs/by-name/tt/tt-rss-plugin-auth-ldap/package.nix b/pkgs/by-name/tt/tt-rss-plugin-auth-ldap/package.nix index c3d7f206e5b3..713fd3978416 100644 --- a/pkgs/by-name/tt/tt-rss-plugin-auth-ldap/package.nix +++ b/pkgs/by-name/tt/tt-rss-plugin-auth-ldap/package.nix @@ -1,5 +1,6 @@ { lib, + nixosTests, stdenv, fetchFromGitHub, }: @@ -19,6 +20,10 @@ stdenv.mkDerivation { install -D plugins/auth_ldap/init.php $out/auth_ldap/init.php ''; + passthru = { + tests = { inherit (nixosTests) tt-rss; }; + }; + meta = with lib; { description = "Plugin for TT-RSS to authenticate users via ldap"; license = licenses.asl20; diff --git a/pkgs/by-name/tt/tt-rss-plugin-ff-instagram/package.nix b/pkgs/by-name/tt/tt-rss-plugin-ff-instagram/package.nix index 8cbfb42618bf..0593d8c80f1f 100644 --- a/pkgs/by-name/tt/tt-rss-plugin-ff-instagram/package.nix +++ b/pkgs/by-name/tt/tt-rss-plugin-ff-instagram/package.nix @@ -23,6 +23,7 @@ stdenv.mkDerivation { ''; meta = with lib; { + broken = true; # Plugin code does not conform to plugin API changes. See https://github.com/wltb/ff_instagram/issues/13 description = "Plugin for Tiny Tiny RSS that allows to fetch posts from Instagram user sites"; longDescription = '' Plugin for Tiny Tiny RSS that allows to fetch posts from Instagram user sites. diff --git a/pkgs/by-name/tt/tt-rss-theme-feedly/package.nix b/pkgs/by-name/tt/tt-rss-theme-feedly/package.nix index 18e14aae380d..b211d25c17a5 100644 --- a/pkgs/by-name/tt/tt-rss-theme-feedly/package.nix +++ b/pkgs/by-name/tt/tt-rss-theme-feedly/package.nix @@ -1,5 +1,6 @@ { lib, + nixosTests, stdenv, fetchFromGitHub, }: @@ -23,6 +24,10 @@ stdenv.mkDerivation rec { cp -ra feedly *.css $out ''; + passthru = { + tests = { inherit (nixosTests) tt-rss; }; + }; + meta = with lib; { description = "Feedly theme for Tiny Tiny RSS"; license = licenses.mit; diff --git a/pkgs/by-name/tt/tt-rss/package.nix b/pkgs/by-name/tt/tt-rss/package.nix index 8440b319dad4..e23cc622f76a 100644 --- a/pkgs/by-name/tt/tt-rss/package.nix +++ b/pkgs/by-name/tt/tt-rss/package.nix @@ -1,3 +1,4 @@ +# nixpkgs-update: no auto update { lib, stdenv, @@ -30,13 +31,13 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit (nixosTests) tt-rss; + tests = { inherit (nixosTests) tt-rss; }; updateScript = unstableGitUpdater { hardcodeZeroVersion = true; }; }; meta = with lib; { description = "Web-based news feed (RSS/Atom) aggregator"; - license = licenses.gpl2Plus; + license = licenses.gpl3Plus; homepage = "https://tt-rss.org"; maintainers = with maintainers; [ gileri