Skip to content

Commit 406791c

Browse files
committed
NO-ISSUE Add more tests for webhook
1 parent 3d429f8 commit 406791c

File tree

1 file changed

+74
-1
lines changed

1 file changed

+74
-1
lines changed

spec/line/bot/v2/webhook_parser_spec.rb

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,23 @@
102102
end
103103
end
104104

105-
context 'with a text MessageEvent' do
105+
context 'with empty event (for webhook test)' do
106+
let(:webhook) do
107+
<<~JSON
108+
{
109+
"destination": "xxxxxxxxxx",
110+
"events": []
111+
}
112+
JSON
113+
end
114+
115+
it 'parses the webhook with no error' do
116+
events = parser.parse(webhook, signature)
117+
expect(events).to be_empty
118+
end
119+
end
120+
121+
context 'with a full text MessageEvent' do
106122
let(:webhook) do
107123
<<~JSON
108124
{
@@ -201,6 +217,63 @@
201217
end
202218
end
203219

220+
context 'with a minimum text MessageEvent' do
221+
let(:webhook) do
222+
<<~JSON
223+
{
224+
"destination": "xxxxxxxxxx",
225+
"events": [
226+
{
227+
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
228+
"type": "message",
229+
"mode": "active",
230+
"timestamp": 1462629479859,
231+
"source": {
232+
"type": "user",
233+
"userId": "U4af4980629..."
234+
},
235+
"webhookEventId": "01FZ74A0TDDPYRVKNK77XKC3ZR",
236+
"deliveryContext": {
237+
"isRedelivery": false
238+
},
239+
"message": {
240+
"id": "444573844083572737",
241+
"type": "text",
242+
"quoteToken": "q3Plxr4AgKd...",
243+
"text": " Hi "
244+
}
245+
}
246+
]
247+
}
248+
JSON
249+
end
250+
251+
it 'parses the webhook as a text MessageEvent' do
252+
events = parser.parse(webhook, signature)
253+
expect(events).not_to be_empty
254+
255+
event = events.first
256+
expect(event).to be_a(Line::Bot::V2::Webhook::MessageEvent)
257+
expect(event.reply_token).to eq('nHuyWiB7yP5Zw52FIkcQobQuGDXCTA')
258+
expect(event.type).to eq('message')
259+
expect(event.mode).to eq('active')
260+
expect(event.timestamp).to eq(1462629479859)
261+
expect(event.source).to be_a(Line::Bot::V2::Webhook::UserSource)
262+
expect(event.source.type).to eq('user')
263+
expect(event.source.user_id).to eq('U4af4980629...')
264+
expect(event.webhook_event_id).to eq('01FZ74A0TDDPYRVKNK77XKC3ZR')
265+
expect(event.delivery_context).to be_a(Line::Bot::V2::Webhook::DeliveryContext)
266+
expect(event.delivery_context.is_redelivery).to be false
267+
expect(event.message).to be_a(Line::Bot::V2::Webhook::TextMessageContent)
268+
expect(event.message.id).to eq('444573844083572737')
269+
expect(event.message.type).to eq('text')
270+
expect(event.message.quote_token).to eq('q3Plxr4AgKd...')
271+
expect(event.message.text).to eq(' Hi ')
272+
expect(event.message.emojis).to be_nil
273+
expect(event.message.mention).to be_nil
274+
end
275+
end
276+
204277
context 'with two image MessageEvents' do
205278
let(:webhook) do
206279
<<~JSON

0 commit comments

Comments
 (0)