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