tshield 0.11.8.0 → 0.11.9.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/lib/tshield/controllers/helpers/session_helpers.rb +4 -4
- data/lib/tshield/controllers/requests.rb +9 -25
- data/lib/tshield/counter.rb +7 -7
- data/lib/tshield/server.rb +0 -1
- data/lib/tshield/version.rb +1 -1
- data/spec/tshield/controllers/requests_spec.rb +60 -0
- data/tshield.gemspec +0 -1
- metadata +10 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8500d36e8b1861611e519cc93e40f176622a24d890f73615fa9852d83b12d530
|
4
|
+
data.tar.gz: e5e8dcccd4a31ba89cba70c328f533c1128fb7a8917fdcdec5bbb74cd6832b08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4780911e56839db9afd8a28dbc5759e3cd1d8a604c195c8f5921258cf0bcddf0d8042764e775b871088ac41b0791f14109ed8538c9ad5f991be35a225098c989
|
7
|
+
data.tar.gz: 65ce05ffd2f63a68de6e91d9f34d2fe057376f32cf860132d5aca54455a16f97987c90b8af0785d03006c0aaa72cf18f58bfe8e079e2571e8ba3d07e51ded190
|
@@ -10,14 +10,14 @@ module TShield
|
|
10
10
|
session[:name] if session
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.current_session_call(request,
|
13
|
+
def self.current_session_call(request, callid, method)
|
14
14
|
session = TShield::Sessions.current(request.ip)
|
15
|
-
session ? session[:counter].current(
|
15
|
+
session ? session[:counter].current(callid, method) : 0
|
16
16
|
end
|
17
17
|
|
18
|
-
def self.update_session_call(request,
|
18
|
+
def self.update_session_call(request, callid, method)
|
19
19
|
session = TShield::Sessions.current(request.ip)
|
20
|
-
session[:counter].add(
|
20
|
+
session[:counter].add(callid, method) if session
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -20,28 +20,10 @@ module TShield
|
|
20
20
|
app.enable :logging
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
app.post(PATHP) do
|
28
|
-
treat(params, request, response)
|
29
|
-
end
|
30
|
-
|
31
|
-
app.put(PATHP) do
|
32
|
-
treat(params, request, response)
|
33
|
-
end
|
34
|
-
|
35
|
-
app.patch(PATHP) do
|
36
|
-
treat(params, request, response)
|
37
|
-
end
|
38
|
-
|
39
|
-
app.head(PATHP) do
|
40
|
-
treat(params, request, response)
|
41
|
-
end
|
42
|
-
|
43
|
-
app.delete(PATHP) do
|
44
|
-
treat(params, request, response)
|
23
|
+
%w[get post put patch head delete].each do |http_method|
|
24
|
+
app.send(http_method, PATHP) do
|
25
|
+
treat(params, request, response)
|
26
|
+
end
|
45
27
|
end
|
46
28
|
end
|
47
29
|
|
@@ -55,12 +37,14 @@ module TShield
|
|
55
37
|
|
56
38
|
def treat(params, request, _response)
|
57
39
|
path = params.fetch('captures', [])[0]
|
40
|
+
callid = "#{path}?#{request.env['QUERY_STRING']}"
|
58
41
|
|
59
42
|
method = request.request_method
|
60
43
|
request_content_type = request.content_type
|
44
|
+
|
61
45
|
session_name = TShield::Controllers::Helpers::SessionHelpers.current_session_name(request)
|
62
46
|
session_call = TShield::Controllers::Helpers::SessionHelpers
|
63
|
-
.current_session_call(request,
|
47
|
+
.current_session_call(request, callid, method)
|
64
48
|
|
65
49
|
options = {
|
66
50
|
method: method,
|
@@ -94,7 +78,7 @@ module TShield
|
|
94
78
|
"content-type=#{request_content_type} "\
|
95
79
|
"session=#{session_name} call=#{session_call}"
|
96
80
|
)
|
97
|
-
TShield::Controllers::Helpers::SessionHelpers.update_session_call(request,
|
81
|
+
TShield::Controllers::Helpers::SessionHelpers.update_session_call(request, callid, method)
|
98
82
|
|
99
83
|
status api_response.status
|
100
84
|
headers api_response.headers
|
@@ -103,7 +87,7 @@ module TShield
|
|
103
87
|
|
104
88
|
def add_headers(headers, path)
|
105
89
|
(configuration.get_headers(domain(path)) || {}).each do |source, destiny|
|
106
|
-
headers[destiny] = request.env[source]
|
90
|
+
headers[destiny] = request.env[source] if request.env[source]
|
107
91
|
end
|
108
92
|
end
|
109
93
|
|
data/lib/tshield/counter.rb
CHANGED
@@ -7,16 +7,16 @@ module TShield
|
|
7
7
|
@requests = {}
|
8
8
|
end
|
9
9
|
|
10
|
-
def add(
|
11
|
-
|
12
|
-
requests_to_method =
|
10
|
+
def add(callid, method)
|
11
|
+
requests_to_callid = @requests.fetch(callid, {})
|
12
|
+
requests_to_method = requests_to_callid.fetch(method, 0)
|
13
13
|
|
14
|
-
|
15
|
-
@requests[
|
14
|
+
requests_to_callid[method] = requests_to_method + 1
|
15
|
+
@requests[callid] = requests_to_callid
|
16
16
|
end
|
17
17
|
|
18
|
-
def current(
|
19
|
-
@requests.fetch(
|
18
|
+
def current(callid, method)
|
19
|
+
@requests.fetch(callid, {}).fetch(method, 0)
|
20
20
|
end
|
21
21
|
|
22
22
|
def to_json(options = {})
|
data/lib/tshield/server.rb
CHANGED
data/lib/tshield/version.rb
CHANGED
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'tshield/controllers/requests'
|
4
|
+
require 'spec_helper'
|
5
|
+
|
6
|
+
# Class used to test helpers
|
7
|
+
class MockController
|
8
|
+
include TShield::Controllers::Requests::Helpers
|
9
|
+
def initialize(mock_logger)
|
10
|
+
@mock_logger = mock_logger
|
11
|
+
end
|
12
|
+
|
13
|
+
def logger
|
14
|
+
@mock_logger
|
15
|
+
end
|
16
|
+
|
17
|
+
def status(_value); end
|
18
|
+
|
19
|
+
def headers(_value); end
|
20
|
+
|
21
|
+
def body(_value); end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe TShield::Controllers::Requests do
|
25
|
+
before(:each) do
|
26
|
+
@mock_logger = double
|
27
|
+
@controller = MockController.new(@mock_logger)
|
28
|
+
allow(TShield::Controllers::Helpers::SessionHelpers).to receive(:current_session_call)
|
29
|
+
end
|
30
|
+
context 'on treat request' do
|
31
|
+
context 'on update session call' do
|
32
|
+
it 'should call update_session_call with query params' do
|
33
|
+
params = { 'captures' => ['/'] }
|
34
|
+
|
35
|
+
request = double
|
36
|
+
matcher = double
|
37
|
+
matched_response = double
|
38
|
+
|
39
|
+
allow(request).to receive(:request_method).and_return('GET')
|
40
|
+
allow(request).to receive(:content_type).and_return('application/json')
|
41
|
+
allow(request).to receive(:ip).and_return('0.0.0.0')
|
42
|
+
allow(request).to receive(:env).and_return('QUERY_STRING' => 'a=b')
|
43
|
+
allow(TShield::RequestMatching).to receive(:new).and_return(matcher)
|
44
|
+
allow(matcher).to receive(:match_request).and_return(matched_response)
|
45
|
+
allow(matched_response).to receive(:original).and_return(false)
|
46
|
+
allow(matched_response).to receive(:status).and_return(200)
|
47
|
+
allow(matched_response).to receive(:headers).and_return({})
|
48
|
+
allow(matched_response).to receive(:body).and_return('')
|
49
|
+
allow(@mock_logger).to receive(:info)
|
50
|
+
|
51
|
+
expect(TShield::Controllers::Helpers::SessionHelpers)
|
52
|
+
.to receive(:current_session_call).with(request, '/?a=b', 'GET')
|
53
|
+
expect(TShield::Controllers::Helpers::SessionHelpers)
|
54
|
+
.to receive(:update_session_call).with(request, '/?a=b', 'GET')
|
55
|
+
|
56
|
+
@controller.treat(params, request, nil)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/tshield.gemspec
CHANGED
@@ -25,7 +25,6 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.required_ruby_version = '>= 2.3'
|
26
26
|
|
27
27
|
s.add_dependency('byebug', '~> 11.0', '>= 11.0.1')
|
28
|
-
s.add_dependency('haml', '~> 4.0', '>= 4.0.7')
|
29
28
|
s.add_dependency('httparty', '~> 0.14', '>= 0.14.0')
|
30
29
|
s.add_dependency('json', '~> 2.0', '>= 2.0')
|
31
30
|
s.add_dependency('sinatra', '~> 1.4', '>= 1.4.0')
|
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.11.
|
4
|
+
version: 0.11.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diego Rubin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: byebug
|
@@ -31,26 +31,6 @@ dependencies:
|
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 11.0.1
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: haml
|
36
|
-
requirement: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '4.0'
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 4.0.7
|
44
|
-
type: :runtime
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: !ruby/object:Gem::Requirement
|
47
|
-
requirements:
|
48
|
-
- - "~>"
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '4.0'
|
51
|
-
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 4.0.7
|
54
34
|
- !ruby/object:Gem::Dependency
|
55
35
|
name: httparty
|
56
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -381,6 +361,7 @@ files:
|
|
381
361
|
- spec/spec_helper.rb
|
382
362
|
- spec/tshield/after_filter_spec.rb
|
383
363
|
- spec/tshield/configuration_spec.rb
|
364
|
+
- spec/tshield/controllers/requests_spec.rb
|
384
365
|
- spec/tshield/fixtures/config/tshield.yml
|
385
366
|
- spec/tshield/fixtures/filters/example_filter.rb
|
386
367
|
- spec/tshield/fixtures/matching/example.json
|
@@ -407,17 +388,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
407
388
|
- !ruby/object:Gem::Version
|
408
389
|
version: '0'
|
409
390
|
requirements: []
|
410
|
-
rubygems_version: 3.0.
|
391
|
+
rubygems_version: 3.0.6
|
411
392
|
signing_key:
|
412
393
|
specification_version: 4
|
413
394
|
summary: Proxy for mocks API responses
|
414
395
|
test_files:
|
396
|
+
- spec/spec_helper.rb
|
415
397
|
- spec/tshield/options_spec.rb
|
416
398
|
- spec/tshield/configuration_spec.rb
|
417
|
-
- spec/tshield/request_matching_spec.rb
|
418
|
-
- spec/tshield/fixtures/matching/example.json
|
419
|
-
- spec/tshield/fixtures/config/tshield.yml
|
420
|
-
- spec/tshield/fixtures/filters/example_filter.rb
|
421
399
|
- spec/tshield/request_vcr_spec.rb
|
400
|
+
- spec/tshield/controllers/requests_spec.rb
|
422
401
|
- spec/tshield/after_filter_spec.rb
|
423
|
-
- spec/
|
402
|
+
- spec/tshield/fixtures/config/tshield.yml
|
403
|
+
- spec/tshield/fixtures/matching/example.json
|
404
|
+
- spec/tshield/fixtures/filters/example_filter.rb
|
405
|
+
- spec/tshield/request_matching_spec.rb
|