at 24.11-pre 4.0 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 ensureDatabases = [ "peertube_test" ]; 21 ensureUsers = [ 22 { 23 name = "peertube_test"; 24 ensureDBOwnership = true; 25 } 26 ]; 27 authentication = '' 28 hostnossl peertube_test peertube_test 192.168.2.11/32 md5 29 ''; 30 initialScript = pkgs.writeText "postgresql_init.sql" '' 31 CREATE ROLE peertube_test LOGIN PASSWORD '0gUN0C1mgST6czvjZ8T9'; 32 ''; 33 }; 34 35 services.redis.servers.peertube = { 36 enable = true; 37 bind = "0.0.0.0"; 38 requirePass = "turrQfaQwnanGbcsdhxy"; 39 port = 31638; 40 }; 41 }; 42 43 server = { pkgs, ... }: { 44 environment = { 45 etc = { 46 "peertube/password-init-root".text = '' 47 PT_INITIAL_ROOT_PASSWORD=zw4SqYVdcsXUfRX8aaFX 48 ''; 49 "peertube/secrets-peertube".text = '' 50 063d9c60d519597acef26003d5ecc32729083965d09181ef3949200cbe5f09ee 51 ''; 52 "peertube/password-posgressql-db".text = '' 53 0gUN0C1mgST6czvjZ8T9 54 ''; 55 "peertube/password-redis-db".text = '' 56 turrQfaQwnanGbcsdhxy 57 ''; 58 }; 59 }; 60 61 networking = { 62 interfaces.eth1 = { 63 ipv4.addresses = [ 64 { address = "192.168.2.11"; prefixLength = 24; } 65 ]; 66 }; 67 extraHosts = '' 68 192.168.2.11 peertube.local 69 ''; 70 firewall.allowedTCPPorts = [ 9000 ]; 71 }; 72 73 services.peertube = { 74 enable = true; 75 localDomain = "peertube.local"; 76 enableWebHttps = false; 77 78 serviceEnvironmentFile = "/etc/peertube/password-init-root"; 79 80 secrets = { 81 secretsFile = "/etc/peertube/secrets-peertube"; 82 }; 83 84 database = { 85 host = "192.168.2.10"; 86 name = "peertube_test"; 87 user = "peertube_test"; 88 passwordFile = "/etc/peertube/password-posgressql-db"; 89 }; 90 91 redis = { 92 host = "192.168.2.10"; 93 port = 31638; 94 passwordFile = "/etc/peertube/password-redis-db"; 95 }; 96 97 settings = { 98 listen = { 99 hostname = "0.0.0.0"; 100 }; 101 instance = { 102 name = "PeerTube Test Server"; 103 }; 104 }; 105 }; 106 }; 107 108 client = { 109 environment.systemPackages = [ pkgs.jq pkgs.peertube.cli ]; 110 networking = { 111 interfaces.eth1 = { 112 ipv4.addresses = [ 113 { address = "192.168.2.12"; prefixLength = 24; } 114 ]; 115 }; 116 extraHosts = '' 117 192.168.2.11 peertube.local 118 ''; 119 }; 120 }; 121 122 }; 123 124 testScript = '' 125 start_all() 126 127 database.wait_for_unit("postgresql.service") 128 database.wait_for_unit("redis-peertube.service") 129 130 database.wait_for_open_port(5432) 131 database.wait_for_open_port(31638) 132 133 server.wait_for_unit("peertube.service") 134 server.wait_for_open_port(9000) 135 136 # Check if PeerTube is running 137 client.succeed("curl --fail http://peertube.local:9000/api/v1/config/about | jq -r '.instance.name' | grep 'PeerTube\ Test\ Server'") 138 139 # Check PeerTube CLI version 140 client.succeed('peertube-cli auth add -u "http://peertube.local:9000" -U "root" --password "zw4SqYVdcsXUfRX8aaFX"') 141 client.succeed('peertube-cli auth list | grep "http://peertube.local:9000"') 142 client.succeed('peertube-cli auth del "http://peertube.local:9000"') 143 client.fail('peertube-cli auth list | grep "http://peertube.local:9000"') 144 145 client.shutdown() 146 server.shutdown() 147 database.shutdown() 148 ''; 149})