]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: disable saml2 tests when the dep is not there
authorNizamudeen A <nia@redhat.com>
Wed, 12 Mar 2025 08:32:10 +0000 (14:02 +0530)
committerNizamudeen A <nia@redhat.com>
Tue, 1 Jul 2025 07:59:43 +0000 (13:29 +0530)
Signed-off-by: Nizamudeen A <nia@redhat.com>
debian/control
src/pybind/mgr/dashboard/controllers/saml2.py
src/pybind/mgr/dashboard/tests/test_sso.py
src/pybind/mgr/dashboard/tox.ini

index 0ae66243fa20d19eee97097b0287819a2831ed27..21aeb7247f4f73a6c427d75706a76f3d4e5b26bc 100644 (file)
@@ -105,6 +105,7 @@ Build-Depends: automake,
                python3-prettytable <pkg.ceph.check>,
                python3-requests <pkg.ceph.check>,
                python3-scipy <pkg.ceph.check>,
+               python3-onelogin-saml2 <pkg.ceph.check>,
                python3-setuptools,
                python3-sphinx,
                python3-venv,
index f834be9587ee425fb594fb2c4008a46559239bce..d3f596d7ead39ee08f73330128de192d7d1bccaa 100644 (file)
@@ -32,19 +32,10 @@ class Saml2(BaseController, ControllerAuthMixin):
             'post_data': post_data
         }
 
-    @staticmethod
-    def _check_python_saml():
-        if not python_saml_imported:
-            raise cherrypy.HTTPError(400, 'Required library not found: `python3-saml`')
-        try:
-            OneLogin_Saml2_Settings(mgr.SSO_DB.config.onelogin_settings)
-        except OneLogin_Saml2_Error:
-            raise cherrypy.HTTPError(400, 'Single Sign-On is not configured.')
-
     @Endpoint('POST', path="", version=None)
     @allow_empty_body
     def auth_response(self, **kwargs):
-        Saml2._check_python_saml()
+        check_python_saml()
         req = Saml2._build_req(self._request, kwargs)
         auth = OneLogin_Saml2_Auth(req, mgr.SSO_DB.config.onelogin_settings)
         auth.process_response()
@@ -84,20 +75,20 @@ class Saml2(BaseController, ControllerAuthMixin):
 
     @Endpoint(xml=True, version=None)
     def metadata(self):
-        Saml2._check_python_saml()
+        check_python_saml()
         saml_settings = OneLogin_Saml2_Settings(mgr.SSO_DB.config.onelogin_settings)
         return saml_settings.get_sp_metadata()
 
     @Endpoint(json_response=False, version=None)
     def login(self):
-        Saml2._check_python_saml()
+        check_python_saml()
         req = Saml2._build_req(self._request, {})
         auth = OneLogin_Saml2_Auth(req, mgr.SSO_DB.config.onelogin_settings)
         raise cherrypy.HTTPRedirect(auth.login())
 
     @Endpoint(json_response=False, version=None)
     def slo(self):
-        Saml2._check_python_saml()
+        check_python_saml()
         req = Saml2._build_req(self._request, {})
         auth = OneLogin_Saml2_Auth(req, mgr.SSO_DB.config.onelogin_settings)
         raise cherrypy.HTTPRedirect(auth.logout())
@@ -105,9 +96,18 @@ class Saml2(BaseController, ControllerAuthMixin):
     @Endpoint(json_response=False, version=None)
     def logout(self, **kwargs):
         # pylint: disable=unused-argument
-        Saml2._check_python_saml()
+        check_python_saml()
         JwtManager.reset_user()
         token = JwtManager.get_token(cherrypy.request)
         self._delete_token_cookie(token)
         url_prefix = prepare_url_prefix(mgr.get_module_option('url_prefix', default=''))
         raise cherrypy.HTTPRedirect("{}/#/login".format(url_prefix))
+
+
+def check_python_saml():
+    if not python_saml_imported:
+        raise cherrypy.HTTPError(400, 'Required library not found: `python3-saml`')
+    try:
+        OneLogin_Saml2_Settings(mgr.SSO_DB.config.onelogin_settings)
+    except OneLogin_Saml2_Error:
+        raise cherrypy.HTTPError(400, 'Single Sign-On is not configured.')
index 9492f0a20ed6698e0f5edeebb645616f9d283863..9e18a8fb1d4ea426fbd996d087a98665779e162e 100644 (file)
@@ -5,10 +5,17 @@ import errno
 import tempfile
 import unittest
 
+import pytest
+
+from ..controllers.saml2 import check_python_saml
 from ..services.sso import load_sso_db
 from ..tests import CLICommandTestMixin, CmdException
 
 
+@pytest.mark.skipif(
+    pytest.raises(Exception, check_python_saml),
+    reason="SAML dependency is missing"
+)
 class AccessControlTest(unittest.TestCase, CLICommandTestMixin):
     IDP_METADATA = '''<?xml version="1.0"?>
 <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
index 5577d1ac75a65008ef0a5bbfd27d6db0c3900b89..56f48859e0488f96d1ccfbeceee6cfdd81189317 100644 (file)
@@ -35,7 +35,6 @@ basepython=python3
 deps =
     {[base]deps}
     {[base-test]deps}
-    -rrequirements-extra.txt
 passenv =
     PYTHONPATH
 sitepackages = true
@@ -187,5 +186,4 @@ description = Generate Python code from Protobuf files for nvmeof gateway
 sitepackages = true
 commands_pre = cp ../../nvmeof/gateway/control/proto/gateway.proto dashboard/services/proto/
 commands =
-    python -c "import grpc; print(f'using grpc version: {grpc.__version__}')"
     python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. dashboard/services/proto/gateway.proto --experimental_allow_proto3_optional