tshield 0.10.0.0 → 0.11.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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