vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / web-apps / immich.nix
blobf03b9290f7a591077a0e2f0173a8e923e2be563d
1 import ../make-test-python.nix (
2   { ... }:
3   {
4     name = "immich-nixos";
6     nodes.machine =
7       { pkgs, ... }:
8       {
9         # These tests need a little more juice
10         virtualisation = {
11           cores = 2;
12           memorySize = 2048;
13           diskSize = 4096;
14         };
16         environment.systemPackages = with pkgs; [ immich-cli ];
18         services.immich = {
19           enable = true;
20           environment.IMMICH_LOG_LEVEL = "verbose";
21         };
22       };
24     testScript = ''
25       import json
27       machine.wait_for_unit("immich-server.service")
29       machine.wait_for_open_port(3001) # Server
30       machine.wait_for_open_port(3003) # Machine learning
31       machine.succeed("curl --fail http://localhost:3001/")
33       machine.succeed("""
34         curl -H 'Content-Type: application/json' --data '{ "email": "test@example.com", "name": "Admin", "password": "admin" }' -X POST http://localhost:3001/api/auth/admin-sign-up
35       """)
36       res = machine.succeed("""
37         curl -H 'Content-Type: application/json' --data '{ "email": "test@example.com", "password": "admin" }' -X POST http://localhost:3001/api/auth/login
38       """)
39       token = json.loads(res)['accessToken']
41       res = machine.succeed("""
42         curl -H 'Content-Type: application/json' -H 'Cookie: immich_access_token=%s' --data '{ "name": "API Key", "permissions": ["all"] }' -X POST http://localhost:3001/api/api-keys
43       """ % token)
44       key = json.loads(res)['secret']
46       machine.succeed(f"immich login http://localhost:3001/api {key}")
47       res = machine.succeed("immich server-info")
48       print(res)
49     '';
50   }