@@ -183,6 +183,67 @@ void main() {
183
183
184
184
expect (fixture.mockHub.addBreadcrumbCalls.length, 0 );
185
185
});
186
+
187
+ test ('redact request body' , () async {
188
+ final sentrySupabaseClient = fixture.getSut (
189
+ redactRequestBody: (table, key, value) {
190
+ switch (key) {
191
+ case "password" :
192
+ return "<redacted>" ;
193
+ case "token" :
194
+ return "<nope>" ;
195
+ case "secret" :
196
+ return "<uwatm8>" ;
197
+ case "null-me" :
198
+ return null ;
199
+ default :
200
+ {
201
+ return value;
202
+ }
203
+ }
204
+ },
205
+ );
206
+ final supabase = SupabaseClient (
207
+ supabaseUrl,
208
+ supabaseKey,
209
+ httpClient: sentrySupabaseClient,
210
+ );
211
+
212
+ try {
213
+ await supabase.from ("mock-table" ).insert (
214
+ {'user' : 'picklerick' , 'password' : 'whoops' , 'null-me' : 'foo' });
215
+ } catch (e) {
216
+ print (e);
217
+ }
218
+
219
+ try {
220
+ await supabase
221
+ .from ("mock-table" )
222
+ .upsert ({'user' : 'picklerick' , 'token' : 'whoops' });
223
+ } catch (e) {
224
+ print (e);
225
+ }
226
+
227
+ try {
228
+ await supabase
229
+ .from ("mock-table" )
230
+ .update ({'user' : 'picklerick' , 'secret' : 'whoops' }).eq ("id" , 42 );
231
+ } catch (e) {
232
+ print (e);
233
+ }
234
+
235
+ expect (fixture.mockHub.addBreadcrumbCalls.length, 3 );
236
+ final inserted = fixture.mockHub.addBreadcrumbCalls[0 ].$1;
237
+ expect (inserted.data? ['body' ],
238
+ {'user' : 'picklerick' , 'password' : '<redacted>' , 'null-me' : null });
239
+
240
+ final upserted = fixture.mockHub.addBreadcrumbCalls[1 ].$1;
241
+ expect (upserted.data? ['body' ], {'user' : 'picklerick' , 'token' : '<nope>' });
242
+
243
+ final updated = fixture.mockHub.addBreadcrumbCalls[2 ].$1;
244
+ expect (
245
+ updated.data? ['body' ], {'user' : 'picklerick' , 'secret' : '<uwatm8>' });
246
+ });
186
247
});
187
248
}
188
249
@@ -193,11 +254,14 @@ class Fixture {
193
254
final mockClient = MockClient ();
194
255
final mockHub = MockHub ();
195
256
196
- SentrySupabaseClient getSut ({bool breadcrumbs = true }) {
257
+ SentrySupabaseClient getSut (
258
+ {bool breadcrumbs = true ,
259
+ SentrySupabaseRedactRequestBody ? redactRequestBody}) {
197
260
return SentrySupabaseClient (
198
261
breadcrumbs: breadcrumbs,
199
262
client: mockClient,
200
263
hub: mockHub,
264
+ redactRequestBody: redactRequestBody,
201
265
);
202
266
}
203
267
}
0 commit comments