tshield 0.10.0.0 → 0.11.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.
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ require 'tshield/request_vcr'
6
+
7
+ describe TShield::RequestVCR do
8
+ before :each do
9
+ @configuration = double
10
+ allow(TShield::Configuration)
11
+ .to receive(:singleton).and_return(@configuration)
12
+ allow(@configuration).to receive(:get_before_filters).and_return([])
13
+ allow(@configuration).to receive(:get_after_filters).and_return([])
14
+ allow(@configuration).to receive(:request).and_return('timeout' => 10)
15
+ allow(@configuration).to receive(:get_domain_for).and_return('example.org')
16
+ allow(TShield::Options).to receive_message_chain(:instance, :break?)
17
+ end
18
+
19
+ describe 'when save response' do
20
+ it 'should write response body, request status and headers' do
21
+ allow_any_instance_of(TShield::RequestVCR).to receive(:exists)
22
+ .and_return(false)
23
+ allow_any_instance_of(TShield::RequestVCR).to receive(:destiny)
24
+ allow(HTTParty).to receive(:send).and_return(RawResponse.new)
25
+
26
+ write_spy = double
27
+ allow(File).to receive(:open).and_return(write_spy)
28
+
29
+ expect(write_spy).to receive(:write).ordered.with('this is the body')
30
+ expect(write_spy).to receive(:write)
31
+ .ordered
32
+ .with("{\n \"status\": 200,\n \"headers\": {\n }\n}")
33
+ allow(write_spy).to receive(:close)
34
+
35
+ TShield::RequestVCR.new '/', method: 'GET'
36
+ end
37
+
38
+ describe 'and query params exists in list to skip' do
39
+ before :each do
40
+ allow(@configuration).to receive(:get_name).and_return('example.org')
41
+ allow(@configuration).to receive(:cache_request?).and_return(true)
42
+ allow(File).to receive(:join).with('requests')
43
+ .and_return('./requests')
44
+ allow(File).to receive(:join).with('./requests', 'example.org')
45
+ .and_return('./requests/example.org')
46
+ end
47
+
48
+ it 'should create response directory without query param' do
49
+ allow(File).to receive(:join)
50
+ .with('./requests/example.org', '?allowed=true')
51
+ .and_return('./requests/example.org/?allowed=true')
52
+ allow(File).to receive(:join)
53
+ .with('./requests/example.org/?allowed=true', 'get')
54
+ .and_return('./requests/example.org/?allowed=true/get')
55
+ allow(File).to receive(:join)
56
+ .with('./requests/example.org/?allowed=true/get', '0')
57
+ .and_return('./requests/example.org/?allowed=true/get/0')
58
+
59
+ allow(@configuration).to receive(:domains).and_return(
60
+ 'example.org' => {
61
+ 'skip_query_params' => ['skipped']
62
+ }
63
+ )
64
+
65
+ allow(HTTParty).to receive(:send).and_return(RawResponse.new)
66
+ file_double = double
67
+
68
+ allow(file_double).to receive(:read).and_return('{}')
69
+ expect(File).to receive('open')
70
+ .with('./requests/example.org/?allowed=true/get/0.json', 'w')
71
+ .and_return(file_double)
72
+ expect(File).to receive('open')
73
+ .with('./requests/example.org/?allowed=true/get/0.content', 'w')
74
+ .and_return(file_double)
75
+ expect(file_double).to receive(:write).ordered.with('this is the body')
76
+ expect(file_double).to receive(:write)
77
+ .with("{\n \"status\": 200,\n \"headers\": {\n }\n}")
78
+ expect(file_double).to receive(:close)
79
+ expect(file_double).to receive(:close)
80
+
81
+ TShield::RequestVCR.new '/',
82
+ raw_query: 'allowed=true&skipped=1',
83
+ method: 'GET'
84
+ end
85
+ end
86
+ end
87
+
88
+ class RawResponse
89
+ def headers
90
+ []
91
+ end
92
+
93
+ def body
94
+ 'this is the body'
95
+ end
96
+
97
+ def code
98
+ 200
99
+ end
100
+ end
101
+ end
data/tshield.gemspec CHANGED
@@ -30,10 +30,14 @@ Gem::Specification.new do |s|
30
30
  s.add_dependency('json', '~> 2.0', '>= 2.0')
31
31
  s.add_dependency('sinatra', '~> 1.4', '>= 1.4.0')
32
32
  s.add_development_dependency('cucumber', '~> 3.1', '>= 3.1.2')
33
+ s.add_development_dependency('guard', '~> 2.15', '>= 2.15.0')
34
+ s.add_development_dependency('guard-rspec', '~> 4.7', '>= 4.7.3')
33
35
  s.add_development_dependency('rake', '~> 10.0', '>= 10.0')
34
36
  s.add_development_dependency('rdoc', '~> 6.0', '>= 6.0')
35
37
  s.add_development_dependency('reek', '~> 5.4.0', '>= 5.4.0')
36
38
  s.add_development_dependency('rspec', '~> 3.5', '>= 3.5.0')
39
+ s.add_development_dependency('rubocop', '~> 0.73.0', '>= 0.73.0')
40
+ s.add_development_dependency('rubocop-rails', '~> 2.2.0', '>= 2.2.1')
37
41
  s.add_development_dependency('simplecov', '~> 0.12', '>= 0.12.0')
38
42
  s.add_development_dependency('webmock', '~> 2.1', '>= 2.1.0')
