tshield 0.12.0.0 → 0.13.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.
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