tshield 0.13.3.0 → 0.13.4.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
- SHA1:
3
- metadata.gz: ff8ebc5fc00636cb1f4a14e64c431db07fc5b018
4
- data.tar.gz: 2a3931e85a3869b2f39b19512352117bf664c750
2
+ SHA256:
3
+ metadata.gz: 66ce1246fb18f0ac3ca8988aa3dcbdaf6ac93f3605181bffd79ad0b831bf94c5
4
+ data.tar.gz: a640d69531493ef2c8513377b1671e51b9f2d231a0eeaf158b175526a42f45f9
5
5
  SHA512:
6
- metadata.gz: 2d6affb50388b0f3e39b13806c5079c19f708a9d62f6bff8b89f70c21ec02ff19b33e9f635b6aee9398525bea000bfbd6efa1aed3f3de1f5b5279c6a0c2761d7
7
- data.tar.gz: 7c3646904d2f38a5f4d608b9f76e3355c26e311eb2ac2518d09eb5e4a139bdddc506a41ce0078b395dddf551c775e7b654a00a15e8de9734ac97033772de90d3
6
+ metadata.gz: ec4005538a4fdbe3352874f7485e8e60303ab2e8a51441621cd181d73dd236267d08d03363052632e794f1701e6de0eafaa9448a6ca8cabec7680505e1902234
7
+ data.tar.gz: 319ccdbccc47a05d783403de7fff5022f928520f18d1aedb06929de0b40f1d6a74e6db94219835f8e8edd15636acbc0ff3f3d2999a787446420fdda916e3bf12
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'tshield/logger'
3
4
  require 'tshield/matching/filters'
4
5
  require 'tshield/request'
5
6
 
@@ -59,15 +60,38 @@ module TShield
59
60
  end
60
61
 
61
62
  def load_stub(file)
62
- content = JSON.parse File.open(file).read
63
+ content = read_stub_file(file)
63
64
  content.each do |stub|
64
- stub_session_name = init_stub_session(stub)
65
+ next unless valid_stub?(file, stub)
65
66
 
66
- if stub['stubs']
67
- load_items(stub['stubs'] || [], stub_session_name)
68
- else
69
- load_item(stub, stub_session_name)
70
- end
67
+ load_valid_stub(stub)
68
+ end
69
+ end
70
+
71
+ def read_stub_file(file)
72
+ JSON.parse File.open(file).read
73
+ rescue StandardError
74
+ TShield.logger.error "error in loading matching file #{file}"
75
+ []
76
+ end
77
+
78
+ def valid_stub?(file, stub)
79
+ is_valid = stub.is_a?(Hash) && mandatory_attributes?(stub)
80
+ TShield.logger.info "loading matching file #{file}" if is_valid
81
+ is_valid
82
+ end
83
+
84
+ def mandatory_attributes?(stub)
85
+ (stub['method'] && stub['path'] && stub['response']) || (stub['session'] && stub['stubs'])
86
+ end
87
+
88
+ def load_valid_stub(stub)
89
+ stub_session_name = init_stub_session(stub)
90
+
91
+ if stub['stubs']
92
+ load_items(stub['stubs'] || [], stub_session_name)
93
+ else
94
+ load_item(stub, stub_session_name)
71
95
  end
72
96
  end
73
97
 
@@ -5,7 +5,7 @@ module TShield
5
5
  class Version
6
6
  MAJOR = 0
7
7
  MINOR = 13
8
- PATCH = 3
8
+ PATCH = 4
9
9
  PRE = 0
10
10
 
11
11
  class << self
File without changes
@@ -36,6 +36,38 @@ describe TShield::RequestMatching do
36
36
  end
37
37
  end
38
38
 
39
+ context 'invalid matching file' do
40
+ before :each do
41
+ allow(Dir).to receive(:glob)
42
+ .and_return(['spec/tshield/fixtures/matching/invalid_matching_file.json'])
43
+ end
44
+
45
+ context 'on loading stubs' do
46
+ before :each do
47
+ @request_matching = TShield::RequestMatching.new('/')
48
+ end
49
+ it 'should stubs be empty' do
50
+ expect(@request_matching.class.stubs[DEFAULT_SESSION]).to be_nil
51
+ end
52
+ end
53
+ end
54
+
55
+ context 'empty matching file' do
56
+ before :each do
57
+ allow(Dir).to receive(:glob)
58
+ .and_return(['spec/tshield/fixtures/matching/empty.json'])
59
+ end
60
+
61
+ context 'on loading stubs' do
62
+ before :each do
63
+ @request_matching = TShield::RequestMatching.new('/')
64
+ end
65
+ it 'should stubs be empty' do
66
+ expect(@request_matching.class.stubs[DEFAULT_SESSION]).to be_nil
67
+ end
68
+ end
69
+ end
70
+
39
71
  context 'matching path' do
40
72
  before :each do
41
73
  allow(Dir).to receive(:glob)
metadata CHANGED
@@ -1,94 +1,94 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tshield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.3.0
4
+ version: 0.13.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego Rubin
8
8
  - Eduardo Garcia
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-02-24 00:00:00.000000000 Z
12
+ date: 2021-04-15 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'
21
18
  - - ">="
22
19
  - !ruby/object:Gem::Version
23
20
  version: 1.28.0
21
+ - - "~>"
22
+ - !ruby/object:Gem::Version
23
+ version: '1.28'
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'
31
28
  - - ">="
32
29
  - !ruby/object:Gem::Version
33
30
  version: 1.28.0
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.28'
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'
41
38
  - - ">="
