Skip to content

Commit cba4aee

Browse files
Izorkinhappysalada
authored andcommitted
nixos/tests: add peertube test
1 parent 4c09235 commit cba4aee

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed

nixos/tests/all-tests.nix

+1
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ in
344344
parsedmarc = handleTest ./parsedmarc {};
345345
pdns-recursor = handleTest ./pdns-recursor.nix {};
346346
peerflix = handleTest ./peerflix.nix {};
347+
peertube = handleTestOn ["x86_64-linux"] ./web-apps/peertube.nix {};
347348
pgjwt = handleTest ./pgjwt.nix {};
348349
pgmanage = handleTest ./pgmanage.nix {};
349350
php = handleTest ./php {};

nixos/tests/web-apps/peertube.nix

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
import ../make-test-python.nix ({pkgs, ...}:
2+
{
3+
name = "peertube";
4+
meta.maintainers = with pkgs.lib.maintainers; [ izorkin ];
5+
6+
nodes = {
7+
database = {
8+
networking = {
9+
interfaces.eth1 = {
10+
ipv4.addresses = [
11+
{ address = "192.168.2.10"; prefixLength = 24; }
12+
];
13+
};
14+
firewall.allowedTCPPorts = [ 5432 6379 ];
15+
};
16+
17+
services.postgresql = {
18+
enable = true;
19+
enableTCPIP = true;
20+
authentication = ''
21+
hostnossl peertube_local peertube_test 192.168.2.11/32 md5
22+
'';
23+
initialScript = pkgs.writeText "postgresql_init.sql" ''
24+
CREATE ROLE peertube_test LOGIN PASSWORD '0gUN0C1mgST6czvjZ8T9';
25+
CREATE DATABASE peertube_local TEMPLATE template0 ENCODING UTF8;
26+
GRANT ALL PRIVILEGES ON DATABASE peertube_local TO peertube_test;
27+
\connect peertube_local
28+
CREATE EXTENSION IF NOT EXISTS pg_trgm;
29+
CREATE EXTENSION IF NOT EXISTS unaccent;
30+
'';
31+
};
32+
33+
services.redis = {
34+
enable = true;
35+
bind = "0.0.0.0";
36+
requirePass = "turrQfaQwnanGbcsdhxy";
37+
};
38+
};
39+
40+
server = { pkgs, ... }: {
41+
environment = {
42+
etc = {
43+
"peertube/password-posgressql-db".text = ''
44+
0gUN0C1mgST6czvjZ8T9
45+
'';
46+
"peertube/password-redis-db".text = ''
47+
turrQfaQwnanGbcsdhxy
48+
'';
49+
};
50+
};
51+
52+
networking = {
53+
interfaces.eth1 = {
54+
ipv4.addresses = [
55+
{ address = "192.168.2.11"; prefixLength = 24; }
56+
];
57+
};
58+
extraHosts = ''
59+
192.168.2.11 peertube.local
60+
'';
61+
firewall.allowedTCPPorts = [ 9000 ];
62+
};
63+
64+
services.peertube = {
65+
enable = true;
66+
localDomain = "peertube.local";
67+
enableWebHttps = false;
68+
69+
database = {
70+
host = "192.168.2.10";
71+
name = "peertube_local";
72+
user = "peertube_test";
73+
passwordFile = "/etc/peertube/password-posgressql-db";
74+
};
75+
76+
redis = {
77+
host = "192.168.2.10";
78+
passwordFile = "/etc/peertube/password-redis-db";
79+
};
80+
81+
settings = {
82+
listen = {
83+
hostname = "0.0.0.0";
84+
};
85+
instance = {
86+
name = "PeerTube Test Server";
87+
};
88+
};
89+
};
90+
};
91+
92+
client = {
93+
environment.systemPackages = [ pkgs.jq ];
94+
networking = {
95+
interfaces.eth1 = {
96+
ipv4.addresses = [
97+
{ address = "192.168.2.12"; prefixLength = 24; }
98+
];
99+
};
100+
extraHosts = ''
101+
192.168.2.11 peertube.local
102+
'';
103+
};
104+
};
105+
106+
};
107+
108+
testScript = ''
109+
start_all()
110+
111+
database.wait_for_unit("postgresql.service")
112+
database.wait_for_unit("redis.service")
113+
114+
database.wait_for_open_port(5432)
115+
database.wait_for_open_port(6379)
116+
117+
server.wait_for_unit("peertube.service")
118+
server.wait_for_open_port(9000)
119+
120+
# Check if PeerTube is running
121+
client.succeed("curl --fail http://peertube.local:9000/api/v1/config/about | jq -r '.instance.name' | grep 'PeerTube\ Test\ Server'")
122+
123+
client.shutdown()
124+
server.shutdown()
125+
database.shutdown()
126+
'';
127+
})

0 commit comments

Comments
 (0)