diff options
Diffstat (limited to 'nixpkgs/nixos/tests/tiddlywiki.nix')
-rw-r--r-- | nixpkgs/nixos/tests/tiddlywiki.nix | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/nixpkgs/nixos/tests/tiddlywiki.nix b/nixpkgs/nixos/tests/tiddlywiki.nix new file mode 100644 index 000000000000..4a2014a4ec91 --- /dev/null +++ b/nixpkgs/nixos/tests/tiddlywiki.nix @@ -0,0 +1,67 @@ +import ./make-test.nix ({ ... }: { + name = "tiddlywiki"; + nodes = { + default = { + services.tiddlywiki.enable = true; + }; + configured = { + boot.postBootCommands = '' + echo "username,password + somelogin,somesecret" > /var/lib/wikiusers.csv + ''; + services.tiddlywiki = { + enable = true; + listenOptions = { + port = 3000; + credentials="../wikiusers.csv"; + readers="(authenticated)"; + }; + }; + }; + }; + + testScript = '' + startAll; + + subtest "by default works without configuration", sub { + $default->waitForUnit("tiddlywiki.service"); + }; + + subtest "by default available on port 8080 without auth", sub { + $default->waitForUnit("tiddlywiki.service"); + $default->waitForOpenPort(8080); + $default->succeed("curl --fail 127.0.0.1:8080"); + }; + + subtest "by default creates empty wiki", sub { + $default->succeed("test -f /var/lib/tiddlywiki/tiddlywiki.info"); + }; + + subtest "configured on port 3000 with basic auth", sub { + $configured->waitForUnit("tiddlywiki.service"); + $configured->waitForOpenPort(3000); + $configured->fail("curl --fail 127.0.0.1:3000"); + $configured->succeed("curl --fail 127.0.0.1:3000 --user somelogin:somesecret"); + }; + + subtest "configured with different wikifolder", sub { + $configured->succeed("test -f /var/lib/tiddlywiki/tiddlywiki.info"); + }; + + subtest "restart preserves changes", sub { + # given running wiki + $default->waitForUnit("tiddlywiki.service"); + # with some changes + $default->succeed("curl --fail --request PUT --header 'X-Requested-With:TiddlyWiki' --data '{ \"title\": \"title\", \"text\": \"content\" }' --url 127.0.0.1:8080/recipes/default/tiddlers/somepage "); + $default->succeed("sleep 2"); # server syncs to filesystem on timer + + # when wiki is cycled + $default->systemctl("restart tiddlywiki.service"); + $default->waitForUnit("tiddlywiki.service"); + $default->waitForOpenPort(8080); + + # the change is preserved + $default->succeed("curl --fail 127.0.0.1:8080/recipes/default/tiddlers/somepage"); + }; + ''; +}) |