\unset ECHO \i test/setup.sql SELECT plan(39); --SELECT * FROM no_plan(); /****************************************************************************/ -- Test has_role() and hasnt_role(). SELECT * FROM check_test( has_role(current_role), true, 'has_role(current role)', 'Role ' || quote_ident(current_role) || ' should exist', '' ); SELECT * FROM check_test( has_role(current_role, 'whatever'), true, 'has_role(current role, desc)', 'whatever', '' ); SELECT * FROM check_test( has_role('aoijaoisjfaoidfjaisjdfosjf'), false, 'has_role(nonexistent role)', 'Role aoijaoisjfaoidfjaisjdfosjf should exist', '' ); SELECT * FROM check_test( has_role('aoijaoisjfaoidfjaisjdfosjf', 'desc'), false, 'has_role(nonexistent role, desc)', 'desc', '' ); SELECT * FROM check_test( hasnt_role(current_role), false, 'hasnt_role(current role)', 'Role ' || quote_ident(current_role) || ' should not exist', '' ); SELECT * FROM check_test( hasnt_role(current_role, 'whatever'), false, 'hasnt_role(current role, desc)', 'whatever', '' ); SELECT * FROM check_test( hasnt_role('aoijaoisjfaoidfjaisjdfosjf'), true, 'hasnt_role(nonexistent role)', 'Role aoijaoisjfaoidfjaisjdfosjf should not exist', '' ); SELECT * FROM check_test( hasnt_role('aoijaoisjfaoidfjaisjdfosjf', 'desc'), true, 'hasnt_role(nonexistent role, desc)', 'desc', '' ); /****************************************************************************/ -- Test roles_are(). CREATE FUNCTION ___myroles(ex text) RETURNS NAME[] AS $$ SELECT COALESCE(ARRAY( SELECT rolname FROM pg_catalog.pg_roles WHERE rolname <> $1 ), '{}'::name[]);; $$ LANGUAGE SQL; SELECT * FROM check_test( roles_are( ___myroles(''), 'whatever' ), true, 'roles_are(roles, desc)', 'whatever', '' ); SELECT * FROM check_test( roles_are( ___myroles('') ), true, 'roles_are(roles)', 'There should be the correct roles', '' ); SELECT * FROM check_test( roles_are( array_append(___myroles(''), '__howdy__'), 'whatever' ), false, 'roles_are(roles, desc) missing', 'whatever', ' Missing roles: __howdy__' ); SELECT * FROM check_test( roles_are( ___myroles(current_role), 'whatever' ), false, 'roles_are(roles, desc) extras', 'whatever', ' Extra roles: ' || current_role ); SELECT * FROM check_test( roles_are( array_append(___myroles(current_role), '__howdy__'), 'whatever' ), false, 'roles_are(roles, desc) missing and extras', 'whatever', ' Extra roles: ' || current_role || ' Missing roles: __howdy__' ); /****************************************************************************/ -- Finish the tests and clean up. SELECT * FROM finish(); ROLLBACK;