mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-04 04:43:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import os
 | 
						|
from unittest.mock import MagicMock, patch
 | 
						|
 | 
						|
import pytest
 | 
						|
from flask import Flask
 | 
						|
 | 
						|
# Getting the absolute path of the current file's directory
 | 
						|
ABS_PATH = os.path.dirname(os.path.abspath(__file__))
 | 
						|
 | 
						|
# Getting the absolute path of the project's root directory
 | 
						|
PROJECT_DIR = os.path.abspath(os.path.join(ABS_PATH, os.pardir, os.pardir))
 | 
						|
 | 
						|
CACHED_APP = Flask(__name__)
 | 
						|
 | 
						|
# set global mock for Redis client
 | 
						|
redis_mock = MagicMock()
 | 
						|
redis_mock.get = MagicMock(return_value=None)
 | 
						|
redis_mock.setex = MagicMock()
 | 
						|
redis_mock.setnx = MagicMock()
 | 
						|
redis_mock.delete = MagicMock()
 | 
						|
redis_mock.lock = MagicMock()
 | 
						|
redis_mock.exists = MagicMock(return_value=False)
 | 
						|
redis_mock.set = MagicMock()
 | 
						|
redis_mock.expire = MagicMock()
 | 
						|
redis_mock.hgetall = MagicMock(return_value={})
 | 
						|
redis_mock.hdel = MagicMock()
 | 
						|
redis_mock.incr = MagicMock(return_value=1)
 | 
						|
 | 
						|
# apply the mock to the Redis client in the Flask app
 | 
						|
redis_patcher = patch("extensions.ext_redis.redis_client", redis_mock)
 | 
						|
redis_patcher.start()
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture
 | 
						|
def app() -> Flask:
 | 
						|
    return CACHED_APP
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(autouse=True)
 | 
						|
def _provide_app_context(app: Flask):
 | 
						|
    with app.app_context():
 | 
						|
        yield
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture(autouse=True)
 | 
						|
def reset_redis_mock():
 | 
						|
    """reset the Redis mock before each test"""
 | 
						|
    redis_mock.reset_mock()
 | 
						|
    redis_mock.get.return_value = None
 | 
						|
    redis_mock.setex.return_value = None
 | 
						|
    redis_mock.setnx.return_value = None
 | 
						|
    redis_mock.delete.return_value = None
 | 
						|
    redis_mock.exists.return_value = False
 | 
						|
    redis_mock.set.return_value = None
 | 
						|
    redis_mock.expire.return_value = None
 | 
						|
    redis_mock.hgetall.return_value = {}
 | 
						|
    redis_mock.hdel.return_value = None
 | 
						|
    redis_mock.incr.return_value = 1
 |