@@ -138,9 +138,9 @@ def start_containers_with_env(self):
138138 logger .warning ("Failed to create plugin database: %s" , e )
139139
140140 # Set up storage environment variables
141- os .environ [ "STORAGE_TYPE" ] = "opendal"
142- os .environ [ "OPENDAL_SCHEME" ] = "fs"
143- os .environ [ "OPENDAL_FS_ROOT" ] = " storage"
141+ os .environ . setdefault ( "STORAGE_TYPE" , "opendal" )
142+ os .environ . setdefault ( "OPENDAL_SCHEME" , "fs" )
143+ os .environ . setdefault ( "OPENDAL_FS_ROOT" , "/tmp/dify- storage")
144144
145145 # Start Redis container for caching and session management
146146 # Redis is used for storing session data, cache entries, and temporary data
@@ -348,6 +348,13 @@ def _create_app_with_containers() -> Flask:
348348 """
349349 logger .info ("Creating Flask application with test container configuration..." )
350350
351+ # Ensure Redis client reconnects to the containerized Redis (no auth)
352+ from extensions import ext_redis
353+
354+ ext_redis .redis_client ._client = None
355+ os .environ ["REDIS_USERNAME" ] = ""
356+ os .environ ["REDIS_PASSWORD" ] = ""
357+
351358 # Re-create the config after environment variables have been set
352359 from configs import dify_config
353360
@@ -486,3 +493,29 @@ def db_session_with_containers(flask_app_with_containers) -> Generator[Session,
486493 finally :
487494 session .close ()
488495 logger .debug ("Database session closed" )
496+
497+
498+ @pytest .fixture (scope = "package" , autouse = True )
499+ def mock_ssrf_proxy_requests ():
500+ """
501+ Avoid outbound network during containerized tests by stubbing SSRF proxy helpers.
502+ """
503+
504+ from unittest .mock import patch
505+
506+ import httpx
507+
508+ def _fake_request (method , url , ** kwargs ):
509+ request = httpx .Request (method = method , url = url )
510+ return httpx .Response (200 , request = request , content = b"" )
511+
512+ with (
513+ patch ("core.helper.ssrf_proxy.make_request" , side_effect = _fake_request ),
514+ patch ("core.helper.ssrf_proxy.get" , side_effect = lambda url , ** kw : _fake_request ("GET" , url , ** kw )),
515+ patch ("core.helper.ssrf_proxy.post" , side_effect = lambda url , ** kw : _fake_request ("POST" , url , ** kw )),
516+ patch ("core.helper.ssrf_proxy.put" , side_effect = lambda url , ** kw : _fake_request ("PUT" , url , ** kw )),
517+ patch ("core.helper.ssrf_proxy.patch" , side_effect = lambda url , ** kw : _fake_request ("PATCH" , url , ** kw )),
518+ patch ("core.helper.ssrf_proxy.delete" , side_effect = lambda url , ** kw : _fake_request ("DELETE" , url , ** kw )),
519+ patch ("core.helper.ssrf_proxy.head" , side_effect = lambda url , ** kw : _fake_request ("HEAD" , url , ** kw )),
520+ ):
521+ yield
0 commit comments