tshield 0.11.20.0 → 0.12.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 +4 -4
- data/README.md +11 -0
- data/lib/tshield/configuration.rb +5 -0
- data/lib/tshield/request_vcr.rb +2 -2
- data/lib/tshield/version.rb +2 -2
- data/spec/tshield/configuration_spec.rb +27 -0
- data/spec/tshield/request_vcr_spec.rb +49 -0
- data/tshield.gemspec +5 -6
- metadata +31 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b027cb3ab381c02f5e74668df35812a9056f2ea67be29103905d3a965168a449
|
4
|
+
data.tar.gz: 71c06f7a53ba24daafbf1c42f16ed02d05d00be2f663b2c52ae39e67377aa241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8829db78bef723d0a9afab28bcbd3d52127d4fff48ea098482ebc3fff1bb017a751b0aef1315eb4eaf67094c836168c601e9fc93af444f05f86c50cade2be6f
|
7
|
+
data.tar.gz: a5f981a9d81ff8415f60e1d17572d56cf3d6112899b5a2e67bd17cebe69c1e49c48818c0ba6d4009e03e64476d10b7ccf338a4171d822b316e7305cf6a777c2c
|
data/README.md
CHANGED
@@ -68,6 +68,17 @@ domains:
|
|
68
68
|
- /users
|
69
69
|
```
|
70
70
|
|
71
|
+
**Windows Compatibility:** If you need to use Tshield in Windows SO, change the config file and set the windows_compatibility to true.
|
72
|
+
|
73
|
+
Eg:
|
74
|
+
```yaml
|
75
|
+
windows_compatibility: true
|
76
|
+
request:
|
77
|
+
# wait time for real service
|
78
|
+
timeout: 8
|
79
|
+
...
|
80
|
+
```
|
81
|
+
|
71
82
|
## Config options for Pattern Matching
|
72
83
|
|
73
84
|
An example of file to create a stub:
|
@@ -32,6 +32,7 @@ module TShield
|
|
32
32
|
attr_reader :domains
|
33
33
|
attr_reader :tcp_servers
|
34
34
|
attr_reader :session_path
|
35
|
+
attr_reader :windows_compatibility
|
35
36
|
|
36
37
|
def initialize(attributes)
|
37
38
|
attributes.each { |key, value| instance_variable_set("@#{key}", value) }
|
@@ -103,6 +104,10 @@ module TShield
|
|
103
104
|
session_path || '/sessions'
|
104
105
|
end
|
105
106
|
|
107
|
+
def get_questionmark_char
|
108
|
+
windows_compatibility ? '%3f' : '?'
|
109
|
+
end
|
110
|
+
|
106
111
|
def grpc
|
107
112
|
defaults = { 'port' => 5678, 'proto_dir' => 'proto', 'services' => {} }
|
108
113
|
defaults.merge(@grpc || {})
|
data/lib/tshield/request_vcr.rb
CHANGED
@@ -140,9 +140,9 @@ module TShield
|
|
140
140
|
if url.size > 225
|
141
141
|
path = url.gsub(/(\?.*)/, '')
|
142
142
|
params = Digest::SHA1.hexdigest Regexp.last_match(1)
|
143
|
-
"#{path.gsub(%r{/}, '-').gsub(/^-/, '')}
|
143
|
+
"#{path.gsub(%r{/}, '-').gsub(/^-/, '')}#{configuration.get_questionmark_char}#{params}"
|
144
144
|
else
|
145
|
-
url.gsub(%r{/}, '-').gsub(/^-/, '')
|
145
|
+
url.gsub(%r{/}, '-').gsub(/^-/, '').gsub('?', configuration.get_questionmark_char)
|
146
146
|
end
|
147
147
|
end
|
148
148
|
end
|
data/lib/tshield/version.rb
CHANGED
@@ -64,6 +64,33 @@ describe TShield::Configuration do
|
|
64
64
|
expect(@configuration.get_domain_for('/api/four')).to be_nil
|
65
65
|
end
|
66
66
|
end
|
67
|
+
|
68
|
+
describe 'SO compatibility' do
|
69
|
+
it 'should be compatible with windows when configuration is true' do
|
70
|
+
allow(YAML).to receive(:safe_load).and_return({:windows_compatibility => true })
|
71
|
+
TShield::Configuration.clear
|
72
|
+
@configuration = TShield::Configuration.singleton
|
73
|
+
|
74
|
+
expect(@configuration.get_questionmark_char).to eq('%3f')
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should be compatible with Unix when configuration is false' do
|
78
|
+
allow(YAML).to receive(:safe_load).and_return({:windows_compatibility => false })
|
79
|
+
TShield::Configuration.clear
|
80
|
+
@configuration = TShield::Configuration.singleton
|
81
|
+
|
82
|
+
expect(@configuration.get_questionmark_char).to eq('?')
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'should be compatible with Unix when configuration is missing' do
|
86
|
+
allow(YAML).to receive(:safe_load).and_return({})
|
87
|
+
TShield::Configuration.clear
|
88
|
+
@configuration = TShield::Configuration.singleton
|
89
|
+
|
90
|
+
expect(@configuration.get_questionmark_char).to eq('?')
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
67
94
|
end
|
68
95
|
context 'on config not exist' do
|
69
96
|
before :each do
|
@@ -62,6 +62,8 @@ describe TShield::RequestVCR do
|
|
62
62
|
}
|
63
63
|
)
|
64
64
|
|
65
|
+
allow(@configuration).to receive(:get_questionmark_char).and_return('?')
|
66
|
+
|
65
67
|
allow(HTTParty).to receive(:send).and_return(RawResponse.new)
|
66
68
|
file_double = double
|
67
69
|
|
@@ -83,6 +85,53 @@ describe TShield::RequestVCR do
|
|
83
85
|
method: 'GET',
|
84
86
|
call: 0
|
85
87
|
end
|
88
|
+
|
89
|
+
it 'should create response directory in windows standard' do
|
90
|
+
|
91
|
+
allow(@configuration).to receive(:domains).and_return(
|
92
|
+
'example.org' => {
|
93
|
+
'skip_query_params' => []
|
94
|
+
}
|
95
|
+
)
|
96
|
+
|
97
|
+
allow(@configuration).to receive(:get_questionmark_char).and_return('%3f')
|
98
|
+
|
99
|
+
allow(HTTParty).to receive(:send).and_return(RawResponse.new)
|
100
|
+
file_double = double
|
101
|
+
|
102
|
+
allow(File).to receive(:join)
|
103
|
+
.with('./requests/example.org', '%3fparam=value')
|
104
|
+
.and_return('./requests/example.org/%3fparam=value')
|
105
|
+
allow(File).to receive(:join)
|
106
|
+
.with('./requests/example.org/%3fparam=value', 'get')
|
107
|
+
.and_return('./requests/example.org/%3fparam=value/get')
|
108
|
+
allow(File).to receive(:join)
|
109
|
+
.with('./requests/example.org/%3fparam=value/get', '0')
|
110
|
+
.and_return('./requests/example.org/%3fparam=value/get/0')
|
111
|
+
|
112
|
+
allow(file_double).to receive(:read).and_return('{}')
|
113
|
+
|
114
|
+
expect(File).to receive('open')
|
115
|
+
.with('./requests/example.org/%3fparam=value/get/0.content', 'w')
|
116
|
+
.and_return(file_double)
|
117
|
+
|
118
|
+
expect(File).to receive('open')
|
119
|
+
.with('./requests/example.org/%3fparam=value/get/0.json', 'w')
|
120
|
+
.and_return(file_double)
|
121
|
+
|
122
|
+
expect(file_double).to receive(:write).ordered.with('this is the body')
|
123
|
+
expect(file_double).to receive(:write)
|
124
|
+
.with("{\n \"status\": 200,\n \"headers\": {\n }\n}")
|
125
|
+
expect(file_double).to receive(:close)
|
126
|
+
expect(file_double).to receive(:close)
|
127
|
+
|
128
|
+
TShield::RequestVCR.new '/',
|
129
|
+
raw_query: 'param=value',
|
130
|
+
method: 'GET',
|
131
|
+
call: 0
|
132
|
+
end
|
133
|
+
|
134
|
+
|
86
135
|
end
|
87
136
|
end
|
88
137
|
|
data/tshield.gemspec
CHANGED
@@ -22,19 +22,18 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.test_files = Dir['spec/**/*']
|
24
24
|
|
25
|
-
s.required_ruby_version = '>= 2.
|
25
|
+
s.required_ruby_version = '>= 2.4'
|
26
26
|
|
27
|
-
s.add_dependency('byebug', '~> 11.0', '>= 11.0.1')
|
28
27
|
s.add_dependency('grpc', '~> 1.28', '>= 1.28.0')
|
29
28
|
s.add_dependency('grpc-tools', '~> 1.28', '>= 1.28.0')
|
30
29
|
s.add_dependency('httparty', '~> 0.14', '>= 0.14.0')
|
31
30
|
s.add_dependency('json', '~> 2.0', '>= 2.0')
|
32
31
|
s.add_dependency('puma', '~> 4.3', '>= 4.3.3')
|
33
|
-
s.add_dependency('sinatra', '~> 1
|
32
|
+
s.add_dependency('sinatra', '~> 2.1', '>= 2.1.0')
|
34
33
|
s.add_dependency('sinatra-cross_origin', '~> 0.4.0', '>= 0.4')
|
35
|
-
s.add_development_dependency('coveralls')
|
34
|
+
s.add_development_dependency('coveralls', '~> 0.8', '>= 0.8.23')
|
36
35
|
s.add_development_dependency('cucumber', '~> 3.1', '>= 3.1.2')
|
37
|
-
s.add_development_dependency('guard', '~> 2.
|
36
|
+
s.add_development_dependency('guard', '~> 2.16', '>= 2.16.2')
|
38
37
|
s.add_development_dependency('guard-rspec', '~> 4.7', '>= 4.7.3')
|
39
38
|
s.add_development_dependency('rake', '>= 10.0', '~> 13.0')
|
40
39
|
s.add_development_dependency('rdoc', '~> 6.0', '>= 6.0')
|
@@ -42,6 +41,6 @@ Gem::Specification.new do |s|
|
|
42
41
|
s.add_development_dependency('rspec', '~> 3.5', '>= 3.5.0')
|
43
42
|
s.add_development_dependency('rubocop', '~> 0.73.0', '>= 0.73.0')
|
44
43
|
s.add_development_dependency('rubocop-rails', '~> 2.2.0', '>= 2.2.1')
|
45
|
-
s.add_development_dependency('simplecov', '~> 0.
|
44
|
+
s.add_development_dependency('simplecov', '~> 0.16', '>= 0.16.1')
|
46
45
|
s.add_development_dependency('webmock', '~> 2.1', '>= 2.1.0')
|
47
46
|
end
|
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.
|
4
|
+
version: 0.12.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diego Rubin
|
@@ -9,28 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: byebug
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - "~>"
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '11.0'
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 11.0.1
|
24
|
-
type: :runtime
|
25
|
-
prerelease: false
|
26
|
-
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
requirements:
|
28
|
-
- - "~>"
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '11.0'
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 11.0.1
|
34
14
|
- !ruby/object:Gem::Dependency
|
35
15
|
name: grpc
|
36
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -137,20 +117,20 @@ dependencies:
|
|
137
117
|
requirements:
|
138
118
|
- - ">="
|
139
119
|
- !ruby/object:Gem::Version
|
140
|
-
version: 1.
|
120
|
+
version: 2.1.0
|
141
121
|
- - "~>"
|
142
122
|
- !ruby/object:Gem::Version
|
143
|
-
version: '1
|
123
|
+
version: '2.1'
|
144
124
|
type: :runtime
|
145
125
|
prerelease: false
|
146
126
|
version_requirements: !ruby/object:Gem::Requirement
|
147
127
|
requirements:
|
148
128
|
- - ">="
|
149
129
|
- !ruby/object:Gem::Version
|
150
|
-
version: 1.
|
130
|
+
version: 2.1.0
|
151
131
|
- - "~>"
|
152
132
|
- !ruby/object:Gem::Version
|
153
|
-
version: '1
|
133
|
+
version: '2.1'
|
154
134
|
- !ruby/object:Gem::Dependency
|
155
135
|
name: sinatra-cross_origin
|
156
136
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,16 +155,22 @@ dependencies:
|
|
175
155
|
name: coveralls
|
176
156
|
requirement: !ruby/object:Gem::Requirement
|
177
157
|
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0.8'
|
178
161
|
- - ">="
|
179
162
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
163
|
+
version: 0.8.23
|
181
164
|
type: :development
|
182
165
|
prerelease: false
|
183
166
|
version_requirements: !ruby/object:Gem::Requirement
|
184
167
|
requirements:
|
168
|
+
- - "~>"
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0.8'
|
185
171
|
- - ">="
|
186
172
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
173
|
+
version: 0.8.23
|
188
174
|
- !ruby/object:Gem::Dependency
|
189
175
|
name: cucumber
|
190
176
|
requirement: !ruby/object:Gem::Requirement
|
@@ -209,22 +195,22 @@ dependencies:
|
|
209
195
|
name: guard
|
210
196
|
requirement: !ruby/object:Gem::Requirement
|
211
197
|
requirements:
|
212
|
-
- - ">="
|
213
|
-
- !ruby/object:Gem::Version
|
214
|
-
version: 2.15.0
|
215
198
|
- - "~>"
|
216
199
|
- !ruby/object:Gem::Version
|
217
|
-
version: '2.
|
200
|
+
version: '2.16'
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: 2.16.2
|
218
204
|
type: :development
|
219
205
|
prerelease: false
|
220
206
|
version_requirements: !ruby/object:Gem::Requirement
|
221
207
|
requirements:
|
222
|
-
- - ">="
|
223
|
-
- !ruby/object:Gem::Version
|
224
|
-
version: 2.15.0
|
225
208
|
- - "~>"
|
226
209
|
- !ruby/object:Gem::Version
|
227
|
-
version: '2.
|
210
|
+
version: '2.16'
|
211
|
+
- - ">="
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: 2.16.2
|
228
214
|
- !ruby/object:Gem::Dependency
|
229
215
|
name: guard-rspec
|
230
216
|
requirement: !ruby/object:Gem::Requirement
|
@@ -369,22 +355,22 @@ dependencies:
|
|
369
355
|
name: simplecov
|
370
356
|
requirement: !ruby/object:Gem::Requirement
|
371
357
|
requirements:
|
372
|
-
- - ">="
|
373
|
-
- !ruby/object:Gem::Version
|
374
|
-
version: 0.12.0
|
375
358
|
- - "~>"
|
376
359
|
- !ruby/object:Gem::Version
|
377
|
-
version: '0.
|
360
|
+
version: '0.16'
|
361
|
+
- - ">="
|
362
|
+
- !ruby/object:Gem::Version
|
363
|
+
version: 0.16.1
|
378
364
|
type: :development
|
379
365
|
prerelease: false
|
380
366
|
version_requirements: !ruby/object:Gem::Requirement
|
381
367
|
requirements:
|
382
|
-
- - ">="
|
383
|
-
- !ruby/object:Gem::Version
|
384
|
-
version: 0.12.0
|
385
368
|
- - "~>"
|
386
369
|
- !ruby/object:Gem::Version
|
387
|
-
version: '0.
|
370
|
+
version: '0.16'
|
371
|
+
- - ">="
|
372
|
+
- !ruby/object:Gem::Version
|
373
|
+
version: 0.16.1
|
388
374
|
- !ruby/object:Gem::Dependency
|
389
375
|
name: webmock
|
390
376
|
requirement: !ruby/object:Gem::Requirement
|
@@ -467,7 +453,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
467
453
|
requirements:
|
468
454
|
- - ">="
|
469
455
|
- !ruby/object:Gem::Version
|
470
|
-
version: '2.
|
456
|
+
version: '2.4'
|
471
457
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
472
458
|
requirements:
|
473
459
|
- - ">="
|