1{
2 name = "freshrss-extensions";
3
4 nodes.machine =
5 { pkgs, ... }:
6 {
7 services.freshrss = {
8 enable = true;
9 baseUrl = "http://localhost";
10 authType = "none";
11 extensions = [
12 pkgs.freshrss-extensions.youtube
13 pkgs.freshrss-extensions.title-wrap
14 ];
15 };
16 };
17 extraPythonPackages = p: [
18 p.lxml
19 p.lxml-stubs
20 ];
21 skipTypeCheck = true;
22
23 testScript = ''
24 machine.wait_for_unit("multi-user.target")
25 machine.wait_for_open_port(80)
26 response = machine.succeed("curl -s http://localhost:80/i/?c=extension")
27 assert '<span class="ext_name disabled">YouTube Video Feed</span>' in response, "Extension not present in extensions page."
28
29 # enable Title-Wrap extension
30 from lxml import etree
31 tree = etree.HTML(response)
32 csrf = tree.xpath("/html/body/header/nav/form/input/@value")[0]
33 response = machine.succeed(f"curl --fail-with-body -s 'http://localhost:80/i/?c=extension&a=enable&e=Title-Wrap' -d '_csrf={csrf}'")
34 # verify that the Title-Wrap css is accessible.
35 machine.succeed("curl --fail-with-body -s 'http://localhost:80/ext.php?1=&f=xExtension-TitleWrap/static/title_wrap.css'")
36 '';
37}