1{ lib, ... }:
2{
3 name = "magic-wormhole-mailbox-server";
4 meta.maintainers = [ lib.maintainers.mmahut ];
5
6 nodes = {
7 server = {
8 networking.firewall.allowedTCPPorts = [ 4000 ];
9 services.magic-wormhole-mailbox-server.enable = true;
10 };
11 client_alice =
12 { pkgs, ... }:
13 {
14 networking.firewall.enable = false;
15 environment.systemPackages = [ pkgs.magic-wormhole ];
16 };
17 client_bob =
18 { pkgs, ... }:
19 {
20 environment.systemPackages = [ pkgs.magic-wormhole ];
21 };
22 };
23
24 testScript = ''
25 start_all()
26
27 # Start the wormhole relay server
28 server.wait_for_unit("magic-wormhole-mailbox-server.service")
29 server.wait_for_open_port(4000)
30
31 # Create a secret file and send it to Bob
32 client_alice.succeed("echo mysecret > secretfile")
33 client_alice.succeed("wormhole --relay-url=ws://server:4000/v1 send -0 secretfile >&2 &")
34
35 # Retrieve a secret file from Alice and check its content
36 client_bob.succeed("wormhole --relay-url=ws://server:4000/v1 receive -0 --accept-file")
37 client_bob.succeed("grep mysecret secretfile")
38 '';
39}