File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11from flask import Flask , request , make_response
2+ import inspect
23import json
34import platform
45import sys
@@ -117,7 +118,15 @@ def event():
117118 # Parse the Event payload and emit the event to the event listener
118119 if "event" in event_data :
119120 event_type = event_data ["event" ]["type" ]
120- self .emitter .emit (event_type , event_data )
121+ event_args = [event_data ]
122+
123+ listeners = self .emitter .listeners (event_type )
124+ if listeners :
125+ argspec = inspect .getargspec (listeners [0 ])
126+ if len (argspec [0 ]) == 2 :
127+ event_args = [event_data , request ]
128+
129+ self .emitter .emit (event_type , * event_args )
121130 response = make_response ("" , 200 )
122131 response .headers ['X-Slack-Powered-By' ] = self .package_info
123132 return response
Original file line number Diff line number Diff line change @@ -29,3 +29,31 @@ def event_handler(event_data):
2929 assert res .status_code == 200
3030
3131 assert test_event_emission .event_handled
32+
33+ def test_event_emission_with_request (adapter ):
34+ test_event_emission .event_handled = False
35+
36+ # Events should trigger an event
37+ @adapter .on ('reaction_added' )
38+ def event_handler (event_data , request ):
39+ test_event_emission .event_handled = True
40+ assert request .headers ['X-Slack-Retry-No' ] == '99'
41+
42+ data = pytest .reaction_event_fixture
43+ timestamp = int (time .time ())
44+ signature = pytest .create_signature (adapter .signing_secret , timestamp , data )
45+
46+ with adapter .server .test_client () as client :
47+ res = client .post (
48+ '/slack/events' ,
49+ data = data ,
50+ content_type = 'application/json' ,
51+ headers = {
52+ 'X-Slack-Request-Timestamp' : timestamp ,
53+ 'X-Slack-Retry-No' : '99' ,
54+ 'X-Slack-Signature' : signature
55+ }
56+ )
57+ assert res .status_code == 200
58+
59+ assert test_event_emission .event_handled
You can’t perform that action at this time.
0 commit comments