tcell_agent 0.2.19 → 0.2.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE_libinjection +32 -0
  3. data/Rakefile +14 -1
  4. data/ext/libinjection/extconf.rb +3 -0
  5. data/ext/libinjection/libinjection.h +65 -0
  6. data/ext/libinjection/libinjection_html5.c +847 -0
  7. data/ext/libinjection/libinjection_html5.h +54 -0
  8. data/ext/libinjection/libinjection_sqli.c +2317 -0
  9. data/ext/libinjection/libinjection_sqli.h +295 -0
  10. data/ext/libinjection/libinjection_sqli_data.h +9004 -0
  11. data/ext/libinjection/libinjection_wrap.c +3525 -0
  12. data/ext/libinjection/libinjection_xss.c +531 -0
  13. data/ext/libinjection/libinjection_xss.h +21 -0
  14. data/lib/tcell_agent/configuration.rb +0 -48
  15. data/lib/tcell_agent/logger.rb +1 -0
  16. data/lib/tcell_agent/policies/appsensor/database_sensor.rb +8 -20
  17. data/lib/tcell_agent/policies/appsensor/injection_sensor.rb +30 -46
  18. data/lib/tcell_agent/policies/appsensor/login_sensor.rb +1 -4
  19. data/lib/tcell_agent/policies/appsensor/misc_sensor.rb +8 -22
  20. data/lib/tcell_agent/policies/appsensor/payloads_policy.rb +143 -0
  21. data/lib/tcell_agent/policies/appsensor/response_codes_sensor.rb +3 -1
  22. data/lib/tcell_agent/policies/appsensor/sensor.rb +21 -2
  23. data/lib/tcell_agent/policies/appsensor/size_sensor.rb +3 -1
  24. data/lib/tcell_agent/policies/appsensor/sqli_sensor.rb +9 -0
  25. data/lib/tcell_agent/policies/appsensor/user_agent_sensor.rb +1 -5
  26. data/lib/tcell_agent/policies/appsensor/xss_sensor.rb +9 -1
  27. data/lib/tcell_agent/policies/appsensor_policy.rb +40 -19
  28. data/lib/tcell_agent/policies/http_redirect_policy.rb +12 -2
  29. data/lib/tcell_agent/rails/csrf_exception.rb +1 -1
  30. data/lib/tcell_agent/rails/dlp.rb +98 -76
  31. data/lib/tcell_agent/rails/middleware/global_middleware.rb +1 -2
  32. data/lib/tcell_agent/rails/middleware/headers_middleware.rb +2 -2
  33. data/lib/tcell_agent/rails/on_start.rb +53 -20
  34. data/lib/tcell_agent/sensor_events/appsensor_event.rb +12 -19
  35. data/lib/tcell_agent/sensor_events/appsensor_meta_event.rb +7 -2
  36. data/lib/tcell_agent/sensor_events/sensor.rb +10 -11
  37. data/lib/tcell_agent/sensor_events/server_agent.rb +17 -12
  38. data/lib/tcell_agent/sensor_events/util/sanitizer_utilities.rb +148 -139
  39. data/lib/tcell_agent/utils/params.rb +24 -21
  40. data/lib/tcell_agent/version.rb +1 -1
  41. data/spec/lib/tcell_agent/configuration_spec.rb +0 -179
  42. data/spec/lib/tcell_agent/policies/appsensor/database_sensor_spec.rb +6 -4
  43. data/spec/lib/tcell_agent/policies/appsensor/misc_sensor_spec.rb +31 -22
  44. data/spec/lib/tcell_agent/policies/appsensor/payloads_policy_apply_spec.rb +466 -0
  45. data/spec/lib/tcell_agent/policies/appsensor/payloads_policy_from_json_spec.rb +890 -0
  46. data/spec/lib/tcell_agent/policies/appsensor/payloads_policy_log_spec.rb +484 -0
  47. data/spec/lib/tcell_agent/policies/appsensor/request_size_sensor_spec.rb +4 -3
  48. data/spec/lib/tcell_agent/policies/appsensor/response_codes_sensor_spec.rb +4 -4
  49. data/spec/lib/tcell_agent/policies/appsensor/response_size_sensor_spec.rb +1 -1
  50. data/spec/lib/tcell_agent/policies/appsensor/sqli_sensor_spec.rb +85 -0
  51. data/spec/lib/tcell_agent/policies/appsensor/user_agent_sensor_spec.rb +36 -16
  52. data/spec/lib/tcell_agent/policies/appsensor/xss_sensor_spec.rb +188 -312
  53. data/spec/lib/tcell_agent/policies/appsensor_policy_spec.rb +61 -0
  54. data/spec/lib/tcell_agent/rails/middleware/appsensor_middleware_spec.rb +18 -11
  55. data/spec/lib/tcell_agent/rails/middleware/redirect_middleware_spec.rb +14 -15
  56. data/spec/lib/tcell_agent/sensor_events/appsensor_meta_event_spec.rb +1 -1
  57. data/spec/lib/tcell_agent/sensor_events/util/sanitizer_utilities_spec.rb +6 -5
  58. data/spec/lib/tcell_agent/utils/params_spec.rb +28 -108
  59. data/tcell_agent.gemspec +21 -1
  60. metadata +37 -4
