http_logger 0.4.3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 42d833f6603f1388a733dcc558c3a8e23004ac2e
4
- data.tar.gz: 20d21f3e5dfa0413809092499c4769bf7aa2d303
2
+ SHA256:
3
+ metadata.gz: e8cd08ba96dbddfa8f11e4bcbebb2cdde1bc99c19a2603eb2253c1f48d173214
4
+ data.tar.gz: 0c11b8553de5807f784dd14276017a5b8b7bf6d393e296fb246835bcc6fa0b78
5
5
  SHA512:
6
- metadata.gz: fef1b14a5d854fab100449356b60539ed40076f61df7a4e946fb14b1e8effc50a48ef633876f02249fa5f0e5bb47ef4809e638b7c70ba27351446702fddb59aa
7
- data.tar.gz: 5b063e5050d9925a12d19ffa5efbe524f0fb01f27d08c2161c5b0d7cbd1dd90d2719f857ca6693b7344bd53235be25f85a7400988210a11df1ef7f4dfb9c3a5e
6
+ metadata.gz: 3b3bcc69fac4c32215adfa5dac3ba2c0312d67b51a7e6890349bb007a3508f1b91b1b8284c1d835684319e39af6045d2945d8703d43347e130abedffd81bf0fb
7
+ data.tar.gz: 1a0d722184351705fedb9245f0b74ee2fa315a3df44b956db9561b30bf69b3bce337d179d0f82cb9142239754dd2d2fb363101c1497b85111721079c5b42e1f3
data/Gemfile CHANGED
@@ -1,10 +1,11 @@
1
1
  source "http://rubygems.org"
2
2
 
3
-
4
3
  group :development do
5
- gem "debugger", :platform => "ruby_19"
4
+ gem "rake"
5
+ gem "byebug"
6
+ gem "webmock"
6
7
  gem "rspec"
8
+ gem "bump", "~> 0.10.0"
7
9
  gem "bundler"
8
- gem "jeweler"
9
- gem "fakeweb"
10
10
  end
