1import ./make-test-python.nix (
2 { pkgs, ... }:
3 {
4 name = "vsftpd";
5
6 nodes = {
7 server = {
8 services.vsftpd = {
9 enable = true;
10 userlistDeny = false;
11 localUsers = true;
12 userlist = [ "ftp-test-user" ];
13 writeEnable = true;
14 localRoot = "/tmp";
15 };
16 networking.firewall.enable = false;
17
18 users = {
19 users.ftp-test-user = {
20 isSystemUser = true;
21 password = "ftp-test-password";
22 group = "ftp-test-group";
23 };
24 groups.ftp-test-group = { };
25 };
26 };
27
28 client = { };
29 };
30
31 testScript = ''
32 client.start()
33 server.wait_for_unit("vsftpd")
34 server.wait_for_open_port(21)
35
36 client.succeed("curl -u ftp-test-user:ftp-test-password ftp://server")
37 client.succeed('echo "this is a test" > /tmp/test.file.up')
38 client.succeed("curl -v -T /tmp/test.file.up -u ftp-test-user:ftp-test-password ftp://server")
39 client.succeed("curl -u ftp-test-user:ftp-test-password ftp://server/test.file.up > /tmp/test.file.down")
40 client.succeed("diff /tmp/test.file.up /tmp/test.file.down")
41 assert client.succeed("cat /tmp/test.file.up") == server.succeed("cat /tmp/test.file.up")
42 assert client.succeed("cat /tmp/test.file.down") == server.succeed("cat /tmp/test.file.up")
43 '';
44 }
45)