tcell_agent 0.2.29 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/Readme.txt +7 -0
  3. data/bin/tcell_agent +9 -0
  4. data/lib/tcell_agent/agent/policy_manager.rb +3 -0
  5. data/lib/tcell_agent/agent/policy_types.rb +4 -1
  6. data/lib/tcell_agent/appsensor/injections_matcher.rb +20 -0
  7. data/lib/tcell_agent/appsensor/injections_reporter.rb +15 -56
  8. data/lib/tcell_agent/appsensor/meta_data.rb +56 -2
  9. data/lib/tcell_agent/appsensor/rules/baserules.json +371 -138
  10. data/lib/tcell_agent/cmdi.rb +113 -0
  11. data/lib/tcell_agent/config/unknown_options.rb +2 -0
  12. data/lib/tcell_agent/configuration.rb +30 -16
  13. data/lib/tcell_agent/hooks/login_fraud.rb +79 -0
  14. data/lib/tcell_agent/instrumentation.rb +6 -11
  15. data/lib/tcell_agent/patches/meta_data.rb +14 -11
  16. data/lib/tcell_agent/policies/appsensor/injection_sensor.rb +5 -9
  17. data/lib/tcell_agent/policies/appsensor_policy.rb +22 -206
  18. data/lib/tcell_agent/policies/clickjacking_policy.rb +4 -2
  19. data/lib/tcell_agent/policies/command_injection_policy.rb +196 -0
  20. data/lib/tcell_agent/policies/content_security_policy.rb +3 -2
  21. data/lib/tcell_agent/policies/dataloss_policy.rb +3 -1
  22. data/lib/tcell_agent/policies/honeytokens_policy.rb +3 -1
  23. data/lib/tcell_agent/policies/http_redirect_policy.rb +51 -37
  24. data/lib/tcell_agent/policies/http_tx_policy.rb +5 -1
  25. data/lib/tcell_agent/policies/login_fraud_policy.rb +6 -1
  26. data/lib/tcell_agent/policies/patches_policy.rb +3 -1
  27. data/lib/tcell_agent/policies/policy.rb +10 -0
  28. data/lib/tcell_agent/policies/secure_headers_policy.rb +5 -2
  29. data/lib/tcell_agent/rails/auth/devise.rb +12 -23
  30. data/lib/tcell_agent/rails/csrf_exception.rb +1 -1
  31. data/lib/tcell_agent/rails/dlp.rb +50 -54
  32. data/lib/tcell_agent/rails/middleware/body_filter_middleware.rb +0 -1
  33. data/lib/tcell_agent/rails/middleware/context_middleware.rb +0 -1
  34. data/lib/tcell_agent/rails/middleware/global_middleware.rb +0 -1
  35. data/lib/tcell_agent/rails/middleware/headers_middleware.rb +7 -10
  36. data/lib/tcell_agent/rails/on_start.rb +0 -1
  37. data/lib/tcell_agent/rails/tcell_body_proxy.rb +4 -4
  38. data/lib/tcell_agent/rails.rb +0 -2
  39. data/lib/tcell_agent/rust/libtcellagent-0.6.1.dylib +0 -0
  40. data/lib/tcell_agent/rust/libtcellagent-0.6.1.so +0 -0
  41. data/lib/tcell_agent/rust/models.rb +61 -0
  42. data/lib/tcell_agent/rust/tcellagent-0.6.1.dll +0 -0
  43. data/lib/tcell_agent/rust/whisperer.rb +112 -0
  44. data/lib/tcell_agent/sensor_events/appsensor_event.rb +25 -21
  45. data/lib/tcell_agent/sensor_events/appsensor_meta_event.rb +31 -24
  46. data/lib/tcell_agent/sensor_events/command_injection.rb +58 -0
  47. data/lib/tcell_agent/sensor_events/discovery.rb +1 -1
  48. data/lib/tcell_agent/sensor_events/login_fraud.rb +3 -13
  49. data/lib/tcell_agent/sensor_events/sensor.rb +81 -77
  50. data/lib/tcell_agent/sensor_events/util/sanitizer_utilities.rb +8 -0
  51. data/lib/tcell_agent/start_background_thread.rb +12 -3
  52. data/lib/tcell_agent/utils/io.rb +4 -1
  53. data/lib/tcell_agent/utils/params.rb +1 -0
  54. data/lib/tcell_agent/version.rb +1 -1
  55. data/lib/tcell_agent.rb +0 -1
  56. data/spec/lib/tcell_agent/appsensor/injections_matcher_spec.rb +27 -9
  57. data/spec/lib/tcell_agent/appsensor/injections_reporter_spec.rb +143 -193
  58. data/spec/lib/tcell_agent/appsensor/meta_data_spec.rb +67 -0
  59. data/spec/lib/tcell_agent/appsensor/rules/appsensor_rule_manager_spec.rb +0 -10
  60. data/spec/lib/tcell_agent/cmdi_spec.rb +748 -0
  61. data/spec/lib/tcell_agent/config/unknown_options_spec.rb +8 -0
  62. data/spec/lib/tcell_agent/configuration_spec.rb +138 -6
  63. data/spec/lib/tcell_agent/hooks/login_fraud_spec.rb +357 -0
  64. data/spec/lib/tcell_agent/patches/block_rule_spec.rb +70 -87
  65. data/spec/lib/tcell_agent/patches_spec.rb +9 -4
  66. data/spec/lib/tcell_agent/policies/appsensor/xss_sensor_spec.rb +186 -9
  67. data/spec/lib/tcell_agent/policies/appsensor_policy_spec.rb +309 -484
  68. data/spec/lib/tcell_agent/policies/command_injection_policy_spec.rb +736 -0
  69. data/spec/lib/tcell_agent/policies/http_redirect_policy_spec.rb +222 -41
  70. data/spec/lib/tcell_agent/policies/patches_policy_spec.rb +56 -32
  71. data/spec/lib/tcell_agent/rails/middleware/appsensor_middleware_spec.rb +161 -85
  72. data/spec/lib/tcell_agent/rails/middleware/tcell_body_proxy_spec.rb +40 -72
  73. data/spec/lib/tcell_agent/rust/whisperer_spec.rb +267 -0
  74. data/spec/lib/tcell_agent/sensor_events/appsensor_meta_event_spec.rb +20 -15
  75. data/spec/spec_helper.rb +0 -9
  76. data/tcell_agent.gemspec +8 -3
  77. metadata +40 -39
  78. data/lib/tcell_agent/appsensor/sensor.rb +0 -52
  79. data/lib/tcell_agent/policies/appsensor/database_sensor.rb +0 -56
  80. data/lib/tcell_agent/policies/appsensor/misc_sensor.rb +0 -59
  81. data/lib/tcell_agent/policies/appsensor/payloads_policy.rb +0 -150
  82. data/lib/tcell_agent/policies/appsensor/request_size_sensor.rb +0 -25
  83. data/lib/tcell_agent/policies/appsensor/response_codes_sensor.rb +0 -73
  84. data/lib/tcell_agent/policies/appsensor/response_size_sensor.rb +0 -25
  85. data/lib/tcell_agent/policies/appsensor/size_sensor.rb +0 -71
  86. data/lib/tcell_agent/policies/appsensor/user_agent_sensor.rb +0 -47
  87. data/lib/tcell_agent/rails/auth/hooks.rb +0 -79
  88. data/lib/tcell_agent/sensor_events/util/redirect_utils.rb +0 -22
  89. data/spec/lib/tcell_agent/policies/appsensor/database_sensor_spec.rb +0 -165
  90. data/spec/lib/tcell_agent/policies/appsensor/misc_sensor_spec.rb +0 -429
  91. data/spec/lib/tcell_agent/policies/appsensor/payloads_policy_apply_spec.rb +0 -466
  92. data/spec/lib/tcell_agent/policies/appsensor/payloads_policy_from_json_spec.rb +0 -890
  93. data/spec/lib/tcell_agent/policies/appsensor/payloads_policy_log_spec.rb +0 -417
  94. data/spec/lib/tcell_agent/policies/appsensor/request_size_sensor_spec.rb +0 -236
  95. data/spec/lib/tcell_agent/policies/appsensor/response_codes_sensor_spec.rb +0 -297
  96. data/spec/lib/tcell_agent/policies/appsensor/response_size_sensor_spec.rb +0 -241
  97. data/spec/lib/tcell_agent/policies/appsensor/user_agent_sensor_spec.rb +0 -172
  98. data/spec/lib/tcell_agent/rails/auth/hooks_spec.rb +0 -246
  99. data/spec/lib/tcell_agent/sensor_events/util/redirect_utils_spec.rb +0 -25
  100. data/spec/support/resources/baserules.json +0 -155