11
+
data/Gemfile.lock CHANGED
@@ -1,79 +1,43 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- addressable (2.3.6)
5
- atomic (1.1.16)
6
- builder (3.2.2)
7
- columnize (0.3.6)
8
- debugger (1.2.1)
9
- columnize (>= 0.3.1)
10
- debugger-linecache (~> 1.1.1)
11
- debugger-ruby_core_source (~> 1.1.4)
12
- debugger-linecache (1.1.2)
13
- debugger-ruby_core_source (>= 1.1.1)
14
- debugger-ruby_core_source (1.1.4)
15
- descendants_tracker (0.0.4)
16
- thread_safe (~> 0.3, >= 0.3.1)
17
- diff-lcs (1.1.3)
18
- fakeweb (1.3.0)
19
- faraday (0.9.0)
20
- multipart-post (>= 1.2, < 3)
21
- git (1.2.6)
22
- github_api (0.11.3)
23
- addressable (~> 2.3)
24
- descendants_tracker (~> 0.0.1)
25
- faraday (~> 0.8, < 0.10)
26
- hashie (>= 1.2)
27
- multi_json (>= 1.7.5, < 2.0)
28
- nokogiri (~> 1.6.0)
29
- oauth2
30
- hashie (2.0.5)
31
- highline (1.6.21)
32
- jeweler (2.0.1)
33
- builder
34
- bundler (>= 1.0)
35
- git (>= 1.2.5)
36
- github_api
37
- highline (>= 1.6.15)
38
- nokogiri (>= 1.5.10)
39
- rake
40
- rdoc
41
- json (1.8.1)
42
- jwt (0.1.11)
43
- multi_json (>= 1.5)
44
- mini_portile (0.5.3)
45
- multi_json (1.9.2)
46
- multi_xml (0.5.5)
47
- multipart-post (2.0.0)
48
- nokogiri (1.6.1)
49
- mini_portile (~> 0.5.0)
50
- oauth2 (0.9.3)
51
- faraday (>= 0.8, < 0.10)
52
- jwt (~> 0.1.8)
53
- multi_json (~> 1.3)
54
- multi_xml (~> 0.5)
55
- rack (~> 1.2)
56
- rack (1.5.2)
57
- rake (10.2.2)
58
- rdoc (4.1.1)
59
- json (~> 1.4)
60
- rspec (2.9.0)
61
- rspec-core (~> 2.9.0)
62
- rspec-expectations (~> 2.9.0)
63
- rspec-mocks (~> 2.9.0)
64
- rspec-core (2.9.0)
65
- rspec-expectations (2.9.1)
66
- diff-lcs (~> 1.1.3)
67
- rspec-mocks (2.9.0)
68
- thread_safe (0.3.1)
69
- atomic (>= 1.1.7, < 2)
4
+ addressable (2.4.0)
5
+ bump (0.10.0)
6
+ byebug (11.1.3)
7
+ crack (0.4.5)
8
+ rexml
9
+ diff-lcs (1.4.4)
10
+ hashdiff (1.0.1)
11
+ rake (13.0.6)
12
+ rexml (3.2.5)
13
+ rspec (3.10.0)
14
+ rspec-core (~> 3.10.0)
15
+ rspec-expectations (~> 3.10.0)
16
+ rspec-mocks (~> 3.10.0)
17
+ rspec-core (3.10.1)
18
+ rspec-support (~> 3.10.0)
19
+ rspec-expectations (3.10.1)
20
+ diff-lcs (>= 1.2.0, < 2.0)
21
+ rspec-support (~> 3.10.0)
22
+ rspec-mocks (3.10.2)
23
+ diff-lcs (>= 1.2.0, < 2.0)
24
+ rspec-support (~> 3.10.0)
25
+ rspec-support (3.10.3)
26
+ webmock (3.13.0)
27
+ addressable (>= 2.3.6)
28
+ crack (>= 0.3.2)
29
+ hashdiff (>= 0.4.0, < 2.0.0)
70
30
 
71
31
  PLATFORMS
72
- ruby
32
+ x86_64-darwin-19
73
33
 
74
34
  DEPENDENCIES
35
+ bump (~> 0.10.0)
75
36
  bundler
76
- debugger
77
- fakeweb
78
- jeweler
37
+ byebug
38
+ rake
79
39
  rspec
40
+ webmock
41
+
42
+ BUNDLED WITH
43
+ 2.2.22
data/Rakefile CHANGED
@@ -9,24 +9,13 @@ rescue Bundler::BundlerError => e
9
9
  $stderr.puts "Run `bundle install` to install missing gems"
10
10
  exit e.status_code
11
11
  end
