82 lines
2.9 KiB
Nix
82 lines
2.9 KiB
Nix
|
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||
|
|
||
|
{
|
||
|
name = "shiori";
|
||
|
meta.maintainers = with lib.maintainers; [ minijackson ];
|
||
|
|
||
|
nodes.machine = { ... }: { services.shiori.enable = true; };
|
||
|
|
||
|
testScript = let
|
||
|
authJSON = pkgs.writeText "auth.json" (builtins.toJSON {
|
||
|
username = "shiori";
|
||
|
password = "gopher";
|
||
|
owner = true;
|
||
|
});
|
||
|
|
||
|
insertBookmark = {
|
||
|
url = "http://example.org";
|
||
|
title = "Example Bookmark";
|
||
|
};
|
||
|
|
||
|
insertBookmarkJSON =
|
||
|
pkgs.writeText "insertBookmark.json" (builtins.toJSON insertBookmark);
|
||
|
in ''
|
||
|
#import json
|
||
|
|
||
|
machine.wait_for_unit("shiori.service")
|
||
|
machine.wait_for_open_port(8080)
|
||
|
machine.succeed("curl --fail http://localhost:8080/")
|
||
|
machine.succeed("curl --fail --location http://localhost:8080/ | grep -i shiori")
|
||
|
|
||
|
# The test code below no longer works because the API authentication has changed.
|
||
|
|
||
|
#with subtest("login"):
|
||
|
# auth_json = machine.succeed(
|
||
|
# "curl --fail --location http://localhost:8080/api/login "
|
||
|
# "-X POST -H 'Content-Type:application/json' -d @${authJSON}"
|
||
|
# )
|
||
|
# auth_ret = json.loads(auth_json)
|
||
|
# session_id = auth_ret["session"]
|
||
|
|
||
|
#with subtest("bookmarks"):
|
||
|
# with subtest("first use no bookmarks"):
|
||
|
# bookmarks_json = machine.succeed(
|
||
|
# (
|
||
|
# "curl --fail --location http://localhost:8080/api/bookmarks "
|
||
|
# "-H 'X-Session-Id:{}'"
|
||
|
# ).format(session_id)
|
||
|
# )
|
||
|
|
||
|
# if json.loads(bookmarks_json)["bookmarks"] != []:
|
||
|
# raise Exception("Shiori have a bookmark on first use")
|
||
|
|
||
|
# with subtest("insert bookmark"):
|
||
|
# machine.succeed(
|
||
|
# (
|
||
|
# "curl --fail --location http://localhost:8080/api/bookmarks "
|
||
|
# "-X POST -H 'X-Session-Id:{}' "
|
||
|
# "-H 'Content-Type:application/json' -d @${insertBookmarkJSON}"
|
||
|
# ).format(session_id)
|
||
|
# )
|
||
|
|
||
|
# with subtest("get inserted bookmark"):
|
||
|
# bookmarks_json = machine.succeed(
|
||
|
# (
|
||
|
# "curl --fail --location http://localhost:8080/api/bookmarks "
|
||
|
# "-H 'X-Session-Id:{}'"
|
||
|
# ).format(session_id)
|
||
|
# )
|
||
|
|
||
|
# bookmarks = json.loads(bookmarks_json)["bookmarks"]
|
||
|
# if len(bookmarks) != 1:
|
||
|
# raise Exception("Shiori didn't save the bookmark")
|
||
|
|
||
|
# bookmark = bookmarks[0]
|
||
|
# if (
|
||
|
# bookmark["url"] != "${insertBookmark.url}"
|
||
|
# or bookmark["title"] != "${insertBookmark.title}"
|
||
|
# ):
|
||
|
# raise Exception("Inserted bookmark doesn't have same URL or title")
|
||
|
'';
|
||
|
})
|