54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test-python.nix ({ pkgs, lib, ... }:
 | |
| let
 | |
|   journal = pkgs.writeText "test.journal" ''
 | |
|     2010/01/10 Loan
 | |
|         assets:cash                 500$
 | |
|         income:loan                -500$
 | |
|     2010/01/10 NixOS Foundation donation
 | |
|         expenses:donation           250$
 | |
|         assets:cash                -250$
 | |
|   '';
 | |
| in
 | |
| rec {
 | |
|   name = "hledger-web";
 | |
|   meta.maintainers = with lib.maintainers; [ marijanp ];
 | |
| 
 | |
|   nodes = {
 | |
|     server = { config, pkgs, ... }: rec {
 | |
|       services.hledger-web = {
 | |
|         host = "127.0.0.1";
 | |
|         port = 5000;
 | |
|         enable = true;
 | |
|         journalFile = journal;
 | |
|       };
 | |
|       networking.firewall.allowedTCPPorts = [ services.hledger-web.port ];
 | |
|     };
 | |
|     apiserver = { config, pkgs, ... }: rec {
 | |
|       services.hledger-web = {
 | |
|         host = "127.0.0.1";
 | |
|         port = 5000;
 | |
|         enable = true;
 | |
|         serveApi = true;
 | |
|         journalFile = journal;
 | |
|       };
 | |
|       networking.firewall.allowedTCPPorts = [ services.hledger-web.port ];
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   testScript = ''
 | |
|     start_all()
 | |
| 
 | |
|     server.wait_for_unit("hledger-web.service")
 | |
|     server.wait_for_open_port(5000)
 | |
|     with subtest("Check if web UI is accessible"):
 | |
|         page = server.succeed("curl -L http://127.0.0.1:5000")
 | |
|         assert "test.journal" in page
 | |
| 
 | |
|     apiserver.wait_for_unit("hledger-web.service")
 | |
|     apiserver.wait_for_open_port(5000)
 | |
|     with subtest("Check if the JSON API is served"):
 | |
|         transactions = apiserver.succeed("curl -L http://127.0.0.1:5000/transactions")
 | |
|         assert "NixOS Foundation donation" in transactions
 | |
|   '';
 | |
| })
 | 
