tcell_agent 1.1.12 → 2.0.0

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 (163) hide show
  1. checksums.yaml +5 -5
  2. data/bin/tcell_agent +26 -14
  3. data/lib/tcell_agent.rb +16 -10
  4. data/lib/tcell_agent/agent.rb +78 -97
  5. data/lib/tcell_agent/agent/route_manager.rb +0 -16
  6. data/lib/tcell_agent/agent/static_agent.rb +9 -30
  7. data/lib/tcell_agent/authlogic.rb +3 -6
  8. data/lib/tcell_agent/config/unknown_options.rb +4 -8
  9. data/lib/tcell_agent/configuration.rb +38 -119
  10. data/lib/tcell_agent/devise.rb +25 -27
  11. data/lib/tcell_agent/hooks/login_fraud.rb +30 -33
  12. data/lib/tcell_agent/instrument_servers.rb +25 -0
  13. data/lib/tcell_agent/instrumentation.rb +12 -10
  14. data/lib/tcell_agent/instrumentation/cmdi.rb +19 -15
  15. data/lib/tcell_agent/instrumentation/lfi.rb +73 -0
  16. data/lib/tcell_agent/instrumentation/monkey_patches/file.rb +25 -0
  17. data/lib/tcell_agent/instrumentation/monkey_patches/io.rb +123 -0
  18. data/lib/tcell_agent/instrumentation/monkey_patches/kernel.rb +159 -0
  19. data/lib/tcell_agent/logger.rb +50 -114
  20. data/lib/tcell_agent/patches.rb +6 -7
  21. data/lib/tcell_agent/policies/appfirewall_policy.rb +26 -0
  22. data/lib/tcell_agent/policies/command_injection_policy.rb +28 -0
  23. data/lib/tcell_agent/policies/dataloss_policy.rb +44 -44
  24. data/lib/tcell_agent/policies/headers_policy.rb +25 -0
  25. data/lib/tcell_agent/policies/http_redirect_policy.rb +13 -79
  26. data/lib/tcell_agent/policies/js_agent_policy.rb +27 -0
  27. data/lib/tcell_agent/policies/local_file_access.rb +28 -0
  28. data/lib/tcell_agent/policies/login_policy.rb +43 -0
  29. data/lib/tcell_agent/policies/patches_policy.rb +27 -0
  30. data/lib/tcell_agent/policies/policies_manager.rb +68 -0
  31. data/lib/tcell_agent/policies/policy_polling.rb +58 -0
  32. data/lib/tcell_agent/policies/policy_types.rb +14 -0
  33. data/lib/tcell_agent/policies/system_enablements.rb +27 -0
  34. data/lib/tcell_agent/rails/auth/authlogic.rb +43 -68
  35. data/lib/tcell_agent/rails/auth/devise.rb +20 -23
  36. data/lib/tcell_agent/rails/auth/doorkeeper.rb +63 -74
  37. data/lib/tcell_agent/rails/csrf_exception.rb +2 -2
  38. data/lib/tcell_agent/rails/dlp.rb +25 -15
  39. data/lib/tcell_agent/rails/dlp_handler.rb +1 -2
  40. data/lib/tcell_agent/rails/js_agent_insert.rb +12 -13
  41. data/lib/tcell_agent/rails/middleware/body_filter_middleware.rb +4 -25
  42. data/lib/tcell_agent/rails/middleware/context_middleware.rb +2 -12
  43. data/lib/tcell_agent/rails/middleware/global_middleware.rb +0 -1
  44. data/lib/tcell_agent/rails/middleware/headers_middleware.rb +14 -34
  45. data/lib/tcell_agent/rails/on_start.rb +32 -31
  46. data/lib/tcell_agent/rails/routes.rb +7 -6
  47. data/lib/tcell_agent/rails/routes/grape.rb +1 -3
  48. data/lib/tcell_agent/rails/routes/route_id.rb +3 -1
  49. data/lib/tcell_agent/rails/settings_reporter.rb +23 -36
  50. data/lib/tcell_agent/rails/start_agent_after_initializers.rb +12 -0
  51. data/lib/tcell_agent/rails/tcell_body_proxy.rb +6 -4
  52. data/lib/tcell_agent/rust/agent_config.rb +49 -0
  53. data/lib/tcell_agent/rust/{libtcellagent-alpine-1.3.2.so → libtcellagent-4.14.0.dylib} +0 -0
  54. data/lib/tcell_agent/rust/libtcellagent-4.14.0.so +0 -0
  55. data/lib/tcell_agent/rust/{libtcellagent-1.3.2.so → libtcellagent-alpine-4.14.0.so} +0 -0
  56. data/lib/tcell_agent/rust/models.rb +0 -55
  57. data/lib/tcell_agent/rust/native_agent.rb +531 -0
  58. data/lib/tcell_agent/rust/native_agent_response.rb +42 -0
  59. data/lib/tcell_agent/rust/native_library.rb +68 -0
  60. data/lib/tcell_agent/rust/tcellagent-4.14.0.dll +0 -0
  61. data/lib/tcell_agent/sensor_events/agent_setting_event.rb +12 -0
  62. data/lib/tcell_agent/sensor_events/{app_config.rb → app_config_setting_event.rb} +0 -6
  63. data/lib/tcell_agent/sensor_events/dlp.rb +2 -6
  64. data/lib/tcell_agent/sensor_events/sensor.rb +0 -62
  65. data/lib/tcell_agent/sensor_events/server_agent.rb +13 -18
  66. data/lib/tcell_agent/sensor_events/util/sanitizer_utilities.rb +0 -108
  67. data/lib/tcell_agent/sensor_events/util/utils.rb +0 -2
  68. data/lib/tcell_agent/servers/passenger.rb +1 -28
  69. data/lib/tcell_agent/servers/puma.rb +3 -21
  70. data/lib/tcell_agent/servers/rails_server.rb +1 -1
  71. data/lib/tcell_agent/servers/thin.rb +2 -2
  72. data/lib/tcell_agent/servers/unicorn.rb +19 -80
  73. data/lib/tcell_agent/servers/webrick.rb +1 -1
  74. data/lib/tcell_agent/settings_reporter.rb +24 -24
  75. data/lib/tcell_agent/sinatra.rb +14 -16
  76. data/lib/tcell_agent/tcell_context.rb +40 -14
  77. data/lib/tcell_agent/utils/headers.rb +14 -0
  78. data/lib/tcell_agent/version.rb +1 -1
  79. data/spec/lib/tcell_agent/cmdi_spec.rb +0 -585
  80. data/spec/lib/tcell_agent/config/unknown_options_spec.rb +0 -18
  81. data/spec/lib/tcell_agent/configuration_spec.rb +4 -140
  82. data/spec/lib/tcell_agent/hooks/login_fraud_spec.rb +46 -173
  83. data/spec/lib/tcell_agent/instrumentation/cmdi/io_cmdi_spec.rb +504 -0
  84. data/spec/lib/tcell_agent/instrumentation/cmdi/kernel_cmdi_spec.rb +435 -0
  85. data/spec/lib/tcell_agent/instrumentation/lfi/file_lfi_spec.rb +326 -0
  86. data/spec/lib/tcell_agent/instrumentation/lfi/io_lfi_spec.rb +556 -0
  87. data/spec/lib/tcell_agent/instrumentation/lfi/kernel_lfi_spec.rb +249 -0
  88. data/spec/lib/tcell_agent/instrumentation/lfi_spec.rb +105 -0
  89. data/spec/lib/tcell_agent/patches_spec.rb +25 -43
  90. data/spec/lib/tcell_agent/policies/appfirewall_policy_spec.rb +183 -0
  91. data/spec/lib/tcell_agent/policies/clickjacking_policy_spec.rb +57 -0
  92. data/spec/lib/tcell_agent/policies/command_injection_policy_spec.rb +84 -773
  93. data/spec/lib/tcell_agent/policies/content_security_policy_spec.rb +161 -0
  94. data/spec/lib/tcell_agent/policies/dataloss_policy_spec.rb +9 -9
  95. data/spec/lib/tcell_agent/policies/http_redirect_policy_spec.rb +243 -198
  96. data/spec/lib/tcell_agent/policies/js_agent_policy_spec.rb +75 -0
  97. data/spec/lib/tcell_agent/policies/login_policy_spec.rb +165 -33
  98. data/spec/lib/tcell_agent/policies/patches_policy_spec.rb +84 -277
  99. data/spec/lib/tcell_agent/policies/policies_manager_spec.rb +104 -0
  100. data/spec/lib/tcell_agent/policies/policy_polling_spec.rb +6 -0
  101. data/spec/lib/tcell_agent/policies/secure_headers_policy_spec.rb +56 -0
  102. data/spec/lib/tcell_agent/rails/csrf_exception_spec.rb +9 -18
  103. data/spec/lib/tcell_agent/rails/js_agent_insert_spec.rb +13 -30
  104. data/spec/lib/tcell_agent/rails/logger_spec.rb +27 -7
  105. data/spec/lib/tcell_agent/rails/middleware/tcell_body_proxy_spec.rb +17 -12
  106. data/spec/lib/tcell_agent/rails/routes/routes_spec.rb +14 -14
  107. data/spec/lib/tcell_agent/sensor_events/util/sanitizer_utilities_spec.rb +0 -35
  108. data/spec/lib/tcell_agent/settings_reporter_spec.rb +127 -153
  109. data/spec/spec_helper.rb +1 -1
  110. data/spec/support/builders.rb +104 -0
  111. data/spec/support/force_logger_mocking.rb +38 -0
  112. data/spec/support/resources/lfi_sample_file.txt +2 -0
  113. data/spec/support/static_agent_overrides.rb +0 -15
  114. metadata +63 -74
  115. data/lib/tcell_agent/agent/event_processor.rb +0 -326
  116. data/lib/tcell_agent/agent/fork_pipe_manager.rb +0 -113
  117. data/lib/tcell_agent/agent/policy_manager.rb +0 -219
  118. data/lib/tcell_agent/agent/policy_types.rb +0 -30
  119. data/lib/tcell_agent/api.rb +0 -91
  120. data/lib/tcell_agent/appsensor/injections_reporter.rb +0 -24
  121. data/lib/tcell_agent/config/child_process_events.rb +0 -8
  122. data/lib/tcell_agent/instrumentation/cmdi/backtick.rb +0 -10
  123. data/lib/tcell_agent/instrumentation/cmdi/exec.rb +0 -14
  124. data/lib/tcell_agent/instrumentation/cmdi/popen.rb +0 -28
  125. data/lib/tcell_agent/instrumentation/cmdi/spawn.rb +0 -11
  126. data/lib/tcell_agent/instrumentation/cmdi/system.rb +0 -11
  127. data/lib/tcell_agent/policies/http_tx_policy.rb +0 -60
  128. data/lib/tcell_agent/policies/login_fraud_policy.rb +0 -45
  129. data/lib/tcell_agent/policies/rust_policies.rb +0 -110
  130. data/lib/tcell_agent/rails.rb +0 -40
  131. data/lib/tcell_agent/rust/libtcellagent-1.3.2.dylib +0 -0
  132. data/lib/tcell_agent/rust/tcellagent-1.3.2.dll +0 -0
  133. data/lib/tcell_agent/rust/whisperer.rb +0 -308
  134. data/lib/tcell_agent/sensor_events/appsensor_event.rb +0 -52
  135. data/lib/tcell_agent/sensor_events/appsensor_meta_event.rb +0 -45
  136. data/lib/tcell_agent/sensor_events/command_injection.rb +0 -75
  137. data/lib/tcell_agent/sensor_events/honeytokens.rb +0 -16
  138. data/lib/tcell_agent/sensor_events/login_fraud.rb +0 -60
  139. data/lib/tcell_agent/sensor_events/metrics.rb +0 -123
  140. data/lib/tcell_agent/sensor_events/patches.rb +0 -21
  141. data/lib/tcell_agent/start_background_thread.rb +0 -55
  142. data/lib/tcell_agent/system_info.rb +0 -11
  143. data/lib/tcell_agent/utils/io.rb +0 -38
  144. data/lib/tcell_agent/utils/passwords.rb +0 -28
  145. data/lib/tcell_agent/utils/queue_with_timeout.rb +0 -142
  146. data/spec/lib/tcell_agent/agent/fork_pipe_manager_spec.rb +0 -100
  147. data/spec/lib/tcell_agent/agent/policy_manager_spec.rb +0 -535
  148. data/spec/lib/tcell_agent/agent/static_agent_spec.rb +0 -133
  149. data/spec/lib/tcell_agent/api/api_spec.rb +0 -39
  150. data/spec/lib/tcell_agent/appsensor/injections_reporter_spec.rb +0 -187
  151. data/spec/lib/tcell_agent/instrumentation_spec.rb +0 -225
  152. data/spec/lib/tcell_agent/policies/appsensor_policy_spec.rb +0 -517
  153. data/spec/lib/tcell_agent/policies/http_tx_policy_spec.rb +0 -22
  154. data/spec/lib/tcell_agent/rails/middleware/appsensor_middleware_spec.rb +0 -293
  155. data/spec/lib/tcell_agent/rails/middleware/dlp_middleware_spec.rb +0 -198
  156. data/spec/lib/tcell_agent/rails/middleware/global_middleware_spec.rb +0 -180
  157. data/spec/lib/tcell_agent/rails/middleware/redirect_middleware_spec.rb +0 -116
  158. data/spec/lib/tcell_agent/rust/models_spec.rb +0 -120
  159. data/spec/lib/tcell_agent/rust/whisperer_spec.rb +0 -704
  160. data/spec/lib/tcell_agent/sensor_events/appsensor_meta_event_spec.rb +0 -45
  161. data/spec/lib/tcell_agent/sensor_events/sessions_metric_spec.rb +0 -272
  162. data/spec/lib/tcell_agent/utils/bounded_queue_spec.rb +0 -52
  163. data/spec/lib/tcell_agent/utils/passwords_spec.rb +0 -143
