New test files for database functionalities like transfer of ownership, schema conditions, and updating roles have been added. Changes have also been made in the schema.sql file for checking the role hierarchy levels and updating rules for permissions. Modifications in account permissions test have also been performed for more accuracy.
105 lines
1.8 KiB
PL/PgSQL
105 lines
1.8 KiB
PL/PgSQL
create schema if not exists makerkit;
|
|
|
|
-- anon, authenticated, and service_role should have access to makerkit schema
|
|
grant USAGE on schema makerkit to anon, authenticated, service_role;
|
|
|
|
-- Don't allow public to execute any functions in the makerkit schema
|
|
alter default PRIVILEGES in schema makerkit revoke execute on FUNCTIONS from public;
|
|
|
|
-- Grant execute to anon, authenticated, and service_role for testing purposes
|
|
alter default PRIVILEGES in schema makerkit grant execute on FUNCTIONS to anon,
|
|
authenticated, service_role;
|
|
|
|
create or replace function makerkit.set_identifier(
|
|
identifier text,
|
|
user_email text
|
|
)
|
|
returns text
|
|
as $$
|
|
begin
|
|
update auth.users set raw_user_meta_data = jsonb_build_object('test_identifier', identifier)
|
|
where email = user_email;
|
|
|
|
return identifier;
|
|
|
|
end;
|
|
|
|
$$ language PLPGSQL;
|
|
|
|
create or replace function makerkit.get_account_by_slug(
|
|
account_slug text
|
|
)
|
|
returns setof accounts
|
|
as $$
|
|
begin
|
|
|
|
return query
|
|
select
|
|
*
|
|
from
|
|
accounts
|
|
where
|
|
slug = account_slug;
|
|
|
|
end;
|
|
|
|
$$ language PLPGSQL;
|
|
|
|
create or replace function makerkit.get_account_id_by_slug(
|
|
account_slug text
|
|
)
|
|
returns uuid
|
|
as $$
|
|
|
|
begin
|
|
|
|
return
|
|
(select
|
|
id
|
|
from
|
|
accounts
|
|
where
|
|
slug = account_slug);
|
|
|
|
end;
|
|
|
|
$$ language PLPGSQL;
|
|
|
|
create or replace function makerkit.get_user_id(
|
|
user_email text
|
|
)
|
|
returns uuid
|
|
as $$
|
|
begin
|
|
|
|
return
|
|
(select
|
|
primary_owner_user_id
|
|
from
|
|
accounts
|
|
where
|
|
email = user_email);
|
|
|
|
end;
|
|
|
|
$$ language PLPGSQL;
|
|
|
|
begin;
|
|
|
|
select plan(1);
|
|
|
|
select is_empty($$
|
|
select
|
|
*
|
|
from
|
|
makerkit.get_account_by_slug('test') $$,
|
|
'get_account_by_slug should return an empty set when the account does not exist'
|
|
);
|
|
|
|
select
|
|
*
|
|
from
|
|
finish();
|
|
|
|
rollback;
|