tcell_agent 0.2.19 → 0.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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