48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test-python.nix ({ pkgs, ... }: {
 | |
|   name = "nginx-auth";
 | |
| 
 | |
|   nodes = {
 | |
|     webserver = { pkgs, lib, ... }: {
 | |
|       services.nginx = let
 | |
|         root = pkgs.runCommand "testdir" {} ''
 | |
|           mkdir "$out"
 | |
|           echo hello world > "$out/index.html"
 | |
|         '';
 | |
|       in {
 | |
|         enable = true;
 | |
| 
 | |
|         virtualHosts.lockedroot = {
 | |
|           inherit root;
 | |
|           basicAuth.alice = "jane";
 | |
|         };
 | |
| 
 | |
|         virtualHosts.lockedsubdir = {
 | |
|           inherit root;
 | |
|           locations."/sublocation/" = {
 | |
|             alias = "${root}/";
 | |
|             basicAuth.bob = "john";
 | |
|           };
 | |
|         };
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   testScript = ''
 | |
|     webserver.wait_for_unit("nginx")
 | |
|     webserver.wait_for_open_port(80)
 | |
| 
 | |
|     webserver.fail("curl --fail --resolve lockedroot:80:127.0.0.1 http://lockedroot")
 | |
|     webserver.succeed(
 | |
|         "curl --fail --resolve lockedroot:80:127.0.0.1 http://alice:jane@lockedroot"
 | |
|     )
 | |
| 
 | |
|     webserver.succeed("curl --fail --resolve lockedsubdir:80:127.0.0.1 http://lockedsubdir")
 | |
|     webserver.fail(
 | |
|         "curl --fail --resolve lockedsubdir:80:127.0.0.1 http://lockedsubdir/sublocation/index.html"
 | |
|     )
 | |
|     webserver.succeed(
 | |
|         "curl --fail --resolve lockedsubdir:80:127.0.0.1 http://bob:john@lockedsubdir/sublocation/index.html"
 | |
|     )
 | |
|   '';
 | |
| })
 | 
