at master 1.6 kB view raw
1{ pkgs, ... }: 2{ 3 name = "turn-rs"; 4 5 nodes = { 6 server = { 7 virtualisation.vlans = [ 1 ]; 8 9 networking = { 10 useNetworkd = true; 11 useDHCP = false; 12 firewall.enable = false; 13 }; 14 15 systemd.network.networks."01-eth1" = { 16 name = "eth1"; 17 networkConfig.Address = "10.0.0.1/24"; 18 }; 19 20 services.turn-rs = { 21 enable = true; 22 secretFile = pkgs.writeText "secret" '' 23 USER_1_CREDS="foobar" 24 ''; 25 settings = { 26 turn = { 27 realm = "localhost"; 28 interfaces = [ 29 { 30 transport = "udp"; 31 bind = "127.0.0.1:3478"; 32 external = "127.0.0.1:3478"; 33 } 34 { 35 transport = "tcp"; 36 bind = "127.0.0.1:3478"; 37 external = "127.0.0.1:3478"; 38 } 39 ]; 40 }; 41 42 auth.static_credentials.user1 = "$USER_1_CREDS"; 43 }; 44 }; 45 }; 46 }; 47 48 testScript = # python 49 '' 50 import json 51 52 start_all() 53 server.wait_for_unit('turn-rs.service') 54 server.wait_for_open_port(3000, "127.0.0.1") 55 56 info = server.succeed('curl http://localhost:3000/info') 57 jsonInfo = json.loads(info) 58 assert len(jsonInfo['interfaces']) == 2, f'Interfaces doesn\'t contain two entries:\n{json.dumps(jsonInfo, indent=2)}' 59 60 config = server.succeed('cat /run/turn-rs/config.toml') 61 assert 'foobar' in config, f'Secrets are not properly injected:\n{config}' 62 ''; 63}