39
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tshield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0.0
4
+ version: 0.11.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego Rubin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-30 00:00:00.000000000 Z
11
+ date: 2019-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -130,6 +130,46 @@ dependencies:
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: 3.1.2
133
+ - !ruby/object:Gem::Dependency
134
+ name: guard
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 2.15.0
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '2.15'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 2.15.0
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.15'
153
+ - !ruby/object:Gem::Dependency
154
+ name: guard-rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '4.7'
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: 4.7.3
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '4.7'
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 4.7.3
133
173
  - !ruby/object:Gem::Dependency
134
174
  name: rake
135
175
  requirement: !ruby/object:Gem::Requirement
@@ -210,6 +250,46 @@ dependencies:
210
250
  - - "~>"
211
251
  - !ruby/object:Gem::Version
212
252
  version: '3.5'
253
+ - !ruby/object:Gem::Dependency
254
+ name: rubocop
255
+ requirement: !ruby/object:Gem::Requirement
256
+ requirements:
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: 0.73.0
260
+ - - "~>"
261
+ - !ruby/object:Gem::Version
262
+ version: 0.73.0
263
+ type: :development
264
+ prerelease: false
265
+ version_requirements: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: 0.73.0
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: 0.73.0
273
+ - !ruby/object:Gem::Dependency
274
+ name: rubocop-rails
275
+ requirement: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: 2.2.0
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: 2.2.1
283
+ type: :development
284
+ prerelease: false
285
+ version_requirements: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - "~>"
288
+ - !ruby/object:Gem::Version
289
+ version: 2.2.0
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: 2.2.1
213
293
  - !ruby/object:Gem::Dependency
214
294
  name: simplecov
215
295
  requirement: !ruby/object:Gem::Requirement
@@ -267,12 +347,16 @@ files:
267
347
  - lib/tshield/before_filter.rb
268
348
  - lib/tshield/configuration.rb
269
349
  - lib/tshield/controller.rb
350
+ - lib/tshield/controllers/helpers/session_helpers.rb
270
351
  - lib/tshield/controllers/requests.rb
271
352
  - lib/tshield/controllers/sessions.rb
272
353
  - lib/tshield/counter.rb
354
+ - lib/tshield/extensions/string_extensions.rb
273
355
  - lib/tshield/logger.rb
274
356
  - lib/tshield/options.rb
275
357
  - lib/tshield/request.rb
358
+ - lib/tshield/request_matching.rb
359
+ - lib/tshield/request_vcr.rb
276
360
  - lib/tshield/response.rb
277
361
  - lib/tshield/server.rb
278
362
  - lib/tshield/sessions.rb
@@ -283,7 +367,10 @@ files:
283
367
  - spec/tshield/configuration_spec.rb
284
368
  - spec/tshield/fixtures/config/tshield.yml
285
369
  - spec/tshield/fixtures/filters/example_filter.rb
286
- - spec/tshield/request_spec.rb
370
+ - spec/tshield/fixtures/matching/example.json
371
+ - spec/tshield/options_spec.rb
372
+ - spec/tshield/request_matching_spec.rb
373
+ - spec/tshield/request_vcr_spec.rb
287
374
  - tshield.gemspec
288
375
  homepage: https://github.com/diegorubin/tshield
289
376
  licenses:
@@ -309,9 +396,12 @@ signing_key:
309
396
  specification_version: 4
310
397
  summary: Proxy for mocks API responses
311
398
  test_files:
399
+ - spec/tshield/options_spec.rb
312
400
  - spec/tshield/configuration_spec.rb
313
- - spec/tshield/request_spec.rb
401
+ - spec/tshield/request_matching_spec.rb
402
+ - spec/tshield/fixtures/matching/example.json
314
403
  - spec/tshield/fixtures/config/tshield.yml
315
404
  - spec/tshield/fixtures/filters/example_filter.rb
405
+ - spec/tshield/request_vcr_spec.rb
316
406
  - spec/tshield/after_filter_spec.rb
317
407
  - spec/spec_helper.rb
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- require 'tshield/request'
6
-
7
- describe TShield::Request do
8
- before :each do
9
- configuration = double
10
- allow(TShield::Configuration)
11
- .to receive(:singleton).and_return(configuration)
12
- allow(configuration).to receive(:get_before_filters).and_return([])
13
- allow(configuration).to receive(:get_after_filters).and_return([])
14
- allow(configuration).to receive(:request).and_return('timeout' => 10)
15
- allow(configuration).to receive(:get_domain_for).and_return('example.org')
16
- allow(TShield::Options).to receive_message_chain(:instance, :break?)
17
- end
18
-
19
- describe 'when save response' do
20
- it 'should write response body, request status and headers' do
21
- allow_any_instance_of(TShield::Request).to receive(:exists)
22
- .and_return(false)
23
- allow_any_instance_of(TShield::Request).to receive(:destiny)
24
- allow(HTTParty).to receive(:send).and_return(RawResponse.new)
25
-
26
- write_spy = double
27
- allow(File).to receive(:open).and_return(write_spy)
28
-
29
- expect(write_spy).to receive(:write).ordered.with('this is the body')
30
- expect(write_spy).to receive(:write)
31
- .ordered
32
- .with("{\n \"status\": 200,\n \"headers\": {\n }\n}")
33
- allow(write_spy).to receive(:close)
34
-
35
- TShield::Request.new '/', method: 'GET'
36
- end
37
- end
38
-
39
- class RawResponse
40
- def headers
41
- []
42
- end
43
-
44
- def body
45
- 'this is the body'
46
- end
47
-
48
- def code
49
- 200
50
- end
51
- end
52
- end