tshield 0.12.0.0 → 0.13.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: b027cb3ab381c02f5e74668df35812a9056f2ea67be29103905d3a965168a449
4
- data.tar.gz: 71c06f7a53ba24daafbf1c42f16ed02d05d00be2f663b2c52ae39e67377aa241
2
+ SHA1:
3
+ metadata.gz: caa9310473bc1479ad6bc7db7ae67938b269bbd7
4
+ data.tar.gz: 34de8d7084f0eecb054f2b07b9950ef0dffbf32b
5
5
  SHA512:
6
- metadata.gz: a8829db78bef723d0a9afab28bcbd3d52127d4fff48ea098482ebc3fff1bb017a751b0aef1315eb4eaf67094c836168c601e9fc93af444f05f86c50cade2be6f
7
- data.tar.gz: a5f981a9d81ff8415f60e1d17572d56cf3d6112899b5a2e67bd17cebe69c1e49c48818c0ba6d4009e03e64476d10b7ccf338a4171d822b316e7305cf6a777c2c
6
+ metadata.gz: 41afa4ac6a4471ea700beaa32ddf4c664f7eeb4f7a61639853b883a5ee0b6dd8f4262f9e14198a186e89cece5bb158669587a00f80dc7bef6bb460a5f6f7c5a3
7
+ data.tar.gz: ef52b07f2bfc68d8ff0561c0676350493da7b7f16b26f1e61687f13a78929e4ec9659859a396dcb6bb51d5eab8c041cc15cbb2ca92fcecc8a5ed768101a2a7bd
data/README.md CHANGED
@@ -104,6 +104,10 @@ Optional request attributes:
104
104
  this stub will be returned if all headers are in request.
105
105
  * **query**: works like headers but use query params.
106
106
 
107
+ Optional response attributes:
108
+
109
+ * **delay**: integer that represents time in seconds that the response will be delayed to return
110
+
107
111
  **Important**: If VCR config conflicts with Matching config Matching will be
108
112
  used. Matching config have priority.
109
113
 
@@ -166,6 +170,7 @@ To register stub into a session create an object with following attributes:
166
170
  "method": "GET",
167
171
  "path": "/matching/example",
