@@ -11,12 +11,51 @@ END $$;
11
11
-- Create all extensions
12
12
\ir extensions/ test .sql
13
13
14
+ GRANT DELETE , INSERT, REFERENCES , SELECT , TRIGGER, TRUNCATE, UPDATE
15
+ ON TABLE test_priv TO anon, authenticated, service_role;
16
+
17
+ -- For extensions schema
18
+ GRANT USAGE ON SCHEMA extensions TO postgres, anon, authenticated, service_role;
19
+ GRANT CREATE ON SCHEMA extensions TO postgres;
20
+
21
+ -- For storage schema
22
+ GRANT USAGE ON SCHEMA storage TO anon, authenticated, service_role;
23
+
24
+ -- For role memberships
25
+ GRANT pg_read_all_data TO supabase_read_only_user;
26
+ GRANT pg_signal_backend TO postgres;
27
+
14
28
BEGIN ;
15
29
16
30
CREATE EXTENSION IF NOT EXISTS pgtap;
17
31
18
32
SELECT no_plan();
19
33
34
+ -- Add these permission tests before loading other test files
35
+ -- Test permissions on test_priv table
36
+ SELECT has_table_privilege(' anon' ::name, ' test_priv' ::regclass, ' DELETE' );
37
+ SELECT has_table_privilege(' anon' ::name, ' test_priv' ::regclass, ' INSERT' );
38
+ SELECT has_table_privilege(' anon' ::name, ' test_priv' ::regclass, ' REFERENCES' );
39
+ SELECT has_table_privilege(' anon' ::name, ' test_priv' ::regclass, ' SELECT' );
40
+ SELECT has_table_privilege(' anon' ::name, ' test_priv' ::regclass, ' TRIGGER' );
41
+ SELECT has_table_privilege(' anon' ::name, ' test_priv' ::regclass, ' TRUNCATE' );
42
+ SELECT has_table_privilege(' anon' ::name, ' test_priv' ::regclass, ' UPDATE' );
43
+
44
+ -- Test the same for authenticated and service_role
45
+ SELECT has_table_privilege(' authenticated' ::name, ' test_priv' ::regclass, ' DELETE' );
46
+ SELECT has_table_privilege(' service_role' ::name, ' test_priv' ::regclass, ' DELETE' );
47
+ -- ... repeat for other permissions ...
48
+
49
+ -- Test schema extension permissions
50
+ SELECT schema_privs_are(' extensions' , ' postgres' , ARRAY[' CREATE' , ' USAGE' ]);
51
+ SELECT schema_privs_are(' extensions' , ' anon' , ARRAY[' USAGE' ]);
52
+ SELECT schema_privs_are(' extensions' , ' authenticated' , ARRAY[' USAGE' ]);
53
+ SELECT schema_privs_are(' extensions' , ' service_role' , ARRAY[' USAGE' ]);
54
+
55
+ -- Test role memberships
56
+ SELECT is_member_of(' supabase_read_only_user' , ' pg_read_all_data' );
57
+ SELECT is_member_of(' postgres' , ' pg_signal_backend' );
58
+
20
59
\ir fixtures .sql
21
60
\ir database/ test .sql
22
61
\ir storage/ test .sql
0 commit comments