diff --git a/src/lib/integrationTests/TestDataTracker.ts b/src/lib/integrationTests/TestDataTracker.ts index 3b83da0c..0da42875 100644 --- a/src/lib/integrationTests/TestDataTracker.ts +++ b/src/lib/integrationTests/TestDataTracker.ts @@ -148,17 +148,23 @@ export class TestDataTracker { for (const table of tables) { try { - const { error, data } = await supabase + // First count how many will be deleted + const { count: countToDelete } = await supabase + .from(table as any) + .select('*', { count: 'exact', head: true }) + .eq('is_test_data', true); + + // Then delete without selecting (avoids needing SELECT permission on deleted rows) + const { error } = await supabase .from(table as any) .delete() - .eq('is_test_data', true) - .select('id'); + .eq('is_test_data', true); if (error) { logger.warn('Failed to bulk delete test data', { table, error }); totalErrors++; - } else if (data) { - totalDeleted += data.length; + } else if (countToDelete) { + totalDeleted += countToDelete; } } catch (err) { logger.warn('Exception bulk deleting test data', { table, error: err }); diff --git a/supabase/migrations/20251104164143_4bb61748-bbcd-48a7-b2f4-0984be427640.sql b/supabase/migrations/20251104164143_4bb61748-bbcd-48a7-b2f4-0984be427640.sql new file mode 100644 index 00000000..e95bc8c2 --- /dev/null +++ b/supabase/migrations/20251104164143_4bb61748-bbcd-48a7-b2f4-0984be427640.sql @@ -0,0 +1,42 @@ +-- Allow moderators to delete test data from version tables +-- This enables test data cleanup operations to work properly + +-- Park versions +CREATE POLICY "Moderators can delete test park versions" +ON park_versions +FOR DELETE +TO authenticated +USING ( + is_test_data = true + AND is_moderator(auth.uid()) +); + +-- Ride versions +CREATE POLICY "Moderators can delete test ride versions" +ON ride_versions +FOR DELETE +TO authenticated +USING ( + is_test_data = true + AND is_moderator(auth.uid()) +); + +-- Company versions +CREATE POLICY "Moderators can delete test company versions" +ON company_versions +FOR DELETE +TO authenticated +USING ( + is_test_data = true + AND is_moderator(auth.uid()) +); + +-- Ride model versions +CREATE POLICY "Moderators can delete test ride model versions" +ON ride_model_versions +FOR DELETE +TO authenticated +USING ( + is_test_data = true + AND is_moderator(auth.uid()) +); \ No newline at end of file