From 0146d8ef652f5e7d9bd32ab81d7784dfb835ee0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?=
 <jkuensem@physik.uni-bielefeld.de>
Date: Wed, 19 Jul 2023 16:41:50 +0200
Subject: [PATCH] TMSS-2601: bugfix, reduce log level

---
 .../services/websocket/lib/websocket_service.py  | 16 +++++++---------
 .../websocket/test/t_websocket_service.py        |  1 -
 SAS/TMSS/backend/src/tmss/tmssapp/views.py       |  5 ++++-
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/SAS/TMSS/backend/services/websocket/lib/websocket_service.py b/SAS/TMSS/backend/services/websocket/lib/websocket_service.py
index 10c3d599cc1..b76c6b14d7a 100644
--- a/SAS/TMSS/backend/services/websocket/lib/websocket_service.py
+++ b/SAS/TMSS/backend/services/websocket/lib/websocket_service.py
@@ -66,13 +66,11 @@ class TMSSWebSocket(WebSocket):
                     self.user = token_obj.user
                     self.authenticated = True
                     logger.info('Client authenticated. User: %s from IP: %s' % (self.user, self.address[0]))
-                    self.sendMessage(JSONdumps([u'Your websocket connection was successfully authenticated.']))
                 else:
                     logger.info('Client not authenticated. IP: %s' % (self.address[0]))
                     self.close(1011, u'Please login, so you have a token, and please submit the token in the 1st message after the connection was made.')
             else:
-                logger.info('Client already authenticated, ignoring incoming message. User: %s from IP: %s' % (self.user, self.address[0]))
-                self.sendMessage(JSONdumps([u'Your websocket connection is already authenticated.']))
+                logger.debug('Client already authenticated, ignoring incoming message. User: %s from IP: %s' % (self.user, self.address[0]))
                 # NOTE: We just ignore incoming messages as we treat the communication as one-way only, except for the auth msg.
         except Exception as e:
             logger.exception('Error when handling websocket message of User: %s from IP: %s' % (self.user, self.address[0]))
@@ -140,18 +138,18 @@ class TMSSEventMessageHandlerForWebsocket(TMSSEventMessageHandler):
         from lofar.sas.tmss.tmss.tmssapp.models import ProjectRole
 
         auth_clients = []
-        logger.info('Checking which of these users should receive websocket update for obj=%s: %s' % (obj, [ws.user for ws in list(self._ws_server.connections.values())]))
+        logger.debug('Checking which of these users should receive websocket update for obj=%s: %s' % (obj, [ws.user for ws in list(self._ws_server.connections.values())]))
         for ws in list(self._ws_server.connections.values()):
             if ws.authenticated:    # Check user permissions for the object
                 user = User.objects.get(username=ws.user)
                 if user.is_superuser:
-                    logger.info('User=%s is superuser and will receive websocket update for obj=%s' % (user, obj))
+                    logger.debug('User=%s is superuser and will receive websocket update for obj=%s' % (user, obj))
                     auth_clients.append(ws)
                 elif user.has_perm("tmssapp.view_%s" % type(obj).__name__.lower()):
-                    logger.info('User=%s has permission=%s and will receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj))
+                    logger.debug('User=%s has permission=%s and will receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj))
                     auth_clients.append(ws)
                 else:
-                    logger.info('User=%s has no permission=%s, checking for project-based permission to receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj))
+                    logger.debug('User=%s has no permission=%s, checking for project-based permission to receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj))
                     # project-based permission
                     permitted_project_roles = get_project_roles_with_permission(type(obj).__name__.lower(), 'GET')
                     user_project_roles = get_project_roles_for_user(user)
@@ -161,10 +159,10 @@ class TMSSEventMessageHandlerForWebsocket(TMSSEventMessageHandler):
                             if project_role['project'].lower() == related_project.name.lower() and \
                                     ProjectRole.objects.get(value=project_role['role']) in permitted_project_roles:
                                 auth_clients.append(ws)
-                                logger.info("User=%s has project-based permission for project=%s and will receive websocket update for obj=%s" % (user, project_role['project'].lower(), obj))
+                                logger.debug("User=%s has project-based permission for project=%s and will receive websocket update for obj=%s" % (user, project_role['project'].lower(), obj))
                                 break
             else:
-                logger.info("%s websocket is not authenticated and will not receive websocket update for obj=%s" % (ws.user, obj))
+                logger.debug("%s websocket is not authenticated and will not receive websocket update for obj=%s" % (ws.user, obj))
         return auth_clients
 
     def _broadcast_notify_to_clients_websocket(self, msg, clients):
diff --git a/SAS/TMSS/backend/services/websocket/test/t_websocket_service.py b/SAS/TMSS/backend/services/websocket/test/t_websocket_service.py
index 6ff00564acb..3b6ac9b4353 100755
--- a/SAS/TMSS/backend/services/websocket/test/t_websocket_service.py
+++ b/SAS/TMSS/backend/services/websocket/test/t_websocket_service.py
@@ -115,7 +115,6 @@ class TestSubtaskSchedulingService(unittest.TestCase):
         cls.tmss_test_env.stop()
         cls.tmp_exchange.close()
 
-    @unittest.skip('Skipped until TMSS-2601 is resolved and we do not send unexpected debug messages to the clients any more')
     def test_01(self):
         '''
         This test starts a websocket service and tmss. Creates, updates and deletes objects to check if json_blobs from the ws service are properly received.
diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/views.py b/SAS/TMSS/backend/src/tmss/tmssapp/views.py
index 91809f00676..ec6baf8e10e 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/views.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/views.py
@@ -70,11 +70,14 @@ def authentication_state(request):
     if not request.user.is_authenticated:
         return JsonResponse({'is_authenticated': False})
 
+    token_obj = Token.objects.filter(user=request.user).first()
+    token = token_obj.key if token_obj else None
+
     return JsonResponse({'is_authenticated': True,
                          'username': request.user.username,
                          'email': request.user.email,
                          'id': request.user.id,
-                         'websocket_token': Token.objects.filter(user=request.user).first()})
+                         'websocket_token': token})
 
 
 # Allow everybody to GET our publicly available template-json-schema's
-- 
GitLab