nixos/tests: add peertube test

Izorkin cba4aeee 4c092350

Changed files
+128
nixos
tests
+1
nixos/tests/all-tests.nix
···
parsedmarc = handleTest ./parsedmarc {};
pdns-recursor = handleTest ./pdns-recursor.nix {};
peerflix = handleTest ./peerflix.nix {};
+
peertube = handleTestOn ["x86_64-linux"] ./web-apps/peertube.nix {};
pgjwt = handleTest ./pgjwt.nix {};
pgmanage = handleTest ./pgmanage.nix {};
php = handleTest ./php {};
+127
nixos/tests/web-apps/peertube.nix
···
+
import ../make-test-python.nix ({pkgs, ...}:
+
{
+
name = "peertube";
+
meta.maintainers = with pkgs.lib.maintainers; [ izorkin ];
+
+
nodes = {
+
database = {
+
networking = {
+
interfaces.eth1 = {
+
ipv4.addresses = [
+
{ address = "192.168.2.10"; prefixLength = 24; }
+
];
+
};
+
firewall.allowedTCPPorts = [ 5432 6379 ];
+
};
+
+
services.postgresql = {
+
enable = true;
+
enableTCPIP = true;
+
authentication = ''
+
hostnossl peertube_local peertube_test 192.168.2.11/32 md5
+
'';
+
initialScript = pkgs.writeText "postgresql_init.sql" ''
+
CREATE ROLE peertube_test LOGIN PASSWORD '0gUN0C1mgST6czvjZ8T9';
+
CREATE DATABASE peertube_local TEMPLATE template0 ENCODING UTF8;
+
GRANT ALL PRIVILEGES ON DATABASE peertube_local TO peertube_test;
+
\connect peertube_local
+
CREATE EXTENSION IF NOT EXISTS pg_trgm;
+
CREATE EXTENSION IF NOT EXISTS unaccent;
+
'';
+
};
+
+
services.redis = {
+
enable = true;
+
bind = "0.0.0.0";
+
requirePass = "turrQfaQwnanGbcsdhxy";
+
};
+
};
+
+
server = { pkgs, ... }: {
+
environment = {
+
etc = {
+
"peertube/password-posgressql-db".text = ''
+
0gUN0C1mgST6czvjZ8T9
+
'';
+
"peertube/password-redis-db".text = ''
+
turrQfaQwnanGbcsdhxy
+
'';
+
};
+
};
+
+
networking = {
+
interfaces.eth1 = {
+
ipv4.addresses = [
+
{ address = "192.168.2.11"; prefixLength = 24; }
+
];
+
};
+
extraHosts = ''
+
192.168.2.11 peertube.local
+
'';
+
firewall.allowedTCPPorts = [ 9000 ];
+
};
+
+
services.peertube = {
+
enable = true;
+
localDomain = "peertube.local";
+
enableWebHttps = false;
+
+
database = {
+
host = "192.168.2.10";
+
name = "peertube_local";
+
user = "peertube_test";
+
passwordFile = "/etc/peertube/password-posgressql-db";
+
};
+
+
redis = {
+
host = "192.168.2.10";
+
passwordFile = "/etc/peertube/password-redis-db";
+
};
+
+
settings = {
+
listen = {
+
hostname = "0.0.0.0";
+
};
+
instance = {
+
name = "PeerTube Test Server";
+
};
+
};
+
};
+
};
+
+
client = {
+
environment.systemPackages = [ pkgs.jq ];
+
networking = {
+
interfaces.eth1 = {
+
ipv4.addresses = [
+
{ address = "192.168.2.12"; prefixLength = 24; }
+
];
+
};
+
extraHosts = ''
+
192.168.2.11 peertube.local
+
'';
+
};
+
};
+
+
};
+
+
testScript = ''
+
start_all()
+
+
database.wait_for_unit("postgresql.service")
+
database.wait_for_unit("redis.service")
+
+
database.wait_for_open_port(5432)
+
database.wait_for_open_port(6379)
+
+
server.wait_for_unit("peertube.service")
+
server.wait_for_open_port(9000)
+
+
# Check if PeerTube is running
+
client.succeed("curl --fail http://peertube.local:9000/api/v1/config/about | jq -r '.instance.name' | grep 'PeerTube\ Test\ Server'")
+
+
client.shutdown()
+
server.shutdown()
+
database.shutdown()
+
'';
+
})