@@ -175,3 +175,43 @@ def test_read_cloud_event_from_json_with_attributes_only() -> None:
175
175
assert result .get_dataschema () == "http://example.com/schema"
176
176
assert result .get_subject () == "test_subject"
177
177
assert result .get_data () is None
178
+
179
+
180
+ def test_read_cloud_event_from_json_with_bytes_as_data () -> None :
181
+ data = '{"id": "123", "source": "source", "type": "type", "specversion": "1.0", "time": "2023-10-25T17:09:19.736166Z", "datacontenttype": "application/json", "dataschema": "http://example.com/schema", "subject": "test_subject", "data_base64": "dGVzdA=="}' .encode (
182
+ "utf-8"
183
+ )
184
+ formatter = JSONFormat ()
185
+ result = formatter .read (CloudEvent , data )
186
+
187
+ assert result .get_id () == "123"
188
+ assert result .get_source () == "source"
189
+ assert result .get_type () == "type"
190
+ assert result .get_specversion () == "1.0"
191
+ assert result .get_time () == datetime (
192
+ 2023 , 10 , 25 , 17 , 9 , 19 , 736166 , tzinfo = timezone .utc
193
+ )
194
+ assert result .get_datacontenttype () == "application/json"
195
+ assert result .get_dataschema () == "http://example.com/schema"
196
+ assert result .get_subject () == "test_subject"
197
+ assert result .get_data () == b"test"
198
+
199
+
200
+ def test_read_cloud_event_from_json_with_json_as_data () -> None :
201
+ data = '{"id": "123", "source": "source", "type": "type", "specversion": "1.0", "time": "2023-10-25T17:09:19.736166Z", "datacontenttype": "application/json", "dataschema": "http://example.com/schema", "subject": "test_subject", "data": {"key": "value"}}' .encode (
202
+ "utf-8"
203
+ )
204
+ formatter = JSONFormat ()
205
+ result = formatter .read (CloudEvent , data )
206
+
207
+ assert result .get_id () == "123"
208
+ assert result .get_source () == "source"
209
+ assert result .get_type () == "type"
210
+ assert result .get_specversion () == "1.0"
211
+ assert result .get_time () == datetime (
212
+ 2023 , 10 , 25 , 17 , 9 , 19 , 736166 , tzinfo = timezone .utc
213
+ )
214
+ assert result .get_datacontenttype () == "application/json"
215
+ assert result .get_dataschema () == "http://example.com/schema"
216
+ assert result .get_subject () == "test_subject"
217
+ assert result .get_data () == {"key" : "value" }
0 commit comments