mirror of
https://github.com/langgenius/dify.git
synced 2026-03-13 02:57:41 +08:00
163 lines
4.7 KiB
Python
163 lines
4.7 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
import controllers.console.version as version_module
|
|
|
|
|
|
class TestHasNewVersion:
|
|
def test_has_new_version_true(self):
|
|
result = version_module._has_new_version(
|
|
latest_version="1.2.0",
|
|
current_version="1.1.0",
|
|
)
|
|
assert result is True
|
|
|
|
def test_has_new_version_false(self):
|
|
result = version_module._has_new_version(
|
|
latest_version="1.0.0",
|
|
current_version="1.1.0",
|
|
)
|
|
assert result is False
|
|
|
|
def test_has_new_version_invalid_version(self):
|
|
with patch.object(version_module.logger, "warning") as log_warning:
|
|
result = version_module._has_new_version(
|
|
latest_version="invalid",
|
|
current_version="1.0.0",
|
|
)
|
|
|
|
assert result is False
|
|
log_warning.assert_called_once()
|
|
|
|
|
|
class TestCheckVersionUpdate:
|
|
def test_no_check_update_url(self):
|
|
query = version_module.VersionQuery(current_version="1.0.0")
|
|
|
|
with (
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"CHECK_UPDATE_URL",
|
|
"",
|
|
),
|
|
patch.object(
|
|
version_module.dify_config.project,
|
|
"version",
|
|
"1.0.0",
|
|
),
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"CAN_REPLACE_LOGO",
|
|
True,
|
|
),
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"MODEL_LB_ENABLED",
|
|
False,
|
|
),
|
|
):
|
|
result = version_module.check_version_update(query)
|
|
|
|
assert result.version == "1.0.0"
|
|
assert result.can_auto_update is False
|
|
assert result.features.can_replace_logo is True
|
|
assert result.features.model_load_balancing_enabled is False
|
|
|
|
def test_http_error_fallback(self):
|
|
query = version_module.VersionQuery(current_version="1.0.0")
|
|
|
|
with (
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"CHECK_UPDATE_URL",
|
|
"http://example.com",
|
|
),
|
|
patch.object(
|
|
version_module.httpx,
|
|
"get",
|
|
side_effect=Exception("boom"),
|
|
),
|
|
patch.object(
|
|
version_module.logger,
|
|
"warning",
|
|
) as log_warning,
|
|
):
|
|
result = version_module.check_version_update(query)
|
|
|
|
assert result.version == "1.0.0"
|
|
log_warning.assert_called_once()
|
|
|
|
def test_new_version_available(self):
|
|
query = version_module.VersionQuery(current_version="1.0.0")
|
|
|
|
response = MagicMock()
|
|
response.json.return_value = {
|
|
"version": "1.2.0",
|
|
"releaseDate": "2024-01-01",
|
|
"releaseNotes": "New features",
|
|
"canAutoUpdate": True,
|
|
}
|
|
|
|
with (
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"CHECK_UPDATE_URL",
|
|
"http://example.com",
|
|
),
|
|
patch.object(
|
|
version_module.httpx,
|
|
"get",
|
|
return_value=response,
|
|
),
|
|
patch.object(
|
|
version_module.dify_config.project,
|
|
"version",
|
|
"1.0.0",
|
|
),
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"CAN_REPLACE_LOGO",
|
|
False,
|
|
),
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"MODEL_LB_ENABLED",
|
|
True,
|
|
),
|
|
):
|
|
result = version_module.check_version_update(query)
|
|
|
|
assert result.version == "1.2.0"
|
|
assert result.release_date == "2024-01-01"
|
|
assert result.release_notes == "New features"
|
|
assert result.can_auto_update is True
|
|
|
|
def test_no_new_version(self):
|
|
query = version_module.VersionQuery(current_version="1.2.0")
|
|
|
|
response = MagicMock()
|
|
response.json.return_value = {
|
|
"version": "1.1.0",
|
|
}
|
|
|
|
with (
|
|
patch.object(
|
|
version_module.dify_config,
|
|
"CHECK_UPDATE_URL",
|
|
"http://example.com",
|
|
),
|
|
patch.object(
|
|
version_module.httpx,
|
|
"get",
|
|
return_value=response,
|
|
),
|
|
patch.object(
|
|
version_module.dify_config.project,
|
|
"version",
|
|
"1.2.0",
|
|
),
|
|
):
|
|
result = version_module.check_version_update(query)
|
|
|
|
assert result.version == "1.2.0"
|
|
assert result.can_auto_update is False
|