feat(auth): POST /v1/logout and admin logout revoke refresh session. Refs EventHub/EventHubBack#69
This commit is contained in:
@@ -34,10 +34,12 @@ cleanup(_) ->
|
||||
|
||||
logic_auth_session_test_() ->
|
||||
{foreach, fun setup/0, fun cleanup/1, [
|
||||
{"Issue and refresh admin tokens", fun test_issue_and_refresh_admin/0},
|
||||
{"Refresh admin reuse revokes family", fun test_admin_reuse_revokes/0},
|
||||
{"Issue and refresh user tokens", fun test_issue_and_refresh_user/0},
|
||||
{"Refresh user reuse revokes family", fun test_user_reuse_revokes/0}
|
||||
{"Issue and refresh admin tokens", {timeout, 120, fun test_issue_and_refresh_admin/0}},
|
||||
{"Refresh admin reuse revokes family", {timeout, 120, fun test_admin_reuse_revokes/0}},
|
||||
{"Issue and refresh user tokens", {timeout, 120, fun test_issue_and_refresh_user/0}},
|
||||
{"Refresh user reuse revokes family", {timeout, 120, fun test_user_reuse_revokes/0}},
|
||||
{"Logout user then refresh fails", {timeout, 120, fun test_logout_user/0}},
|
||||
{"Logout admin then refresh fails", {timeout, 120, fun test_logout_admin/0}}
|
||||
]}.
|
||||
|
||||
test_issue_and_refresh_admin() ->
|
||||
@@ -112,3 +114,31 @@ test_user_reuse_revokes() ->
|
||||
{ok, _, Refresh2} = logic_auth_session:refresh_user(Refresh1),
|
||||
?assertMatch({error, reuse_detected}, logic_auth_session:refresh_user(Refresh1)),
|
||||
?assertMatch({error, revoked}, logic_auth_session:refresh_user(Refresh2)).
|
||||
|
||||
test_logout_user() ->
|
||||
UserId = <<"usr_logout">>,
|
||||
User = #user{
|
||||
id = UserId, email = <<"ul@test.com">>, role = user,
|
||||
password_hash = <<>>, status = active, nickname = <<>>,
|
||||
avatar_url = default, timezone = <<"UTC">>, language = <<"ru">>,
|
||||
phone = <<>>, preferences = #{}, last_login = undefined,
|
||||
created_at = undefined, updated_at = undefined
|
||||
},
|
||||
ok = meck:expect(core_user, get_by_id, fun(_) -> {ok, User} end),
|
||||
{ok, _, Refresh} = logic_auth_session:issue_user_tokens(UserId, <<"user">>),
|
||||
?assertEqual(ok, logic_auth_session:logout_user(Refresh)),
|
||||
?assertMatch({error, revoked}, logic_auth_session:refresh_user(Refresh)).
|
||||
|
||||
test_logout_admin() ->
|
||||
AdminId = <<"adm_logout">>,
|
||||
Admin = #admin{
|
||||
id = AdminId, email = <<"al@test.com">>, role = admin,
|
||||
password_hash = <<>>, status = active, nickname = <<>>,
|
||||
avatar_url = default, timezone = <<"UTC">>, language = <<"ru">>,
|
||||
phone = <<>>, preferences = #{}, last_login = undefined,
|
||||
created_at = undefined, updated_at = undefined
|
||||
},
|
||||
ok = meck:expect(core_admin, get_by_id, fun(_) -> {ok, Admin} end),
|
||||
{ok, _, Refresh} = logic_auth_session:issue_admin_tokens(AdminId, <<"admin">>),
|
||||
?assertEqual(ok, logic_auth_session:logout_admin(Refresh)),
|
||||
?assertMatch({error, revoked}, logic_auth_session:refresh_admin(Refresh)).
|
||||
|
||||
Reference in New Issue
Block a user