43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test.nix ({ pkgs, ...} : 
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  test = pkgs.writeText "test.sql" ''
							 | 
						||
| 
								 | 
							
								    CREATE EXTENSION pgcrypto;
							 | 
						||
| 
								 | 
							
								    CREATE EXTENSION pgjwt;
							 | 
						||
| 
								 | 
							
								    select sign('{"sub":"1234567890","name":"John Doe","admin":true}', 'secret');
							 | 
						||
| 
								 | 
							
								    select * from verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', 'secret');
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								in
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  name = "pgjwt";
							 | 
						||
| 
								 | 
							
								  meta = with pkgs.stdenv.lib.maintainers; {
							 | 
						||
| 
								 | 
							
								    maintainers = [ spinus ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  nodes = {
							 | 
						||
| 
								 | 
							
								    master =
							 | 
						||
| 
								 | 
							
								      { pkgs, config, ... }:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        services.postgresql = let mypg = pkgs.postgresql95; in {
							 | 
						||
| 
								 | 
							
								            enable = true;
							 | 
						||
| 
								 | 
							
								            package = mypg;
							 | 
						||
| 
								 | 
							
								            extraPlugins =[pkgs.pgjwt];
							 | 
						||
| 
								 | 
							
								            initialScript =  pkgs.writeText "postgresql-init.sql"
							 | 
						||
| 
								 | 
							
								          ''
							 | 
						||
| 
								 | 
							
								          CREATE ROLE postgres WITH superuser login createdb;
							 | 
						||
| 
								 | 
							
								          '';
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    startAll;
							 | 
						||
| 
								 | 
							
								    $master->waitForUnit("postgresql");
							 | 
						||
| 
								 | 
							
								    $master->succeed("timeout 10 bash -c 'while ! psql postgres -c \"SELECT 1;\";do sleep 1;done;'");
							 | 
						||
| 
								 | 
							
								    $master->succeed("cat ${test} | psql postgres");
							 | 
						||
| 
								 | 
							
								    # I can't make original test working :[
							 | 
						||
| 
								 | 
							
								    # $master->succeed("${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}/bin/pg_prove -d postgres ${pkgs.pgjwt.src}/test.sql");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |