nixosTests.freshrss: handleTest -> runTest

This commit is contained in:
Sizhe Zhao 2025-06-07 21:50:04 +08:00
parent 40a27ed8e7
commit da6ecbe539
No known key found for this signature in database
GPG Key ID: ED1807251A7DA08F
8 changed files with 159 additions and 176 deletions

View File

@ -552,7 +552,7 @@ in
freenet = runTest ./freenet.nix; freenet = runTest ./freenet.nix;
freeswitch = runTest ./freeswitch.nix; freeswitch = runTest ./freeswitch.nix;
freetube = discoverTests (import ./freetube.nix); freetube = discoverTests (import ./freetube.nix);
freshrss = handleTest ./freshrss { }; freshrss = import ./freshrss { inherit runTest; };
frigate = runTest ./frigate.nix; frigate = runTest ./frigate.nix;
froide-govplan = runTest ./web-apps/froide-govplan.nix; froide-govplan = runTest ./web-apps/froide-govplan.nix;
frp = runTest ./frp.nix; frp = runTest ./frp.nix;

View File

@ -1,30 +1,28 @@
import ../make-test-python.nix ( { lib, ... }:
{ lib, pkgs, ... }: {
{ name = "freshrss-caddy-sqlite";
name = "freshrss-caddy-sqlite"; meta.maintainers = with lib.maintainers; [
meta.maintainers = with lib.maintainers; [ etu
etu stunkymonkey
stunkymonkey ];
];
nodes.machine = nodes.machine =
{ pkgs, ... }: { pkgs, ... }:
{ {
services.freshrss = { services.freshrss = {
enable = true; enable = true;
baseUrl = "http://localhost"; baseUrl = "http://localhost";
passwordFile = pkgs.writeText "password" "secret"; passwordFile = pkgs.writeText "password" "secret";
dataDir = "/srv/freshrss"; dataDir = "/srv/freshrss";
webserver = "caddy"; webserver = "caddy";
virtualHost = "freshrss:80"; virtualHost = "freshrss:80";
};
}; };
};
testScript = '' testScript = ''
machine.wait_for_unit("multi-user.target") machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(80) machine.wait_for_open_port(80)
response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://localhost:80/i/") response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://localhost:80/i/")
assert '<title>Login · FreshRSS</title>' in response, "Login page didn't load successfully" assert '<title>Login · FreshRSS</title>' in response, "Login page didn't load successfully"
''; '';
} }
)

View File

@ -1,10 +1,10 @@
{ system, pkgs, ... }: { runTest }:
{ {
extensions = import ./extensions.nix { inherit system pkgs; }; extensions = runTest ./extensions.nix;
http-auth = import ./http-auth.nix { inherit system pkgs; }; http-auth = runTest ./http-auth.nix;
none-auth = import ./none-auth.nix { inherit system pkgs; }; none-auth = runTest ./none-auth.nix;
pgsql = import ./pgsql.nix { inherit system pkgs; }; pgsql = runTest ./pgsql.nix;
nginx-sqlite = import ./nginx-sqlite.nix { inherit system pkgs; }; nginx-sqlite = runTest ./nginx-sqlite.nix;
caddy-sqlite = import ./caddy-sqlite.nix { inherit system pkgs; }; caddy-sqlite = runTest ./caddy-sqlite.nix;
} }

View File

