@hubot-friends/hubot-slack 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/SlackAdapter.mjs +7 -8
- package/src/SlackAdapter.test.mjs +13 -146
package/package.json
CHANGED
package/src/SlackAdapter.mjs
CHANGED
|
@@ -172,16 +172,15 @@ class SlackAdapter extends Adapter {
|
|
|
172
172
|
}
|
|
173
173
|
async mapToHubotMessage(event) {
|
|
174
174
|
// console.error(event)
|
|
175
|
-
const
|
|
176
|
-
const lookUpId = event.user ?? event.bot_id
|
|
177
|
-
const queryParameter = event.user ? { user: event.user } : { bot: event.bot_id }
|
|
178
|
-
const fromBrain = this.robot.brain.users()[lookUpId]
|
|
175
|
+
const fromBrain = this.robot.brain.users()[event.user]
|
|
179
176
|
if(!fromBrain) {
|
|
180
|
-
const response = await
|
|
181
|
-
|
|
177
|
+
const response = await this.#webClient.users.info({
|
|
178
|
+
user: event.user
|
|
179
|
+
})
|
|
180
|
+
this.robot.brain.userForId(event.user, response.user)
|
|
182
181
|
}
|
|
183
|
-
const fromUser = this.robot.brain.users()[
|
|
184
|
-
return new TextMessage(new User(
|
|
182
|
+
const fromUser = this.robot.brain.users()[event.user]
|
|
183
|
+
return new TextMessage(new User(event.user, {
|
|
185
184
|
room: event.channel,
|
|
186
185
|
name: fromUser.name
|
|
187
186
|
}), event.text, event.ts)
|
|
@@ -5,9 +5,7 @@ import { Robot, TextMessage } from 'hubot'
|
|
|
5
5
|
import EventEmitter from 'node:events'
|
|
6
6
|
|
|
7
7
|
const BOT_ID = 'U0AAATTTTTAAAAA'
|
|
8
|
-
|
|
9
|
-
const WORKFLOW_BOT_ID = 'BB12033'
|
|
10
|
-
const APP_ID = 'ASADFASDFASDDDS'
|
|
8
|
+
|
|
11
9
|
class SlackClientMock extends EventEmitter {
|
|
12
10
|
#useRtmConnect = false
|
|
13
11
|
#delegate = null
|
|
@@ -24,27 +22,10 @@ class SlackClientMock extends EventEmitter {
|
|
|
24
22
|
this.emit('authenticated', new Error('Not authenticated'))
|
|
25
23
|
}
|
|
26
24
|
}
|
|
27
|
-
const buildATestBot = id => ({
|
|
28
|
-
ok: true,
|
|
29
|
-
bot: {
|
|
30
|
-
id: id,
|
|
31
|
-
deleted: false,
|
|
32
|
-
name: "beforebot",
|
|
33
|
-
updated: 1449272004,
|
|
34
|
-
app_id: "A123456",
|
|
35
|
-
user_id: "U123456",
|
|
36
|
-
icons: {
|
|
37
|
-
image_36: "https://...",
|
|
38
|
-
image_48: "https://...",
|
|
39
|
-
image_72: "https://..."
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
|
|
44
25
|
const buildATestUser = () => ({
|
|
45
26
|
ok: true,
|
|
46
27
|
user: {
|
|
47
|
-
id:
|
|
28
|
+
id: 'U123ABC456',
|
|
48
29
|
team_id: 'TASDASDFSDD',
|
|
49
30
|
name: 'bossdog',
|
|
50
31
|
deleted: false,
|
|
@@ -109,61 +90,6 @@ const buildATestUser = () => ({
|
|
|
109
90
|
}
|
|
110
91
|
})
|
|
111
92
|
|
|
112
|
-
const buildSlackMessageFromBot = (event, toBotId) => ({
|
|
113
|
-
ack: () => {},
|
|
114
|
-
envelope_id: 'e9b92395-bedd-4da7',
|
|
115
|
-
body: {
|
|
116
|
-
token: 'ASDFASFASDFASDFASDFASD',
|
|
117
|
-
team_id: 'TASDASDFSDD',
|
|
118
|
-
context_team_id: 'TASDASDFSDD',
|
|
119
|
-
context_enterprise_id: null,
|
|
120
|
-
api_app_id: 'ASADFASDFASDDDS',
|
|
121
|
-
event: {
|
|
122
|
-
subtype: 'bot_message',
|
|
123
|
-
text: event?.text ?? `<@${toBotId}> help`,
|
|
124
|
-
username: event?.username ?? 'Workflow',
|
|
125
|
-
type: event?.type ?? 'message',
|
|
126
|
-
bot_id: event?.bot_id ?? 'BB12033',
|
|
127
|
-
app_id: event?.app_id ?? APP_ID,
|
|
128
|
-
ts: event?.ts ?? '1688420854.574989',
|
|
129
|
-
blocks: event?.blocks ?? [],
|
|
130
|
-
channel: event?.channel ?? 'CASDFASDFASDSD',
|
|
131
|
-
event_ts: event?.ts ?? '1688420854.574989',
|
|
132
|
-
channel_type: event.channel_type ?? 'channel'
|
|
133
|
-
},
|
|
134
|
-
type: 'event_callback',
|
|
135
|
-
event_id: 'Ev05F9TNCNDB',
|
|
136
|
-
event_time: 1688420854,
|
|
137
|
-
authorizations: [
|
|
138
|
-
{
|
|
139
|
-
enterprise_id: null,
|
|
140
|
-
team_id: 'TASDASDFSDD',
|
|
141
|
-
user_id: toBotId,
|
|
142
|
-
is_bot: true,
|
|
143
|
-
is_enterprise_install: false
|
|
144
|
-
}
|
|
145
|
-
],
|
|
146
|
-
is_ext_shared_channel: false,
|
|
147
|
-
event_context: '4-eyJldCI6Im'
|
|
148
|
-
},
|
|
149
|
-
event: {
|
|
150
|
-
subtype: 'bot_message',
|
|
151
|
-
text: event?.text ?? `<@${toBotId}> help`,
|
|
152
|
-
username: event?.username ?? 'Workflow',
|
|
153
|
-
type: event?.type ?? 'message',
|
|
154
|
-
bot_id: event?.bot_id ?? 'BB12033',
|
|
155
|
-
app_id: event?.app_id ?? APP_ID,
|
|
156
|
-
ts: event?.ts ?? '1688420854.574989',
|
|
157
|
-
blocks: event?.blocks ?? [],
|
|
158
|
-
channel: event?.channel ?? 'CASDFASDFASDSD',
|
|
159
|
-
event_ts: event?.ts ?? '1688420854.574989',
|
|
160
|
-
channel_type: event.channel_type ?? 'channel'
|
|
161
|
-
},
|
|
162
|
-
retry_num: 0,
|
|
163
|
-
retry_reason: '',
|
|
164
|
-
accepts_response_payload: false
|
|
165
|
-
})
|
|
166
|
-
|
|
167
93
|
const buildSlackMessage = event => ({
|
|
168
94
|
ack: () => {},
|
|
169
95
|
envelope_id: 'e9b92395-bedd-4da7',
|
|
@@ -177,7 +103,7 @@ const buildSlackMessage = event => ({
|
|
|
177
103
|
client_msg_id: event?.messageId ?? 'be201e20-d035-44dc-a0e2',
|
|
178
104
|
type: event?.type ?? 'message',
|
|
179
105
|
text: event?.text ?? `<@${BOT_ID}> help`,
|
|
180
|
-
user: event?.user ??
|
|
106
|
+
user: event?.user ?? 'U123ABC456',
|
|
181
107
|
ts: event?.ts ?? '1688420854.574989',
|
|
182
108
|
blocks: event?.blocks ?? [],
|
|
183
109
|
team: event?.team ?? 'TASDASDFSDD',
|
|
@@ -196,7 +122,7 @@ const buildSlackMessage = event => ({
|
|
|
196
122
|
client_msg_id: event?.messageId ?? 'be201e20-d035-44dc-a0e2-befc2b5bd13d',
|
|
197
123
|
type: event?.type ?? 'message',
|
|
198
124
|
text: event?.text ?? `<@${BOT_ID}> help`,
|
|
199
|
-
user: event?.user ??
|
|
125
|
+
user: event?.user ?? 'U123ABC456',
|
|
200
126
|
ts: event?.ts ?? '1688420854.574989',
|
|
201
127
|
blocks: event?.blocks ?? [],
|
|
202
128
|
team: event?.team ?? 'TASDASDFSDD',
|
|
@@ -216,7 +142,7 @@ const authenticatedPerson = obj => ({
|
|
|
216
142
|
name: 'Team Name'
|
|
217
143
|
},
|
|
218
144
|
self: {
|
|
219
|
-
id:
|
|
145
|
+
id: BOT_ID,
|
|
220
146
|
token: 'fake-token',
|
|
221
147
|
}
|
|
222
148
|
})
|
|
@@ -224,9 +150,9 @@ const authenticatedPerson = obj => ({
|
|
|
224
150
|
const token = 'some-fake-token'
|
|
225
151
|
const makeRobot = (delegate, webClientMock = {}) => {
|
|
226
152
|
const robot = new Robot('Slack', false, 'hubot')
|
|
227
|
-
robot.brain.data.users[
|
|
228
|
-
id:
|
|
229
|
-
name: '
|
|
153
|
+
robot.brain.data.users['U123ABC456'] = {
|
|
154
|
+
id: 'U123ABC456',
|
|
155
|
+
name: 'hubot',
|
|
230
156
|
room: 'CASDFASDFASDSD'
|
|
231
157
|
}
|
|
232
158
|
|
|
@@ -309,12 +235,6 @@ describe('Listen to messages', async () => {
|
|
|
309
235
|
async start(adapter) {
|
|
310
236
|
adapter.emit('authenticated', authenticatedPerson(), null)
|
|
311
237
|
}
|
|
312
|
-
}, {
|
|
313
|
-
users: {
|
|
314
|
-
info(params) {
|
|
315
|
-
return buildATestUser()
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
238
|
})
|
|
319
239
|
await robot.run()
|
|
320
240
|
})
|
|
@@ -337,11 +257,11 @@ describe('Listen to messages', async () => {
|
|
|
337
257
|
assert.ok(true, 'should be called for message')
|
|
338
258
|
})
|
|
339
259
|
const message = await robot.adapter.mapToHubotMessage(buildSlackMessage({
|
|
340
|
-
type:
|
|
341
|
-
channel:
|
|
342
|
-
user:
|
|
343
|
-
text:
|
|
344
|
-
ts: 1355517523.000005
|
|
260
|
+
"type": "message",
|
|
261
|
+
"channel": "C123ABC456",
|
|
262
|
+
"user": "U123ABC456",
|
|
263
|
+
"text": "Hello world",
|
|
264
|
+
"ts": "1355517523.000005"
|
|
345
265
|
}).event)
|
|
346
266
|
await robot.receive(message)
|
|
347
267
|
assert.deepEqual(wasCalled, true)
|
|
@@ -417,57 +337,4 @@ describe('Send messages back', async () => {
|
|
|
417
337
|
assert.deepEqual(wasCalled, true)
|
|
418
338
|
robot.shutdown()
|
|
419
339
|
})
|
|
420
|
-
|
|
421
|
-
it('should reply to a message that was sent by a different bot, like Workflow situations', async () => {
|
|
422
|
-
let wasCalled = false
|
|
423
|
-
const robot = makeRobot({
|
|
424
|
-
async start(adapter) {
|
|
425
|
-
adapter.emit('authenticated', authenticatedPerson(), null)
|
|
426
|
-
}
|
|
427
|
-
}, {
|
|
428
|
-
chat: {
|
|
429
|
-
async postMessage({ channel, text }) {
|
|
430
|
-
assert.deepEqual(channel, 'C123ABC456')
|
|
431
|
-
assert.deepEqual(text, 'hi')
|
|
432
|
-
}
|
|
433
|
-
},
|
|
434
|
-
bots: {
|
|
435
|
-
info(params) {
|
|
436
|
-
return buildATestBot(WORKFLOW_BOT_ID)
|
|
437
|
-
}
|
|
438
|
-
},
|
|
439
|
-
auth: {
|
|
440
|
-
test() {
|
|
441
|
-
return {
|
|
442
|
-
user_id: BOT_ID,
|
|
443
|
-
user: 'hubot',
|
|
444
|
-
team_id: 'T12345678',
|
|
445
|
-
team: 'Team Name'
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
})
|
|
450
|
-
robot.respond(/deploy (?<appName>.*) (?<environment>.*)/i, {id: 'message responder'},
|
|
451
|
-
context => {
|
|
452
|
-
console.log('called', context.message)
|
|
453
|
-
assert.deepEqual(context.message.text, '@hubot deploy redirector staging --version main-d349664')
|
|
454
|
-
context.reply('deploying')
|
|
455
|
-
robot.shutdown()
|
|
456
|
-
wasCalled = true
|
|
457
|
-
})
|
|
458
|
-
await robot.run()
|
|
459
|
-
const message = await robot.adapter.mapToHubotMessage(buildSlackMessageFromBot(
|
|
460
|
-
{
|
|
461
|
-
type: "message",
|
|
462
|
-
ts: 1355517523.000005,
|
|
463
|
-
text: `<@${BOT_ID}> deploy redirector staging --version main-d349664`,
|
|
464
|
-
bot_id: WORKFLOW_BOT_ID,
|
|
465
|
-
username: "github",
|
|
466
|
-
icons: {}
|
|
467
|
-
}, BOT_ID).event)
|
|
468
|
-
message.text = robot.adapter.replaceBotIdWithName(message)
|
|
469
|
-
await robot.receive(message)
|
|
470
|
-
robot.shutdown()
|
|
471
|
-
assert.deepEqual(wasCalled, true)
|
|
472
|
-
})
|
|
473
340
|
})
|