168
172
  "response": {
173
+ "delay": 5,
169
174
  "body": "matching-example-response-in-session",
170
175
  "headers": {},
171
176
  "status": 200
@@ -206,6 +211,8 @@ domains:
206
211
  - transfer-encoding
207
212
  paths:
208
213
  - /secure
214
+ delay:
215
+ '/secure': 10
209
216
 
210
217
  'http://localhost:9092':
211
218
  name: 'my-other-service'
@@ -216,6 +223,8 @@ domains:
216
223
  - transfer-encoding
217
224
  paths:
218
225
  - /users
226
+ delay:
227
+ '/users': 5
219
228
  ```
220
229
  **request**
221
230
  * **timeout**: wait time for real service in seconds
@@ -231,6 +240,7 @@ domains:
231
240
  * **filters**: Implementation of before or after filters used in domain requests
232
241
  * **excluded_headers**: <<some_description>>
233
242
  * **paths**: Paths list of all services that will be called. Used to filter what domain will "receive the request"
243
+ * **delay**: List of times in seconds that the response will be delayed to return for an specific path defined above
234
244
 
235
245
  ## Manage Sessions
236
246
 
@@ -131,5 +131,10 @@ module TShield
131
131
  )
132
132
  raise 'Startup aborted'
133
133
  end
134
+
135
+ def get_delay(domain, path)
136
+ ((domains[domain] || {})['delay'] || {})[path] || 0
137
+ end
138
+
134
139
  end
135
140
  end
@@ -74,7 +74,7 @@ module TShield
74
74
  configuration.get_excluded_headers(domain(path)).include?(key)
75
75
  end
76
76
  end
77
-
77
+
78
78
  logger.info(
79
79
  "original=#{api_response.original} method=#{method} path=#{path} "\
80
80
  "content-type=#{request_content_type} "\
@@ -82,6 +82,7 @@ module TShield
82
82
  )
83
83
  TShield::Controllers::Helpers::SessionHelpers.update_session_call(request, callid, method)
84
84
 
85
+ delay(path)
85
86
  status api_response.status
86
87
  headers api_response.headers
87
88
  body api_response.body
@@ -100,6 +101,13 @@ module TShield
100
101
  def domain(path)
101
102
  @domain ||= configuration.get_domain_for(path)
102
103
  end
104
+
105
+ def delay(path)
106
+ delay_in_seconds = configuration.get_delay(domain(path), path) || 0
107
+ logger.info("Response with delay of #{delay_in_seconds} seconds")
108
+ sleep delay_in_seconds
109
+ end
110
+
103
111
  end
104
112
  end
105
113
  end
@@ -29,6 +29,7 @@ module TShield
29
29
 
30
30
  @matched = current_response
31
31
 
32
+ sleep matched['delay'] || 0
32
33
  TShield::Response.new(self.class.read_body(matched['body']),
33
34
  matched['headers'],
34
35
  matched['status'])
@@ -4,7 +4,7 @@ module TShield
4
4
  # Control version of gem
5
5
  class Version
6
6
  MAJOR = 0
7
- MINOR = 12
7
+ MINOR = 13
8
8
  PATCH = 0
9
9
  PRE = 0
10
10
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tshield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0.0
4
+ version: 0.13.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego Rubin
@@ -9,86 +9,86 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-11-03 00:00:00.000000000 Z
12
+ date: 2020-11-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: grpc
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: 1.28.0
21
18
  - - "~>"
22
19
  - !ruby/object:Gem::Version
23
20
  version: '1.28'
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.28.0
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- version: 1.28.0
31
28
  - - "~>"
32
29
  - !ruby/object:Gem::Version
33
30
  version: '1.28'
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.28.0
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: grpc-tools
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 1.28.0
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
40
  version: '1.28'
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.28.0
44
44
  type: :runtime
45
45
  prerelease: false
46
46
  version_requirements: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 1.28.0
51
48
  - - "~>"
52
49
  - !ruby/object:Gem::Version
53
50
  version: '1.28'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.28.0
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: httparty
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 0.14.0
61
58
  - - "~>"
62
59
  - !ruby/object:Gem::Version
63
60
  version: '0.14'
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 0.14.0
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.14.0
71
68
  - - "~>"
72
69
  - !ruby/object:Gem::Version
73
70
  version: '0.14'
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 0.14.0
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: json
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
80
  version: '2.0'
81
- - - "~>"
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '2.0'
84
84
  type: :runtime
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: '2.0'
91
- - - "~>"
91
+ - - ">="
92
92
  - !ruby/object:Gem::Version
93
93
  version: '2.0'
94
94
  - !ruby/object:Gem::Dependency
@@ -115,42 +115,42 @@ dependencies:
115
115
  name: sinatra
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- version: 2.1.0
121
118
  - - "~>"
122
119
  - !ruby/object:Gem::Version
123
120
  version: '2.1'
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 2.1.0
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: 2.1.0
131
128
  - - "~>"
132
129
  - !ruby/object:Gem::Version
133
130
  version: '2.1'
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 2.1.0
134
134
  - !ruby/object:Gem::Dependency
135
135
  name: sinatra-cross_origin
136
136
  requirement: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- version: '0.4'
141
138
  - - "~>"
142
139
  - !ruby/object:Gem::Version
143
140
  version: 0.4.0
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0.4'
144
144
  type: :runtime
145
145
  prerelease: false
146
146
  version_requirements: !ruby/object:Gem::Requirement
147
147
  requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- version: '0.4'
151
148
  - - "~>"
152
149
  - !ruby/object:Gem::Version
153
150
  version: 0.4.0
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0.4'
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: coveralls
156
156
  requirement: !ruby/object:Gem::Requirement
@@ -255,80 +255,80 @@ dependencies:
255
255
  name: rdoc
256
256
  requirement: !ruby/object:Gem::Requirement
257
257
  requirements:
258
- - - ">="
258
+ - - "~>"
259
259
  - !ruby/object:Gem::Version
260
260
  version: '6.0'
261
- - - "~>"
261
+ - - ">="
262
262
  - !ruby/object:Gem::Version
263
263
  version: '6.0'
264
264
  type: :development
265
265
  prerelease: false
266
266
  version_requirements: !ruby/object:Gem::Requirement
267
267
  requirements:
268
- - - ">="
268
+ - - "~>"
269
269
  - !ruby/object:Gem::Version
270
270
  version: '6.0'
271
- - - "~>"
271
+ - - ">="
272
272
  - !ruby/object:Gem::Version
273
273
  version: '6.0'
274
274
  - !ruby/object:Gem::Dependency
275
275
  name: reek
276
276
  requirement: !ruby/object:Gem::Requirement
277
277
  requirements:
278
- - - ">="
278
+ - - "~>"
279
279
  - !ruby/object:Gem::Version
280
280
  version: 5.4.0
281
- - - "~>"
281
+ - - ">="
282
282
  - !ruby/object:Gem::Version
283
283
  version: 5.4.0
284
284
  type: :development
285
285
  prerelease: false
286
286
  version_requirements: !ruby/object:Gem::Requirement
287
287
  requirements:
288
- - - ">="
288
+ - - "~>"
289
289
  - !ruby/object:Gem::Version
290
290
  version: 5.4.0
291
- - - "~>"
291
+ - - ">="
292
292
  - !ruby/object:Gem::Version
293
293
  version: 5.4.0
294
294
  - !ruby/object:Gem::Dependency
295
295
  name: rspec
296
296
  requirement: !ruby/object:Gem::Requirement
297
297
  requirements:
298
- - - ">="
299
- - !ruby/object:Gem::Version
300
- version: 3.5.0
301
298
  - - "~>"
302
299
  - !ruby/object:Gem::Version
303
300
  version: '3.5'
301
+ - - ">="
302
+ - !ruby/object:Gem::Version
303
+ version: 3.5.0
304
304
  type: :development
305
305
  prerelease: false
306
306
  version_requirements: !ruby/object:Gem::Requirement
307
307
  requirements:
308
- - - ">="
309
- - !ruby/object:Gem::Version
310
- version: 3.5.0
311
308
  - - "~>"
312
309
  - !ruby/object:Gem::Version
313
310
  version: '3.5'
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: 3.5.0
314
314
  - !ruby/object:Gem::Dependency
315
315
  name: rubocop
316
316
  requirement: !ruby/object:Gem::Requirement
317
317
  requirements:
318
- - - ">="
318
+ - - "~>"
319
319
  - !ruby/object:Gem::Version
320
320
  version: 0.73.0
321
- - - "~>"
321
+ - - ">="
322
322
  - !ruby/object:Gem::Version
323
323
  version: 0.73.0
324
324
  type: :development
325
325
  prerelease: false
326
326
  version_requirements: !ruby/object:Gem::Requirement
327
327
  requirements:
328
- - - ">="
328
+ - - "~>"
329
329
  - !ruby/object:Gem::Version
330
330
  version: 0.73.0
331
- - - "~>"
331
+ - - ">="
332
332
  - !ruby/object:Gem::Version
333
333
  version: 0.73.0
334
334
  - !ruby/object:Gem::Dependency
@@ -375,22 +375,22 @@ dependencies:
375
375
  name: webmock
376
376
  requirement: !ruby/object:Gem::Requirement
377
377
  requirements:
378
- - - ">="
379
- - !ruby/object:Gem::Version
380
- version: 2.1.0
381
378
  - - "~>"
382
379
  - !ruby/object:Gem::Version
383
380
  version: '2.1'
381
+ - - ">="
382
+ - !ruby/object:Gem::Version
383
+ version: 2.1.0
384
384
  type: :development
385
385
  prerelease: false
386
386
  version_requirements: !ruby/object:Gem::Requirement
387
387
  requirements:
388
- - - ">="
389
- - !ruby/object:Gem::Version
390
- version: 2.1.0
391
388
  - - "~>"
392
389
  - !ruby/object:Gem::Version
393
390
  version: '2.1'
391
+ - - ">="
392
+ - !ruby/object:Gem::Version
393
+ version: 2.1.0
394
394
  description: Proxy for mocks API responses
395
395
  email: rubin.diego@gmail.com
396
396
  executables:
@@ -460,22 +460,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
460
460
  - !ruby/object:Gem::Version
461
461
  version: '0'
462
462
  requirements: []
463
- rubygems_version: 3.0.8
463
+ rubyforge_project:
464
+ rubygems_version: 2.6.14.4
464
465
  signing_key:
465
466
  specification_version: 4
466
467
  summary: Proxy for mocks API responses
467
468
  test_files:
468
469
  - spec/spec_helper.rb
469
- - spec/tshield/request_matching_spec.rb
470
- - spec/tshield/grpc_spec.rb
471
- - spec/tshield/configuration_spec.rb
472
- - spec/tshield/sessions_spec.rb
473
470
  - spec/tshield/request_vcr_spec.rb
471
+ - spec/tshield/sessions_spec.rb
474
472
  - spec/tshield/controllers/requests_spec.rb
473
+ - spec/tshield/request_matching_spec.rb
474
+ - spec/tshield/grpc_spec.rb
475
475
  - spec/tshield/options_spec.rb
476
- - spec/tshield/after_filter_spec.rb
477
- - spec/tshield/fixtures/matching/example.json
478
476
  - spec/tshield/fixtures/proto/test_services_pb.rb
479
477
  - spec/tshield/fixtures/filters/example_filter.rb
478
+ - spec/tshield/fixtures/matching/example.json
480
479
  - spec/tshield/fixtures/config/tshield.yml
481
480
  - spec/tshield/fixtures/config/tshield-without-grpc.yml
481
+ - spec/tshield/configuration_spec.rb
482
+ - spec/tshield/after_filter_spec.rb