1import ./make-test.nix ({ pkgs, ...} : {
2 name = "xrdp";
3 meta = with pkgs.stdenv.lib.maintainers; {
4 maintainers = [ volth ];
5 };
6
7 nodes = {
8 server = { lib, pkgs, ... }: {
9 imports = [ ./common/user-account.nix ];
10 services.xrdp.enable = true;
11 services.xrdp.defaultWindowManager = "${pkgs.xterm}/bin/xterm";
12 networking.firewall.allowedTCPPorts = [ 3389 ];
13 };
14
15 client = { lib, pkgs, ... }: {
16 imports = [ ./common/x11.nix ./common/user-account.nix ];
17 services.xserver.displayManager.auto.user = "alice";
18 environment.systemPackages = [ pkgs.freerdp ];
19 services.xrdp.enable = true;
20 services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm";
21 };
22 };
23
24 testScript = { nodes, ... }: ''
25 startAll;
26
27 $client->waitForX;
28 $client->waitForFile("/home/alice/.Xauthority");
29 $client->succeed("xauth merge ~alice/.Xauthority");
30
31 $client->sleep(5);
32
33 $client->execute("xterm &");
34 $client->sleep(1);
35 $client->sendChars("xfreerdp /cert-tofu /w:640 /h:480 /v:127.0.0.1 /u:alice /p:foobar\n");
36 $client->sleep(5);
37 $client->screenshot("localrdp");
38
39 $client->execute("xterm &");
40 $client->sleep(1);
41 $client->sendChars("xfreerdp /cert-tofu /w:640 /h:480 /v:server /u:alice /p:foobar\n");
42 $client->sleep(5);
43 $client->screenshot("remoterdp");
44 '';
45})