- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
118 lines
4.6 KiB
SQL
118 lines
4.6 KiB
SQL
-- =====================================================================================
|
|
-- Script de prueba: Policy notifications_select_admin
|
|
-- Objetivo: Verificar que los admins pueden ver todas las notificaciones
|
|
-- Fecha: 2025-11-24
|
|
-- Relacionado: DB-003
|
|
-- =====================================================================================
|
|
|
|
-- SETUP: Crear usuarios de prueba si no existen
|
|
DO $$
|
|
BEGIN
|
|
-- Asegurar que tenemos un usuario admin de prueba
|
|
IF NOT EXISTS (SELECT 1 FROM auth_management.profiles WHERE email = 'admin@test.com') THEN
|
|
INSERT INTO auth_management.profiles (id, email, display_name, role, status)
|
|
VALUES (
|
|
'00000000-0000-0000-0000-000000000001'::uuid,
|
|
'admin@test.com',
|
|
'Test Admin',
|
|
'super_admin',
|
|
'active'
|
|
);
|
|
END IF;
|
|
|
|
-- Asegurar que tenemos un usuario regular de prueba
|
|
IF NOT EXISTS (SELECT 1 FROM auth_management.profiles WHERE email = 'student@test.com') THEN
|
|
INSERT INTO auth_management.profiles (id, email, display_name, role, status)
|
|
VALUES (
|
|
'00000000-0000-0000-0000-000000000002'::uuid,
|
|
'student@test.com',
|
|
'Test Student',
|
|
'student',
|
|
'active'
|
|
);
|
|
END IF;
|
|
END $$;
|
|
|
|
-- SETUP: Crear notificaciones de prueba
|
|
INSERT INTO gamification_system.notifications (user_id, type, title, message, priority)
|
|
VALUES
|
|
('00000000-0000-0000-0000-000000000002'::uuid, 'achievement_unlocked', 'Test Notification 1', 'Student notification 1', 'medium'),
|
|
('00000000-0000-0000-0000-000000000002'::uuid, 'level_up', 'Test Notification 2', 'Student notification 2', 'high')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- =====================================================================================
|
|
-- TEST 1: Usuario regular solo ve sus propias notificaciones
|
|
-- =====================================================================================
|
|
SET app.current_user_id = '00000000-0000-0000-0000-000000000002';
|
|
|
|
SELECT
|
|
'TEST 1: Usuario regular' AS test_case,
|
|
COUNT(*) AS notification_count,
|
|
CASE
|
|
WHEN COUNT(*) >= 2 THEN 'PASS'
|
|
ELSE 'FAIL'
|
|
END AS result
|
|
FROM gamification_system.notifications;
|
|
|
|
-- =====================================================================================
|
|
-- TEST 2: Admin puede ver todas las notificaciones
|
|
-- =====================================================================================
|
|
SET app.current_user_id = '00000000-0000-0000-0000-000000000001';
|
|
|
|
SELECT
|
|
'TEST 2: Admin ve todas' AS test_case,
|
|
COUNT(*) AS notification_count,
|
|
CASE
|
|
WHEN COUNT(*) >= 2 THEN 'PASS'
|
|
ELSE 'FAIL'
|
|
END AS result
|
|
FROM gamification_system.notifications;
|
|
|
|
-- =====================================================================================
|
|
-- TEST 3: Verificar que admin puede ver notificaciones de otros usuarios
|
|
-- =====================================================================================
|
|
SELECT
|
|
'TEST 3: Admin ve notificaciones de otros' AS test_case,
|
|
n.user_id,
|
|
n.title,
|
|
n.message,
|
|
p.display_name AS notification_owner
|
|
FROM gamification_system.notifications n
|
|
JOIN auth_management.profiles p ON n.user_id = p.id
|
|
WHERE n.user_id != '00000000-0000-0000-0000-000000000001'::uuid
|
|
LIMIT 5;
|
|
|
|
-- =====================================================================================
|
|
-- TEST 4: Verificar que la función is_admin() funciona correctamente
|
|
-- =====================================================================================
|
|
SET app.current_user_id = '00000000-0000-0000-0000-000000000001';
|
|
SELECT
|
|
'TEST 4a: is_admin() con admin' AS test_case,
|
|
gamilit.is_admin() AS is_admin,
|
|
CASE
|
|
WHEN gamilit.is_admin() = true THEN 'PASS'
|
|
ELSE 'FAIL'
|
|
END AS result;
|
|
|
|
SET app.current_user_id = '00000000-0000-0000-0000-000000000002';
|
|
SELECT
|
|
'TEST 4b: is_admin() con usuario regular' AS test_case,
|
|
gamilit.is_admin() AS is_admin,
|
|
CASE
|
|
WHEN gamilit.is_admin() = false THEN 'PASS'
|
|
ELSE 'FAIL'
|
|
END AS result;
|
|
|
|
-- =====================================================================================
|
|
-- CLEANUP: Resetear el contexto
|
|
-- =====================================================================================
|
|
RESET app.current_user_id;
|
|
|
|
-- =====================================================================================
|
|
-- RESUMEN
|
|
-- =====================================================================================
|
|
SELECT
|
|
'RESUMEN: Policy notifications_select_admin' AS summary,
|
|
'La policy permite a los admins ver todas las notificaciones' AS description,
|
|
'Verificar que todos los tests anteriores pasaron' AS note;
|