Skip to content

Commit

Permalink
fix: improve error messages when validating extensions
Browse files Browse the repository at this point in the history
This commit changes the messages produced when validating extension names and
values, including the offending name or value in the message, and including
text from the CloudEvent specification, or a link to the type system.

Fixes: #364

Signed-off-by: Lance Ball <lball@redhat.com>
  • Loading branch information
lance committed Nov 30, 2020
1 parent 132f052 commit 9f86cfd
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/event/cloudevent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,18 @@ export class CloudEvent implements CloudEventV1, CloudEventV03 {
// Extension names should only allow lowercase a-z and 0-9 in the name
// names should not exceed 20 characters in length
if (!key.match(/^[a-z0-9]{1,20}$/) && strict) {
throw new ValidationError("invalid extension name");
throw new ValidationError(`invalid extension name: ${key}
CloudEvents attribute names MUST consist of lower-case letters ('a' to 'z')
or digits ('0' to '9') from the ASCII character set. Attribute names SHOULD
be descriptive and terse and SHOULD NOT exceed 20 characters in length.`);
}

// Value should be spec compliant
// https://github.com/cloudevents/spec/blob/master/spec.md#type-system
if (!isValidType(value) && strict) {
throw new ValidationError("invalid extension value");
throw new ValidationError(`invalid extension value: ${value}
Extension values must conform to the CloudEvent type system.
See: https://github.com/cloudevents/spec/blob/v1.0/spec.md#type-system`);
}

this[key] = value;
Expand Down

0 comments on commit 9f86cfd

Please sign in to comment.