From 7ca060d64641955c9ff64a2c07a2cfbfe844a3a2 Mon Sep 17 00:00:00 2001 From: Nikos Sklikas Date: Tue, 27 Jul 2021 13:55:09 +0300 Subject: [PATCH] Don't create a new client session every time A new client session was created every time create_session was called, this resulted in losing the client subordinates --- src/oidcop/session/manager.py | 9 ++++++--- tests/test_34_oidc_sso.py | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/oidcop/session/manager.py b/src/oidcop/session/manager.py index b8129904..12875293 100644 --- a/src/oidcop/session/manager.py +++ b/src/oidcop/session/manager.py @@ -12,6 +12,7 @@ from oidcop.exception import ConfigurationError from oidcop.token import handler from oidcop.util import Crypt +from oidcop.session.database import NoSuchClientSession from .database import Database from .grant import Grant from .grant import SessionToken @@ -226,9 +227,11 @@ def create_session( if not client_id: client_id = auth_req["client_id"] - client_info = ClientSessionInfo(client_id=client_id) - - self.set([user_id, client_id], client_info) + try: + self.get([user_id, client_id]) + except (NoSuchClientSession, ValueError): + client_info = ClientSessionInfo(client_id=client_id) + self.set([user_id, client_id], client_info) return self.create_grant( auth_req=auth_req, diff --git a/tests/test_34_oidc_sso.py b/tests/test_34_oidc_sso.py index dca54792..92e2d9be 100755 --- a/tests/test_34_oidc_sso.py +++ b/tests/test_34_oidc_sso.py @@ -255,4 +255,4 @@ def test_sso(self): assert len(csi1.subordinate) == 2 assert len(csi2.subordinate) == 1 - assert len(csi3.subordinate) == 1 + assert len(csi3.subordinate) == 2