http_logger 0.4.3 → 0.7.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 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: []