12
- require 'rake'
13
12
 
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "http_logger"
18
- gem.homepage = "http://github.com/railsware/http_logger"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Log your http api calls just like SQL queries}
21
- gem.description = %Q{This gem keep an eye on every Net::HTTP library usage and dump all request and response data to the log file}
22
- gem.email = "agresso@gmail.com"
23
- gem.authors = ["Bogdan Gusiev"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
13
+ require 'rake'
14
+ require 'bundler/gem_tasks'
27
15
 
28
16
  require 'rspec/core'
29
17
  require 'rspec/core/rake_task'
18
+
30
19
  RSpec::Core::RakeTask.new(:spec) do |spec|
31
20
  spec.pattern = FileList['spec/**/*_spec.rb']
32
21
  end
data/Readme.md CHANGED
@@ -24,6 +24,10 @@ HttpLogger.logger = Logger.new(...) # defaults to Rails.logger if Rails is defin
24
24
  HttpLogger.colorize = true # Default: true
25
25
  HttpLogger.ignore = [/newrelic\.com/]
26
26
  HttpLogger.log_headers = false # Default: false
27
+ HttpLogger.log_request_body = false # Default: true
28
+ HttpLogger.log_response_body = false # Default: true
29
+ HttpLogger.level = :info # Desired log level as a symbol. Default: :debug
30
+ HttpLogger.collapse_body_limit # Change default truncate limit. Default: 5000
27
31
  ```
28
32
 
29
33
  ## Alternative
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.7.0
data/http_logger.gemspec CHANGED
@@ -1,19 +1,19 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: http_logger 0.4.3 ruby lib
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "http_logger/version"
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "http_logger"
9
- s.version = "0.4.3"
8
+ s.name = "http_logger".freeze
9
+ s.version = HttpLogger::VERSION
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
- s.authors = ["Bogdan Gusiev"]
14
- s.date = "2014-04-04"
15
- s.description = "This gem keep an eye on every Net::HTTP library usage and dump all request and response data to the log file"
16
- s.email = "agresso@gmail.com"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["Bogdan Gusiev".freeze]
14
+ s.date = "2020-01-27"
15
+ s.description = "This gem keep an eye on every Net::HTTP library usage and dump all request and response data to the log file".freeze
16
+ s.email = "agresso@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE.txt"
19
19
  ]
@@ -34,33 +34,33 @@ Gem::Specification.new do |s|
34
34
  "spec/http_logger_spec.rb",
35
35
  "spec/spec_helper.rb"
36
36
  ]
37
- s.homepage = "http://github.com/railsware/http_logger"
38
- s.licenses = ["MIT"]
39
- s.rubygems_version = "2.2.2"
40
- s.summary = "Log your http api calls just like SQL queries"
37
+ s.homepage = "http://github.com/railsware/http_logger".freeze
38
+ s.licenses = ["MIT".freeze]
39
+ s.rubygems_version = "2.7.8".freeze
40
+ s.summary = "Log your http api calls just like SQL queries".freeze
41
41
 
42
42
  if s.respond_to? :specification_version then
43
43
  s.specification_version = 4
44
44
 
45
45
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_development_dependency(%q<debugger>, [">= 0"])
47
- s.add_development_dependency(%q<rspec>, [">= 0"])
48
- s.add_development_dependency(%q<bundler>, [">= 0"])
49
- s.add_development_dependency(%q<jeweler>, [">= 0"])
50
- s.add_development_dependency(%q<fakeweb>, [">= 0"])
46
+ s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
47
+ s.add_development_dependency(%q<webmock>.freeze, [">= 0"])
48
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
49
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
50
+ s.add_development_dependency(%q<jeweler>.freeze, [">= 0"])
51
51
  else
52
- s.add_dependency(%q<debugger>, [">= 0"])
53
- s.add_dependency(%q<rspec>, [">= 0"])
54
- s.add_dependency(%q<bundler>, [">= 0"])
55
- s.add_dependency(%q<jeweler>, [">= 0"])
56
- s.add_dependency(%q<fakeweb>, [">= 0"])
52
+ s.add_dependency(%q<byebug>.freeze, [">= 0"])
53
+ s.add_dependency(%q<webmock>.freeze, [">= 0"])
54
+ s.add_dependency(%q<rspec>.freeze, [">= 0"])
55
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
56
+ s.add_dependency(%q<jeweler>.freeze, [">= 0"])
57
57
  end
58
58
  else
59
- s.add_dependency(%q<debugger>, [">= 0"])
60
- s.add_dependency(%q<rspec>, [">= 0"])
61
- s.add_dependency(%q<bundler>, [">= 0"])
62
- s.add_dependency(%q<jeweler>, [">= 0"])
63
- s.add_dependency(%q<fakeweb>, [">= 0"])
59
+ s.add_dependency(%q<byebug>.freeze, [">= 0"])
60
+ s.add_dependency(%q<webmock>.freeze, [">= 0"])
61
+ s.add_dependency(%q<rspec>.freeze, [">= 0"])
62
+ s.add_dependency(%q<bundler>.freeze, [">= 0"])
63
+ s.add_dependency(%q<jeweler>.freeze, [">= 0"])
64
64
  end
65
65
  end
66
66
 
data/lib/http_logger.rb CHANGED
@@ -22,18 +22,26 @@ require 'set'
22
22
  #
23
23
  # cat /tmp/all.log
24
24
  class HttpLogger
25
+ AUTHORIZATION_HEADER = 'Authorization'
26
+
25
27
  class << self
26
28
  attr_accessor :collapse_body_limit
27
29
  attr_accessor :log_headers
30
+ attr_accessor :log_request_body
31
+ attr_accessor :log_response_body
28
32
  attr_accessor :logger
29
33
  attr_accessor :colorize
30
34
  attr_accessor :ignore
35
+ attr_accessor :level
31
36
  end
32
37
 
33
38
  self.log_headers = false
39
+ self.log_request_body = true
40
+ self.log_response_body = true
34
41
  self.colorize = true
35
42
  self.collapse_body_limit = 5000
36
43
  self.ignore = []
44
+ self.level = :debug
37
45
 
38
46
  def self.perform(*args, &block)
39
47
  instance.perform(*args, &block)
@@ -71,21 +79,30 @@ class HttpLogger
71
79
  end
72
80
 
73
81
  def request_url(http, request)
74
- URI.decode("http#{"s" if http.use_ssl?}://#{http.address}:#{http.port}#{request.path}")
82
+ URI::DEFAULT_PARSER.unescape("http#{"s" if http.use_ssl?}://#{http.address}:#{http.port}#{request.path}")
75
83
  end
76
84
 
77
85
  def log_request_headers(request)
78
86
  if self.class.log_headers
79
- request.each_capitalized { |k,v| log("HTTP request header", "#{k}: #{v}") }
87
+ request.each_capitalized do |k,v|
88
+ log_header(:request, k, v)
89
+ end
80
90
  end
81
91
  end
82
92
 
83
- HTTP_METHODS_WITH_BODY = Set.new(%w(POST PUT GET))
84
-
93
+ def log_header(type, name, value)
94
+ value = "<filtered>" if name == AUTHORIZATION_HEADER
95
+ log("HTTP #{type} header", "#{name}: #{value}")
96
+ end
97
+
98
+ HTTP_METHODS_WITH_BODY = Set.new(%w(POST PUT GET PATCH))
99
+
85
100
  def log_request_body(request)
86
- if HTTP_METHODS_WITH_BODY.include?(request.method)
87
- if (body = request.body) && !body.empty?
88
- log("Request body", truncate_body(body))
101
+ if self.class.log_request_body
102
+ if HTTP_METHODS_WITH_BODY.include?(request.method)
103
+ if (body = request.body) && !body.empty?
104
+ log("Request body", truncate_body(body))
105
+ end
89
106
  end
90
107
  end
91
108
  end
@@ -95,53 +112,74 @@ class HttpLogger
95
112
  end
96
113
 
97
114
  def log_response_headers(response)
98
- if self.class.log_headers
99
- response.each_capitalized { |k,v| log("HTTP response header", "#{k}: #{v}") }
115
+ if HttpLogger.log_headers
116
+ response.each_capitalized do |k,v|
117
+ log_header(:response, k, v)
118
+ end
100
119
  end
101
120
  end
102
121
 
103
122
  def log_response_body(body)
104
- if body.is_a?(Net::ReadAdapter)
105
- log("Response body", "<impossible to log>")
106
- else
107
- if body && !body.empty?
108
- log("Response body", truncate_body(body))
123
+ if HttpLogger.log_response_body
124
+ if body.is_a?(Net::ReadAdapter)
125
+ log("Response body", "<impossible to log>")
126
+ else
127
+ if body && !body.empty?
128
+ log("Response body", truncate_body(body))
129
+ end
109
130
  end
110
131
  end
111
132
  end
112
133
 
113
134
  def require_logging?(http, request)
114
- self.logger && !ignored?(http, request) && (http.started? || fakeweb?(http, request))
135
+
136
+ self.logger && !ignored?(http, request) && (http.started? || webmock?(http, request))
115
137
  end
116
138
 
117
139
  def ignored?(http, request)
118
140
  url = request_url(http, request)
119
- self.class.ignore.any? do |pattern|
141
+ HttpLogger.ignore.any? do |pattern|
120
142
  url =~ pattern
121
143
  end
122
144
  end
123
145
 
124
- def fakeweb?(http, request)
125
- return false unless defined?(::FakeWeb)
126
- uri = ::FakeWeb::Utility.request_uri_as_string(http, request)
146
+ def webmock?(http, request)
147
+ return false unless defined?(::WebMock)
148
+ uri = request_uri_as_string(http, request)
127
149
  method = request.method.downcase.to_sym
128
- ::FakeWeb.registered_uri?(method, uri)
150
+ signature = WebMock::RequestSignature.new(method, uri)
151
+ ::WebMock.registered_request?(signature)
152
+ end
153
+
154
+ def request_uri_as_string(net_http, request)
155
+ protocol = net_http.use_ssl? ? "https" : "http"
156
+
157
+ path = request.path
158
+ path = URI.parse(request.path).request_uri if request.path =~ /^http/
159
+
160
+ if request["authorization"] =~ /^Basic /
161
+ userinfo = WebMock::Utility.decode_userinfo_from_header(request["authorization"])
162
+ userinfo = WebMock::Utility.encode_unsafe_chars_in_userinfo(userinfo) + "@"
163
+ else
164
+ userinfo = ""
165
+ end
166
+
167
+ "#{protocol}://#{userinfo}#{net_http.address}:#{net_http.port}#{path}"
129
168
  end
130
169
 
131
170
  def truncate_body(body)
132
171
  if collapse_body_limit && collapse_body_limit > 0 && body && body.size >= collapse_body_limit
133
172
  body_piece_size = collapse_body_limit / 2
134
- body[0..body_piece_size] +
135
- "\n\n<some data truncated>\n\n" +
173
+ body[0..body_piece_size] +
174
+ "\n\n<some data truncated>\n\n" +
136
175
  body[(body.size - body_piece_size)..body.size]
137
176
  else
138
177
  body
139
178
  end
140
179
  end
141
180
 
142
-
143
181
  def log(message, dump)
144
- self.logger.debug(format_log_entry(message, dump))
182
+ self.logger.send(self.class.level, format_log_entry(message, dump))
145
183
  end
146
184
 
147
185
  def format_log_entry(message, dump = nil)
@@ -164,47 +202,31 @@ class HttpLogger
164
202
  end
165
203
  end
166
204
 
167
- class Net::HTTP
168
-
169
- def self.log_headers=(value)
170
- HttpLogger.deprecate_config("log_headers")
171
- HttpLogger.log_headers = value
172
- end
173
-
174
- def self.colorize=(value)
175
- HttpLogger.deprecate_config("colorize")
176
- HttpLogger.colorize = value
177
- end
178
-
179
- def self.logger=(value)
180
- HttpLogger.deprecate_config("logger")
181
- HttpLogger.logger = value
182
- end
183
-
184
-
185
- alias_method :request_without_logging, :request
186
-
205
+ block = lambda do |a|
206
+ # raise instance_methods.inspect
207
+ alias request_without_net_http_logger request
187
208
  def request(request, body = nil, &block)
188
209
  HttpLogger.perform(self, request, body) do
189
- request_without_logging(request, body, &block)
210
+ request_without_net_http_logger(request, body, &block)
190
211
  end
212
+
191
213
  end
214
+ end
192
215
 
216
+ if defined?(::WebMock)
217
+ klass = WebMock::HttpLibAdapters::NetHttpAdapter.instance_variable_get("@webMockNetHTTP")
218
+ # raise klass.instance_methods.inspect
219
+ klass.class_eval(&block)
193
220
  end
194
221
 
195
- if defined?(Rails)
196
222
 
197
- if !Rails.respond_to?(:application) || (Rails.application && Rails.application.config)
198
- # Rails2
199
- Rails.configuration.after_initialize do
200
- HttpLogger.logger = Rails.logger unless HttpLogger.logger
201
- end
202
- elsif defined?(ActiveSupport) && ActiveSupport.respond_to?(:on_load)
223
+ Net::HTTP.class_eval(&block)
224
+
225
+ if defined?(Rails)
226
+ if defined?(ActiveSupport) && ActiveSupport.respond_to?(:on_load)
203
227
  # Rails3
204
228
  ActiveSupport.on_load(:after_initialize) do
205
229
  HttpLogger.logger = Rails.logger unless HttpLogger.logger
206
230
  end
207
231
  end
208
232
  end
209
-
210
-
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require "uri"
3
+ require "base64"
3
4
 
4
5
  describe HttpLogger do
5
6
 
@@ -7,12 +8,20 @@ describe HttpLogger do
7
8
  # flush log
8
9
  f = File.open(LOGFILE, "w")
9
10
  f.close
11
+ stub_request(:any, url).to_return(
12
+ body: response_body,
13
+ headers: {"X-Http-logger" => true, **response_headers},
14
+ )
10
15
  end
11
16
 
17
+ let(:response_body) { "Success" }
18
+ let(:response_headers) { {} }
19
+ let(:request_headers) { {} }
20
+
12
21
  let(:url) { "http://google.com/" }
13
22
  let(:uri) { URI.parse(url) }
14
23
  let(:request) do
15
- Net::HTTP.get_response(uri)
24
+ Net::HTTP.get_response(uri, **request_headers)
16
25
  end
17
26
 
18
27
  let(:long_body) do
@@ -33,7 +42,7 @@ describe HttpLogger do
33
42
  let(:url) { "http://google.com?query=a%20b"}
34
43
 
35
44
  it { subject.should include("query=a b")}
36
-
45
+
37
46
  end
38
47
 
39
48
  context "when headers logging is on" do
@@ -45,10 +54,19 @@ describe HttpLogger do
45
54
  it { should include("HTTP response header") }
46
55
  it { should include("HTTP request header") }
47
56
 
57
+
58
+ context "authorization header" do
59
+
60
+ let(:request_headers) do
61
+ {'Authorization' => "Basic #{Base64.encode64('hello:world')}".strip}
62
+ end
63
+ it { should include("Authorization: <filtered>") }
64
+ end
65
+
48
66
  after(:each) do
49
67
  HttpLogger.log_headers = false
50
68
  end
51
-
69
+
52
70
  end
53
71
 
54
72
  describe "post request" do
@@ -60,8 +78,8 @@ describe HttpLogger do
60
78
  it {should include("Request body")}
61
79
  it {should include("a=hello&b=1")}
62
80
  context "with too long body" do
81
+ let(:response_body) { long_body }
63
82
  let(:url) do
64
- FakeWeb.register_uri(:post, "http://github.com", :body => long_body)
65
83
  "http://github.com/"
66
84
  end
67
85
  it { should include("12,Dodo case,dodo@case.com,tech@dodcase.com,single elimination\n")}
@@ -70,6 +88,7 @@ describe HttpLogger do
70
88
  end
71
89
 
72
90
  end
91
+
73
92
  describe "put request" do
74
93
  let(:request) do
75
94
  http = Net::HTTP.new(uri.host, uri.port)
@@ -81,7 +100,7 @@ describe HttpLogger do
81
100
  it {should include("Request body")}
82
101
  it {should include("a=hello&b=1")}
83
102
  end
84
-
103
+
85
104
  describe "generic request" do
86
105
  let(:request) do
87
106
  http = Net::HTTP.new(uri.host, uri.port)
@@ -94,10 +113,28 @@ describe HttpLogger do
94
113
  it {should include("a=hello&b=1")}
95
114
  end
96
115
 
116
+ context "when request body logging is off" do
117
+
118
+ before(:each) do
119
+ HttpLogger.log_request_body = false
120
+ end
121
+
122
+ let(:request) do
123
+ Net::HTTP.post_form(uri, {})
124
+ end
125
+
126
+ it { should_not include("Request body") }
127
+
128
+ after(:each) do
129
+ HttpLogger.log_request_body = true
130
+ end
131
+ end
132
+
97
133
  context "with long response body" do
98
134
 
135
+ let(:response_body) { long_body }
99
136
  let(:url) do
100
- FakeWeb.register_uri(:get, "http://github.com", :body => long_body)
137
+ stub_request(:get, "http://github.com/").to_return(body: long_body)
101
138
  "http://github.com"
102
139
  end
103
140
 
@@ -107,18 +144,56 @@ describe HttpLogger do
107
144
 
108
145
  end
109
146
 
147
+ context "when response body logging is off" do
148
+
149
+ before(:each) do
150
+ HttpLogger.log_response_body = false
151
+ end
152
+
153
+ let(:response_body) { long_body }
154
+ let(:url) do
155
+ "http://github.com"
156
+ end
157
+
158
+ it { should_not include("Response body") }
159
+
160
+ after(:each) do
161
+ HttpLogger.log_response_body = true
162
+ end
163
+ end
164
+
110
165
  context "ignore option is set" do
111
166
 
112
- let(:url) { "http://rpm.newrelic.com/hello/world"}
167
+ let(:url) do
168
+ "http://rpm.newrelic.com/hello/world"
169
+ end
113
170
 
114
171
  before(:each) do
115
172
  HttpLogger.ignore = [/rpm\.newrelic\.com/]
116
173
  end
117
174
 
118
175
  it { should be_empty}
119
-
176
+
120
177
  after(:each) do
121
178
  HttpLogger.ignore = []
122
179
  end
123
180
  end
181
+
182
+ context "when level is set" do
183
+
184
+ let(:url) do
185
+ stub_request(:get, "http://rpm.newrelic.com/hello/world").to_return(body: "")
186
+ "http://rpm.newrelic.com/hello/world"
187
+ end
188
+
189
+ before(:each) do
190
+ HttpLogger.level = :info
191
+ end
192
+
193
+ it { should_not be_empty }
194
+
195
+ after(:each) do
196
+ HttpLogger.level = :debug
197
+ end
198
+ end
124
199
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
- require 'fakeweb'
4
+ require 'webmock/rspec'
5
5
  require 'http_logger'
6
6
  require "logger"
7
7
  require "fileutils"
@@ -11,10 +11,9 @@ require "fileutils"
11
11
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
12
12
 
13
13
  LOGFILE = 'http.log'
14
- RSpec.configure do |config|
15
-
16
14
 
15
+ RSpec.configure do |config|
16
+ config.expect_with(:rspec) { |c| c.syntax = :should }
17
17
  FileUtils.rm_f(LOGFILE)
18
18
  HttpLogger.logger = Logger.new(LOGFILE)
19
-
20
19
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bogdan Gusiev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-04 00:00:00.000000000 Z
11
+ date: 2020-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: debugger
14
+ name: byebug
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: webmock
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: jeweler
56
+ name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: fakeweb
70
+ name: jeweler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -107,7 +107,7 @@ homepage: http://github.com/railsware/http_logger
107
107
  licenses:
108
108
  - MIT
109
109
  metadata: {}
110
- post_install_message:
110
+ post_install_message:
111
111
  rdoc_options: []
112
112
  require_paths:
113
113
  - lib
@@ -122,9 +122,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
124
  requirements: []
125
- rubyforge_project:
126
- rubygems_version: 2.2.2
127
- signing_key:
125
+ rubygems_version: 3.2.22
126
+ signing_key:
128
127
  specification_version: 4
129
128
  summary: Log your http api calls just like SQL queries
130
129
  test_files: []