nixos/freshrss: fix loading extensions' static content (#430651)

Changed files
+19 -3
nixos
modules
services
web-apps
tests
freshrss
+1 -1
nixos/modules/services/web-apps/freshrss.nix
···
DATA_PATH = cfg.dataDir;
}
// lib.optionalAttrs (cfg.extensions != [ ]) {
-
THIRDPARTY_EXTENSIONS_PATH = "${extension-env}/share/freshrss/";
+
THIRDPARTY_EXTENSIONS_PATH = "${extension-env}/share/freshrss";
};
in
{
+18 -2
nixos/tests/freshrss/extensions.nix
···
enable = true;
baseUrl = "http://localhost";
authType = "none";
-
extensions = [ pkgs.freshrss-extensions.youtube ];
+
extensions = [
+
pkgs.freshrss-extensions.youtube
+
pkgs.freshrss-extensions.title-wrap
+
];
};
};
+
extraPythonPackages = p: [
+
p.lxml
+
p.lxml-stubs
+
];
+
skipTypeCheck = true;
testScript = ''
machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(80)
-
response = machine.succeed("curl -vvv -s http://localhost:80/i/?c=extension")
+
response = machine.succeed("curl -s http://localhost:80/i/?c=extension")
assert '<span class="ext_name disabled">YouTube Video Feed</span>' in response, "Extension not present in extensions page."
+
+
# enable Title-Wrap extension
+
from lxml import etree
+
tree = etree.HTML(response)
+
csrf = tree.xpath("/html/body/header/nav/form/input/@value")[0]
+
response = machine.succeed(f"curl --fail-with-body -s 'http://localhost:80/i/?c=extension&a=enable&e=Title-Wrap' -d '_csrf={csrf}'")
+
# verify that the Title-Wrap css is accessible.
+
machine.succeed("curl --fail-with-body -s 'http://localhost:80/ext.php?1=&f=xExtension-TitleWrap/static/title_wrap.css'")
'';
}