mirror of
https://github.com/Sea-Haven-Industries/afterhours-shift-manager.git
synced 2026-09-30 03:23:12 +00:00
* fix(side-effects): keep non-prod off Slack and 3CX Dev portal actions could still name the production Slack channel and phone queue. Skip those calls unless STAGE is prod, and leave the identifiers empty on non-prod tasks. * style: apply formatter --------- Co-authored-by: sea-haven-auto-fix[bot] <332630863+sea-haven-auto-fix[bot]@users.noreply.github.com>
54 lines
2 KiB
Python
54 lines
2 KiB
Python
"""Non-prod must not call Slack or 3CX."""
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
from shared.effects import prod_side_effects_enabled
|
|
from shared.holiday_flow import activate
|
|
from shared.side_effects import slack_call, slack_token, update_3cx_routing
|
|
|
|
|
|
def test_missing_stage_keeps_prod_effects(monkeypatch):
|
|
monkeypatch.delenv("STAGE", raising=False)
|
|
assert prod_side_effects_enabled() is True
|
|
|
|
|
|
def test_dev_stage_disables_effects(monkeypatch):
|
|
monkeypatch.setenv("STAGE", "dev")
|
|
assert prod_side_effects_enabled() is False
|
|
|
|
|
|
def test_dev_slack_token_does_not_read_secrets(monkeypatch):
|
|
monkeypatch.setenv("STAGE", "dev")
|
|
monkeypatch.setenv(
|
|
"SLACK_BOT_TOKEN_SECRET", "afterhours-shift-manager/slack-bot-token"
|
|
)
|
|
read = MagicMock(side_effect=AssertionError("secret read"))
|
|
monkeypatch.setattr("shared.side_effects.get_secret", read)
|
|
assert slack_token() is None
|
|
read.assert_not_called()
|
|
|
|
|
|
def test_dev_slack_call_does_not_post(monkeypatch):
|
|
monkeypatch.setenv("STAGE", "dev")
|
|
post = MagicMock(side_effect=AssertionError("slack post"))
|
|
monkeypatch.setattr("shared.side_effects.requests.post", post)
|
|
assert slack_call("chat.postMessage", "xoxb-token", channel="C0APATP612N") is False
|
|
post.assert_not_called()
|
|
|
|
|
|
def test_dev_skips_3cx_even_when_queue_is_configured(monkeypatch):
|
|
monkeypatch.setenv("STAGE", "dev")
|
|
monkeypatch.setenv("QUEUE_NUMBER", "801")
|
|
monkeypatch.setenv("TCX_SECRET_PREFIX", "afterhours-shift-manager/3cx-")
|
|
route = MagicMock(side_effect=AssertionError("3cx"))
|
|
monkeypatch.setattr("shared.side_effects.update_queue_routing", route)
|
|
update_3cx_routing("101")
|
|
route.assert_not_called()
|
|
|
|
|
|
def test_dev_holiday_activate_does_not_build_a_client(monkeypatch):
|
|
monkeypatch.setenv("STAGE", "dev")
|
|
factory = MagicMock(side_effect=AssertionError("3cx client"))
|
|
result = activate(MagicMock(), "2026-07-04", client_factory=factory)
|
|
assert result["skipped"] == "non_prod"
|
|
factory.assert_not_called()
|