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"
 | 
						|
    )
 | 
						|
  '';
 | 
						|
})
 |