|
1 | 1 | use claim::*;
|
2 |
| -use cloudevents::Event; |
| 2 | +use cloudevents::{Event, EventBuilder, EventBuilderV10}; |
3 | 3 | use rstest::rstest;
|
4 |
| -use serde_json::Value; |
| 4 | +use serde_json::{json, Value}; |
5 | 5 |
|
6 | 6 | mod test_data;
|
7 | 7 | use test_data::*;
|
@@ -87,3 +87,65 @@ fn deserialize_should_succeed(in_json: Value, out_event: Event) {
|
87 | 87 | let deserialize_json = deserialize_result.unwrap();
|
88 | 88 | assert_eq!(deserialize_json, out_event)
|
89 | 89 | }
|
| 90 | + |
| 91 | +#[test] |
| 92 | +fn deserialize_with_null_attribute() { |
| 93 | + let in_json = json!({ |
| 94 | + "specversion" : "1.0", |
| 95 | + "type" : "com.example.someevent", |
| 96 | + "source" : "/mycontext", |
| 97 | + "id" : "A234-1234-1234", |
| 98 | + "time" : null, |
| 99 | + "comexampleextension1" : "value", |
| 100 | + "comexampleothervalue" : 5, |
| 101 | + "datacontenttype" : "text/xml", |
| 102 | + "data" : "<much wow=\"xml\"/>" |
| 103 | + }); |
| 104 | + |
| 105 | + let out_event = EventBuilderV10::new() |
| 106 | + .ty("com.example.someevent") |
| 107 | + .source("/mycontext") |
| 108 | + .id("A234-1234-1234") |
| 109 | + .data("text/xml", "<much wow=\"xml\"/>") |
| 110 | + .extension("comexampleextension1", "value") |
| 111 | + .extension("comexampleothervalue", 5) |
| 112 | + .build() |
| 113 | + .unwrap(); |
| 114 | + |
| 115 | + let deserialize_result: Result<Event, serde_json::Error> = serde_json::from_value(in_json); |
| 116 | + assert_ok!(&deserialize_result); |
| 117 | + let deserialize_json = deserialize_result.unwrap(); |
| 118 | + assert_eq!(deserialize_json, out_event) |
| 119 | +} |
| 120 | + |
| 121 | +#[test] |
| 122 | +fn deserialize_with_null_ext() { |
| 123 | + let in_json = json!({ |
| 124 | + "specversion" : "1.0", |
| 125 | + "type" : "com.example.someevent", |
| 126 | + "source" : "/mycontext", |
| 127 | + "id" : "A234-1234-1234", |
| 128 | + "time" : "2018-04-05T17:31:00Z", |
| 129 | + "comexampleextension1" : "value", |
| 130 | + "comexampleothervalue" : 5, |
| 131 | + "unsetextension": null, |
| 132 | + "datacontenttype" : "text/xml", |
| 133 | + "data" : "<much wow=\"xml\"/>" |
| 134 | + }); |
| 135 | + |
| 136 | + let out_event = EventBuilderV10::new() |
| 137 | + .ty("com.example.someevent") |
| 138 | + .source("/mycontext") |
| 139 | + .id("A234-1234-1234") |
| 140 | + .time("2018-04-05T17:31:00Z") |
| 141 | + .data("text/xml", "<much wow=\"xml\"/>") |
| 142 | + .extension("comexampleextension1", "value") |
| 143 | + .extension("comexampleothervalue", 5) |
| 144 | + .build() |
| 145 | + .unwrap(); |
| 146 | + |
| 147 | + let deserialize_result: Result<Event, serde_json::Error> = serde_json::from_value(in_json); |
| 148 | + assert_ok!(&deserialize_result); |
| 149 | + let deserialize_json = deserialize_result.unwrap(); |
| 150 | + assert_eq!(deserialize_json, out_event) |
| 151 | +} |
0 commit comments