@@ -0,0 +1,890 @@
1
+ require 'spec_helper'
2
+
3
+ module TCellAgent
4
+ module Policies
5
+
6
+ describe AppSensorPolicy do
7
+
8
+ describe ".from_json" do
9
+
10
+ context "with options" do
11
+ context "that are missing" do
12
+ it "should have defaults set" do
13
+ policy_json = nil
14
+ policy = PayloadsPolicy.from_json(policy_json)
15
+
16
+ expect(policy.send_payloads).to eq(false)
17
+ expect(policy.log_payloads).to eq(false)
18
+ expect(policy.send_blacklist).to eq({})
19
+ expect(policy.send_whitelist).to eq({})
20
+ expect(policy.use_send_whitelist).to eq(false)
21
+ expect(policy.log_blacklist).to eq({})
22
+ expect(policy.log_whitelist).to eq({})
23
+ expect(policy.use_log_whitelist).to eq(false)
24
+ end
25
+ end
26
+
27
+ context "that are present" do
28
+ context "with payloads" do
29
+ context "that are missing" do
30
+ it "should have defaults set" do
31
+ policy_json = { }
32
+ policy = PayloadsPolicy.from_json(policy_json)
33
+
34
+ expect(policy.send_payloads).to eq(false)
35
+ expect(policy.log_payloads).to eq(false)
36
+ expect(policy.send_blacklist).to eq({})
37
+ expect(policy.send_whitelist).to eq({})
38
+ expect(policy.use_send_whitelist).to eq(false)
39
+ expect(policy.log_blacklist).to eq({})
40
+ expect(policy.log_whitelist).to eq({})
41
+ expect(policy.use_log_whitelist).to eq(false)
42
+ end
43
+ end
44
+
45
+ context "that are present" do
46
+ context "but empty" do
47
+ it "should have defaults set" do
48
+ policy_json = {
49
+ "payloads" => {}
50
+ }
51
+ policy = PayloadsPolicy.from_json(policy_json)
52
+
53
+ expect(policy.send_payloads).to eq(false)
54
+ expect(policy.log_payloads).to eq(false)
55
+ expect(policy.send_blacklist).to eq({})
56
+ expect(policy.send_whitelist).to eq({})
57
+ expect(policy.use_send_whitelist).to eq(false)
58
+ expect(policy.log_blacklist).to eq({})
59
+ expect(policy.log_whitelist).to eq({})
60
+ expect(policy.use_log_whitelist).to eq(false)
61
+ end
62
+ end
63
+
64
+ context "with send_payloads == false" do
65
+ it "should have send_payloads disabled" do
66
+ policy_json = {
67
+ "payloads" => {
68
+ "send_payloads" => false
69
+ }
70
+ }
71
+ policy = PayloadsPolicy.from_json(policy_json)
72
+
73
+ expect(policy.send_payloads).to eq(false)
74
+ expect(policy.log_payloads).to eq(false)
75
+ expect(policy.send_blacklist).to eq({})
76
+ expect(policy.send_whitelist).to eq({})
77
+ expect(policy.use_send_whitelist).to eq(false)
78
+ expect(policy.log_blacklist).to eq({})
79
+ expect(policy.log_whitelist).to eq({})
80
+ expect(policy.use_log_whitelist).to eq(false)
81
+ end
82
+
83
+ context "with send_blacklist missing" do
84
+ it "should have an empty send_blacklist" do
85
+ policy_json = {
86
+ "payloads" => {
87
+ "send_payloads" => false
88
+ }
89
+ }
90
+ policy = PayloadsPolicy.from_json(policy_json)
91
+
92
+ expect(policy.send_payloads).to eq(false)
93
+ expect(policy.log_payloads).to eq(false)
94
+ expect(policy.send_blacklist).to eq({})
95
+ expect(policy.send_whitelist).to eq({})
96
+ expect(policy.use_send_whitelist).to eq(false)
97
+ expect(policy.log_blacklist).to eq({})
98
+ expect(policy.log_whitelist).to eq({})
99
+ expect(policy.use_log_whitelist).to eq(false)
100
+ end
101
+ end
102
+
103
+ context "with send_blacklist present" do
104
+ context "but empty" do
105
+ it "should have an empty send_blacklist" do
106
+ policy_json = {
107
+ "payloads" => {
108
+ "send_payloads" => false,
109
+ "send_blacklist" => {}
110
+ }
111
+ }
112
+ policy = PayloadsPolicy.from_json(policy_json)
113
+
114
+ expect(policy.send_payloads).to eq(false)
115
+ expect(policy.log_payloads).to eq(false)
116
+ expect(policy.send_blacklist).to eq({})
117
+ expect(policy.send_whitelist).to eq({})
118
+ expect(policy.use_send_whitelist).to eq(false)
119
+ expect(policy.log_blacklist).to eq({})
120
+ expect(policy.log_whitelist).to eq({})
121
+ expect(policy.use_log_whitelist).to eq(false)
122
+ end
123
+ end
124
+
125
+ context "with one item present" do
126
+ it "should have an empty send_blacklist" do
127
+ policy_json = {
128
+ "payloads" => {
129
+ "send_payloads" => false,
130
+ "send_blacklist" => {
131
+ "password" => ["*"]
132
+ }
133
+ }
134
+ }
135
+ policy = PayloadsPolicy.from_json(policy_json)
136
+
137
+ expect(policy.send_payloads).to eq(false)
138
+ expect(policy.log_payloads).to eq(false)
139
+ expect(policy.send_blacklist).to eq({})
140
+ expect(policy.send_whitelist).to eq({})
141
+ expect(policy.use_send_whitelist).to eq(false)
142
+ expect(policy.log_blacklist).to eq({})
143
+ expect(policy.log_whitelist).to eq({})
144
+ expect(policy.use_log_whitelist).to eq(false)
145
+ end
146
+ end
147
+
148
+ context "with two items present" do
149
+ it "should have an empty send_blacklist" do
150
+ policy_json = {
151
+ "payloads" => {
152
+ "send_payloads" => false,
153
+ "send_blacklist" => {
154
+ "username" => ["*"],
155
+ "password" => ["*"]
156
+ }
157
+ }
158
+ }
159
+ policy = PayloadsPolicy.from_json(policy_json)
160
+
161
+ expect(policy.send_payloads).to eq(false)
162
+ expect(policy.log_payloads).to eq(false)
163
+ expect(policy.send_blacklist).to eq({})
164
+ expect(policy.send_whitelist).to eq({})
165
+ expect(policy.use_send_whitelist).to eq(false)
166
+ expect(policy.log_blacklist).to eq({})
167
+ expect(policy.log_whitelist).to eq({})
168
+ expect(policy.use_log_whitelist).to eq(false)
169
+ end
170
+ end
171
+ end
172
+
173
+
174
+ context "with send_whitelist missing" do
175
+ it "should have an empty send_whitelist" do
176
+ policy_json = {
177
+ "payloads" => {
178
+ "send_payloads" => false
179
+ }
180
+ }
181
+ policy = PayloadsPolicy.from_json(policy_json)
182
+
183
+ expect(policy.send_payloads).to eq(false)
184
+ expect(policy.log_payloads).to eq(false)
185
+ expect(policy.send_blacklist).to eq({})
186
+ expect(policy.send_whitelist).to eq({})
187
+ expect(policy.use_send_whitelist).to eq(false)
188
+ expect(policy.log_blacklist).to eq({})
189
+ expect(policy.log_whitelist).to eq({})
190
+ expect(policy.use_log_whitelist).to eq(false)
191
+ end
192
+ end
193
+
194
+ context "with send_whitelist present" do
195
+ context "but empty" do
196
+ it "should have an empty send_whitelist" do
197
+ policy_json = {
198
+ "payloads" => {
199
+ "send_payloads" => false,
200
+ "send_whitelist" => {}
201
+ }
202
+ }
203
+ policy = PayloadsPolicy.from_json(policy_json)
204
+
205
+ expect(policy.send_payloads).to eq(false)
206
+ expect(policy.log_payloads).to eq(false)
207
+ expect(policy.send_blacklist).to eq({})
208
+ expect(policy.send_whitelist).to eq({})
209
+ expect(policy.use_send_whitelist).to eq(false)
210
+ expect(policy.log_blacklist).to eq({})
211
+ expect(policy.log_whitelist).to eq({})
212
+ expect(policy.use_log_whitelist).to eq(false)
213
+ end
214
+ end
215
+
216
+ context "with one item present" do
217
+ it "should have an empty send_whitelist" do
218
+ policy_json = {
219
+ "payloads" => {
220
+ "send_payloads" => false,
221
+ "send_whitelist" => {
222
+ "password" => ["*"]
223
+ }
224
+ }
225
+ }
226
+ policy = PayloadsPolicy.from_json(policy_json)
227
+
228
+ expect(policy.send_payloads).to eq(false)
229
+ expect(policy.log_payloads).to eq(false)
230
+ expect(policy.send_blacklist).to eq({})
231
+ expect(policy.send_whitelist).to eq({})
232
+ expect(policy.use_send_whitelist).to eq(false)
233
+ expect(policy.log_blacklist).to eq({})
234
+ expect(policy.log_whitelist).to eq({})
235
+ expect(policy.use_log_whitelist).to eq(false)
236
+ end
237
+ end
238
+
239
+ context "with two items present" do
240
+ it "should have an empty send_whitelist" do
241
+ policy_json = {
242
+ "payloads" => {
243
+ "send_payloads" => false,
244
+ "send_whitelist" => {
245
+ "username" => ["*"],
246
+ "password" => ["*"]
247
+ }
248
+ }
249
+ }
250
+ policy = PayloadsPolicy.from_json(policy_json)
251
+
252
+ expect(policy.send_payloads).to eq(false)
253
+ expect(policy.log_payloads).to eq(false)
254
+ expect(policy.send_blacklist).to eq({})
255
+ expect(policy.send_whitelist).to eq({})
256
+ expect(policy.use_send_whitelist).to eq(false)
257
+ expect(policy.log_blacklist).to eq({})
258
+ expect(policy.log_whitelist).to eq({})
259
+ expect(policy.use_log_whitelist).to eq(false)
260
+ end
261
+ end
262
+ end
263
+ end
264
+
265
+ context "with send_payloads == true" do
266
+ it "should have send_payloads enabled" do
267
+ policy_json = {
268
+ "payloads" => {
269
+ "send_payloads" => true
270
+ }
271
+ }
272
+ policy = PayloadsPolicy.from_json(policy_json)
273
+
274
+ expect(policy.send_payloads).to eq(true)
275
+ expect(policy.log_payloads).to eq(false)
276
+ expect(policy.send_blacklist).to eq({})
277
+ expect(policy.send_whitelist).to eq({})
278
+ expect(policy.log_blacklist).to eq({})
279
+ expect(policy.log_whitelist).to eq({})
280
+ end
281
+
282
+ context "with send_blacklist missing" do
283
+ it "should have an empty send_blacklist" do
284
+ policy_json = {
285
+ "payloads" => {
286
+ "send_payloads" => true
287
+ }
288
+ }
289
+ policy = PayloadsPolicy.from_json(policy_json)
290
+
291
+ expect(policy.send_payloads).to eq(true)
292
+ expect(policy.log_payloads).to eq(false)
293
+ expect(policy.send_blacklist).to eq({})
294
+ expect(policy.send_whitelist).to eq({})
295
+ expect(policy.use_send_whitelist).to eq(false)
296
+ expect(policy.log_blacklist).to eq({})
297
+ expect(policy.log_whitelist).to eq({})
298
+ expect(policy.use_log_whitelist).to eq(false)
299
+ end
300
+ end
301
+
302
+ context "with send_blacklist present" do
303
+ context "but empty" do
304
+ it "should have an empty send_blacklist" do
305
+ policy_json = {
306
+ "payloads" => {
307
+ "send_payloads" => true,
308
+ "send_blacklist" => {}
309
+ }
310
+ }
311
+ policy = PayloadsPolicy.from_json(policy_json)
312
+
313
+ expect(policy.send_payloads).to eq(true)
314
+ expect(policy.log_payloads).to eq(false)
315
+ expect(policy.send_blacklist).to eq({})
316
+ expect(policy.send_whitelist).to eq({})
317
+ expect(policy.use_send_whitelist).to eq(false)
318
+ expect(policy.log_blacklist).to eq({})
319
+ expect(policy.log_whitelist).to eq({})
320
+ expect(policy.use_log_whitelist).to eq(false)
321
+ end
322
+ end
323
+
324
+ context "with one item present" do
325
+ it "should have it set in send_blacklist" do
326
+ policy_json = {
327
+ "payloads" => {
328
+ "send_payloads" => true,
329
+ "send_blacklist" => {
330
+ "password" => ["*"]
331
+ }
332
+ }
333
+ }
334
+ policy = PayloadsPolicy.from_json(policy_json)
335
+
336
+ expect(policy.send_payloads).to eq(true)
337
+ expect(policy.log_payloads).to eq(false)
338
+ expect(policy.send_blacklist).to eq({
339
+ "password" => Set.new(["*"])
340
+ })
341
+ expect(policy.send_whitelist).to eq({})
342
+ expect(policy.use_send_whitelist).to eq(false)
343
+ expect(policy.log_blacklist).to eq({})
344
+ expect(policy.log_whitelist).to eq({})
345
+ expect(policy.use_log_whitelist).to eq(false)
346
+ end
347
+ end
348
+
349
+ context "with two items present" do
350
+ it "should have them set in send_blacklist" do
351
+ policy_json = {
352
+ "payloads" => {
353
+ "send_payloads" => true,
354
+ "send_blacklist" => {
355
+ "username" => ["*"],
356
+ "password" => ["*"]
357
+ }
358
+ }
359
+ }
360
+ policy = PayloadsPolicy.from_json(policy_json)
361
+
362
+ expect(policy.send_payloads).to eq(true)
363
+ expect(policy.log_payloads).to eq(false)
364
+ expect(policy.send_blacklist).to eq({
365
+ "username" => Set.new(["*"]),
366
+ "password" => Set.new(["*"])
367
+ })
368
+ expect(policy.send_whitelist).to eq({})
369
+ expect(policy.use_send_whitelist).to eq(false)
370
+ expect(policy.log_blacklist).to eq({})
371
+ expect(policy.log_whitelist).to eq({})
372
+ expect(policy.use_log_whitelist).to eq(false)
373
+ end
374
+ end
375
+ end
376
+
377
+
378
+ context "with send_whitelist missing" do
379
+ it "should have an empty send_whitelist" do
380
+ policy_json = {
381
+ "payloads" => {
382
+ "send_payloads" => true
383
+ }
384
+ }
385
+ policy = PayloadsPolicy.from_json(policy_json)
386
+
387
+ expect(policy.send_payloads).to eq(true)
388
+ expect(policy.log_payloads).to eq(false)
389
+ expect(policy.send_blacklist).to eq({})
390
+ expect(policy.send_whitelist).to eq({})
391
+ expect(policy.use_send_whitelist).to eq(false)
392
+ expect(policy.log_blacklist).to eq({})
393
+ expect(policy.log_whitelist).to eq({})
394
+ expect(policy.use_log_whitelist).to eq(false)
395
+ end
396
+ end
397
+
398
+ context "with send_whitelist present" do
399
+ context "but empty" do
400
+ it "should have an empty send_whitelist" do
401
+ policy_json = {
402
+ "payloads" => {
403
+ "send_payloads" => true,
404
+ "send_whitelist" => {}
405
+ }
406
+ }
407
+ policy = PayloadsPolicy.from_json(policy_json)
408
+
409
+ expect(policy.send_payloads).to eq(true)
410
+ expect(policy.log_payloads).to eq(false)
411
+ expect(policy.send_blacklist).to eq({})
412
+ expect(policy.send_whitelist).to eq({})
413
+ expect(policy.use_send_whitelist).to eq(true)
414
+ expect(policy.log_blacklist).to eq({})
415
+ expect(policy.log_whitelist).to eq({})
416
+ expect(policy.use_log_whitelist).to eq(false)
417
+ end
418
+ end
419
+
420
+ context "with one item present" do
421
+ it "should have an empty send_whitelist" do
422
+ policy_json = {
423
+ "payloads" => {
424
+ "send_payloads" => true,
425
+ "send_whitelist" => {
426
+ "password" => ["*"]
427
+ }
428
+ }
429
+ }
430
+ policy = PayloadsPolicy.from_json(policy_json)
431
+
432
+ expect(policy.send_payloads).to eq(true)
433
+ expect(policy.log_payloads).to eq(false)
434
+ expect(policy.send_blacklist).to eq({})
435
+ expect(policy.send_whitelist).to eq({
436
+ "password" => Set.new(["*"])
437
+ })
438
+ expect(policy.use_send_whitelist).to eq(true)
439
+ expect(policy.log_blacklist).to eq({})
440
+ expect(policy.log_whitelist).to eq({})
441
+ expect(policy.use_log_whitelist).to eq(false)
442
+ end
443
+ end
444
+
445
+ context "with two items present" do
446
+ it "should have an empty send_whitelist" do
447
+ policy_json = {
448
+ "payloads" => {
449
+ "send_payloads" => true,
450
+ "send_whitelist" => {
451
+ "username" => ["*"],
452
+ "password" => ["*"]
453
+ }
454
+ }
455
+ }
456
+ policy = PayloadsPolicy.from_json(policy_json)
457
+
458
+ expect(policy.send_payloads).to eq(true)
459
+ expect(policy.log_payloads).to eq(false)
460
+ expect(policy.send_blacklist).to eq({})
461
+ expect(policy.send_whitelist).to eq({
462
+ "username" => Set.new(["*"]),
463
+ "password" => Set.new(["*"])
464
+ })
465
+ expect(policy.use_send_whitelist).to eq(true)
466
+ expect(policy.log_blacklist).to eq({})
467
+ expect(policy.log_whitelist).to eq({})
468
+ expect(policy.use_log_whitelist).to eq(false)
469
+ end
470
+ end
471
+ end
472
+ end
473
+
474
+ context "with log_payloads == false" do
475
+ it "should have log_payloads disabled" do
476
+ policy_json = {
477
+ "payloads" => {
478
+ "log_payloads" => false
479
+ }
480
+ }
481
+ policy = PayloadsPolicy.from_json(policy_json)
482
+
483
+ expect(policy.send_payloads).to eq(false)
484
+ expect(policy.log_payloads).to eq(false)
485
+ expect(policy.send_blacklist).to eq({})
486
+ expect(policy.send_whitelist).to eq({})
487
+ expect(policy.log_blacklist).to eq({})
488
+ expect(policy.log_whitelist).to eq({})
489
+ end
490
+
491
+ context "with log_blacklist missing" do
492
+ it "should have an empty log_blacklist" do
493
+ policy_json = {
494
+ "payloads" => {
495
+ "log_payloads" => false
496
+ }
497
+ }
498
+ policy = PayloadsPolicy.from_json(policy_json)
499
+
500
+ expect(policy.send_payloads).to eq(false)
501
+ expect(policy.log_payloads).to eq(false)
502
+ expect(policy.send_blacklist).to eq({})
503
+ expect(policy.send_whitelist).to eq({})
504
+ expect(policy.use_send_whitelist).to eq(false)
505
+ expect(policy.log_blacklist).to eq({})
506
+ expect(policy.log_whitelist).to eq({})
507
+ expect(policy.use_log_whitelist).to eq(false)
508
+ end
509
+ end
510
+
511
+ context "with log_blacklist present" do
512
+ context "but empty" do
513
+ it "should have an empty log_blacklist" do
514
+ policy_json = {
515
+ "payloads" => {
516
+ "log_payloads" => false,
517
+ "log_blacklist" => {}
518
+ }
519
+ }
520
+ policy = PayloadsPolicy.from_json(policy_json)
521
+
522
+ expect(policy.send_payloads).to eq(false)
523
+ expect(policy.log_payloads).to eq(false)
524
+ expect(policy.send_blacklist).to eq({})
525
+ expect(policy.send_whitelist).to eq({})
526
+ expect(policy.use_send_whitelist).to eq(false)
527
+ expect(policy.log_blacklist).to eq({})
528
+ expect(policy.log_whitelist).to eq({})
529
+ expect(policy.use_log_whitelist).to eq(false)
530
+ end
531
+ end
532
+
533
+ context "with one item present" do
534
+ it "should have an empty log_blacklist" do
535
+ policy_json = {
536
+ "payloads" => {
537
+ "log_payloads" => false,
538
+ "log_blacklist" => {
539
+ "password" => ["*"]
540
+ }
541
+ }
542
+ }
543
+ policy = PayloadsPolicy.from_json(policy_json)
544
+
545
+ expect(policy.send_payloads).to eq(false)
546
+ expect(policy.log_payloads).to eq(false)
547
+ expect(policy.send_blacklist).to eq({})
548
+ expect(policy.send_whitelist).to eq({})
549
+ expect(policy.use_send_whitelist).to eq(false)
550
+ expect(policy.log_blacklist).to eq({})
551
+ expect(policy.log_whitelist).to eq({})
552
+ expect(policy.use_log_whitelist).to eq(false)
553
+ end
554
+ end
555
+
556
+ context "with two items present" do
557
+ it "should have an empty log_blacklist" do
558
+ policy_json = {
559
+ "payloads" => {
560
+ "log_payloads" => false,
561
+ "log_blacklist" => {
562
+ "username" => ["*"],
563
+ "password" => ["*"]
564
+ }
565
+ }
566
+ }
567
+ policy = PayloadsPolicy.from_json(policy_json)
568
+
569
+ expect(policy.send_payloads).to eq(false)
570
+ expect(policy.log_payloads).to eq(false)
571
+ expect(policy.send_blacklist).to eq({})
572
+ expect(policy.send_whitelist).to eq({})
573
+ expect(policy.use_send_whitelist).to eq(false)
574
+ expect(policy.log_blacklist).to eq({})
575
+ expect(policy.log_whitelist).to eq({})
576
+ expect(policy.use_log_whitelist).to eq(false)
577
+ end
578
+ end
579
+ end
580
+
581
+
582
+ context "with log_whitelist missing" do
583
+ it "should have an empty log_whitelist" do
584
+ policy_json = {
585
+ "payloads" => {
586
+ "log_payloads" => false
587
+ }
588
+ }
589
+ policy = PayloadsPolicy.from_json(policy_json)
590
+
591
+ expect(policy.send_payloads).to eq(false)
592
+ expect(policy.log_payloads).to eq(false)
593
+ expect(policy.send_blacklist).to eq({})
594
+ expect(policy.send_whitelist).to eq({})
595
+ expect(policy.use_send_whitelist).to eq(false)
596
+ expect(policy.log_blacklist).to eq({})
597
+ expect(policy.log_whitelist).to eq({})
598
+ expect(policy.use_log_whitelist).to eq(false)
599
+ end
600
+ end
601
+
602
+ context "with log_whitelist present" do
603
+ context "but empty" do
604
+ it "should have an empty log_whitelist" do
605
+ policy_json = {
606
+ "payloads" => {
607
+ "log_payloads" => false,
608
+ "log_whitelist" => {}
609
+ }
610
+ }
611
+ policy = PayloadsPolicy.from_json(policy_json)
612
+
613
+ expect(policy.send_payloads).to eq(false)
614
+ expect(policy.log_payloads).to eq(false)
615
+ expect(policy.send_blacklist).to eq({})
616
+ expect(policy.send_whitelist).to eq({})
617
+ expect(policy.use_send_whitelist).to eq(false)
618
+ expect(policy.log_blacklist).to eq({})
619
+ expect(policy.log_whitelist).to eq({})
620
+ expect(policy.use_log_whitelist).to eq(false)
621
+ end
622
+ end
623
+
624
+ context "with one item present" do
625
+ it "should have an empty log_whitelist" do
626
+ policy_json = {
627
+ "payloads" => {
628
+ "log_payloads" => false,
629
+ "log_whitelist" => {
630
+ "password" => ["*"]
631
+ }
632
+ }
633
+ }
634
+ policy = PayloadsPolicy.from_json(policy_json)
635
+
636
+ expect(policy.send_payloads).to eq(false)
637
+ expect(policy.log_payloads).to eq(false)
638
+ expect(policy.send_blacklist).to eq({})
639
+ expect(policy.send_whitelist).to eq({})
640
+ expect(policy.use_send_whitelist).to eq(false)
641
+ expect(policy.log_blacklist).to eq({})
642
+ expect(policy.log_whitelist).to eq({})
643
+ expect(policy.use_log_whitelist).to eq(false)
644
+ end
645
+ end
646
+
647
+ context "with two items present" do
648
+ it "should have an empty log_whitelist" do
649
+ policy_json = {
650
+ "payloads" => {
651
+ "log_payloads" => false,
652
+ "log_whitelist" => {
653
+ "username" => ["*"],
654
+ "password" => ["*"]
655
+ }
656
+ }
657
+ }
658
+ policy = PayloadsPolicy.from_json(policy_json)
659
+
660
+ expect(policy.send_payloads).to eq(false)
661
+ expect(policy.log_payloads).to eq(false)
662
+ expect(policy.send_blacklist).to eq({})
663
+ expect(policy.send_whitelist).to eq({})
664
+ expect(policy.use_send_whitelist).to eq(false)
665
+ expect(policy.log_blacklist).to eq({})
666
+ expect(policy.log_whitelist).to eq({})
667
+ expect(policy.use_log_whitelist).to eq(false)
668
+ end
669
+ end
670
+ end
671
+ end
672
+
673
+ context "with log_payloads == true" do
674
+ it "should have log_payloads enabled" do
675
+ policy_json = {
676
+ "payloads" => {
677
+ "log_payloads" => true
678
+ }
679
+ }
680
+ policy = PayloadsPolicy.from_json(policy_json)
681
+
682
+ expect(policy.send_payloads).to eq(false)
683
+ expect(policy.log_payloads).to eq(true)
684
+ expect(policy.send_blacklist).to eq({})
685
+ expect(policy.send_whitelist).to eq({})
686
+ expect(policy.log_blacklist).to eq({})
687
+ expect(policy.log_whitelist).to eq({})
688
+ end
689
+
690
+ context "with log_blacklist missing" do
691
+ it "should have an empty log_blacklist" do
692
+ policy_json = {
693
+ "payloads" => {
694
+ "log_payloads" => true
695
+ }
696
+ }
697
+ policy = PayloadsPolicy.from_json(policy_json)
698
+
699
+ expect(policy.send_payloads).to eq(false)
700
+ expect(policy.log_payloads).to eq(true)
701
+ expect(policy.send_blacklist).to eq({})
702
+ expect(policy.send_whitelist).to eq({})
703
+ expect(policy.use_send_whitelist).to eq(false)
704
+ expect(policy.log_blacklist).to eq({})
705
+ expect(policy.log_whitelist).to eq({})
706
+ expect(policy.use_log_whitelist).to eq(false)
707
+ end
708
+ end
709
+
710
+ context "with log_blacklist present" do
711
+ context "but empty" do
712
+ it "should have an empty log_blacklist" do
713
+ policy_json = {
714
+ "payloads" => {
715
+ "log_payloads" => true,
716
+ "log_blacklist" => {}
717
+ }
718
+ }
719
+ policy = PayloadsPolicy.from_json(policy_json)
720
+
721
+ expect(policy.send_payloads).to eq(false)
722
+ expect(policy.log_payloads).to eq(true)
723
+ expect(policy.send_blacklist).to eq({})
724
+ expect(policy.send_whitelist).to eq({})
725
+ expect(policy.use_send_whitelist).to eq(false)
726
+ expect(policy.log_blacklist).to eq({})
727
+ expect(policy.log_whitelist).to eq({})
728
+ expect(policy.use_log_whitelist).to eq(false)
729
+ end
730
+ end
731
+
732
+ context "with one item present" do
733
+ it "should have it set in log_blacklist" do
734
+ policy_json = {
735
+ "payloads" => {
736
+ "log_payloads" => true,
737
+ "log_blacklist" => {
738
+ "password" => ["*"]
739
+ }
740
+ }
741
+ }
742
+ policy = PayloadsPolicy.from_json(policy_json)
743
+
744
+ expect(policy.send_payloads).to eq(false)
745
+ expect(policy.log_payloads).to eq(true)
746
+ expect(policy.send_blacklist).to eq({})
747
+ expect(policy.send_whitelist).to eq({})
748
+ expect(policy.use_send_whitelist).to eq(false)
749
+ expect(policy.log_blacklist).to eq({
750
+ "password" => Set.new(["*"])
751
+ })
752
+ expect(policy.log_whitelist).to eq({})
753
+ expect(policy.use_log_whitelist).to eq(false)
754
+ end
755
+ end
756
+
757
+ context "with two items present" do
758
+ it "should have them set in log_blacklist" do
759
+ policy_json = {
760
+ "payloads" => {
761
+ "log_payloads" => true,
762
+ "log_blacklist" => {
763
+ "username" => ["*"],
764
+ "password" => ["*"]
765
+ }
766
+ }
767
+ }
768
+ policy = PayloadsPolicy.from_json(policy_json)
769
+
770
+ expect(policy.send_payloads).to eq(false)
771
+ expect(policy.log_payloads).to eq(true)
772
+ expect(policy.send_blacklist).to eq({})
773
+ expect(policy.send_whitelist).to eq({})
774
+ expect(policy.use_send_whitelist).to eq(false)
775
+ expect(policy.log_blacklist).to eq({
776
+ "username" => Set.new(["*"]),
777
+ "password" => Set.new(["*"])
778
+ })
779
+ expect(policy.log_whitelist).to eq({})
780
+ expect(policy.use_log_whitelist).to eq(false)
781
+ end
782
+ end
783
+ end
784
+
785
+
786
+ context "with log_whitelist missing" do
787
+ it "should have an empty log_whitelist" do
788
+ policy_json = {
789
+ "payloads" => {
790
+ "log_payloads" => true
791
+ }
792
+ }
793
+ policy = PayloadsPolicy.from_json(policy_json)
794
+
795
+ expect(policy.send_payloads).to eq(false)
796
+ expect(policy.log_payloads).to eq(true)
797
+ expect(policy.send_blacklist).to eq({})
798
+ expect(policy.send_whitelist).to eq({})
799
+ expect(policy.use_send_whitelist).to eq(false)
800
+ expect(policy.log_blacklist).to eq({})
801
+ expect(policy.log_whitelist).to eq({})
802
+ expect(policy.use_log_whitelist).to eq(false)
803
+ end
804
+ end
805
+
806
+ context "with log_whitelist present" do
807
+ context "but empty" do
808
+ it "should have an empty log_whitelist" do
809
+ policy_json = {
810
+ "payloads" => {
811
+ "log_payloads" => true,
812
+ "log_whitelist" => {}
813
+ }
814
+ }
815
+ policy = PayloadsPolicy.from_json(policy_json)
816
+
817
+ expect(policy.send_payloads).to eq(false)
818
+ expect(policy.log_payloads).to eq(true)
819
+ expect(policy.send_blacklist).to eq({})
820
+ expect(policy.send_whitelist).to eq({})
821
+ expect(policy.use_send_whitelist).to eq(false)
822
+ expect(policy.log_blacklist).to eq({})
823
+ expect(policy.log_whitelist).to eq({})
824
+ expect(policy.use_log_whitelist).to eq(true)
825
+ end
826
+ end
827
+
828
+ context "with one item present" do
829
+ it "should have it set in log_whitelist" do
830
+ policy_json = {
831
+ "payloads" => {
832
+ "log_payloads" => true,
833
+ "log_whitelist" => {
834
+ "password" => ["*"]
835
+ }
836
+ }
837
+ }
838
+ policy = PayloadsPolicy.from_json(policy_json)
839
+
840
+ expect(policy.send_payloads).to eq(false)
841
+ expect(policy.log_payloads).to eq(true)
842
+ expect(policy.send_blacklist).to eq({})
843
+ expect(policy.send_whitelist).to eq({})
844
+ expect(policy.use_send_whitelist).to eq(false)
845
+ expect(policy.log_blacklist).to eq({})
846
+ expect(policy.log_whitelist).to eq({
847
+ "password" => Set.new(["*"])
848
+ })
849
+ expect(policy.use_log_whitelist).to eq(true)
850
+ end
851
+ end
852
+
853
+ context "with two items present" do
854
+ it "should have them set in log_whitelist" do
855
+ policy_json = {
856
+ "payloads" => {
857
+ "log_payloads" => true,
858
+ "log_whitelist" => {
859
+ "username" => ["*"],
860
+ "password" => ["*"]
861
+ }
862
+ }
863
+ }
864
+ policy = PayloadsPolicy.from_json(policy_json)
865
+
866
+ expect(policy.send_payloads).to eq(false)
867
+ expect(policy.log_payloads).to eq(true)
868
+ expect(policy.send_blacklist).to eq({})
869
+ expect(policy.send_whitelist).to eq({})
870
+ expect(policy.use_send_whitelist).to eq(false)
871
+ expect(policy.log_blacklist).to eq({})
872
+ expect(policy.log_whitelist).to eq({
873
+ "username" => Set.new(["*"]),
874
+ "password" => Set.new(["*"])
875
+ })
876
+ expect(policy.use_log_whitelist).to eq(true)
877
+ end
878
+ end
879
+ end
880
+ end
881
+ end
882
+ end
883
+ end
884
+ end
885
+ end
886
+
887
+ end
888
+
889
+ end
890
+ end