at 23.11-pre 3.7 kB view raw
1import ../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 31638 ]; 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.servers.peertube = { 34 enable = true; 35 bind = "0.0.0.0"; 36 requirePass = "turrQfaQwnanGbcsdhxy"; 37 port = 31638; 38 }; 39 }; 40 41 server = { pkgs, ... }: { 42 environment = { 43 etc = { 44 "peertube/secrets-peertube".text = '' 45 063d9c60d519597acef26003d5ecc32729083965d09181ef3949200cbe5f09ee 46 ''; 47 "peertube/password-posgressql-db".text = '' 48 0gUN0C1mgST6czvjZ8T9 49 ''; 50 "peertube/password-redis-db".text = '' 51 turrQfaQwnanGbcsdhxy 52 ''; 53 }; 54 }; 55 56 networking = { 57 interfaces.eth1 = { 58 ipv4.addresses = [ 59 { address = "192.168.2.11"; prefixLength = 24; } 60 ]; 61 }; 62 extraHosts = '' 63 192.168.2.11 peertube.local 64 ''; 65 firewall.allowedTCPPorts = [ 9000 ]; 66 }; 67 68 services.peertube = { 69 enable = true; 70 localDomain = "peertube.local"; 71 enableWebHttps = false; 72 73 secrets = { 74 secretsFile = "/etc/peertube/secrets-peertube"; 75 }; 76 77 database = { 78 host = "192.168.2.10"; 79 name = "peertube_local"; 80 user = "peertube_test"; 81 passwordFile = "/etc/peertube/password-posgressql-db"; 82 }; 83 84 redis = { 85 host = "192.168.2.10"; 86 port = 31638; 87 passwordFile = "/etc/peertube/password-redis-db"; 88 }; 89 90 settings = { 91 listen = { 92 hostname = "0.0.0.0"; 93 }; 94 instance = { 95 name = "PeerTube Test Server"; 96 }; 97 }; 98 }; 99 }; 100 101 client = { 102 environment.systemPackages = [ pkgs.jq ]; 103 networking = { 104 interfaces.eth1 = { 105 ipv4.addresses = [ 106 { address = "192.168.2.12"; prefixLength = 24; } 107 ]; 108 }; 109 extraHosts = '' 110 192.168.2.11 peertube.local 111 ''; 112 }; 113 }; 114 115 }; 116 117 testScript = '' 118 start_all() 119 120 database.wait_for_unit("postgresql.service") 121 database.wait_for_unit("redis-peertube.service") 122 123 database.wait_for_open_port(5432) 124 database.wait_for_open_port(31638) 125 126 server.wait_for_unit("peertube.service") 127 server.wait_for_open_port(9000) 128 129 # Check if PeerTube is running 130 client.succeed("curl --fail http://peertube.local:9000/api/v1/config/about | jq -r '.instance.name' | grep 'PeerTube\ Test\ Server'") 131 132 # Check PeerTube CLI version 133 assert "${pkgs.peertube.version}" in server.succeed('su - peertube -s /bin/sh -c "peertube --version"') 134 135 client.shutdown() 136 server.shutdown() 137 database.shutdown() 138 ''; 139})