42
39
  - !ruby/object:Gem::Version
43
40
  version: 1.28.0
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.28'
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'
51
48
  - - ">="
52
49
  - !ruby/object:Gem::Version
53
50
  version: 1.28.0
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.28'
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'
61
58
  - - ">="
62
59
  - !ruby/object:Gem::Version
63
60
  version: 0.14.0
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '0.14'
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'
71
68
  - - ">="
72
69
  - !ruby/object:Gem::Version
73
70
  version: 0.14.0
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.14'
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'
121
118
  - - ">="
122
119
  - !ruby/object:Gem::Version
123
120
  version: 2.1.0
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.1'
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'
131
128
  - - ">="
132
129
  - !ruby/object:Gem::Version
133
130
  version: 2.1.0
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '2.1'
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.0
141
138
  - - ">="
142
139
  - !ruby/object:Gem::Version
143
140
  version: '0.4'
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: 0.4.0
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.0
151
148
  - - ">="
152
149
  - !ruby/object:Gem::Version
153
150
  version: '0.4'
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 0.4.0
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'
301
298
  - - ">="
302
299
  - !ruby/object:Gem::Version
303
300
  version: 3.5.0
301
+ - - "~>"
302
+ - !ruby/object:Gem::Version
303
+ version: '3.5'
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'
311
308
  - - ">="
312
309
  - !ruby/object:Gem::Version
313
310
  version: 3.5.0
311
+ - - "~>"
312
+ - !ruby/object:Gem::Version
313
+ version: '3.5'
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'
381
378
  - - ">="
382
379
  - !ruby/object:Gem::Version
383
380
  version: 2.1.0
381
+ - - "~>"
382
+ - !ruby/object:Gem::Version
383
+ version: '2.1'
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'
391
388
  - - ">="
392
389
  - !ruby/object:Gem::Version
393
390
  version: 2.1.0
391
+ - - "~>"
392
+ - !ruby/object:Gem::Version
393
+ version: '2.1'
394
394
  description: Proxy for mocks API responses
395
395
  email: rubin.diego@gmail.com
396
396
  executables:
@@ -435,7 +435,9 @@ files:
435
435
  - spec/tshield/fixtures/config/tshield-without-grpc.yml
436
436
  - spec/tshield/fixtures/config/tshield.yml
437
437
  - spec/tshield/fixtures/filters/example_filter.rb
438
+ - spec/tshield/fixtures/matching/empty.json
438
439
  - spec/tshield/fixtures/matching/example.json
440
+ - spec/tshield/fixtures/matching/invalid_matching_file.json
439
441
  - spec/tshield/fixtures/proto/test_services_pb.rb
440
442
  - spec/tshield/grpc_spec.rb
441
443
  - spec/tshield/options_spec.rb
@@ -447,7 +449,7 @@ homepage: https://github.com/diegorubin/tshield
447
449
  licenses:
448
450
  - MIT
449
451
  metadata: {}
450
- post_install_message:
452
+ post_install_message:
451
453
  rdoc_options: []
452
454
  require_paths:
453
455
  - lib
@@ -462,25 +464,26 @@ required_rubygems_version: !ruby/object:Gem::Requirement
462
464
  - !ruby/object:Gem::Version
463
465
  version: '0'
464
466
  requirements: []
465
- rubyforge_project:
466
- rubygems_version: 2.6.14.4
467
- signing_key:
467
+ rubygems_version: 3.0.8
468
+ signing_key:
468
469
  specification_version: 4
469
470
  summary: Proxy for mocks API responses
470
471
  test_files:
471
- - spec/spec_helper.rb
472
- - spec/tshield/sessions_spec.rb
473
- - spec/tshield/configuration_spec.rb
472
+ - spec/tshield/options_spec.rb
474
473
  - spec/tshield/controllers/requests_spec.rb
475
- - spec/tshield/fixtures/matching/example.json
476
- - spec/tshield/fixtures/proto/test_services_pb.rb
477
- - spec/tshield/fixtures/config/tshield-with-send-content-type-header.yml
478
- - spec/tshield/fixtures/config/tshield-with-send-content-type-header_as_false.yml
479
- - spec/tshield/fixtures/config/tshield.yml
480
- - spec/tshield/fixtures/config/tshield-without-grpc.yml
481
- - spec/tshield/fixtures/filters/example_filter.rb
482
- - spec/tshield/grpc_spec.rb
474
+ - spec/tshield/configuration_spec.rb
483
475
  - spec/tshield/after_filter_spec.rb
484
476
  - spec/tshield/request_vcr_spec.rb
477
+ - spec/tshield/sessions_spec.rb
485
478
  - spec/tshield/request_matching_spec.rb
486
- - spec/tshield/options_spec.rb
479
+ - spec/tshield/grpc_spec.rb
480
+ - spec/tshield/fixtures/config/tshield-without-grpc.yml
481
+ - spec/tshield/fixtures/config/tshield.yml
482
+ - spec/tshield/fixtures/config/tshield-with-send-content-type-header_as_false.yml
483
+ - spec/tshield/fixtures/config/tshield-with-send-content-type-header.yml
484
+ - spec/tshield/fixtures/proto/test_services_pb.rb
485
+ - spec/tshield/fixtures/filters/example_filter.rb
486
+ - spec/tshield/fixtures/matching/empty.json
487
+ - spec/tshield/fixtures/matching/invalid_matching_file.json
488
+ - spec/tshield/fixtures/matching/example.json
489
+ - spec/spec_helper.rb