chore: auto release commit (2026-06-19 11:07:44)
Some checks failed
技能自动化发布 / release (push) Failing after 3s
Some checks failed
技能自动化发布 / release (push) Failing after 3s
This commit is contained in:
@@ -161,7 +161,7 @@ class TestCustomPlatformAccounts:
|
||||
payload = json.loads(out)
|
||||
assert payload["success"] is False
|
||||
assert payload["error"]["code"] == "ERROR:PLATFORM_NOT_REGISTERED"
|
||||
assert "platform ensure" in payload["error"]["message"]
|
||||
assert "--platform-display-name" in payload["error"]["message"]
|
||||
|
||||
def test_add_web_unregistered_returns_structured_error(self, clean_db, capsys):
|
||||
from service.account_service import cmd_account_add_web
|
||||
@@ -244,3 +244,155 @@ class TestPlatformKeyFormatValidation:
|
||||
out = capsys.readouterr().out.strip()
|
||||
payload = json.loads(out)
|
||||
assert payload["error"]["code"] == "ERROR:INVALID_PLATFORM_KEY"
|
||||
|
||||
|
||||
JIANGCHANG_META_KWARGS = dict(
|
||||
display_name="匠厂后台",
|
||||
url=JIANGCHANG_URL,
|
||||
domain="jc2009.com",
|
||||
auth_strategy="qr_code_manual",
|
||||
aliases=["jiangchang", "匠厂", "匠厂后台", "jc2009"],
|
||||
)
|
||||
|
||||
|
||||
class TestAutoRegisterFromCallerMeta:
|
||||
def _meta(self):
|
||||
from service.account_service import PlatformCallerMeta
|
||||
|
||||
return PlatformCallerMeta(**JIANGCHANG_META_KWARGS)
|
||||
|
||||
def test_pick_web_existing_platform_unchanged(self, clean_db, capsys):
|
||||
from service.account_service import cmd_account_add_web, cmd_account_pick_web
|
||||
|
||||
_ensure_jiangchang(clean_db)
|
||||
cmd_account_add_web(
|
||||
platform_input="jiangchang",
|
||||
login_id="manual",
|
||||
login_id_type="manual",
|
||||
label="匠厂后台",
|
||||
tenant_id=None,
|
||||
environment="production",
|
||||
role="admin",
|
||||
provider_code=None,
|
||||
url=None,
|
||||
extra_json_str=None,
|
||||
profile_dir_override=None,
|
||||
)
|
||||
capsys.readouterr()
|
||||
cmd_account_pick_web(platform_input="jiangchang", do_lease=True, holder="h1")
|
||||
out = capsys.readouterr().out.strip()
|
||||
payload = json.loads(out)
|
||||
assert payload["platform_key"] == "jiangchang"
|
||||
assert payload.get("profile_dir")
|
||||
|
||||
def test_pick_web_unregistered_without_meta(self, clean_db, capsys):
|
||||
from service.account_service import cmd_account_pick_web
|
||||
|
||||
cmd_account_pick_web(platform_input="auto_reg_plat")
|
||||
out = capsys.readouterr().out.strip()
|
||||
payload = json.loads(out)
|
||||
assert payload["success"] is False
|
||||
assert payload["error"]["code"] == "ERROR:PLATFORM_NOT_REGISTERED"
|
||||
assert "--platform-display-name" in payload["error"]["message"]
|
||||
|
||||
def test_pick_web_unregistered_with_meta_auto_registers(self, clean_db, capsys):
|
||||
from service.account_service import cmd_account_pick_web, PlatformCallerMeta
|
||||
from util.platforms import resolve_platform_key_dynamic
|
||||
|
||||
meta = PlatformCallerMeta(
|
||||
display_name="自动注册测试",
|
||||
url="https://example.com/admin",
|
||||
domain="example.com",
|
||||
auth_strategy="qr_code_manual",
|
||||
aliases=["auto_reg_plat"],
|
||||
)
|
||||
cmd_account_pick_web(platform_input="auto_reg_plat", platform_meta=meta)
|
||||
out = capsys.readouterr().out.strip()
|
||||
payload = json.loads(out)
|
||||
assert payload["success"] is False
|
||||
assert payload["error"]["code"] == "ERROR:NO_ACCOUNT"
|
||||
|
||||
result = resolve_platform_key_dynamic("auto_reg_plat", conn=clean_db)
|
||||
assert result.ok
|
||||
assert result.platform_key == "auto_reg_plat"
|
||||
|
||||
def test_add_web_unregistered_with_meta_auto_registers(self, clean_db):
|
||||
from service.account_service import cmd_account_add_web, PlatformCallerMeta
|
||||
from db.accounts_repo import find_accounts
|
||||
|
||||
meta = PlatformCallerMeta(
|
||||
display_name="匠厂后台",
|
||||
url=JIANGCHANG_URL,
|
||||
domain="jc2009.com",
|
||||
auth_strategy="qr_code_manual",
|
||||
aliases=["jiangchang"],
|
||||
)
|
||||
cmd_account_add_web(
|
||||
platform_input="jiangchang",
|
||||
login_id="manual",
|
||||
login_id_type="manual",
|
||||
label="匠厂后台",
|
||||
tenant_id=None,
|
||||
environment="production",
|
||||
role="admin",
|
||||
provider_code=None,
|
||||
url=None,
|
||||
extra_json_str=None,
|
||||
profile_dir_override=None,
|
||||
platform_meta=meta,
|
||||
)
|
||||
accs = find_accounts(platform_key="jiangchang")
|
||||
assert len(accs) == 1
|
||||
assert accs[0]["url"] == JIANGCHANG_URL
|
||||
|
||||
def test_invalid_platform_key_no_register(self, clean_db, capsys):
|
||||
from service.account_service import cmd_account_pick_web, PlatformCallerMeta
|
||||
|
||||
meta = PlatformCallerMeta(display_name="坏", url="https://x.com")
|
||||
cmd_account_pick_web(platform_input="bad key!", platform_meta=meta)
|
||||
out = capsys.readouterr().out.strip()
|
||||
payload = json.loads(out)
|
||||
assert payload["error"]["code"] == "ERROR:INVALID_PLATFORM_KEY"
|
||||
row = clean_db.execute(
|
||||
"SELECT COUNT(*) FROM platforms WHERE platform_key LIKE '%bad%'"
|
||||
).fetchone()[0]
|
||||
assert row == 0
|
||||
|
||||
def test_disabled_platform_not_re_enabled(self, clean_db, capsys):
|
||||
from db.accounts_repo import upsert_platform
|
||||
from service.account_service import cmd_account_pick_web, PlatformCallerMeta
|
||||
|
||||
upsert_platform(
|
||||
clean_db,
|
||||
key="jiangchang",
|
||||
display_name="匠厂后台",
|
||||
default_url=JIANGCHANG_URL,
|
||||
)
|
||||
clean_db.execute("UPDATE platforms SET enabled = 0 WHERE platform_key = 'jiangchang'")
|
||||
clean_db.commit()
|
||||
|
||||
meta = PlatformCallerMeta(display_name="匠厂后台", url=JIANGCHANG_URL)
|
||||
cmd_account_pick_web(platform_input="jiangchang", platform_meta=meta)
|
||||
out = capsys.readouterr().out.strip()
|
||||
payload = json.loads(out)
|
||||
assert payload["error"]["code"] == "ERROR:PLATFORM_DISABLED"
|
||||
|
||||
enabled = clean_db.execute(
|
||||
"SELECT enabled FROM platforms WHERE platform_key = 'jiangchang'"
|
||||
).fetchone()[0]
|
||||
assert enabled == 0
|
||||
|
||||
def test_auto_register_idempotent(self, clean_db):
|
||||
from service.account_service import cmd_account_pick_web, PlatformCallerMeta
|
||||
|
||||
meta = PlatformCallerMeta(
|
||||
display_name="幂等测试",
|
||||
url="https://example.com/admin",
|
||||
aliases=["idem_plat"],
|
||||
)
|
||||
cmd_account_pick_web(platform_input="idem_plat", platform_meta=meta)
|
||||
cmd_account_pick_web(platform_input="idem_plat", platform_meta=meta)
|
||||
count = clean_db.execute(
|
||||
"SELECT COUNT(*) FROM platforms WHERE platform_key = 'idem_plat'"
|
||||
).fetchone()[0]
|
||||
assert count == 1
|
||||
|
||||
Reference in New Issue
Block a user