mirror of https://github.com/artifacthub/hub.git
Fix issue checking user alias availability (#879)
Closes #878 Signed-off-by: Sergio Castaño Arteaga <tegioz@icloud.com>
This commit is contained in:
parent
ae79ab9240
commit
7671dd2f0e
|
|
@ -70,6 +70,7 @@
|
|||
{{ template "subscriptions/get_user_package_subscriptions.sql" }}
|
||||
{{ template "subscriptions/get_user_subscriptions.sql" }}
|
||||
|
||||
{{ template "users/check_user_alias_availability.sql" }}
|
||||
{{ template "users/get_user_profile.sql" }}
|
||||
{{ template "users/register_session.sql" }}
|
||||
{{ template "users/register_user.sql" }}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
-- check_user_alias_availability checks if the provided alias is available.
|
||||
create or replace function check_user_alias_availability(p_alias text)
|
||||
returns setof uuid as $$
|
||||
select user_id
|
||||
from "user" u
|
||||
left join email_verification_code c using (user_id)
|
||||
where u.alias = p_alias
|
||||
and
|
||||
case when c.created_at is not null then
|
||||
current_timestamp - '1 day'::interval < c.created_at
|
||||
else
|
||||
true
|
||||
end;
|
||||
$$ language sql;
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
-- Start transaction and plan tests
|
||||
begin;
|
||||
select plan(4);
|
||||
|
||||
-- Declare some variables
|
||||
\set user1ID '00000000-0000-0000-0000-000000000001'
|
||||
\set user2ID '00000000-0000-0000-0000-000000000002'
|
||||
\set code2ID '00000000-0000-0000-0000-000000000002'
|
||||
\set user3ID '00000000-0000-0000-0000-000000000003'
|
||||
\set code3ID '00000000-0000-0000-0000-000000000003'
|
||||
|
||||
-- Seed some data
|
||||
insert into "user" (
|
||||
user_id,
|
||||
alias,
|
||||
email
|
||||
) values (
|
||||
:'user1ID',
|
||||
'user1',
|
||||
'user1@email.com'
|
||||
);
|
||||
insert into "user" (
|
||||
user_id,
|
||||
alias,
|
||||
email
|
||||
) values (
|
||||
:'user2ID',
|
||||
'user2',
|
||||
'user2@email.com'
|
||||
);
|
||||
insert into email_verification_code (
|
||||
email_verification_code_id,
|
||||
user_id,
|
||||
created_at
|
||||
) values (
|
||||
:'code2ID',
|
||||
:'user2ID',
|
||||
current_timestamp - '30 minutes'::interval
|
||||
);
|
||||
insert into "user" (
|
||||
user_id,
|
||||
alias,
|
||||
email
|
||||
) values (
|
||||
:'user3ID',
|
||||
'user3',
|
||||
'user3@email.com'
|
||||
);
|
||||
insert into email_verification_code (
|
||||
email_verification_code_id,
|
||||
user_id,
|
||||
created_at
|
||||
) values (
|
||||
:'code3ID',
|
||||
:'user3ID',
|
||||
current_timestamp - '2 days'::interval
|
||||
);
|
||||
|
||||
-- Run some tests
|
||||
select isnt_empty(
|
||||
$$ select check_user_alias_availability('user1') $$,
|
||||
'Alias user1 should not be available (verified)'
|
||||
);
|
||||
select isnt_empty(
|
||||
$$ select check_user_alias_availability('user2') $$,
|
||||
'Alias user2 should not be available (not verified but code not expired yet)'
|
||||
);
|
||||
select is_empty(
|
||||
$$ select check_user_alias_availability('user3') $$,
|
||||
'Alias user3 should be available (not verified and code has expired)'
|
||||
);
|
||||
select is_empty(
|
||||
$$ select check_user_alias_availability('user4') $$,
|
||||
'Alias user4 should be available (it does not exist)'
|
||||
);
|
||||
|
||||
-- Finish tests and rollback transaction
|
||||
select * from finish();
|
||||
rollback;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
-- Start transaction and plan tests
|
||||
begin;
|
||||
select plan(130);
|
||||
select plan(131);
|
||||
|
||||
-- Check default_text_search_config is correct
|
||||
select results_eq(
|
||||
|
|
@ -408,6 +408,7 @@ select has_function('get_user_opt_out_entries');
|
|||
select has_function('get_user_package_subscriptions');
|
||||
select has_function('get_user_subscriptions');
|
||||
-- Users
|
||||
select has_function('check_user_alias_availability');
|
||||
select has_function('get_user_profile');
|
||||
select has_function('register_session');
|
||||
select has_function('register_user');
|
||||
|
|
|
|||
|
|
@ -18,25 +18,19 @@ import (
|
|||
|
||||
const (
|
||||
// Database queries
|
||||
checkUserAliasAvailDBQ = `
|
||||
select user_id
|
||||
from "user" u
|
||||
join email_verification_code c using (user_id)
|
||||
where u.alias = $1
|
||||
and current_timestamp - '1 day'::interval < c.created_at
|
||||
`
|
||||
checkUserCredsDBQ = `select user_id, password from "user" where email = $1 and password is not null and email_verified = true`
|
||||
deleteSessionDBQ = `delete from session where session_id = $1`
|
||||
getAPIKeyUserIDDBQ = `select user_id from api_key where key = $1`
|
||||
getSessionDBQ = `select user_id, floor(extract(epoch from created_at)) from session where session_id = $1`
|
||||
getUserIDDBQ = `select user_id from "user" where email = $1`
|
||||
getUserPasswordDBQ = `select password from "user" where user_id = $1 and password is not null`
|
||||
getUserProfileDBQ = `select get_user_profile($1::uuid)`
|
||||
registerSessionDBQ = `select register_session($1::jsonb)`
|
||||
registerUserDBQ = `select register_user($1::jsonb)`
|
||||
updateUserPasswordDBQ = `select update_user_password($1::uuid, $2::text, $3::text)`
|
||||
updateUserProfileDBQ = `select update_user_profile($1::uuid, $2::jsonb)`
|
||||
verifyEmailDBQ = `select verify_email($1::uuid)`
|
||||
checkUserAliasAvailDBQ = `select check_user_alias_availability($1::text)`
|
||||
checkUserCredsDBQ = `select user_id, password from "user" where email = $1 and password is not null and email_verified = true`
|
||||
deleteSessionDBQ = `delete from session where session_id = $1`
|
||||
getAPIKeyUserIDDBQ = `select user_id from api_key where key = $1`
|
||||
getSessionDBQ = `select user_id, floor(extract(epoch from created_at)) from session where session_id = $1`
|
||||
getUserIDDBQ = `select user_id from "user" where email = $1`
|
||||
getUserPasswordDBQ = `select password from "user" where user_id = $1 and password is not null`
|
||||
getUserProfileDBQ = `select get_user_profile($1::uuid)`
|
||||
registerSessionDBQ = `select register_session($1::jsonb)`
|
||||
registerUserDBQ = `select register_user($1::jsonb)`
|
||||
updateUserPasswordDBQ = `select update_user_password($1::uuid, $2::text, $3::text)`
|
||||
updateUserProfileDBQ = `select update_user_profile($1::uuid, $2::jsonb)`
|
||||
verifyEmailDBQ = `select verify_email($1::uuid)`
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
|||
Loading…
Reference in New Issue