Skip to content

Commit d7516ce

Browse files
committed
update
1 parent 12c78c2 commit d7516ce

File tree

5 files changed

+1180
-44
lines changed

5 files changed

+1180
-44
lines changed

integration_tests/web/test_message_metadata.py

Lines changed: 114 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,17 @@
22
import os
33
import time
44
import unittest
5+
import json
56

67
from integration_tests.env_variable_names import SLACK_SDK_TEST_BOT_TOKEN
7-
from slack_sdk.models.metadata import Metadata, EventAndEntityMetadata, EntityMetadata, EntityType, ExternalRef
8+
from slack_sdk.models.metadata import (
9+
Metadata, EventAndEntityMetadata, EntityMetadata, EntityType, ExternalRef,
10+
EntityPayload, EntityAttributes, EntityTitle, TaskEntityFields, EntityStringField,
11+
EntityTitle, EntityAttributes, EntityFullSizePreview,
12+
TaskEntityFields, EntityTypedField, EntityStringField, EntityTimestampField,
13+
EntityEditSupport, EntityEditTextConfig, EntityCustomField, EntityUserIDField,
14+
EntityIconField, ExternalRef as CustomExternalRef
15+
)
816
from slack_sdk.web import WebClient
917

1018

@@ -126,21 +134,121 @@ def test_publishing_message_metadata_using_models(self):
126134
self.assertIsNone(scheduled.get("error"))
127135
self.assertIsNotNone(scheduled.get("message").get("metadata"))
128136

129-
def test_publishing_message_entity_metadata_using_models(self):
137+
def test_publishing_entity_metadata(self):
138+
client: WebClient = WebClient(token=self.bot_token,base_url='https://dev.slack.com/api/')
139+
new_message = client.chat_postMessage(
140+
channel="C014KLZN9M0",
141+
text="Message with entity metadata",
142+
metadata={"entities": [{
143+
"entity_type": "slack#/entities/task",
144+
"url": "https://abc.com/123",
145+
"external_ref": {"id": "123"},
146+
"entity_payload": {
147+
"attributes": {
148+
"title": {"text": "My task"},
149+
"product_name": "We reference only"
150+
},
151+
"fields": {
152+
"due_date": {
153+
"value": "2026-06-06",
154+
"type": "slack#/types/date",
155+
"edit": {"enabled": True}
156+
},
157+
"created_by": {
158+
"type": "slack#/types/user",
159+
"user": {"user_id": "U014KLZE350"}
160+
},
161+
"date_created": {"value": 1760629278}
162+
},
163+
"custom_fields": [
164+
{
165+
"label": "img",
166+
"key": "img",
167+
"type": "slack#/types/image",
168+
"image_url": "https://s3-media2.fl.yelpcdn.com/bphoto/korel-1YjNtFtJlMTaC26A/o.jpg"
169+
}
170+
]
171+
}
172+
}]}
173+
)
174+
175+
self.assertIsNone(new_message.get("error"))
176+
self.assertIsNone(new_message.get("warning"))
177+
178+
def test_publishing_entity_metadata_using_models(self):
130179

