Skip to content

Commit 6686ce3

Browse files
fix: Updated the Pub/Sub event conversion logic to better align to Eventarc (#105)
1 parent cc42aae commit 6686ce3

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

.github/workflows/conformance.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
useBuildpacks: false
3434
cmd: "'bundle exec functions-framework-ruby --source test/conformance/app.rb --target http_func --signature-type http'"
3535
- name: Run CloudEvent conformance tests
36-
uses: GoogleCloudPlatform/functions-framework-conformance/[email protected].9
36+
uses: GoogleCloudPlatform/functions-framework-conformance/[email protected].11
3737
with:
3838
functionType: 'cloudevent'
3939
useBuildpacks: false

lib/functions_framework/legacy_event_converter.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def construct_cloud_event context, data
117117
source, subject = convert_source context[:service], context[:resource]
118118
type = LEGACY_TYPE_TO_CE_TYPE[context[:type]]
119119
return nil unless type && source
120-
ce_data, data_subject = convert_data context[:service], data
120+
ce_data, data_subject = convert_data context, data
121121
content_type = "application/json"
122122
::CloudEvents::Event.new id: context[:id],
123123
source: source,
@@ -137,9 +137,12 @@ def convert_source service, resource
137137
["//#{service}/#{match[1]}", match[2]]
138138
end
139139

140-
def convert_data service, data
140+
def convert_data context, data
141+
service = context[:service]
141142
case service
142143
when "pubsub.googleapis.com"
144+
data["messageId"] = context[:id]
145+
data["publishTime"] = context[:timestamp]
143146
[{ "message" => data }, nil]
144147
when "firebaseauth.googleapis.com"
145148
if data.key? "metadata"

test/test_legacy_event_converter.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ def load_legacy_event filename, url_path: nil, encoding: "utf-8"
3636
assert_equal "2020-05-18T12:13:19+00:00", event.time.rfc3339
3737
assert_equal "value1", event.data["message"]["attributes"]["attribute1"]
3838
assert_equal "VGhpcyBpcyBhIHNhbXBsZSBtZXNzYWdl", event.data["message"]["data"]
39+
assert_equal "1215011316659232", event.data["message"]["messageId"]
40+
assert_equal "2020-05-18T12:13:19.209Z", event.data["message"]["publishTime"]
41+
assert_nil event.data["subscription"]
3942
end
4043

4144
it "converts legacy_storage_change.json" do
@@ -59,6 +62,8 @@ def load_legacy_event filename, url_path: nil, encoding: "utf-8"
5962
assert_equal "2020-05-06T07:33:34+00:00", event.time.rfc3339
6063
assert_equal "attr1-value", event.data["message"]["attributes"]["attr1"]
6164
assert_equal "dGVzdCBtZXNzYWdlIDM=", event.data["message"]["data"]
65+
assert_equal "1144231683168617", event.data["message"]["messageId"]
66+
assert_equal "2020-05-06T07:33:34.556Z", event.data["message"]["publishTime"]
6267
end
6368

6469
it "converts pubsub_utf8.json" do
@@ -71,6 +76,8 @@ def load_legacy_event filename, url_path: nil, encoding: "utf-8"
7176
assert_equal "2020-05-06T07:33:34+00:00", event.time.rfc3339
7277
assert_equal "あああ", event.data["message"]["attributes"]["attr1"]
7378
assert_equal "dGVzdCBtZXNzYWdlIDM=", event.data["message"]["data"]
79+
assert_equal "1144231683168617", event.data["message"]["messageId"]
80+
assert_equal "2020-05-06T07:33:34.556Z", event.data["message"]["publishTime"]
7481
end
7582

7683
it "converts pubsub_binary.json" do
@@ -82,6 +89,8 @@ def load_legacy_event filename, url_path: nil, encoding: "utf-8"
8289
assert_nil event.subject
8390
assert_equal "2020-05-06T07:33:34+00:00", event.time.rfc3339
8491
assert_equal "AQIDBA==", event.data["message"]["data"]
92+
assert_equal "1144231683168617", event.data["message"]["messageId"]
93+
assert_equal "2020-05-06T07:33:34.556Z", event.data["message"]["publishTime"]
8594
end
8695

8796
it "converts raw_pubsub.json" do
@@ -94,6 +103,9 @@ def load_legacy_event filename, url_path: nil, encoding: "utf-8"
94103
assert_in_delta event.time.to_time.to_f, Time.now.to_f, 1.0
95104
assert_equal "123", event.data["message"]["attributes"]["test"]
96105
assert_equal "eyJmb28iOiJiYXIifQ==", event.data["message"]["data"]
106+
assert_equal "1215011316659232", event.data["message"]["messageId"]
107+
timestamp = event.time.to_time.utc.strftime "%Y-%m-%dT%H:%M:%S.%6NZ"
108+
assert_equal timestamp, event.data["message"]["publishTime"]
97109
end
98110

99111
it "converts raw_pubsub.json with path" do
@@ -106,6 +118,9 @@ def load_legacy_event filename, url_path: nil, encoding: "utf-8"
106118
assert_in_delta event.time.to_time.to_f, Time.now.to_f, 1.0
107119
assert_equal "123", event.data["message"]["attributes"]["test"]
108120
assert_equal "eyJmb28iOiJiYXIifQ==", event.data["message"]["data"]
121+
assert_equal "1215011316659232", event.data["message"]["messageId"]
122+
timestamp = event.time.to_time.utc.strftime "%Y-%m-%dT%H:%M:%S.%6NZ"
123+
assert_equal timestamp, event.data["message"]["publishTime"]
109124
end
110125

111126
it "converts storage.json" do

0 commit comments

Comments
 (0)