139 lines
3.6 KiB
Nix
139 lines
3.6 KiB
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 31638 ];
|
|
};
|
|
|
|
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.servers.peertube = {
|
|
enable = true;
|
|
bind = "0.0.0.0";
|
|
requirePass = "turrQfaQwnanGbcsdhxy";
|
|
port = 31638;
|
|
};
|
|
};
|
|
|
|
server = { pkgs, ... }: {
|
|
environment = {
|
|
etc = {
|
|
"peertube/secrets-peertube".text = ''
|
|
063d9c60d519597acef26003d5ecc32729083965d09181ef3949200cbe5f09ee
|
|
'';
|
|
"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;
|
|
|
|
secrets = {
|
|
secretsFile = "/etc/peertube/secrets-peertube";
|
|
};
|
|
|
|
database = {
|
|
host = "192.168.2.10";
|
|
name = "peertube_local";
|
|
user = "peertube_test";
|
|
passwordFile = "/etc/peertube/password-posgressql-db";
|
|
};
|
|
|
|
redis = {
|
|
host = "192.168.2.10";
|
|
port = 31638;
|
|
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-peertube.service")
|
|
|
|
database.wait_for_open_port(5432)
|
|
database.wait_for_open_port(31638)
|
|
|
|
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'")
|
|
|
|
# Check PeerTube CLI version
|
|
assert "${pkgs.peertube.version}" in server.succeed('su - peertube -s /bin/sh -c "peertube --version"')
|
|
|
|
client.shutdown()
|
|
server.shutdown()
|
|
database.shutdown()
|
|
'';
|
|
})
|