feat(auth): list/revoke sessions with device_name and client_type. Fixes EventHub/EventHubBack#74
This commit is contained in:
@@ -28,9 +28,11 @@ cleanup(_) ->
|
||||
core_auth_session_test_() ->
|
||||
{foreach, fun setup/0, fun cleanup/1, [
|
||||
{"Create session", fun test_create/0},
|
||||
{"Create with device", fun test_create_device/0},
|
||||
{"Rotate session updates jti", fun test_rotate/0},
|
||||
{"Reuse detection", fun test_reuse/0},
|
||||
{"Revoke family", fun test_revoke_family/0}
|
||||
{"Revoke family", fun test_revoke_family/0},
|
||||
{"List active and revoke others", fun test_list_and_revoke_others/0}
|
||||
]}.
|
||||
|
||||
test_create() ->
|
||||
@@ -38,9 +40,16 @@ test_create() ->
|
||||
?assertEqual(<<"admin1">>, Session#auth_session.subject_id),
|
||||
?assertEqual(admin, Session#auth_session.subject_type),
|
||||
?assertEqual(false, Session#auth_session.revoked),
|
||||
?assertEqual(<<>>, Session#auth_session.device_name),
|
||||
{ok, Loaded} = core_auth_session:get(Session#auth_session.session_id),
|
||||
?assertEqual(Session#auth_session.session_id, Loaded#auth_session.session_id).
|
||||
|
||||
test_create_device() ->
|
||||
{ok, Session} = core_auth_session:create(
|
||||
<<"u1">>, user, <<"web">>, <<"Chrome · Win">>, <<"Mozilla">>),
|
||||
?assertEqual(<<"Chrome · Win">>, Session#auth_session.device_name),
|
||||
?assertEqual(<<"Mozilla">>, Session#auth_session.user_agent).
|
||||
|
||||
test_rotate() ->
|
||||
{ok, Session} = core_auth_session:create(<<"admin1">>, admin, <<"admin">>),
|
||||
OldJti = Session#auth_session.current_jti,
|
||||
@@ -61,3 +70,16 @@ test_revoke_family() ->
|
||||
ok = core_auth_session:revoke_family(S1#auth_session.family_id),
|
||||
?assertMatch({error, revoked},
|
||||
core_auth_session:rotate(S1#auth_session.session_id, S1#auth_session.current_jti)).
|
||||
|
||||
test_list_and_revoke_others() ->
|
||||
{ok, Keep} = core_auth_session:create(<<"u1">>, user, <<"web">>, <<"A">>, <<"ua">>),
|
||||
{ok, Other} = core_auth_session:create(<<"u1">>, user, <<"mobile">>, <<"B">>, <<"ub">>),
|
||||
Active = core_auth_session:list_active_for_subject(<<"u1">>, user),
|
||||
?assertEqual(2, length(Active)),
|
||||
{ok, 1} = core_auth_session:revoke_others_for_subject(
|
||||
<<"u1">>, user, Keep#auth_session.session_id),
|
||||
Left = core_auth_session:list_active_for_subject(<<"u1">>, user),
|
||||
?assertEqual(1, length(Left)),
|
||||
?assertEqual(Keep#auth_session.session_id, (hd(Left))#auth_session.session_id),
|
||||
{ok, Revoked} = core_auth_session:get(Other#auth_session.session_id),
|
||||
?assertEqual(true, Revoked#auth_session.revoked).
|
||||
|
||||
Reference in New Issue
Block a user