1
1
package bugsnag
2
2
3
3
import (
4
+ "encoding/json"
4
5
stderrors "errors"
5
6
"reflect"
6
7
"testing"
@@ -112,13 +113,13 @@ func TestMetadataAddPointer(t *testing.T) {
112
113
113
114
func TestMetadataAddNil (t * testing.T ) {
114
115
md := MetaData {}
115
- md .AddStruct ("map" , map [string ]interface {}{
116
- "data" : _testStruct {Name : nil },
117
- })
118
116
119
117
var nilMap map [string ]interface {}
120
118
md .AddStruct ("nilmap" , nilMap )
121
119
120
+ var nilSlice []interface {}
121
+ md .AddStruct ("nilSlice" , nilSlice )
122
+
122
123
var nilError _testError
123
124
md .AddStruct ("error" , nilError )
124
125
@@ -137,20 +138,77 @@ func TestMetadataAddNil(t *testing.T) {
137
138
var marshalFullPtr = & _textMarshaller {}
138
139
md .AddStruct ("marshalFullPtr" , marshalFullPtr )
139
140
141
+ var nullJsonMarshaller json.RawMessage
142
+ md .AddStruct ("nullJsonMarshaller" , nullJsonMarshaller )
143
+
144
+ var nullJsonMarshallerPtr * json.RawMessage
145
+ md .AddStruct ("nullJsonMarshallerPtr" , nullJsonMarshallerPtr )
146
+
147
+ var emptyJsonMarshaller = & json.RawMessage {}
148
+ md .AddStruct ("emptyJsonMarshaller" , emptyJsonMarshaller )
149
+
150
+ var nilBytes []byte
151
+ md .AddStruct ("nilBytes" , nilBytes )
152
+
153
+ var nilBytesPtr * []byte
154
+ md .AddStruct ("nilBytesPtr" , nilBytesPtr )
155
+
156
+ var emptyBytes = []byte {}
157
+ md .AddStruct ("emptyBytes" , emptyBytes )
158
+
159
+ md .AddStruct ("map" , map [string ]interface {}{
160
+ "data" : _testStruct {Name : nil },
161
+ "nilmap" : nilMap ,
162
+ "nilSlice" : nilSlice ,
163
+ "error" : nilError ,
164
+ "errorNilPtr" : nilErrorPtr ,
165
+ "timeUnset" : timeVar ,
166
+ "durationUnset" : duration ,
167
+ "marshalNilPtr" : marshalNilPtr ,
168
+ "marshalFullPtr" : marshalFullPtr ,
169
+ "nullJsonMarshaller" : nullJsonMarshaller ,
170
+ "nullJsonMarshallerPtr" : nullJsonMarshallerPtr ,
171
+ "emptyJsonMarshaller" : emptyJsonMarshaller ,
172
+ "nilBytes" : nilBytes ,
173
+ "nilBytesPtr" : nilBytesPtr ,
174
+ "emptyBytes" : emptyBytes ,
175
+ })
176
+
140
177
if ! reflect .DeepEqual (md , MetaData {
141
178
"map" : {
142
179
"data" : map [string ]interface {}{
143
180
"Name" : "<nil>" ,
144
181
},
182
+ "nilmap" : map [string ]interface {}{},
183
+ "nilSlice" : []interface {}{},
184
+ "error" : "errorstr" ,
185
+ "errorNilPtr" : "<nil>" ,
186
+ "timeUnset" : "0001-01-01T00:00:00Z" ,
187
+ "durationUnset" : "0s" ,
188
+ "marshalFullPtr" : "marshalled text" ,
189
+ "marshalNilPtr" : "<nil>" ,
190
+ "nullJsonMarshaller" : "null" ,
191
+ "nullJsonMarshallerPtr" : "<nil>" ,
192
+ "emptyJsonMarshaller" : "" ,
193
+ "nilBytes" : "" ,
194
+ "nilBytesPtr" : "<nil>" ,
195
+ "emptyBytes" : "" ,
145
196
},
146
197
"nilmap" : map [string ]interface {}{},
147
198
"Extra data" : {
148
- "error" : "errorstr" ,
149
- "errorNilPtr" : "<nil>" ,
150
- "timeUnset" : "0001-01-01T00:00:00Z" ,
151
- "durationUnset" : "0s" ,
152
- "marshalFullPtr" : "marshalled text" ,
153
- "marshalNilPtr" : "<nil>" ,
199
+ "nilSlice" : []interface {}{},
200
+ "error" : "errorstr" ,
201
+ "errorNilPtr" : "<nil>" ,
202
+ "timeUnset" : "0001-01-01T00:00:00Z" ,
203
+ "durationUnset" : "0s" ,
204
+ "marshalFullPtr" : "marshalled text" ,
205
+ "marshalNilPtr" : "<nil>" ,
206
+ "nullJsonMarshaller" : "null" ,
207
+ "nullJsonMarshallerPtr" : "<nil>" ,
208
+ "emptyJsonMarshaller" : "" ,
209
+ "nilBytes" : "" ,
210
+ "nilBytesPtr" : "<nil>" ,
211
+ "emptyBytes" : "" ,
154
212
},
155
213
}) {
156
214
t .Errorf ("metadata.AddStruct didn't work: %#v" , md )
@@ -215,6 +273,8 @@ func TestMetaDataSanitize(t *testing.T) {
215
273
"time" : time .Date (2023 , 12 , 5 , 23 , 59 , 59 , 123456789 , time .UTC ),
216
274
"duration" : 105567462 * time .Millisecond ,
217
275
"text" : _textMarshaller {},
276
+ "json" : json .RawMessage (`{"json_property": "json_value"}` ),
277
+ "bytes" : []byte (`lots of bytes` ),
218
278
"array" : []hash {{
219
279
"creditcard" : "1234567812345678" ,
220
280
"broken" : broken ,
@@ -240,6 +300,8 @@ func TestMetaDataSanitize(t *testing.T) {
240
300
"time" : "2023-12-05T23:59:59.123456789Z" ,
241
301
"duration" : "29h19m27.462s" ,
242
302
"text" : "marshalled text" ,
303
+ "json" : `{"json_property": "json_value"}` ,
304
+ "bytes" : "lots of bytes" ,
243
305
"array" : []interface {}{map [string ]interface {}{
244
306
"creditcard" : "[FILTERED]" ,
245
307
"broken" : map [string ]interface {}{
0 commit comments