import base64 import hashlib import hmac import json from unittest import mock def make_response(payload: dict) -> mock.MagicMock: m = mock.MagicMock() m.content = json.dumps(payload).encode() m.status_code = 200 m.raise_for_status.return_value = None return m def twilio_signature(auth_token: str, url: str, params: dict) -> str: s = url for key in sorted(params.keys()): s += f"{key}{params[key]}" digest = hmac.new( auth_token.encode("utf-8"), s.encode("utf-8"), hashlib.sha1 ).digest() return base64.b64encode(digest).decode("utf-8")