async def test_on_teams_messaging_extension_bot_message_send_activity_with_empty_string(
        self, ):
        # Arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="composeExtension/submitAction",
            value={
                "data": {
                    "key": "value"
                },
                "context": {
                    "theme": "dark"
                },
                "commandId": "test_command",
                "commandContext": "command_context_test",
                "botMessagePreviewAction": "",
                "botActivityPreview": [Activity().serialize()],
                "messagePayload": MessageActionsPayload().serialize(),
            },
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 3
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[
            1] == "on_teams_messaging_extension_submit_action_dispatch"
        assert bot.record[2] == "on_teams_messaging_extension_submit_action"
    async def test_on_teams_messaging_extension_fetch_task(self):
        # Arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="composeExtension/fetchTask",
            value={
                "data": {
                    "key": "value"
                },
                "context": {
                    "theme": "dark"
                },
                "commandId": "test_command",
                "commandContext": "command_context_test",
                "botMessagePreviewAction": "message_action",
                "botActivityPreview": [{
                    "id": "123"
                }],
                "messagePayload": {
                    "id": "abc123"
                },
            },
        )
        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[1] == "on_teams_messaging_extension_fetch_task"
예제 #3
0
    async def test_on_teams_messaging_extension_configuration_query_settings_url(self):
        # Arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="composeExtension/querySettingUrl",
            value={
                "commandId": "test_command",
                "parameters": [],
                "messagingExtensionQueryOptions": {"skip": 1, "count": 1},
                "state": "state_string",
            },
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert (
            bot.record[1]
            == "on_teams_messaging_extension_configuration_query_settings_url"
        )
    async def test_on_teams_members_removed_activity(self):
        # arrange
        activity = Activity(
            type=ActivityTypes.conversation_update,
            channel_data={
                "eventType": "teamMemberRemoved",
                "team": {
                    "id": "team_id_1",
                    "name": "new_team_name"
                },
            },
            members_removed=[
                ChannelAccount(
                    id="123",
                    name="test_user",
                    aad_object_id="asdfqwerty",
                    role="tester",
                )
            ],
            channel_id=Channels.ms_teams,
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_conversation_update_activity"
        assert bot.record[1] == "on_teams_members_removed"
    async def test_typing_activity(self):
        activity = Activity(type=ActivityTypes.typing)

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        assert len(bot.record) == 1
        assert bot.record[0] == "on_typing_activity"
    async def test_pass_resource_responses_through(self):
        def validate_responses(activities: List[Activity]):
            pass  # no need to do anything.

        adapter = SimpleAdapter(call_on_send=validate_responses)
        context = TurnContext(adapter, Activity())

        activity_id = str(uuid.uuid1())
        activity = TestMessage.message(activity_id)

        resource_response = await context.send_activity(activity)
        self.assertTrue(resource_response.id == activity_id,
                        "Incorrect response Id returned")
예제 #7
0
    async def test_on_signin_verify_state(self):
        # arrange
        activity = Activity(type=ActivityTypes.invoke, name="signin/verifyState")

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[1] == "on_teams_signin_verify_state"
예제 #8
0
    async def test_turn_error(self):
        async def on_error(turn_context: TurnContext, err: Exception):
            nonlocal self
            self.assertIsNotNone(turn_context, "turn_context not found.")
            self.assertIsNotNone(err, "error not found.")
            self.assertEqual(err.__class__, Exception,
                             "unexpected error thrown.")

        adapter = SimpleAdapter()
        adapter.on_turn_error = on_error

        def handler(context: TurnContext):  # pylint: disable=unused-argument
            raise Exception

        await adapter.process_request(TestMessage.message(), handler)
    async def test_on_teams_meeting_end_event(self):
        activity = Activity(
            type=ActivityTypes.event,
            name="application/vnd.microsoft.meetingEnd",
            channel_id=Channels.ms_teams,
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        assert len(bot.record) == 2
        assert bot.record[0] == "on_event_activity"
        assert bot.record[1] == "on_teams_meeting_end_event"
    async def test_on_app_based_link_query(self):
        # arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="composeExtension/query",
            value={"url": "http://www.test.com"},
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[1] == "on_teams_messaging_extension_query"
    async def test_on_file_consent_bad_action_activity(self):
        # Arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="fileConsent/invoke",
            value={"action": "bad_action"},
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[1] == "on_teams_file_consent"
예제 #12
0
    async def test_on_teams_messaging_extension_card_button_clicked(self):
        # Arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="composeExtension/onCardButtonClicked",
            value={"key": "value"},
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[1] == "on_teams_messaging_extension_card_button_clicked"
예제 #13
0
    async def test_on_teams_o365_connector_card_action(self):
        # arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="actionableMessage/executeAction",
            value={"body": "body_here", "actionId": "action_id_here"},
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[1] == "on_teams_o365_connector_card_action"
예제 #14
0
    async def test_on_teams_task_module_submit(self):
        # Arrange
        activity = Activity(
            type=ActivityTypes.invoke,
            name="task/submit",
            value={
                "data": {"key": "value"},
                "context": TaskModuleRequestContext().serialize(),
            },
        )

        turn_context = TurnContext(SimpleAdapter(), activity)

        # Act
        bot = TestingTeamsActivityHandler()
        await bot.on_turn(turn_context)

        # Assert
        assert len(bot.record) == 2
        assert bot.record[0] == "on_invoke_activity"
        assert bot.record[1] == "on_teams_task_module_submit"
예제 #15
0
 def test_adapter_use_chaining(self):
     adapter = SimpleAdapter()
     adapter.use(CallCountingMiddleware()).use(CallCountingMiddleware())
예제 #16
0
 def test_adapter_single_use(self):
     adapter = SimpleAdapter()
     adapter.use(CallCountingMiddleware())