131-
payload = { "attributes": { "title": { "text": "Work References" }, "product_name": "We reference only", "metadata_last_modified": 1760999279, "full_size_preview": { "is_supported": True } }, "fields": { "due_date": { "value": "2026-06-06", "type": "slack#/types/date", "edit": { "enabled": True } }, "created_by": { "type": "slack#/types/user", "user": { "user_id": "U014KLZE350" }, "edit": { "enabled": True } }, "description": { "value": "Initial task work object for test test test", "format": "markdown", "long": True, "edit": { "enabled": True, "text": { "min_length": 1, "max_length": 100 } } }, "date_created": { "value": 1760629278 }, "date_updated": { "value": 1760999279 } }, "custom_fields": [ { "label": "img", "key": "img", "type": "slack#/types/image", "image_url": "https://cdn.shopify.com/s/files/1/0156/3796/files/shutterstock_54266797_large.jpg?v=1549042211" }, { "label": "Reference tasks", "key": "ref-tasks", "type": "slack#/types/entity_ref", "entity_ref": { "entity_url": "https://app-one-app-two-auth-dev.tinyspeck.com/admin/slack/workobject/129/change/", "external_ref": { "id": "129" }, "title": "Radiant task", "display_type": "tasks", "icon": { "alt_text": "img", "url": "https://avatars.slack-edge.com/2024-09-05/7707480927360_791cc0c5cdf5b6720b21_512.png" } } }, { "label": "All related references", "key": "related-refs", "type": "array", "item_type": "slack#/types/entity_ref", "value": [ { "entity_ref": { "entity_url": "https://app-one-app-two-auth-dev.tinyspeck.com/admin/slack/workobject/131/change/", "external_ref": { "id": "131" }, "title": "Work object planner", "icon": { "alt_text": "img", "url": "https://avatars.slack-edge.com/2024-09-05/7707480927360_791cc0c5cdf5b6720b21_512.png" } } }, { "entity_ref": { "entity_url": "https://app-one-app-two-auth-dev.tinyspeck.com/admin/slack/workobject/133/change/", "external_ref": { "id": "133" }, "title": "Test" } }, { "entity_ref": { "entity_url": "https://app-one-app-two-auth-dev.tinyspeck.com/admin/slack/workobject/142/change/", "external_ref": { "id": "142" }, "title": "Test" } } ] } ] }
180+
# Build the metadata
132181

133-
client: WebClient = WebClient(token=self.bot_token,base_url='https://dev2378.slack.com/api/')
182+
title = EntityTitle(text="My title")
183+
full_size_preview = EntityFullSizePreview(
184+
is_supported=True,
185+
preview_url="https://s3-media3.fl.yelpcdn.com/bphoto/c7ed05m9lC2EmA3Aruue7A/o.jpg",
186+
mime_type="image/jpeg"
187+
)
188+
attributes = EntityAttributes(
189+
title=title,
190+
product_name="My Product",
191+
full_size_preview=full_size_preview
192+
)
193+
description = EntityStringField(
194+
value="Description of the task.",
195+
long=True,
196+
edit=EntityEditSupport(
197+
enabled=True,
198+
text=EntityEditTextConfig(
199+
min_length=5,
200+
max_length=100
201+
)
202+
)
203+
)
204+
due_date = EntityTypedField(
205+
value="2026-06-06",
206+
type="slack#/types/date",
207+
edit=EntityEditSupport(enabled=True)
208+
)
209+
created_by = EntityTypedField(
210+
type="slack#/types/user",
211+
user=EntityUserIDField(user_id="USLACKBOT"),
212+
)
213+
date_created = EntityTimestampField(
214+
value=1762450663,
215+
type="slack#/types/timestamp"
216+
)
217+
date_updated = EntityTimestampField(
218+
value=1762450663,
219+
type="slack#/types/timestamp"
220+
)
221+
fields = TaskEntityFields(
222+
description=description,
223+
due_date=due_date,
224+
created_by=created_by,
225+
date_created=date_created,
226+
date_updated=date_updated
227+
)
228+
custom_fields = []
229+
custom_fields.append(EntityCustomField(
230+
label="My Image",
231+
key="my-image",
232+
type="slack#/types/image",
233+
image_url="https://s3-media3.fl.yelpcdn.com/bphoto/c7ed05m9lC2EmA3Aruue7A/o.jpg"
234+
))
235+
entity = EntityPayload(
236+
attributes=attributes,
237+
fields=fields,
238+
custom_fields=custom_fields
239+
)
240+
241+
client: WebClient = WebClient(token=self.bot_token,base_url='https://dev.slack.com/api/')
134242
new_message = client.chat_postMessage(
135243
channel="C014KLZN9M0",
136-
text="dbl check message with metadata",
244+
text="Message with entity metadata",
137245
metadata=EventAndEntityMetadata(
138246
entities=[
139247
EntityMetadata(
140248
entity_type=EntityType.TASK,
141249
external_ref=ExternalRef(id="abc123"),
142250
url="https://myappdomain.com",
143-
entity_payload=payload,
251+
entity_payload=entity,
144252
)]),
145253
)
146254

0 commit comments

Comments
 (0)