90 lines
3 KiB
Nix
90 lines
3 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")
|
|
'';
|
|
}
|
|
)
|