summary refs log tree commit diff
path: root/nixos/tests/web-apps/mastodon/script.nix
blob: a89b4b7480e990ac3c6548f057f13d02746426d8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{ pkgs
, extraInit ? ""
, extraShutdown ? ""
}:

''
  start_all()

  ${extraInit}

  server.wait_for_unit("redis-mastodon.service")
  server.wait_for_unit("mastodon-sidekiq-all.service")
  server.wait_for_unit("mastodon-streaming.service")
  server.wait_for_unit("mastodon-web.service")
  server.wait_for_open_port(55000)
  server.wait_for_open_port(55001)

  # Check that mastodon-media-auto-remove is scheduled
  server.succeed("systemctl status mastodon-media-auto-remove.timer")

  # Check Mastodon version from remote client
  client.succeed("curl --fail https://mastodon.local/api/v1/instance | jq -r '.version' | grep '${pkgs.mastodon.version}'")

  # Check access from remote client
  client.succeed("curl --fail https://mastodon.local/about | grep 'Mastodon hosted on mastodon.local'")
  client.succeed("curl --fail $(curl https://mastodon.local/api/v1/instance 2> /dev/null | jq -r .thumbnail) --output /dev/null")

  # Simple check tootctl commands
  # Check Mastodon version
  server.succeed("mastodon-tootctl version | grep '${pkgs.mastodon.version}'")

  # Manage accounts
  server.succeed("mastodon-tootctl email_domain_blocks add example.com")
  server.succeed("mastodon-tootctl email_domain_blocks list | grep example.com")
  server.fail("mastodon-tootctl email_domain_blocks list | grep mastodon.local")
  server.fail("mastodon-tootctl accounts create alice --email=alice@example.com")
  server.succeed("mastodon-tootctl email_domain_blocks remove example.com")
  server.succeed("mastodon-tootctl accounts create bob --email=bob@example.com")
  server.succeed("mastodon-tootctl accounts approve bob")
  server.succeed("mastodon-tootctl accounts delete bob")

  # Manage IP access
  server.succeed("mastodon-tootctl ip_blocks add 192.168.0.0/16 --severity=no_access")
  server.succeed("mastodon-tootctl ip_blocks export | grep 192.168.0.0/16")
  server.fail("mastodon-tootctl ip_blocks export | grep 172.16.0.0/16")
  client.fail("curl --fail https://mastodon.local/about")
  server.succeed("mastodon-tootctl ip_blocks remove 192.168.0.0/16")
  client.succeed("curl --fail https://mastodon.local/about")

  server.shutdown()
  client.shutdown()

  ${extraShutdown}
''