fix(hal): set_security_pin_api returns dict; cm_telegram now correct
This commit is contained in:
parent
d32e4ba58b
commit
231ae69eef
@ -63,12 +63,8 @@ def cmd_set_pin(args):
|
||||
if not bot.is_whatsapp_url(args.link):
|
||||
print(f"ERROR: not a WhatsApp URL: {args.link}", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
t_username, f_username = bot.get_whatsapp_link_username(args.link)
|
||||
success = bot.set_security_pin_api(args.link)
|
||||
if not success:
|
||||
print("ERROR: set_security_pin_api returned a falsy result", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
print(f"OK: f_username={f_username} t_username={t_username}")
|
||||
result = bot.set_security_pin_api(args.link)
|
||||
print(f"OK: f_username={result['f_username']} t_username={result['t_username']}")
|
||||
|
||||
|
||||
def cmd_insert_user(args):
|
||||
|
||||
@ -177,7 +177,7 @@ class CM_BOT_HAL:
|
||||
)
|
||||
if result == False:
|
||||
raise Exception('Failed to insert user to table user')
|
||||
return result
|
||||
return {"f_username": f_username, "t_username": t_username}
|
||||
|
||||
def get_user_credit(self, f_username: str, f_password: str):
|
||||
cm_bot = CM_BOT()
|
||||
|
||||
@ -76,29 +76,27 @@ class CmdSetPinTests(unittest.TestCase):
|
||||
mock_hal.set_security_pin_api.assert_not_called()
|
||||
|
||||
@mock.patch.object(bot_cli, "CM_BOT_HAL")
|
||||
def test_extracts_names_locally_and_succeeds(self, mock_hal_class):
|
||||
def test_prints_names_from_hal_return_dict(self, mock_hal_class):
|
||||
# set_security_pin_api now returns a dict on success and raises
|
||||
# on any failure path. cmd_set_pin reads names directly from the
|
||||
# dict instead of pre-fetching them via get_whatsapp_link_username.
|
||||
mock_hal = mock_hal_class.return_value
|
||||
mock_hal.is_whatsapp_url.return_value = True
|
||||
mock_hal.get_whatsapp_link_username.return_value = ("t_user_42", "f_user_42")
|
||||
mock_hal.set_security_pin_api.return_value = True
|
||||
mock_hal.set_security_pin_api.return_value = {
|
||||
"f_username": "f_user_42",
|
||||
"t_username": "t_user_42",
|
||||
}
|
||||
out = io.StringIO()
|
||||
with contextlib.redirect_stdout(out):
|
||||
bot_cli.cmd_set_pin(argparse.Namespace(link="https://chat.whatsapp.com/abc"))
|
||||
text = out.getvalue()
|
||||
self.assertIn("f_username=f_user_42", text)
|
||||
self.assertIn("t_username=t_user_42", text)
|
||||
# The local get_whatsapp_link_username call from the old workaround
|
||||
# is gone — the HAL resolves names internally.
|
||||
mock_hal.get_whatsapp_link_username.assert_not_called()
|
||||
mock_hal.set_security_pin_api.assert_called_once_with("https://chat.whatsapp.com/abc")
|
||||
|
||||
@mock.patch.object(bot_cli, "CM_BOT_HAL")
|
||||
def test_falsy_set_security_pin_result_exits_nonzero(self, mock_hal_class):
|
||||
mock_hal = mock_hal_class.return_value
|
||||
mock_hal.is_whatsapp_url.return_value = True
|
||||
mock_hal.get_whatsapp_link_username.return_value = ("t", "f")
|
||||
mock_hal.set_security_pin_api.return_value = False
|
||||
with self.assertRaises(SystemExit) as cm:
|
||||
bot_cli.cmd_set_pin(argparse.Namespace(link="https://chat.whatsapp.com/abc"))
|
||||
self.assertEqual(cm.exception.code, 1)
|
||||
|
||||
def test_set_pin_subparser_dispatches(self):
|
||||
parser = bot_cli.build_parser()
|
||||
args = parser.parse_args(["set-pin", "https://chat.whatsapp.com/abc"])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user