| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- """微信登录:openid 已绑定也须校验本次授权手机号。"""
- from types import SimpleNamespace
- from unittest.mock import MagicMock, patch
- from app.services.wechat_login_service import resolve_wechat_login_user
- from app.services.wechat_mini_auth import phones_match
- def test_phones_match_equal():
- assert phones_match("13800138000", "13800138000") is True
- def test_phones_match_normalizes_plus86():
- assert phones_match("13800138000", "+8613800138000") is True
- def test_phones_match_mismatch():
- assert phones_match("13866751937", "17756576757") is False
- def test_phones_match_empty_account_fails():
- assert phones_match(None, "17756576757") is False
- assert phones_match("", "17756576757") is False
- def test_resolve_openid_bound_but_phone_mismatch_rejects():
- bound = SimpleNamespace(
- id="admin-id",
- phone_no="13866751937",
- wx_openid="oid-admin",
- )
- db = MagicMock()
- with patch(
- "app.services.wechat_login_service.user_crud.get_by_wx_openid",
- return_value=bound,
- ):
- user, err, code = resolve_wechat_login_user(
- db, openid="oid-admin", phone="17756576757"
- )
- assert user is None
- assert code == 401
- assert "不一致" in err
- def test_resolve_openid_bound_and_phone_match_ok():
- bound = SimpleNamespace(
- id="admin-id",
- phone_no="13866751937",
- wx_openid="oid-admin",
- )
- db = MagicMock()
- with patch(
- "app.services.wechat_login_service.user_crud.get_by_wx_openid",
- return_value=bound,
- ):
- user, err, code = resolve_wechat_login_user(
- db, openid="oid-admin", phone="13866751937"
- )
- assert err is None and code is None
- assert user is bound
|