60 lines
2.1 KiB
SQL
60 lines
2.1 KiB
SQL
-- ============================================================
|
|
-- 45_dds_mcp_local_end_user_test.sql
|
|
-- Catalog-level acceptance test for 44. Run as ADMIN.
|
|
-- The SSE/JDBC context assertion is performed by dds_vector_search after
|
|
-- the OCI IAM database-access token configuration is supplied.
|
|
-- ============================================================
|
|
WHENEVER SQLERROR EXIT SQL.SQLCODE
|
|
SET ECHO OFF
|
|
SET FEEDBACK ON
|
|
SET LINESIZE 220
|
|
SET PAGESIZE 200
|
|
|
|
DECLARE
|
|
v_missing_map NUMBER;
|
|
v_missing_end_user NUMBER;
|
|
v_missing_role NUMBER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_missing_map
|
|
FROM cb_app_user u
|
|
LEFT JOIN cb_dds_end_user_map m ON m.application_user_id = u.user_id
|
|
WHERE u.active = 'Y'
|
|
AND (m.application_user_id IS NULL OR m.publish_status <> 'PUBLISHED');
|
|
|
|
SELECT COUNT(*) INTO v_missing_end_user
|
|
FROM cb_dds_end_user_map m
|
|
JOIN cb_app_user u ON u.user_id = m.application_user_id AND u.active = 'Y'
|
|
LEFT JOIN dba_end_users eu ON eu.username = m.end_user_name
|
|
WHERE eu.username IS NULL;
|
|
|
|
SELECT COUNT(*) INTO v_missing_role
|
|
FROM cb_dds_end_user_map m
|
|
JOIN cb_app_user u ON u.user_id = m.application_user_id AND u.active = 'Y'
|
|
LEFT JOIN dba_data_role_grants rg
|
|
ON rg.grantee = m.end_user_name
|
|
AND rg.data_role = m.data_role_name
|
|
WHERE rg.data_role IS NULL;
|
|
|
|
IF v_missing_map <> 0 OR v_missing_end_user <> 0 OR v_missing_role <> 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20944,
|
|
'DDS MCP publish validation failed: map=' || v_missing_map
|
|
|| ', end_user=' || v_missing_end_user || ', data_role=' || v_missing_role);
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
COLUMN user_name FORMAT A22
|
|
COLUMN end_user_name FORMAT A18
|
|
COLUMN data_role_name FORMAT A24
|
|
COLUMN grant_name FORMAT A34
|
|
SELECT u.user_name, m.end_user_name, m.data_role_name, m.grant_name,
|
|
CASE WHEN dg.grant_name IS NULL THEN 'DEFAULT_DENY' ELSE 'PUBLISHED' END AS vector_access
|
|
FROM cb_dds_end_user_map m
|
|
JOIN cb_app_user u ON u.user_id = m.application_user_id
|
|
LEFT JOIN dba_data_grants dg ON dg.grant_name = m.grant_name
|
|
WHERE u.active = 'Y'
|
|
ORDER BY m.application_user_id;
|
|
|
|
PROMPT Catalog validation passed. Next: call /dds/mcp/sse and dds_vector_search with a valid MCP Bearer.
|
|
EXIT;
|