async def test_respond_on_interactive_actions(self): """Test the respond method for interactive actions in Slack.""" result = amock.Mock() result.json = amock.CoroutineMock() result.json.return_value = {"success": "payload sent."} payload = { "type": "message_action", "team": {"id": "TXXXXXX", "domain": "coverbands"}, "user": {"id": "UXXXXXX", "name": "dreamweaver"}, "response_url": "https://hooks.slack.com/app-actions/T0MJR11A4/21974584944/yk1S9ndf35Q1flupVG5JbpM6", } interactive_action = InteractiveAction(payload) with amock.patch("aiohttp.ClientSession.post") as patched_request: patched_request.return_value = asyncio.Future() patched_request.return_value.set_result(result) await interactive_action.respond("Respond called with response_url") self.assertTrue(patched_request.called) payload = { "type": "view_closed", "team": {"id": "TXXXXXX", "domain": "coverbands"}, "user": {"id": "UXXXXXX", "name": "dreamweaver"}, } interactive_action = InteractiveAction(payload) with amock.patch("aiohttp.ClientSession.post") as patched_request: patched_request.return_value = asyncio.Future() patched_request.return_value.set_result(result) await interactive_action.respond("Respond called without response_url") self.assertFalse(patched_request.called) with OpsDroid() as opsdroid: connector = ConnectorSlack({"token": "abc123"}, opsdroid=OpsDroid()) raw_message = { "text": "Hello world", "user_id": "user_id", "user": "******", "room": "default", } message = Message( text="Hello world", user_id="user_id", user="******", target="default", connector=connector, raw_event=raw_message, ) opsdroid.send = amock.CoroutineMock() with amock.patch("aiohttp.ClientSession.post") as patched_request: patched_request.return_value = asyncio.Future() patched_request.return_value.set_result(result) await interactive_action.respond(message) self.assertTrue(opsdroid.send.called) self.assertFalse(patched_request.called)
async def test_respond_response_event_not_a_string(opsdroid, mock_api_obj, mock_api): await opsdroid.load(config=MINIMAL_CONFIG) async with running_opsdroid(opsdroid): action = InteractiveAction({"response_url": mock_api_obj.base_url}) message = Message("this is a test response") response = await action.respond(message) assert response
async def test_respond_response_text_content_type(mock_api_obj, mock_api): action = InteractiveAction({"response_url": mock_api_obj.base_url}) response = await action.respond("this is a test response") assert response == "ok"
async def test_respond_event_response_url_does_not_exist(mock_api_obj, mock_api): action = InteractiveAction({}) response = await action.respond("this is a test response") assert response == {"error": "Response URL not available in payload."}
async def test_respond_response_url_exists(mock_api_obj, mock_api): action = InteractiveAction({"response_url": mock_api_obj.base_url}) response = await action.respond("this is a test response") assert response["ok"]