Skip to content

Commit

Permalink
bugfix_value_type_of_dataschema
Browse files Browse the repository at this point in the history
Signed-off-by: Tim Brunko <timmyb32r@gmail.com>
  • Loading branch information
timmyb32r committed Dec 12, 2023
1 parent 39fe13d commit 9ccd339
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
11 changes: 8 additions & 3 deletions binding/format/protobuf/v2/protobuf.go
Expand Up @@ -88,7 +88,12 @@ func ToProto(e *event.Event) (*pb.CloudEvent, error) {
container.Attributes[datacontenttype], _ = attributeFor(e.DataContentType())
}
if e.DataSchema() != "" {
container.Attributes[dataschema], _ = attributeFor(e.DataSchema())
dataSchemaStr := e.DataSchema()
uri, err := url.Parse(dataSchemaStr)
if err != nil {
return nil, fmt.Errorf("failed to url.Parse %s: %s", dataSchemaStr, err)
}
container.Attributes[dataschema], _ = attributeFor(uri)
}
if e.Subject() != "" {
container.Attributes[subject], _ = attributeFor(e.Subject())
Expand Down Expand Up @@ -251,8 +256,8 @@ func FromProto(container *pb.CloudEvent) (*event.Event, error) {
vs, _ := v.(string)
e.SetDataContentType(vs)
case dataschema:
vs, _ := v.(string)
e.SetDataSchema(vs)
vs, _ := v.(types.URI)
e.SetDataSchema(vs.String())
case subject:
vs, _ := v.(string)
e.SetSubject(vs)
Expand Down
6 changes: 6 additions & 0 deletions binding/format/protobuf/v2/protobuf_test.go
Expand Up @@ -109,6 +109,7 @@ func TestFromProto(t *testing.T) {
Type: "some.type",
Attributes: map[string]*pb.CloudEventAttributeValue{
"datacontenttype": {Attr: &pb.CloudEventAttributeValue_CeString{CeString: "application/json"}},
"dataschema": {Attr: &pb.CloudEventAttributeValue_CeUri{CeUri: "link"}},
"extra1": {Attr: &pb.CloudEventAttributeValue_CeString{CeString: "extra1 value"}},
"extra2": {Attr: &pb.CloudEventAttributeValue_CeInteger{CeInteger: 2}},
"extra3": {Attr: &pb.CloudEventAttributeValue_CeBoolean{CeBoolean: true}},
Expand All @@ -124,6 +125,7 @@ func TestFromProto(t *testing.T) {
out.SetSource("/source")
out.SetType("some.type")
_ = out.SetData("application/json", map[string]interface{}{"unit": "test"})
out.SetDataSchema("link")
out.SetExtension("extra1", "extra1 value")
out.SetExtension("extra2", 2)
out.SetExtension("extra3", true)
Expand All @@ -140,6 +142,7 @@ func TestFromProto(t *testing.T) {
Type: "some.type",
Attributes: map[string]*pb.CloudEventAttributeValue{
"datacontenttype": {Attr: &pb.CloudEventAttributeValue_CeString{CeString: "text/plain"}},
"dataschema": {Attr: &pb.CloudEventAttributeValue_CeUri{CeUri: "link"}},
"extra1": {Attr: &pb.CloudEventAttributeValue_CeString{CeString: "extra1 value"}},
"extra2": {Attr: &pb.CloudEventAttributeValue_CeInteger{CeInteger: 2}},
"extra3": {Attr: &pb.CloudEventAttributeValue_CeBoolean{CeBoolean: true}},
Expand All @@ -155,6 +158,7 @@ func TestFromProto(t *testing.T) {
out.SetSource("/source")
out.SetType("some.type")
_ = out.SetData("text/plain", `this is some text with a "quote"`)
out.SetDataSchema("link")
out.SetExtension("extra1", "extra1 value")
out.SetExtension("extra2", 2)
out.SetExtension("extra3", true)
Expand All @@ -171,6 +175,7 @@ func TestFromProto(t *testing.T) {
Type: "some.type",
Attributes: map[string]*pb.CloudEventAttributeValue{
"datacontenttype": {Attr: &pb.CloudEventAttributeValue_CeString{CeString: "application/json"}},
"dataschema": {Attr: &pb.CloudEventAttributeValue_CeUri{CeUri: "link"}},
"extra1": {Attr: &pb.CloudEventAttributeValue_CeString{CeString: "extra1 value"}},
"extra2": {Attr: &pb.CloudEventAttributeValue_CeInteger{CeInteger: 2}},
"extra3": {Attr: &pb.CloudEventAttributeValue_CeBoolean{CeBoolean: true}},
Expand All @@ -186,6 +191,7 @@ func TestFromProto(t *testing.T) {
out.SetSource("/source")
out.SetType("some.type")
_ = out.SetData("application/json", `{"unit":"test"}`)
out.SetDataSchema("link")
out.SetExtension("extra1", "extra1 value")
out.SetExtension("extra2", 2)
out.SetExtension("extra3", true)
Expand Down

0 comments on commit 9ccd339

Please sign in to comment.