mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-21 16:23:34 +08:00
refactor backend module architecture
This commit is contained in:
64
tests/test_plugin_sdk.py
Normal file
64
tests/test_plugin_sdk.py
Normal file
@@ -0,0 +1,64 @@
|
||||
import importlib
|
||||
|
||||
from app.sdk.cache import Cache, cached
|
||||
from app.sdk.config import settings
|
||||
from app.sdk.events import Event, eventmanager
|
||||
from app.sdk.logging import logger
|
||||
from app.sdk.media import MediaInfo, MetaBase, MetaInfo, MetaMusic, NfoReader
|
||||
from app.sdk.network import RequestUtils
|
||||
from app.sdk.plugins import ModuleManager, PluginManager
|
||||
from app.sdk.services import NotificationHelper
|
||||
from app.sdk.utilities import StringUtils as UtilityStringUtils
|
||||
from app.sdk.utilities import decrypt, encrypt
|
||||
|
||||
|
||||
def test_sdk_exports_canonical_plugin_interfaces():
|
||||
"""SDK 应复用 canonical 对象,不复制实现或制造第二套单例。"""
|
||||
from app.domain.context import MediaInfo as CanonicalMediaInfo
|
||||
from app.domain.meta.metabase import MetaBase as CanonicalMetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic as CanonicalMetaMusic
|
||||
from app.domain.metainfo import MetaInfo as CanonicalMetaInfo
|
||||
from app.domain.scraper import NfoReader as CanonicalNfoReader
|
||||
from app.domain.string import StringUtils as CanonicalStringUtils
|
||||
from app.foundation.crypto import CryptoJsUtils
|
||||
from app.extensions.module_manager import ModuleManager as CanonicalModuleManager
|
||||
from app.extensions.plugin_manager import PluginManager as CanonicalPluginManager
|
||||
from app.foundation.http import RequestUtils as CanonicalRequestUtils
|
||||
from app.platform.cache import Cache as CanonicalCache
|
||||
from app.platform.cache import cached as canonical_cached
|
||||
from app.platform.config import settings as canonical_settings
|
||||
from app.platform.events import Event as CanonicalEvent
|
||||
from app.platform.events import eventmanager as canonical_eventmanager
|
||||
from app.platform.log import logger as canonical_logger
|
||||
from app.services.notification import NotificationHelper as CanonicalNotificationHelper
|
||||
|
||||
assert Cache is CanonicalCache
|
||||
assert cached is canonical_cached
|
||||
assert settings is canonical_settings
|
||||
assert Event is CanonicalEvent
|
||||
assert eventmanager is canonical_eventmanager
|
||||
assert logger is canonical_logger
|
||||
assert MediaInfo is CanonicalMediaInfo
|
||||
assert MetaBase is CanonicalMetaBase
|
||||
assert MetaInfo is CanonicalMetaInfo
|
||||
assert MetaMusic is CanonicalMetaMusic
|
||||
assert NfoReader is CanonicalNfoReader
|
||||
assert RequestUtils is CanonicalRequestUtils
|
||||
assert NotificationHelper is CanonicalNotificationHelper
|
||||
assert UtilityStringUtils is CanonicalStringUtils
|
||||
assert decrypt is CryptoJsUtils.decrypt
|
||||
assert encrypt is CryptoJsUtils.encrypt
|
||||
assert ModuleManager is CanonicalModuleManager
|
||||
assert PluginManager is CanonicalPluginManager
|
||||
|
||||
|
||||
def test_legacy_common_crypto_aliases_round_trip():
|
||||
"""v1 插件使用的 common 加解密符号应保持 CryptoJS 密文兼容。"""
|
||||
legacy_common = importlib.import_module("app.utils.common")
|
||||
legacy_decrypt = legacy_common.decrypt
|
||||
legacy_encrypt = legacy_common.encrypt
|
||||
|
||||
message = b"moviepilot-plugin-compat"
|
||||
passphrase = b"0123456789abcdef"
|
||||
|
||||
assert legacy_decrypt(legacy_encrypt(message, passphrase), passphrase) == message
|
||||
Reference in New Issue
Block a user