diff --git a/cloudevents/sdk/http/event.py b/cloudevents/sdk/http/event.py index 1e2dd9e9..c7d4b0a8 100644 --- a/cloudevents/sdk/http/event.py +++ b/cloudevents/sdk/http/event.py @@ -24,7 +24,7 @@ def default_marshaller(content: any): - if len(content) == 0: + if content is None or len(content) == 0: return None try: return json.dumps(content) diff --git a/cloudevents/tests/test_http_events.py b/cloudevents/tests/test_http_events.py index eba7a20f..140fb823 100644 --- a/cloudevents/tests/test_http_events.py +++ b/cloudevents/tests/test_http_events.py @@ -401,3 +401,16 @@ def test_cloudevent_repr(specversion): # we had issues in the past where event.__repr__() could run but # print(event) would fail. print(event) + + +@pytest.mark.parametrize("specversion", ["1.0", "0.3"]) +def test_none_data_cloudevent(specversion): + event = CloudEvent( + { + "source": "", + "type": "issue.example", + "specversion": specversion, + } + ) + to_binary_http(event) + to_structured_http(event)