|
5 | 5 | DECLARE
|
6 | 6 | extension_array text[];
|
7 | 7 | orioledb_available boolean;
|
| 8 | + has_pgjwt boolean; |
8 | 9 | BEGIN
|
9 | 10 | -- Check if orioledb is available
|
10 | 11 | SELECT EXISTS (
|
11 | 12 | SELECT 1 FROM pg_available_extensions WHERE name = 'orioledb'
|
12 | 13 | ) INTO orioledb_available;
|
13 |
| - |
14 |
| - -- If available, create it and add to the expected extensions list |
| 14 | + |
| 15 | + -- Check if pgjwt is already installed |
| 16 | + SELECT EXISTS ( |
| 17 | + SELECT 1 FROM pg_extension WHERE extname = 'pgjwt' |
| 18 | + ) INTO has_pgjwt; |
| 19 | + |
| 20 | + -- Base extensions list |
| 21 | + extension_array := ARRAY[ |
| 22 | + 'plpgsql', |
| 23 | + 'pg_stat_statements', |
| 24 | + 'pgsodium', |
| 25 | + 'pgtap', |
| 26 | + 'pg_graphql', |
| 27 | + 'pgcrypto', |
| 28 | + 'uuid-ossp', |
| 29 | + 'supabase_vault' |
| 30 | + ]; |
| 31 | + |
| 32 | + -- Add pgjwt if it's actually installed |
| 33 | + IF has_pgjwt THEN |
| 34 | + extension_array := array_append(extension_array, 'pgjwt'); |
| 35 | + END IF; |
| 36 | + |
| 37 | + -- Add orioledb if available and installed |
15 | 38 | IF orioledb_available THEN
|
16 | 39 | CREATE EXTENSION IF NOT EXISTS orioledb;
|
17 |
| - extension_array := ARRAY[ |
18 |
| - 'plpgsql', |
19 |
| - 'pg_stat_statements', |
20 |
| - 'pgtap', |
21 |
| - 'pg_graphql', |
22 |
| - 'pgcrypto', |
23 |
| - 'uuid-ossp', |
24 |
| - 'supabase_vault', |
25 |
| - 'orioledb' |
26 |
| - ]; |
27 |
| - ELSE |
28 |
| - extension_array := ARRAY[ |
29 |
| - 'plpgsql', |
30 |
| - 'pg_stat_statements', |
31 |
| - 'pgtap', |
32 |
| - 'pg_graphql', |
33 |
| - 'pgcrypto', |
34 |
| - 'uuid-ossp', |
35 |
| - 'supabase_vault' |
36 |
| - ]; |
| 40 | + extension_array := array_append(extension_array, 'orioledb'); |
37 | 41 | END IF;
|
38 | 42 |
|
39 | 43 | -- Set the array as a temporary variable to use in the test
|
40 | 44 | PERFORM set_config('myapp.extensions', array_to_string(extension_array, ','), false);
|
41 | 45 | END $$;
|
42 | 46 |
|
43 |
| -SELECT no_plan(); |
| 47 | +SELECT plan(8); |
44 | 48 |
|
45 | 49 | SELECT extensions_are(
|
46 | 50 | string_to_array(current_setting('myapp.extensions'), ',')::text[]
|
47 | 51 | );
|
48 | 52 |
|
49 |
| - |
50 | 53 | SELECT has_schema('pg_toast');
|
51 | 54 | SELECT has_schema('pg_catalog');
|
52 | 55 | SELECT has_schema('information_schema');
|
53 | 56 | SELECT has_schema('public');
|
54 | 57 |
|
| 58 | +SELECT function_privs_are('pgsodium', 'crypto_aead_det_decrypt', array['bytea', 'bytea', 'uuid', 'bytea'], 'service_role', array['EXECUTE']); |
| 59 | +SELECT function_privs_are('pgsodium', 'crypto_aead_det_encrypt', array['bytea', 'bytea', 'uuid', 'bytea'], 'service_role', array['EXECUTE']); |
| 60 | +SELECT function_privs_are('pgsodium', 'crypto_aead_det_keygen', array[]::text[], 'service_role', array['EXECUTE']); |
| 61 | + |
55 | 62 | SELECT * FROM finish();
|
56 | 63 | ROLLBACK;
|
0 commit comments