@ -1,24 +1,21 @@
import ../make-test-python.nix ( {
{ lib, pkgs, ... }: name = "freshrss-extensions";
{
name = "freshrss-extensions";
nodes.machine = nodes.machine =
{ pkgs, ... }: { pkgs, ... }:
{ {
services.freshrss = { services.freshrss = {
enable = true; enable = true;
baseUrl = "http://localhost"; baseUrl = "http://localhost";
authType = "none"; authType = "none";
extensions = [ pkgs.freshrss-extensions.youtube ]; extensions = [ pkgs.freshrss-extensions.youtube ];
};
}; };
};
testScript = '' testScript = ''
machine.wait_for_unit("multi-user.target") machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(80) machine.wait_for_open_port(80)
response = machine.succeed("curl -vvv -s http://localhost:80/i/?c=extension") response = machine.succeed("curl -vvv -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." assert '<span class="ext_name disabled">YouTube Video Feed</span>' in response, "Extension not present in extensions page."
''; '';
} }
)

View File

@ -1,25 +1,21 @@
import ../make-test-python.nix ( { lib, ... }:
{ lib, pkgs, ... }: {
{ name = "freshrss-http-auth";
name = "freshrss-http-auth"; meta.maintainers = with lib.maintainers; [ mattchrist ];
meta.maintainers = with lib.maintainers; [ mattchrist ];
nodes.machine = nodes.machine = {
{ pkgs, ... }: services.freshrss = {
{ enable = true;
services.freshrss = { baseUrl = "http://localhost";
enable = true; dataDir = "/srv/freshrss";
baseUrl = "http://localhost"; authType = "http_auth";
dataDir = "/srv/freshrss"; };
authType = "http_auth"; };
};
};
testScript = '' testScript = ''
machine.wait_for_unit("multi-user.target") machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(80) machine.wait_for_open_port(80)
response = machine.succeed("curl -vvv -s -H 'Host: freshrss' -H 'Remote-User: testuser' http://localhost:80/i/") response = machine.succeed("curl -vvv -s -H 'Host: freshrss' -H 'Remote-User: testuser' http://localhost:80/i/")
assert 'Account: testuser' in response, "http_auth method didn't work." assert 'Account: testuser' in response, "http_auth method didn't work."
''; '';
} }
)

View File

@ -1,28 +1,26 @@
import ../make-test-python.nix ( { lib, ... }:
{ lib, pkgs, ... }: {
{ name = "freshrss-nginx-sqlite";
name = "freshrss-nginx-sqlite"; meta.maintainers = with lib.maintainers; [
meta.maintainers = with lib.maintainers; [ etu
etu stunkymonkey
stunkymonkey ];
];
nodes.machine = nodes.machine =
{ pkgs, ... }: { pkgs, ... }:
{ {
services.freshrss = { services.freshrss = {
enable = true; enable = true;
baseUrl = "http://localhost"; baseUrl = "http://localhost";
passwordFile = pkgs.writeText "password" "secret"; passwordFile = pkgs.writeText "password" "secret";
dataDir = "/srv/freshrss"; dataDir = "/srv/freshrss";
};
}; };
};
testScript = '' testScript = ''
machine.wait_for_unit("multi-user.target") machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(80) machine.wait_for_open_port(80)
response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://localhost:80/i/") response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://localhost:80/i/")
assert '<title>Login · FreshRSS</title>' in response, "Login page didn't load successfully" assert '<title>Login · FreshRSS</title>' in response, "Login page didn't load successfully"
''; '';
} }
)

View File

@ -1,24 +1,20 @@
import ../make-test-python.nix ( { lib, ... }:
{ lib, pkgs, ... }: {
{ name = "freshrss-none-auth";
name = "freshrss-none-auth"; meta.maintainers = with lib.maintainers; [ mattchrist ];
meta.maintainers = with lib.maintainers; [ mattchrist ];
nodes.machine = nodes.machine = {
{ pkgs, ... }: services.freshrss = {
{ enable = true;
services.freshrss = { baseUrl = "http://localhost";
enable = true; authType = "none";
baseUrl = "http://localhost"; };
authType = "none"; };
};
};
testScript = '' testScript = ''
machine.wait_for_unit("multi-user.target") machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(80) machine.wait_for_open_port(80)
response = machine.succeed("curl -vvv -s http://localhost:80/i/") response = machine.succeed("curl -vvv -s http://localhost:80/i/")
assert '<title> · FreshRSS</title>' in response, "FreshRSS stream page didn't load successfully" assert '<title> · FreshRSS</title>' in response, "FreshRSS stream page didn't load successfully"
''; '';
} }
)

View File

@ -1,54 +1,52 @@
import ../make-test-python.nix ( { lib, ... }:
{ lib, pkgs, ... }: {
{ name = "freshrss-pgsql";
name = "freshrss-pgsql"; meta.maintainers = with lib.maintainers; [
meta.maintainers = with lib.maintainers; [ etu
etu stunkymonkey
stunkymonkey ];
];
nodes.machine = nodes.machine =
{ pkgs, ... }: { pkgs, ... }:
{ {
services.freshrss = { services.freshrss = {
enable = true; enable = true;
baseUrl = "http://localhost"; baseUrl = "http://localhost";
passwordFile = pkgs.writeText "password" "secret"; passwordFile = pkgs.writeText "password" "secret";
dataDir = "/srv/freshrss"; dataDir = "/srv/freshrss";
database = { database = {
type = "pgsql"; type = "pgsql";
port = 5432; port = 5432;
user = "freshrss"; user = "freshrss";
passFile = pkgs.writeText "db-password" "db-secret"; passFile = pkgs.writeText "db-password" "db-secret";
};
};
services.postgresql = {
enable = true;
ensureDatabases = [ "freshrss" ];
ensureUsers = [
{
name = "freshrss";
ensureDBOwnership = true;
}
];
initialScript = pkgs.writeText "postgresql-password" ''
CREATE ROLE freshrss WITH LOGIN PASSWORD 'db-secret' CREATEDB;
'';
};
systemd.services."freshrss-config" = {
requires = [ "postgresql.target" ];
after = [ "postgresql.target" ];
}; };
}; };
testScript = '' services.postgresql = {
machine.wait_for_unit("multi-user.target") enable = true;
machine.wait_for_open_port(5432) ensureDatabases = [ "freshrss" ];
machine.wait_for_open_port(80) ensureUsers = [
response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://localhost:80/i/") {
assert '<title>Login · FreshRSS</title>' in response, "Login page didn't load successfully" name = "freshrss";
''; ensureDBOwnership = true;
} }
) ];
initialScript = pkgs.writeText "postgresql-password" ''
CREATE ROLE freshrss WITH LOGIN PASSWORD 'db-secret' CREATEDB;
'';
};
systemd.services."freshrss-config" = {
requires = [ "postgresql.target" ];
after = [ "postgresql.target" ];
};
};
testScript = ''
machine.wait_for_unit("multi-user.target")
machine.wait_for_open_port(5432)
machine.wait_for_open_port(80)
response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://localhost:80/i/")
assert '<title>Login · FreshRSS</title>' in response, "Login page didn't load successfully"
'';
}