Skip to content

Commit 3802d77

Browse files
pdthummarYunchuWang
authored andcommitted
added eventgrid generic binding tests.
1 parent 6ee2b76 commit 3802d77

File tree

3 files changed

+109
-2
lines changed

3 files changed

+109
-2
lines changed

tests/endtoend/eventgrid_functions/eventgrid_functions_stein/function_app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99

1010
@app.function_name(name="eventGridTrigger")
11-
@app.event_grid_trigger_message(arg_name="event")
11+
@app.event_grid_trigger(arg_name="event")
1212
@app.write_blob(arg_name="$return",
1313
path="python-worker-tests/test-eventgrid-triggered.txt",
1414
connection="AzureWebJobsStorage")
@@ -25,7 +25,7 @@ def event_grid_trigger(event: func.EventGridEvent) -> str:
2525

2626
@app.function_name(name="eventgrid_output_binding")
2727
@app.route(route="eventgrid_output_binding")
28-
@app.write_event_grid_message(
28+
@app.write_event_grid(
2929
arg_name="outputEvent",
3030
topic_endpoint_uri="AzureWebJobsEventGridTopicUri",
3131
topic_key_setting="AzureWebJobsEventGridConnectionKey")
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import json
2+
from datetime import datetime
3+
import azure.functions as func
4+
5+
from azure_functions_worker import logging
6+
7+
app = func.FunctionApp()
8+
9+
10+
@app.function_name(name="eventGridTrigger")
11+
@app.event_grid_trigger(arg_name="event", type="eventGridTrigger")
12+
@app.generic_output_binding(
13+
arg_name="$return",
14+
type="blob",
15+
connection="AzureWebJobsStorage",
16+
path="python-worker-tests/test-eventgrid-triggered.txt")
17+
def event_grid_trigger(event: func.EventGridEvent) -> str:
18+
logging.info("Event grid function is triggered!")
19+
return json.dumps({
20+
'id': event.id,
21+
'data': event.get_json(),
22+
'topic': event.topic,
23+
'subject': event.subject,
24+
'event_type': event.event_type,
25+
})
26+
27+
28+
@app.function_name(name="eventgrid_output_binding")
29+
@app.generic_trigger(arg_name="req", type="httpTrigger",
30+
route="eventgrid_output_binding")
31+
@app.generic_output_binding(arg_name="$return", type="http")
32+
@app.generic_output_binding(
33+
arg_name="outputEvent",
34+
type="eventGrid",
35+
topic_endpoint_uri="AzureWebJobsEventGridTopicUri",
36+
topic_key_setting="AzureWebJobsEventGridConnectionKey")
37+
def eventgrid_output_binding(
38+
req: func.HttpRequest,
39+
outputEvent: func.Out[func.EventGridOutputEvent]) -> func.HttpResponse:
40+
test_uuid = req.params.get('test_uuid')
41+
data_to_event_grid = func.EventGridOutputEvent(id="test-id",
42+
data={
43+
"test_uuid": test_uuid
44+
},
45+
subject="test-subject",
46+
event_type="test-event-1",
47+
event_time=datetime.utcnow(),
48+
data_version="1.0")
49+
50+
outputEvent.set(data_to_event_grid)
51+
r_value = "Sent event with subject: {}, id: {}, data: {}, event_type: {} " \
52+
"to EventGrid!".format(data_to_event_grid.subject,
53+
data_to_event_grid.id,
54+
data_to_event_grid.get_json(),
55+
data_to_event_grid.event_type)
56+
return func.HttpResponse(r_value)
57+
58+
59+
@app.function_name(name="eventgrid_output_binding_message_to_blobstore")
60+
@app.generic_trigger(arg_name="msg",
61+
type="queueTrigger",
62+
queue_name="test-event-grid-storage-queue",
63+
connection="AzureWebJobsStorage")
64+
@app.generic_output_binding(
65+
arg_name="$return",
66+
type="blob",
67+
connection="AzureWebJobsStorage",
68+
path="python-worker-tests/test-eventgrid-output-binding.txt")
69+
def eventgrid_output_binding_message_to_blobstore(
70+
msg: func.QueueMessage) -> bytes:
71+
return msg.get_body()
72+
73+
74+
@app.function_name(name="eventgrid_output_binding_success")
75+
@app.generic_trigger(arg_name="req", type="httpTrigger",
76+
route="eventgrid_output_binding_success")
77+
@app.generic_output_binding(arg_name="$return", type="http")
78+
@app.generic_input_binding(
79+
arg_name="file",
80+
type="blob",
81+
path="python-worker-tests/test-eventgrid-output-binding.txt",
82+
connection="AzureWebJobsStorage")
83+
def eventgrid_output_binding_success(
84+
req: func.HttpRequest, file: func.InputStream) -> str:
85+
return file.read().decode('utf-8')
86+
87+
88+
@app.function_name(name="get_eventgrid_triggered")
89+
@app.generic_trigger(arg_name="req", type="httpTrigger",
90+
route="get_eventgrid_triggered")
91+
@app.generic_output_binding(arg_name="$return", type="http")
92+
@app.generic_input_binding(
93+
arg_name="file",
94+
type="blob",
95+
path="python-worker-tests/test-eventgrid-triggered.txt",
96+
connection="AzureWebJobsStorage")
97+
def get_eventgrid_triggered(
98+
req: func.HttpRequest, file: func.InputStream) -> str:
99+
return file.read().decode('utf-8')

tests/endtoend/test_eventgrid_functions.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,3 +164,11 @@ class TestEventGridFunctionsStein(TestEventGridFunctions):
164164
def get_script_dir(cls):
165165
return testutils.E2E_TESTS_FOLDER / 'eventgrid_functions' / \
166166
'eventgrid_functions_stein'
167+
168+
169+
class TestEventGridFunctionsGeneric(TestEventGridFunctions):
170+
171+
@classmethod
172+
def get_script_dir(cls):
173+
return testutils.E2E_TESTS_FOLDER / 'eventgrid_functions' / \
174+
'eventgrid_functions_stein' / 'generic'

0 commit comments

Comments
 (0)