@@ -1,45 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TCellAgent
4
- module SensorEvents
5
- describe AppSensorMetaEvent do
6
- describe '#post_process' do
7
- before(:each) do
8
- @meta_data = TCellAgent::MetaData.new(
9
- 'get',
10
- 'remote_address',
11
- 'route_id',
12
- 'session_id',
13
- 'user_id',
14
- 'transaction_id',
15
- 'http://test.com'
16
- )
17
- @appsensor_meta_event = AppSensorMetaEvent.new(@meta_data)
18
- end
19
-
20
- context 'empty rust policies' do
21
- it 'should not process anything' do
22
- expect(TCellAgent).to receive(:policy).with(
23
- TCellAgent::PolicyTypes::RUST
24
- ).and_return(nil)
25
-
26
- @appsensor_meta_event.post_process
27
- end
28
- end
29
- context 'rust policies available' do
30
- it 'should call rust policies for processing' do
31
- rust_policies = double('rust_policies')
32
- expect(TCellAgent).to receive(:policy).with(
33
- TCellAgent::PolicyTypes::RUST
34
- ).and_return(rust_policies)
35
- expect(rust_policies).to receive(:check_appfirewall_injections).with(
36
- @appsensor_meta_event.meta_data
37
- )
38
-
39
- @appsensor_meta_event.post_process
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,272 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TCellAgent
4
- module SensorEvents
5
- describe SessionsMetric do
6
- describe '#initialize' do
7
- context 'empty sessions info' do
8
- it 'should have the event type set' do
9
- sessions_metric = SessionsMetric.new
10
- expect(sessions_metric).to eq({ 'event_type' => 'metrics', 'sessions' => {} })
11
- end
12
- end
13
- end
14
-
15
- describe '#add_session_info' do
16
- context 'empty sessions info' do
17
- context 'adding session info' do
18
- it 'should have the session info' do
19
- sessions_metric = SessionsMetric.new
20
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
21
-
22
- expect(sessions_metric.sessions?).to eq(true)
23
- expect(sessions_metric).to eq(
24
- {
25
- 'event_type' => 'metrics',
26
- 'sessions' => {
27
- 'hmac_session_id' => [
28
- {
29
- 'uid' => 'user_id',
30
- 'track' => [
31
- ['user_agent', ['127.0.0.1']]
32
- ]
33
- }
34
- ]
35
- }
36
- }
37
- )
38
- end
39
- end
40
-
41
- context 'adding a really long user agent' do
42
- it 'should truncate the agent' do
43
- long_user_agent = 'user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_'
44
- long_user_agent += 'user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent'
45
- long_user_agent += 'user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent'
46
- long_user_agent += 'user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent'
47
- sessions_metric = SessionsMetric.new
48
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', long_user_agent)
49
-
50
- expect(sessions_metric).to eq(
51
- {
52
- 'event_type' => 'metrics',
53
- 'sessions' => {
54
- 'hmac_session_id' => [
55
- {
56
- 'uid' => 'user_id',
57
- 'track' => [
58
- ['user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agentuser_agent_user_agent_user_agent_user_agent_user_agent_user_agent_user_agentuser_agent_user_agent_user_', ['127.0.0.1']]
59
- ]
60
- }
61
- ]
62
- }
63
- }
64
- )
65
- end
66
- end
67
- end
68
-
69
- context 'with an existing session info' do
70
- context 'adding the same info' do
71
- it 'should not do anything' do
72
- sessions_metric = SessionsMetric.new
73
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
74
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
75
-
76
- expect(sessions_metric).to eq(
77
- {
78
- 'event_type' => 'metrics',
79
- 'sessions' => {
80
- 'hmac_session_id' => [
81
- {
82
- 'uid' => 'user_id',
83
- 'track' => [
84
- ['user_agent', ['127.0.0.1']]
85
- ]
86
- }
87
- ]
88
- }
89
- }
90
- )
91
- end
92
- end
93
-
94
- context 'adding a new session' do
95
- it 'should add the new info' do
96
- sessions_metric = SessionsMetric.new
97
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
98
-
99
- sessions_metric.add_session_info('hmac_session_id_dos', 'user_id_dos', '127.0.0.1_dos', 'user_agent_dos')
100
- expect(sessions_metric).to eq(
101
- {
102
- 'event_type' => 'metrics',
103
- 'sessions' => {
104
- 'hmac_session_id' => [
105
- {
106
- 'uid' => 'user_id',
107
- 'track' => [
108
- ['user_agent', ['127.0.0.1']]
109
- ]
110
- }
111
- ],
112
- 'hmac_session_id_dos' => [
113
- {
114
- 'uid' => 'user_id_dos',
115
- 'track' => [
116
- ['user_agent_dos', ['127.0.0.1_dos']]
117
- ]
118
- }
119
- ]
120
- }
121
- }
122
- )
123
- end
124
-
125
- context 'with the same user_id' do
126
- it 'should add the new info' do
127
- sessions_metric = SessionsMetric.new
128
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
129
-
130
- sessions_metric.add_session_info('hmac_session_id_dos', 'user_id', '127.0.0.1', 'user_agent')
131
- expect(sessions_metric).to eq(
132
- {
133
- 'event_type' => 'metrics',
134
- 'sessions' => {
135
- 'hmac_session_id' => [
136
- {
137
- 'uid' => 'user_id',
138
- 'track' => [
139
- ['user_agent', ['127.0.0.1']]
140
- ]
141
- }
142
- ],
143
- 'hmac_session_id_dos' => [
144
- {
145
- 'uid' => 'user_id',
146
- 'track' => [
147
- ['user_agent', ['127.0.0.1']]
148
- ]
149
- }
150
- ]
151
- }
152
- }
153
- )
154
- end
155
- end
156
- end
157
-
158
- context 'adding new info for the existing session' do
159
- context 'adding a new user_id' do
160
- it 'should append the ip address to the existing info' do
161
- sessions_metric = SessionsMetric.new
162
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
163
- sessions_metric.add_session_info('hmac_session_id', 'user_id_dos', '127.0.0.1', 'user_agent')
164
-
165
- expect(sessions_metric).to eq(
166
- {
167
- 'event_type' => 'metrics',
168
- 'sessions' => {
169
- 'hmac_session_id' => [
170
- {
171
- 'uid' => 'user_id',
172
- 'track' => [
173
- ['user_agent', ['127.0.0.1']]
174
- ]
175
- },
176
- {
177
- 'uid' => 'user_id_dos',
178
- 'track' => [
179
- ['user_agent', ['127.0.0.1']]
180
- ]
181
- }
182
- ]
183
- }
184
- }
185
- )
186
- end
187
- end
188
-
189
- context 'adding a new ip address' do
190
- it 'should append the ip address to the existing info' do
191
- sessions_metric = SessionsMetric.new
192
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
193
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1_dos', 'user_agent')
194
-
195
- expect(sessions_metric).to eq(
196
- {
197
- 'event_type' => 'metrics',
198
- 'sessions' => {
199
- 'hmac_session_id' => [
200
- {
201
- 'uid' => 'user_id',
202
- 'track' => [
203
- ['user_agent', ['127.0.0.1', '127.0.0.1_dos']]
204
- ]
205
- }
206
- ]
207
- }
208
- }
209
- )
210
- end
211
- end
212
-
213
- context 'adding a new user agent' do
214
- it 'should add the new user agent' do
215
- sessions_metric = SessionsMetric.new
216
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent')
217
- sessions_metric.add_session_info('hmac_session_id', 'user_id', '127.0.0.1', 'user_agent_dos')
218
-
219
- expect(sessions_metric).to eq(
220
- {
221
- 'event_type' => 'metrics',
222
- 'sessions' => {
223
- 'hmac_session_id' => [
224
- {
225
- 'uid' => 'user_id',
226
- 'track' => [
227
- ['user_agent', ['127.0.0.1']],
228
- ['user_agent_dos', ['127.0.0.1']]
229
- ]
230
- }
231
- ]
232
- }
233
- }
234
- )
235
- end
236
- end
237
- end
238
- end
239
-
240
- context 'adding 200 sessions' do
241
- it 'should update its state to flush' do
242
- sessions_metric = SessionsMetric.new
243
- expect(sessions_metric.flush).to eq(false)
244
-
245
- 200.times do |x|
246
- sessions_metric.add_session_info('hmac_session_id', 'user_id', "127.0.0.1_#{x}", 'user_agent')
247
- end
248
-
249
- expect(sessions_metric.flush).to eq(true)
250
- end
251
- end
252
-
253
- context 'adding 251 sessions' do
254
- it 'should drop session after 250' do
255
- logger = double('logger')
256
- sessions_metric = SessionsMetric.new
257
-
258
- expect(sessions_metric.flush).to eq(false)
259
- expect(TCellAgent).to receive(:logger).and_return(logger)
260
- expect(logger).to receive(:warn).with('Sessions Metric is full. Information dropped')
261
-
262
- 250.times do |x|
263
- sessions_metric.add_session_info('hmac_session_id', 'user_id', "127.0.0.1_#{x}", 'user_agent')
264
- end
265
-
266
- expect(sessions_metric.flush).to eq(true)
267
- end
268
- end
269
- end
270
- end
271
- end
272
- end
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe TCellAgent::BoundedQueue do
4
- describe '#full?' do
5
- it 'should be true when the queue is full' do
6
- queue = TCellAgent::BoundedQueue.new(1)
7
- queue.push('one')
8
- expect(queue.full?).to eq(true)
9
- end
10
-
11
- it 'should return false when the queue is not full' do
12
- queue = TCellAgent::BoundedQueue.new(1)
13
- expect(queue.full?).to eq(false)
14
- end
15
- end
16
-
17
- describe '#push' do
18
- context 'pushing to a queue with space available' do
19
- it 'should push the item' do
20
- queue = TCellAgent::BoundedQueue.new(1)
21
- queue.push('one')
22
-
23
- expect(queue.size).to eq(1)
24
- end
25
- end
26
-
27
- context 'pushing to a full queue' do
28
- it 'should not be possible to push anymore items' do
29
- queue = TCellAgent::BoundedQueue.new(1)
30
- queue.push('one')
31
-
32
- expect(queue.size).to eq(1)
33
- expect(queue.full?).to eq(true)
34
-
35
- expect do
36
- queue.push('two', 0.1)
37
- end.to raise_error(RuntimeError)
38
- end
39
- end
40
- end
41
-
42
- describe '#pop' do
43
- context 'popping from an empty queue' do
44
- it 'should return nil when there are no items' do
45
- queue = TCellAgent::BoundedQueue.new(1)
46
- expect(queue.size).to eq(0)
47
-
48
- expect(queue.pop(0.1)).to eq(nil)
49
- end
50
- end
51
- end
52
- end
@@ -1,143 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module TCellAgent
4
- module Utils
5
- describe '.fingerprint_password' do
6
- context 'with nil password' do
7
- it 'should return nil' do
8
- configuration = double('configuration',
9
- :app_id => 'app_id',
10
- :password_hmac_key => 'password_hmac_key')
11
-
12
- expect(TCellAgent).to receive(:configuration).and_return(
13
- configuration
14
- )
15
- expect(TCellAgent).to receive(:configuration).and_return(
16
- configuration
17
- )
18
-
19
- expect(Passwords.fingerprint_password(nil, nil)).to be_nil
20
- end
21
- end
22
-
23
- context "with '' password" do
24
- it 'should return nil' do
25
- configuration = double('configuration',
26
- :app_id => 'app_id',
27
- :password_hmac_key => 'password_hmac_key')
28
-
29
- expect(TCellAgent).to receive(:configuration).and_return(
30
- configuration
31
- )
32
- expect(TCellAgent).to receive(:configuration).and_return(
33
- configuration
34
- )
35
-
36
- expect(Passwords.fingerprint_password('', nil)).to be_nil
37
- end
38
- end
39
-
40
- context "with ' ' password" do
41
- it 'should return nil' do
42
- configuration = double('configuration',
43
- :app_id => 'app_id',
44
- :password_hmac_key => 'password_hmac_key')
45
-
46
- expect(TCellAgent).to receive(:configuration).and_return(
47
- configuration
48
- )
49
- expect(TCellAgent).to receive(:configuration).and_return(
50
- configuration
51
- )
52
-
53
- expect(Passwords.fingerprint_password(' ', nil)).to be_nil
54
- end
55
- end
56
-
57
- context 'with nil password_hmac_key' do
58
- it 'should return nil' do
59
- configuration = double('configuration',
60
- :app_id => 'app_id',
61
- :password_hmac_key => nil)
62
-
63
- expect(TCellAgent).to receive(:configuration).and_return(
64
- configuration
65
- )
66
- expect(TCellAgent).to receive(:configuration).and_return(
67
- configuration
68
- )
69
-
70
- expect(Passwords.fingerprint_password('admin123', nil)).to be_nil
71
- end
72
- end
73
-
74
- context "with '' password_hmac_key" do
75
- it 'should return nil' do
76
- configuration = double('configuration',
77
- :app_id => 'app_id',
78
- :password_hmac_key => '')
79
-
80
- expect(TCellAgent).to receive(:configuration).and_return(
81
- configuration
82
- )
83
- expect(TCellAgent).to receive(:configuration).and_return(
84
- configuration
85
- )
86
-
87
- expect(Passwords.fingerprint_password('admin123', nil)).to be_nil
88
- end
89
- end
90
-
91
- context "with ' ' password_hmac_key" do
92
- it 'should return nil' do
93
- configuration = double('configuration',
94
- :app_id => 'app_id',
95
- :password_hmac_key => ' ')
96
-
97
- expect(TCellAgent).to receive(:configuration).and_return(
98
- configuration
99
- )
100
- expect(TCellAgent).to receive(:configuration).and_return(
101
- configuration
102
- )
103
-
104
- expect(Passwords.fingerprint_password('admin123', nil)).to be_nil
105
- end
106
- end
107
-
108
- context 'with no user_id' do
109
- it 'should return digest' do
110
- configuration = double('configuration',
111
- :app_id => 'TestAppId-AppId',
112
- :password_hmac_key => 'password_hmac_key')
113
-
114
- expect(TCellAgent).to receive(:configuration).and_return(
115
- configuration
116
- )
117
- expect(TCellAgent).to receive(:configuration).and_return(
118
- configuration
119
- )
120
-
121
- expect(Passwords.fingerprint_password('admin123', nil)).to eq('83ff14db')
122
- end
123
- end
124
-
125
- context 'with user_id present' do
126
- it 'should return digest' do
127
- configuration = double('configuration',
128
- :app_id => 'TestAppId-AppId',
129
- :password_hmac_key => 'password_hmac_key')
130
-
131
- expect(TCellAgent).to receive(:configuration).and_return(
132
- configuration
133
- )
134
- expect(TCellAgent).to receive(:configuration).and_return(
135
- configuration
136
- )
137
-
138
- expect(Passwords.fingerprint_password('admin123', 'user_id')).to eq('11a88b27')
139
- end
140
- end
141
- end
142
- end
143
- end