8000 [Parity w/ Dotnet] create_conversation tentant_id/channel_data (#317) · gorpo/botbuilder-python@2b4707f · GitHub
[go: up one dir, main page]

Skip to content

Commit 2b4707f

Browse files
mdrichardsonaxelsrz
authored andcommitted
[Parity w/ Dotnet] create_conversation tentant_id/channel_data (microsoft#317)
* [Parity w/ Dotnet] create_conversation tentant_id/channel_data
1 parent 4df0fd2 commit 2b4707f

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

libraries/botbuilder-core/botbuilder/core/bot_framework_adapter.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,10 @@ async def create_conversation(
180180
request = TurnContext.apply_conversation_reference(
181181
Activity(), reference, is_incoming=True
182182
)
183-
request.conversation = ConversationAccount(id=resource_response.id)
183+
request.conversation = ConversationAccount(
184+
id=resource_response.id, tenant_id=parameters.tenant_id
185+
)
186+
request.channel_data = parameters.channel_data
184187
if resource_response.service_url:
185188
request.service_url = resource_response.service_url
186189

libraries/botbuilder-core/tests/test_bot_framework_adapter.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from copy import copy, deepcopy
55
from unittest.mock import Mock
66
import unittest
7+
import uuid
78
import aiounittest
89

910
from botbuilder.core import (
@@ -16,6 +17,7 @@
1617
ActivityTypes,
1718
ConversationAccount,
1819
ConversationReference,
20+
ConversationResourceResponse,
1921
ChannelAccount,
2022
)
2123
from botframework.connector.aio import ConnectorClient
@@ -124,7 +126,12 @@ async def mock_create_conversation(parameters):
124126
self.tester.assertIsNotNone(
125127
parameters, "create_conversation not passed parameters"
126128
)
127-
return not self.fail_auth
129+
response = ConversationResourceResponse(
130+
activity_id=REFERENCE.activity_id,
131+
service_url=REFERENCE.service_url,
132+
id=uuid.uuid4(),
133+
)
134+
return response
128135

129136
connector_client_mock.conversations.reply_to_activity.side_effect = (
130137
mock_reply_to_activity
@@ -247,3 +254,36 @@ async def aux_func_assert_tenant_id_copied(context):
247254
)
248255

249256
await adapter.process_activity(incoming, "", aux_func_assert_tenant_id_copied)
257+
258+
async def test_should_create_valid_conversation_for_msteams(self):
259+
260+
tenant_id = "testTenant"
261+
262+
reference = deepcopy(REFERENCE)
263+
reference.conversation.tenant_id = tenant_id
264+
reference.channel_data = {"tenant": {"id": tenant_id}}
265+
adapter = AdapterUnderTest()
266+
267+
called = False
268+
269+
async def aux_func_assert_valid_conversation(context):
270+
self.assertIsNotNone(context, "context not passed")
271+
self.assertIsNotNone(context.activity, "context has no request")
272+
self.assertIsNotNone(
273+
context.activity.conversation, "request has invalid conversation"
274+
)
275+
self.assertEqual(
276+
context.activity.conversation.tenant_id,
277+
tenant_id,
278+
"request has invalid tenant_id on conversation",
279+
)
280+
self.assertEqual(
281+
context.activity.channel_data["tenant"]["id"],
282+
tenant_id,
283+
"request has invalid tenant_id in channel_data",
284+
)
285+
nonlocal called
286+
called = True
287+
288+
await adapter.create_conversation(reference, aux_func_assert_valid_conversation)
289+
self.assertTrue(called, "bot logic not called.")

0 commit comments

Comments
 (0)
0