52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
|   | let | ||
|  |   gopherRoot  = "/tmp/gopher"; | ||
|  |   gopherHost  = "gopherd"; | ||
|  |   fileContent = "Hello Gopher!"; | ||
|  |   fileName    = "file.txt"; | ||
|  | in | ||
|  |   import ./make-test-python.nix ({...}: { | ||
|  |     name = "spacecookie"; | ||
|  |     nodes = { | ||
|  |       ${gopherHost} = { | ||
|  |         networking.firewall.allowedTCPPorts = [ 70 ]; | ||
|  |         systemd.services.spacecookie = { | ||
|  |           preStart = ''
 | ||
|  |             mkdir -p ${gopherRoot}/directory | ||
|  |             echo "${fileContent}" > ${gopherRoot}/${fileName} | ||
|  |           '';
 | ||
|  |         }; | ||
|  | 
 | ||
|  |         services.spacecookie = { | ||
|  |           enable = true; | ||
|  |           root = gopherRoot; | ||
|  |           hostname = gopherHost; | ||
|  |         }; | ||
|  |       }; | ||
|  | 
 | ||
|  |       client = {}; | ||
|  |     }; | ||
|  | 
 | ||
|  |     testScript = ''
 | ||
|  |       start_all() | ||
|  |       ${gopherHost}.wait_for_open_port(70) | ||
|  |       ${gopherHost}.wait_for_unit("spacecookie.service") | ||
|  |       client.wait_for_unit("network.target") | ||
|  | 
 | ||
|  |       fileResponse = client.succeed("curl -s gopher://${gopherHost}//${fileName}") | ||
|  | 
 | ||
|  |       # the file response should return our created file exactly | ||
|  |       if not (fileResponse == "${fileContent}\n"): | ||
|  |           raise Exception("Unexpected file response") | ||
|  | 
 | ||
|  |       # sanity check on the directory listing: we serve a directory and a file | ||
|  |       # via gopher, so the directory listing should have exactly two entries, | ||
|  |       # one with gopher file type 0 (file) and one with file type 1 (directory). | ||
|  |       dirResponse = client.succeed("curl -s gopher://${gopherHost}") | ||
|  |       dirEntries = [l[0] for l in dirResponse.split("\n") if len(l) > 0] | ||
|  |       dirEntries.sort() | ||
|  | 
 | ||
|  |       if not (["0", "1"] == dirEntries): | ||
|  |           raise Exception("Unexpected directory response") | ||
|  |     '';
 | ||
|  |   }) |