-
Notifications
You must be signed in to change notification settings - Fork 70
Open
Labels
Description
Describe the Bug
If an invalid value for time
is given, HTTP.toEvent
silently defaults it to the current time in UTC.
Steps to Reproduce
Use the following snippet:
const event = HTTP.toEvent({
headers: {
'Content-Type': 'application/json',
'ce-id': '0815',
'ce-specversion': '1.0',
'ce-type': 'my.event.type',
'ce-source': 'my.event.source',
'ce-time': 'some invalid time string',
},
body: {}
})
Check the resulting event:
{
//...
id: '0815',
specversion: '1.0',
type: 'my.event.type',
source: 'my.event.source',
time: 2021-02-16T17:27:34+01:00 // defaulted date.now
}
Expected Behavior
As with the other issues I opened regarding (silent) defaulting, I think HTTP.toEvent
should not do this. I think it would be more appropriate to either fail fast on invalid input or take the original value with a subsequent event.validate()
failing (maybe also thinking about strict mode as for instance in event.cloneWith
).
In case of new CloudEvent(...)
I agree that it makes sense to provide defaults.
Additional context
Origin of this behavior seems to be here:
Line 68 in 6be3b27
export class DateParser extends Parser { |
black-snow