1import ./make-test.nix ({ pkgs, ...} :
2let
3 test = pkgs.writeText "test.sql" ''
4 CREATE EXTENSION pgcrypto;
5 CREATE EXTENSION pgjwt;
6 select sign('{"sub":"1234567890","name":"John Doe","admin":true}', 'secret');
7 select * from verify('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ', 'secret');
8 '';
9in
10{
11 name = "pgjwt";
12 meta = with pkgs.stdenv.lib.maintainers; {
13 maintainers = [ spinus ];
14 };
15
16 nodes = {
17 master =
18 { pkgs, config, ... }:
19
20 {
21 services.postgresql = let mypg = pkgs.postgresql95; in {
22 enable = true;
23 package = mypg;
24 extraPlugins =[pkgs.pgjwt];
25 initialScript = pkgs.writeText "postgresql-init.sql"
26 ''
27 CREATE ROLE postgres WITH superuser login createdb;
28 '';
29 };
30 };
31 };
32
33 testScript = ''
34 startAll;
35 $master->waitForUnit("postgresql");
36 $master->succeed("timeout 10 bash -c 'while ! psql postgres -c \"SELECT 1;\";do sleep 1;done;'");
37 $master->succeed("cat ${test} | psql postgres");
38 # I can't make original test working :[
39 # $master->succeed("${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}/bin/pg_prove -d postgres ${pkgs.pgjwt.src}/test.sql");
40
41 '';
42})