test: add miot cloud test case (#620)

* test: add miot cloud test case

* feat: improve miot cloud logic

* feat: simplify oauth logic

* test: improve miot cloud test case

* fix: fix pylint error

* feat: use random value replace uuid, random_did

* fix: import error
This commit is contained in:
Paul Shawn
2025-01-13 09:38:44 +08:00
committed by GitHub
parent 9ceca34b28
commit 5903c9a5a8
4 changed files with 541 additions and 16 deletions

View File

@ -1,16 +1,22 @@
# -*- coding: utf-8 -*-
"""Pytest fixtures."""
import random
import shutil
import pytest
from os import path, makedirs
from uuid import uuid4
TEST_ROOT_PATH: str = path.dirname(path.abspath(__file__))
TEST_FILES_PATH: str = path.join(TEST_ROOT_PATH, 'miot')
TEST_CACHE_PATH: str = path.join(TEST_ROOT_PATH, 'test_cache')
TEST_OAUTH2_REDIRECT_URL: str = 'http://homeassistant.local:8123'
TEST_LANG: str = 'zh-Hans'
TEST_UID: str = '123456789'
TEST_CLOUD_SERVER: str = 'cn'
DOMAIN_OAUTH2: str = 'oauth2_info'
DOMAIN_USER_INFO: str = 'user_info'
@pytest.fixture(scope='session', autouse=True)
def load_py_file():
@ -23,6 +29,7 @@ def load_py_file():
'miot_i18n.py',
'miot_lan.py',
'miot_mdns.py',
'miot_mips.py',
'miot_network.py',
'miot_spec.py',
'miot_storage.py']
@ -59,6 +66,10 @@ def load_py_file():
yield
# NOTICE: All test files and data (tokens, device information, etc.) will
# be deleted after the test is completed. For some test cases that
# require caching data, you can comment out the following code.
if path.exists(TEST_FILES_PATH):
shutil.rmtree(TEST_FILES_PATH)
print('\nremoved test files, ', TEST_FILES_PATH)
@ -79,6 +90,11 @@ def test_cache_path() -> str:
return TEST_CACHE_PATH
@pytest.fixture(scope='session')
def test_oauth2_redirect_url() -> str:
return TEST_OAUTH2_REDIRECT_URL
@pytest.fixture(scope='session')
def test_lang() -> str:
return TEST_LANG
@ -89,6 +105,28 @@ def test_uid() -> str:
return TEST_UID
@pytest.fixture(scope='session')
def test_random_did() -> str:
# Gen random did
return str(random.getrandbits(64))
@pytest.fixture(scope='session')
def test_uuid() -> str:
# Gen uuid
return uuid4().hex
@pytest.fixture(scope='session')
def test_cloud_server() -> str:
return TEST_CLOUD_SERVER
@pytest.fixture(scope='session')
def test_domain_oauth2() -> str:
return DOMAIN_OAUTH2
@pytest.fixture(scope='session')
def test_domain_user_info() -> str:
return DOMAIN_USER_INFO