@@ -1,297 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TCellAgent
4
- module Policies
5
-
6
- describe ResponseCodesSensor do
7
- context "#initialize" do
8
- context "default sensor" do
9
- it "should have properties set to defaults" do
10
- sensor = ResponseCodesSensor.new
11
- expect(sensor.enabled).to eq(false)
12
- expect(sensor.series_400_enabled).to eq(false)
13
- expect(sensor.series_500_enabled).to eq(false)
14
- end
15
- end
16
-
17
- context "setting enabled on sensor" do
18
- it "should have properties set to defaults" do
19
- sensor = ResponseCodesSensor.new({"enabled" => true})
20
- expect(sensor.enabled).to eq(true)
21
- expect(sensor.series_400_enabled).to eq(false)
22
- expect(sensor.series_500_enabled).to eq(false)
23
- end
24
- end
25
-
26
- context "setting series_400_enabled on sensor" do
27
- it "should have properties set to defaults" do
28
- sensor = ResponseCodesSensor.new({"series_400_enabled" => true})
29
- expect(sensor.enabled).to eq(false)
30
- expect(sensor.series_400_enabled).to eq(true)
31
- expect(sensor.series_500_enabled).to eq(false)
32
- end
33
- end
34
-
35
- context "setting series_500_enabled on sensor" do
36
- it "should have properties set to defaults" do
37
- sensor = ResponseCodesSensor.new({"series_500_enabled" => true})
38
- expect(sensor.enabled).to eq(false)
39
- expect(sensor.series_400_enabled).to eq(false)
40
- expect(sensor.series_500_enabled).to eq(true)
41
- end
42
- end
43
-
44
- context "setting excluded_route_ids on sensor" do
45
- it "should have excluded_route_ids" do
46
- sensor = ResponseCodesSensor.new({"exclude_routes" => ["excluded_route_id"]})
47
- expect(sensor.enabled).to eq(false)
48
- expect(sensor.series_400_enabled).to eq(false)
49
- expect(sensor.series_500_enabled).to eq(false)
50
- expect(sensor.excluded_route_ids).to eq({"excluded_route_id" => true})
51
- end
52
- end
53
- end
54
-
55
- context "#check" do
56
- context "with disabled sensor" do
57
- it "should not send event" do
58
- sensor = ResponseCodesSensor.new({"enabled" => false})
59
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
60
- meta.remote_address = "remote_address"
61
- meta.method = "get"
62
- meta.location = "location"
63
- meta.route_id = "route_id"
64
- meta.session_id = "session_id"
65
- meta.user_id = "user_id"
66
- meta.transaction_id = "transaction_id"
67
-
68
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
69
- sensor.check(meta, 200)
70
- end
71
- end
72
-
73
- context "with enabled sensor" do
74
- context "with 200 response code" do
75
- before(:each) do
76
- @sensor = ResponseCodesSensor.new({"enabled" => true})
77
-
78
- @meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
79
- @meta.remote_address = "remote_address"
80
- @meta.method = "get"
81
- @meta.location = "location"
82
- @meta.route_id = "route_id"
83
- @meta.session_id = "session_id"
84
- @meta.user_id = "user_id"
85
- @meta.transaction_id = "transaction_id"
86
- end
87
-
88
- it "should not send an event" do
89
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
90
- @sensor.check(@meta, 200)
91
- end
92
-
93
- context "no excluded routes" do
94
- it "should not send an event" do
95
- @sensor.excluded_route_ids = {}
96
-
97
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
98
- @sensor.check(@meta, 200)
99
- end
100
- end
101
-
102
- context "has excluded routes" do
103
- context "route id matches" do
104
- it "should not send an event" do
105
- @sensor.excluded_route_ids = {"route_id" => true}
106
-
107
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
108
- @sensor.check(@meta, 200)
109
- end
110
- end
111
- context "route id does not match" do
112
- it "should not send an event" do
113
- @sensor.excluded_route_ids = {"unmatching_route_id" => true}
114
-
115
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
116
- @sensor.check(@meta, 200)
117
- end
118
- end
119
- end
120
- end
121
-
122
- context "with 300 response code" do
123
- it "should not send an event" do
124
- sensor = ResponseCodesSensor.new({"enabled" => true})
125
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
126
- meta.remote_address = "remote_address"
127
- meta.method = "get"
128
- meta.location = "location"
129
- meta.route_id = "route_id"
130
- meta.session_id = "session_id"
131
- meta.user_id = "user_id"
132
- meta.transaction_id = "transaction_id"
133
-
134
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
135
- sensor.check(meta, 300)
136
- end
137
- end
138
-
139
- context "with disabled series_400_enabled" do
140
- context "with 400 response code" do
141
- it "should not send an event" do
142
- sensor = ResponseCodesSensor.new({
143
- "enabled" => true,
144
- "series_400_enabled" => false
145
- })
146
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
147
- meta.remote_address = "remote_address"
148
- meta.method = "get"
149
- meta.location = "location"
150
- meta.route_id = "route_id"
151
- meta.session_id = "session_id"
152
- meta.user_id = "user_id"
153
- meta.transaction_id = "transaction_id"
154
-
155
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
156
- sensor.check(meta, 400)
157
- end
158
- end
159
- end
160
-
161
- context "with enabled series_400_enabled and full uri" do
162
- context "with 400 response code" do
163
- before(:each) do
164
- @sensor = ResponseCodesSensor.new({
165
- "enabled" => true,
166
- "series_400_enabled" => true,
167
- "collect_full_uri" => true
168
- })
169
- @meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
170
- @meta.remote_address = "remote_address"
171
- @meta.method = "get"
172
- @meta.location = "location"
173
- @meta.route_id = "route_id"
174
- @meta.session_id = "session_id"
175
- @meta.user_id = "user_id"
176
- @meta.transaction_id = "transaction_id"
177
- end
178
-
179
- it "should send an event" do
180
- expect(TCellAgent::AppSensor::Sensor).to receive(:send_event).with(
181
- @meta, ResponseCodesSensor::RESPONSE_CODE_DP_DICT[4], nil, {code: 400} , nil, nil, true
182
- )
183
- @sensor.check(@meta, 400)
184
- end
185
- end
186
- end
187
-
188
-
189
- context "with enabled series_400_enabled" do
190
- context "with 400 response code" do
191
- before(:each) do
192
- @sensor = ResponseCodesSensor.new({
193
- "enabled" => true,
194
- "series_400_enabled" => true
195
- })
196
- @meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
197
- @meta.remote_address = "remote_address"
198
- @meta.method = "get"
199
- @meta.location = "location"
200
- @meta.route_id = "route_id"
201
- @meta.session_id = "session_id"
202
- @meta.user_id = "user_id"
203
- @meta.transaction_id = "transaction_id"
204
- end
205
-
206
- it "should send an event" do
207
- expect(TCellAgent::AppSensor::Sensor).to receive(:send_event).with(
208
- @meta, ResponseCodesSensor::RESPONSE_CODE_DP_DICT[4], nil, {code: 400} , nil, nil, false
209
- )
210
- @sensor.check(@meta, 400)
211
- end
212
-
213
- context "no excluded routes" do
214
- it "should send an event" do
215
- @sensor.excluded_route_ids = {}
216
-
217
- expect(TCellAgent::AppSensor::Sensor).to receive(:send_event).with(
218
- @meta, ResponseCodesSensor::RESPONSE_CODE_DP_DICT[4], nil, {code: 400} , nil, nil, false
219
- )
220
- @sensor.check(@meta, 400)
221
- end
222
- end
223
-
224
- context "has excluded routes" do
225
- context "route id matches" do
226
- it "should not send an event" do
227
- @sensor.excluded_route_ids = {"route_id" => true}
228
-
229
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
230
- @sensor.check(@meta, 400)
231
- end
232
- end
233
- context "route id does not match" do
234
- it "should send an event" do
235
- @sensor.excluded_route_ids = {"unmatching_route_id" => true}
236
-
237
- expect(TCellAgent::AppSensor::Sensor).to receive(:send_event).with(
238
- @meta, ResponseCodesSensor::RESPONSE_CODE_DP_DICT[4], nil, {code: 400} , nil, nil, false
239
- )
240
- @sensor.check(@meta, 400)
241
- end
242
- end
243
- end
244
- end
245
- end
246
-
247
- context "with disabled series_500_enabled" do
248
- context "with 500 response code" do
249
- it "should not send an event" do
250
- sensor = ResponseCodesSensor.new({
251
- "enabled" => true,
252
- "series_500_enabled" => false
253
- })
254
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
255
- meta.remote_address = "remote_address"
256
- meta.method = "get"
257
- meta.location = "location"
258
- meta.route_id = "route_id"
259
- meta.session_id = "session_id"
260
- meta.user_id = "user_id"
261
- meta.transaction_id = "transaction_id"
262
-
263
- expect(TCellAgent::AppSensor::Sensor).to_not receive(:send_event)
264
- sensor.check(meta, 500)
265
- end
266
- end
267
- end
268
-
269
- context "with enabled series_500_enabled" do
270
- context "with 500 response code" do
271
- it "should send an event" do
272
- sensor = ResponseCodesSensor.new({
273
- "enabled" => true,
274
- "series_500_enabled" => true
275
- })
276
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
277
- meta.remote_address = "remote_address"
278
- meta.method = "get"
279
- meta.location = "location"
280
- meta.route_id = "route_id"
281
- meta.session_id = "session_id"
282
- meta.user_id = "user_id"
283
- meta.transaction_id = "transaction_id"
284
-
285
- expect(TCellAgent::AppSensor::Sensor).to receive(:send_event).with(
286
- meta, ResponseCodesSensor::RESPONSE_CODE_DP_DICT[500], nil, {code: 500} , nil, nil, false
287
- )
288
- sensor.check(meta, 500)
289
- end
290
- end
291
- end
292
- end
293
- end
294
- end
295
-
296
- end
297
- end
@@ -1,241 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TCellAgent
4
- module Policies
5
-
6
- describe ResponseSizeSensor do
7
- context "#initialize" do
8
- context "default sensor" do
9
- it "should have properties set to defaults" do
10
- sensor = ResponseSizeSensor.new
11
- expect(sensor.enabled).to eq(false)
12
- expect(sensor.limit).to eq(2097152)
13
- expect(sensor.excluded_route_ids).to eq({})
14
- expect(sensor.dp_code).to eq(ResponseSizeSensor::DP_UNUSUAL_RESPONSE_SIZE)
15
- end
16
- end
17
-
18
- context "setting enabled on sensor" do
19
- it "should have properties set to defaults" do
20
- sensor = ResponseSizeSensor.new({"enabled" => true})
21
- expect(sensor.enabled).to eq(true)
22
- expect(sensor.limit).to eq(2097152)
23
- expect(sensor.excluded_route_ids).to eq({})
24
- expect(sensor.dp_code).to eq(ResponseSizeSensor::DP_UNUSUAL_RESPONSE_SIZE)
25
- end
26
- end
27
-
28
- context "setting limit on sensor" do
29
- it "should have properties set to defaults" do
30
- sensor = ResponseSizeSensor.new({"limit" => 1})
31
- expect(sensor.enabled).to eq(false)
32
- expect(sensor.limit).to eq(1)
33
- expect(sensor.excluded_route_ids).to eq({})
34
- expect(sensor.dp_code).to eq(ResponseSizeSensor::DP_UNUSUAL_RESPONSE_SIZE)
35
- end
36
- end
37
-
38
- context "setting excluded routes on sensor" do
39
- it "should have properties set to defaults" do
40
- sensor = ResponseSizeSensor.new({"exclude_routes" => ["1", "10", "20"]})
41
- expect(sensor.enabled).to eq(false)
42
- expect(sensor.limit).to eq(2097152)
43
- expect(sensor.excluded_route_ids).to eq({"1"=>true, "10"=>true, "20"=>true})
44
- expect(sensor.dp_code).to eq(ResponseSizeSensor::DP_UNUSUAL_RESPONSE_SIZE)
45
- end
46
- end
47
- end
48
-
49
- context "#check" do
50
- context "with disabled sensor" do
51
- it "should not send event" do
52
- sensor = ResponseSizeSensor.new({"enabled" => false})
53
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
54
- meta.remote_address = "remote_address"
55
- meta.method = "get"
56
- meta.location = "location"
57
- meta.route_id = "route_id"
58
- meta.session_id = "session_id"
59
- meta.user_id = "user_id"
60
- meta.transaction_id = "transaction_id"
61
- meta.response_content_bytes_len = 1024
62
-
63
- expect(TCellAgent).to_not receive(:send_event)
64
- sensor.check(meta)
65
- end
66
- end
67
-
68
- context "with enabled sensor" do
69
- context "size is zero" do
70
- it "should not send event" do
71
- sensor = ResponseSizeSensor.new({
72
- "enabled" => true,
73
- "limit" => 2048,
74
- "exclude_routes" => []
75
- })
76
-
77
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
78
- meta.remote_address = "remote_address"
79
- meta.method = "get"
80
- meta.location = "location"
81
- meta.route_id = "route_id"
82
- meta.session_id = "session_id"
83
- meta.user_id = "user_id"
84
- meta.transaction_id = "transaction_id"
85
- meta.response_content_bytes_len = 0
86
-
87
- expect(TCellAgent).to_not receive(:send_event)
88
- sensor.check(meta)
89
- end
90
- end
91
-
92
- context "size is too small" do
93
- context "by half a KiB" do
94
- it "should not send event" do
95
- sensor = ResponseSizeSensor.new({
96
- "enabled" => true,
97
- "limit" => 1,
98
- "exclude_routes" => []
99
- })
100
-
101
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
102
- meta.remote_address = "remote_address"
103
- meta.method = "get"
104
- meta.location = "location"
105
- meta.route_id = "route_id"
106
- meta.session_id = "session_id"
107
- meta.user_id = "user_id"
108
- meta.transaction_id = "transaction_id"
109
- meta.response_content_bytes_len = 512
110
-
111
- expect(TCellAgent).to_not receive(:send_event)
112
- sensor.check(meta)
113
- end
114
- end
115
- end
116
-
117
- context "size is ok" do
118
- it "should not send event" do
119
- sensor = ResponseSizeSensor.new({
120
- "enabled" => true,
121
- "limit" => 2048,
122
- "exclude_routes" => []
123
- })
124
-
125
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
126
- meta.remote_address = "remote_address"
127
- meta.method = "get"
128
- meta.location = "location"
129
- meta.route_id = "route_id"
130
- meta.session_id = "session_id"
131
- meta.user_id = "user_id"
132
- meta.transaction_id = "transaction_id"
133
- meta.response_content_bytes_len = 1024
134
-
135
- expect(TCellAgent).to_not receive(:send_event)
136
- sensor.check(meta)
137
- end
138
- end
139
-
140
- context "size is too big" do
141
- context "by half a KiB" do
142
- it "should not send event" do
143
- sensor = ResponseSizeSensor.new({
144
- "enabled" => true,
145
- "limit" => 1,
146
- "exclude_routes" => []
147
- })
148
-
149
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
150
- meta.remote_address = "remote_address"
151
- meta.method = "get"
152
- meta.location = "location"
153
- meta.route_id = "excluded_route_id"
154
- meta.session_id = "session_id"
155
- meta.user_id = "user_id"
156
- meta.transaction_id = "transaction_id"
157
- meta.response_content_bytes_len = 1024 + 512
158
-
159
- expect(TCellAgent).to receive(:send_event).with(
160
- {"event_type"=>"as",
161
- "dp"=>"rspsz",
162
- "remote_addr"=>"remote_address",
163
- "m"=>"get",
164
- "meta"=>{"sz"=>1536},
165
- "rid"=>"excluded_route_id"}
166
- )
167
- sensor.check(meta)
168
- end
169
- end
170
-
171
- context "route_id is excluded" do
172
- it "should not send event" do
173
- sensor = ResponseSizeSensor.new({
174
- "enabled" => true,
175
- "limit" => 1024,
176
- "exclude_routes" => ["excluded_route_id"]
177
- })
178
-
179
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
180
- meta.remote_address = "remote_address"
181
- meta.method = "get"
182
- meta.location = "location"
183
- meta.route_id = "excluded_route_id"
184
- meta.session_id = "session_id"
185
- meta.user_id = "user_id"
186
- meta.transaction_id = "transaction_id"
187
- meta.response_content_bytes_len = 2048
188
-
189
- expect(TCellAgent).to_not receive(:send_event)
190
- sensor.check(meta)
191
- end
192
- end
193
-
194
- context "route is not excluded" do
195
- it "should send event" do
196
- sensor = ResponseSizeSensor.new({
197
- "enabled" => true,
198
- "limit" => 1,
199
- "exclude_routes" => []
200
- })
201
-
202
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
203
- meta.remote_address = "remote_address"
204
- meta.method = "get"
205
- meta.location = "location"
206
- meta.route_id = "excluded_route_id"
207
- meta.session_id = "session_id"
208
- meta.user_id = "user_id"
209
- meta.transaction_id = "transaction_id"
210
- meta.response_content_bytes_len = 2048
211
-
212
- expect(TCellAgent).to receive(:send_event).with(
213
- {"event_type"=>"as",
214
- "dp"=>"rspsz",
215
- "remote_addr"=>"remote_address",
216
- "m"=>"get",
217
- "meta"=>{"sz"=>2048},
218
- "rid"=>"excluded_route_id"}
219
- )
220
- sensor.check(meta)
221
- end
222
- end
223
- end
224
- end
225
-
226
- end
227
-
228
- context "#get_content_length" do
229
- it "should return the response size" do
230
- sensor = ResponseSizeSensor.new({"enabled" => false})
231
- meta = TCellAgent::SensorEvents::AppSensorMetaEvent.new
232
- meta.request_content_bytes_len = 1024
233
- meta.response_content_bytes_len = 2048
234
-
235
- expect(sensor.get_content_length(meta)).to eq(2048)
236
- end
237
- end
238
- end
239
-
240
- end
241
- end