Thanks to visit codestin.com
Credit goes to github.com

Skip to content

SHOULD throw if time has an invalid value? #386

@c-pius

Description

@c-pius

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:

export class DateParser extends Parser {

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions