appsignal 2.5.3 → 2.6.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +10 -1
- data/.rubocop_todo.yml +1 -1
- data/.travis.yml +8 -1
- data/CHANGELOG.md +12 -0
- data/appsignal.gemspec +2 -2
- data/benchmark.rake +6 -0
- data/ext/agent.yml +35 -35
- data/ext/appsignal_extension.c +27 -9
- data/lib/appsignal.rb +15 -19
- data/lib/appsignal/auth_check.rb +2 -0
- data/lib/appsignal/capistrano.rb +2 -0
- data/lib/appsignal/cli.rb +2 -0
- data/lib/appsignal/cli/demo.rb +2 -0
- data/lib/appsignal/cli/diagnose.rb +2 -0
- data/lib/appsignal/cli/helpers.rb +2 -0
- data/lib/appsignal/cli/install.rb +15 -1
- data/lib/appsignal/cli/notify_of_deploy.rb +8 -0
- data/lib/appsignal/config.rb +44 -5
- data/lib/appsignal/demo.rb +2 -0
- data/lib/appsignal/event_formatter.rb +2 -0
- data/lib/appsignal/event_formatter/action_view/render_formatter.rb +2 -0
- data/lib/appsignal/event_formatter/active_record/instantiation_formatter.rb +2 -0
- data/lib/appsignal/event_formatter/active_record/sql_formatter.rb +2 -0
- data/lib/appsignal/event_formatter/elastic_search/search_formatter.rb +2 -0
- data/lib/appsignal/event_formatter/faraday/request_formatter.rb +2 -0
- data/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb +2 -0
- data/lib/appsignal/event_formatter/moped/query_formatter.rb +2 -0
- data/lib/appsignal/extension.rb +2 -0
- data/lib/appsignal/extension/jruby.rb +15 -13
- data/lib/appsignal/garbage_collection_profiler.rb +2 -0
- data/lib/appsignal/hooks.rb +2 -0
- data/lib/appsignal/hooks/action_cable.rb +2 -0
- data/lib/appsignal/hooks/active_support_notifications.rb +2 -0
- data/lib/appsignal/hooks/celluloid.rb +2 -0
- data/lib/appsignal/hooks/data_mapper.rb +2 -0
- data/lib/appsignal/hooks/delayed_job.rb +2 -0
- data/lib/appsignal/hooks/mongo_ruby_driver.rb +2 -0
- data/lib/appsignal/hooks/net_http.rb +2 -0
- data/lib/appsignal/hooks/passenger.rb +2 -0
- data/lib/appsignal/hooks/puma.rb +2 -0
- data/lib/appsignal/hooks/que.rb +2 -0
- data/lib/appsignal/hooks/rake.rb +2 -0
- data/lib/appsignal/hooks/redis.rb +2 -0
- data/lib/appsignal/hooks/sequel.rb +2 -0
- data/lib/appsignal/hooks/shoryuken.rb +6 -2
- data/lib/appsignal/hooks/sidekiq.rb +4 -2
- data/lib/appsignal/hooks/unicorn.rb +2 -0
- data/lib/appsignal/hooks/webmachine.rb +2 -0
- data/lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb +2 -0
- data/lib/appsignal/integrations/data_mapper.rb +2 -0
- data/lib/appsignal/integrations/delayed_job_plugin.rb +6 -2
- data/lib/appsignal/integrations/grape.rb +2 -0
- data/lib/appsignal/integrations/mongo_ruby_driver.rb +2 -0
- data/lib/appsignal/integrations/object.rb +2 -0
- data/lib/appsignal/integrations/padrino.rb +3 -4
- data/lib/appsignal/integrations/que.rb +2 -0
- data/lib/appsignal/integrations/railtie.rb +2 -0
- data/lib/appsignal/integrations/rake.rb +2 -0
- data/lib/appsignal/integrations/resque.rb +2 -0
- data/lib/appsignal/integrations/resque_active_job.rb +6 -2
- data/lib/appsignal/integrations/sinatra.rb +2 -0
- data/lib/appsignal/integrations/webmachine.rb +2 -0
- data/lib/appsignal/js_exception_transaction.rb +2 -0
- data/lib/appsignal/marker.rb +2 -0
- data/lib/appsignal/minutely.rb +2 -0
- data/lib/appsignal/rack/generic_instrumentation.rb +2 -0
- data/lib/appsignal/rack/js_exception_catcher.rb +2 -0
- data/lib/appsignal/rack/rails_instrumentation.rb +2 -0
- data/lib/appsignal/rack/sinatra_instrumentation.rb +2 -0
- data/lib/appsignal/rack/streaming_listener.rb +2 -0
- data/lib/appsignal/system.rb +2 -0
- data/lib/appsignal/transaction.rb +13 -10
- data/lib/appsignal/transmitter.rb +2 -0
- data/lib/appsignal/utils.rb +3 -1
- data/lib/appsignal/utils/{params_sanitizer.rb → hash_sanitizer.rb} +12 -11
- data/lib/appsignal/utils/query_params_sanitizer.rb +2 -0
- data/lib/appsignal/version.rb +3 -1
- data/lib/sequel/extensions/appsignal_integration.rb +2 -0
- data/resources/appsignal.yml.erb +5 -0
- data/spec/lib/appsignal/auth_check_spec.rb +11 -2
- data/spec/lib/appsignal/cli/install_spec.rb +33 -0
- data/spec/lib/appsignal/config_spec.rb +76 -18
- data/spec/lib/appsignal/extension_spec.rb +3 -3
- data/spec/lib/appsignal/integrations/padrino_spec.rb +8 -28
- data/spec/lib/appsignal/transaction_spec.rb +63 -30
- data/spec/lib/appsignal/utils/{params_sanitizer_spec.rb → hash_sanitizer_spec.rb} +6 -6
- data/spec/lib/appsignal_spec.rb +180 -158
- data/spec/support/helpers/std_streams_helper.rb +19 -12
- data/spec/support/project_fixture/config/appsignal.yml +21 -0
- metadata +11 -11
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Appsignal
|
2
4
|
class Hooks
|
3
5
|
# @api private
|
@@ -30,8 +32,10 @@ module Appsignal
|
|
30
32
|
class_name, method_name = class_and_method_name.split("#")
|
31
33
|
end
|
32
34
|
|
33
|
-
params = Appsignal::Utils::
|
34
|
-
|
35
|
+
params = Appsignal::Utils::HashSanitizer.sanitize(
|
36
|
+
args,
|
37
|
+
Appsignal.config[:filter_parameters]
|
38
|
+
)
|
35
39
|
|
36
40
|
Appsignal.monitor_transaction(
|
37
41
|
"perform_job.delayed_job",
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "appsignal"
|
2
4
|
|
3
5
|
module Appsignal
|
@@ -60,9 +62,6 @@ module Padrino::Routing::InstanceMethods
|
|
60
62
|
controller_name = request.controller if request.respond_to?(:controller)
|
61
63
|
action_name = request.action if request.respond_to?(:action)
|
62
64
|
action_name ||= ""
|
63
|
-
if action_name.empty? && request.respond_to?(:fullpath)
|
64
|
-
action_name = request.fullpath
|
65
|
-
end
|
66
65
|
|
67
66
|
unless action_name.empty?
|
68
67
|
return "#{settings.name}:#{controller_name}##{action_name}"
|
@@ -75,7 +74,7 @@ module Padrino::Routing::InstanceMethods
|
|
75
74
|
|
76
75
|
# Fall back to the application name if we haven't found an action name in
|
77
76
|
# any previous methods.
|
78
|
-
settings.name
|
77
|
+
"#{settings.name}#unknown"
|
79
78
|
end
|
80
79
|
end
|
81
80
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Appsignal
|
2
4
|
module Integrations
|
3
5
|
# @api private
|
@@ -7,8 +9,10 @@ module Appsignal
|
|
7
9
|
def self.included(base)
|
8
10
|
base.class_eval do
|
9
11
|
around_perform do |job, block|
|
10
|
-
params = Appsignal::Utils::
|
11
|
-
|
12
|
+
params = Appsignal::Utils::HashSanitizer.sanitize(
|
13
|
+
job.arguments,
|
14
|
+
Appsignal.config[:filter_parameters]
|
15
|
+
)
|
12
16
|
|
13
17
|
Appsignal.monitor_single_transaction(
|
14
18
|
"perform_job.resque",
|
data/lib/appsignal/marker.rb
CHANGED
data/lib/appsignal/minutely.rb
CHANGED
data/lib/appsignal/system.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "json"
|
2
4
|
|
3
5
|
module Appsignal
|
@@ -9,7 +11,7 @@ module Appsignal
|
|
9
11
|
BLANK = "".freeze
|
10
12
|
|
11
13
|
# Based on what Rails uses + some variables we'd like to show
|
12
|
-
|
14
|
+
FALLBACK_REQUEST_HEADERS = %w[
|
13
15
|
CONTENT_LENGTH AUTH_TYPE GATEWAY_INTERFACE
|
14
16
|
PATH_TRANSLATED REMOTE_HOST REMOTE_IDENT REMOTE_USER REMOTE_ADDR
|
15
17
|
REQUEST_METHOD SERVER_NAME SERVER_PORT SERVER_PROTOCOL REQUEST_URI
|
@@ -382,11 +384,8 @@ module Appsignal
|
|
382
384
|
def sanitized_params
|
383
385
|
return unless Appsignal.config[:send_params]
|
384
386
|
|
385
|
-
|
386
|
-
|
387
|
-
options[:filter_parameters] = Appsignal.config[:filter_parameters]
|
388
|
-
end
|
389
|
-
Appsignal::Utils::ParamsSanitizer.sanitize params, options
|
387
|
+
filter_keys = Appsignal.config[:filter_parameters] || []
|
388
|
+
Appsignal::Utils::HashSanitizer.sanitize params, filter_keys
|
390
389
|
end
|
391
390
|
|
392
391
|
def request_params
|
@@ -406,7 +405,8 @@ module Appsignal
|
|
406
405
|
# The environment of a transaction can contain a lot of information, not
|
407
406
|
# all of it useful for debugging.
|
408
407
|
#
|
409
|
-
# Only the values from the keys specified in {
|
408
|
+
# Only the values from the keys specified in {FALLBACK_REQUEST_HEADERS} are
|
409
|
+
# returned.
|
410
410
|
#
|
411
411
|
# @return [nil] if no environment is present.
|
412
412
|
# @return [Hash<String, Object>]
|
@@ -415,7 +415,8 @@ module Appsignal
|
|
415
415
|
return if env.empty?
|
416
416
|
|
417
417
|
{}.tap do |out|
|
418
|
-
|
418
|
+
(Appsignal.config[:request_headers] ||
|
419
|
+
FALLBACK_REQUEST_HEADERS).each do |key|
|
419
420
|
out[key] = env[key] if env[key]
|
420
421
|
end
|
421
422
|
end
|
@@ -423,7 +424,7 @@ module Appsignal
|
|
423
424
|
|
424
425
|
# Returns sanitized session data.
|
425
426
|
#
|
426
|
-
# The session data is sanitized by the {Appsignal::Utils::
|
427
|
+
# The session data is sanitized by the {Appsignal::Utils::HashSanitizer}.
|
427
428
|
#
|
428
429
|
# @return [nil] if `:skip_session_data` config is set to `true`.
|
429
430
|
# @return [nil] if the {#request} object doesn't respond to `#session`.
|
@@ -435,7 +436,9 @@ module Appsignal
|
|
435
436
|
session = request.session
|
436
437
|
return unless session
|
437
438
|
|
438
|
-
Appsignal::Utils::
|
439
|
+
Appsignal::Utils::HashSanitizer.sanitize(
|
440
|
+
session.to_hash, Appsignal.config[:filter_session_data]
|
441
|
+
)
|
439
442
|
end
|
440
443
|
|
441
444
|
# Returns metadata from the environment.
|
data/lib/appsignal/utils.rb
CHANGED
@@ -1,22 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Appsignal
|
2
4
|
module Utils
|
3
5
|
# @api private
|
4
|
-
class
|
6
|
+
class HashSanitizer
|
5
7
|
FILTERED = "[FILTERED]".freeze
|
6
8
|
|
7
9
|
class << self
|
8
|
-
def sanitize(
|
9
|
-
sanitize_value(
|
10
|
+
def sanitize(value, filter_keys = [])
|
11
|
+
sanitize_value(value, filter_keys)
|
10
12
|
end
|
11
13
|
|
12
14
|
private
|
13
15
|
|
14
|
-
def sanitize_value(value,
|
16
|
+
def sanitize_value(value, filter_keys)
|
15
17
|
case value
|
16
18
|
when Hash
|
17
|
-
sanitize_hash(value,
|
19
|
+
sanitize_hash(value, filter_keys)
|
18
20
|
when Array
|
19
|
-
sanitize_array(value,
|
21
|
+
sanitize_array(value, filter_keys)
|
20
22
|
when TrueClass, FalseClass, NilClass, Integer, String, Symbol, Float
|
21
23
|
unmodified(value)
|
22
24
|
else
|
@@ -24,24 +26,23 @@ module Appsignal
|
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
|
-
def sanitize_hash(source,
|
28
|
-
filter_keys = options.fetch(:filter_parameters, [])
|
29
|
+
def sanitize_hash(source, filter_keys)
|
29
30
|
{}.tap do |hash|
|
30
31
|
source.each_pair do |key, value|
|
31
32
|
hash[key] =
|
32
33
|
if filter_keys.include?(key.to_s)
|
33
34
|
FILTERED
|
34
35
|
else
|
35
|
-
sanitize_value(value,
|
36
|
+
sanitize_value(value, filter_keys)
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
|
-
def sanitize_array(source,
|
42
|
+
def sanitize_array(source, filter_keys)
|
42
43
|
[].tap do |array|
|
43
44
|
source.each_with_index do |item, index|
|
44
|
-
array[index] = sanitize_value(item,
|
45
|
+
array[index] = sanitize_value(item, filter_keys)
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
data/lib/appsignal/version.rb
CHANGED
data/resources/appsignal.yml.erb
CHANGED
@@ -6,6 +6,11 @@ default: &defaults
|
|
6
6
|
# Your app's name
|
7
7
|
name: "<%= app_name %>"
|
8
8
|
|
9
|
+
# Request headers that should be recorded per sample
|
10
|
+
request_headers: [
|
11
|
+
<%= request_headers %>
|
12
|
+
]
|
13
|
+
|
9
14
|
# Actions that should not be monitored by AppSignal
|
10
15
|
# ignore_actions:
|
11
16
|
# - ApplicationController#isup
|
@@ -2,13 +2,13 @@ describe Appsignal::AuthCheck do
|
|
2
2
|
let(:config) { project_fixture_config }
|
3
3
|
let(:auth_check) { Appsignal::AuthCheck.new(config) }
|
4
4
|
let(:auth_url) do
|
5
|
-
query =
|
5
|
+
query = build_uri_query_string(
|
6
6
|
:api_key => config[:push_api_key],
|
7
7
|
:environment => config.env,
|
8
8
|
:gem_version => Appsignal::VERSION,
|
9
9
|
:hostname => config[:hostname],
|
10
10
|
:name => config[:name]
|
11
|
-
|
11
|
+
)
|
12
12
|
|
13
13
|
URI(config[:endpoint]).tap do |uri|
|
14
14
|
uri.path = "/1/auth"
|
@@ -19,6 +19,15 @@ describe Appsignal::AuthCheck do
|
|
19
19
|
WebMock.stub_request(:post, auth_url).with(:body => "{}")
|
20
20
|
end
|
21
21
|
|
22
|
+
def build_uri_query_string(hash)
|
23
|
+
hash.map do |k, v|
|
24
|
+
k.to_s.tap do |s|
|
25
|
+
next unless v
|
26
|
+
s << "=#{v}"
|
27
|
+
end
|
28
|
+
end.join("&")
|
29
|
+
end
|
30
|
+
|
22
31
|
describe "#perform" do
|
23
32
|
subject { auth_check.perform }
|
24
33
|
|
@@ -39,6 +39,16 @@ describe Appsignal::CLI::Install do
|
|
39
39
|
actual.include?("export APPSIGNAL_APP_NAME=#{name}")
|
40
40
|
end
|
41
41
|
end
|
42
|
+
define :include_env_request_headers do
|
43
|
+
match do |actual|
|
44
|
+
actual.include?(
|
45
|
+
"export APPSIGNAL_REQUEST_HEADERS=HTTP_ACCEPT,HTTP_ACCEPT_CHARSET," \
|
46
|
+
"HTTP_ACCEPT_ENCODING,HTTP_ACCEPT_LANGUAGE,HTTP_CACHE_CONTROL," \
|
47
|
+
"HTTP_CONNECTION,CONTENT_LENGTH,PATH_INFO,HTTP_RANGE," \
|
48
|
+
"REQUEST_METHOD,REQUEST_URI,SERVER_NAME,SERVER_PORT,SERVER_PROTOCOL"
|
49
|
+
)
|
50
|
+
end
|
51
|
+
end
|
42
52
|
|
43
53
|
define :configure_app_name do |name|
|
44
54
|
match do |file_contents|
|
@@ -50,6 +60,17 @@ describe Appsignal::CLI::Install do
|
|
50
60
|
file_contents =~ /^ push_api_key: "#{key}"/
|
51
61
|
end
|
52
62
|
end
|
63
|
+
define :configure_request_headers do
|
64
|
+
match do |file_contents|
|
65
|
+
file_contents =~ /^ request_headers: \[/ &&
|
66
|
+
file_contents =~ /^ "HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET", "HTTP_ACCEPT_ENCODING",/ &&
|
67
|
+
file_contents =~ /^ "HTTP_ACCEPT_LANGUAGE", "HTTP_CACHE_CONTROL", "HTTP_CONNECTION",/ &&
|
68
|
+
file_contents =~ /^ "CONTENT_LENGTH", "PATH_INFO", "HTTP_RANGE",/ &&
|
69
|
+
file_contents =~ /^ "REQUEST_METHOD", "REQUEST_URI", "SERVER_NAME", "SERVER_PORT",/ &&
|
70
|
+
file_contents =~ /^ "SERVER_PROTOCOL"/ &&
|
71
|
+
file_contents =~ /^ \]/
|
72
|
+
end
|
73
|
+
end
|
53
74
|
define :configure_environment do |env|
|
54
75
|
match do |file_contents|
|
55
76
|
file_contents =~ /^#{env}:$/
|
@@ -272,6 +293,7 @@ describe Appsignal::CLI::Install do
|
|
272
293
|
expect(output).to include_file_config
|
273
294
|
expect(config_file).to configure_app_name(app_name)
|
274
295
|
expect(config_file).to configure_push_api_key(push_api_key)
|
296
|
+
expect(config_file).to configure_request_headers
|
275
297
|
expect(config_file).to_not configure_environment("development")
|
276
298
|
expect(config_file).to_not configure_environment("staging")
|
277
299
|
expect(config_file).to configure_environment("production")
|
@@ -299,6 +321,7 @@ describe Appsignal::CLI::Install do
|
|
299
321
|
|
300
322
|
expect(output).to include_env_push_api_key(push_api_key)
|
301
323
|
expect(output).to_not include_env_app_name
|
324
|
+
expect(output).to include_env_request_headers
|
302
325
|
end
|
303
326
|
|
304
327
|
it "completes the installation" do
|
@@ -322,6 +345,7 @@ describe Appsignal::CLI::Install do
|
|
322
345
|
expect(output).to include_file_config
|
323
346
|
expect(config_file).to configure_app_name(app_name)
|
324
347
|
expect(config_file).to configure_push_api_key(push_api_key)
|
348
|
+
expect(config_file).to configure_request_headers
|
325
349
|
expect(config_file).to configure_environment("development")
|
326
350
|
expect(config_file).to configure_environment("staging")
|
327
351
|
expect(config_file).to configure_environment("production")
|
@@ -366,6 +390,7 @@ describe Appsignal::CLI::Install do
|
|
366
390
|
|
367
391
|
expect(output).to include_env_push_api_key(push_api_key)
|
368
392
|
expect(output).to include_env_app_name(app_name)
|
393
|
+
expect(output).to include_env_request_headers
|
369
394
|
end
|
370
395
|
|
371
396
|
it "completes the installation" do
|
@@ -392,6 +417,7 @@ describe Appsignal::CLI::Install do
|
|
392
417
|
expect(output).to include_file_config
|
393
418
|
expect(config_file).to configure_app_name(app_name)
|
394
419
|
expect(config_file).to configure_push_api_key(push_api_key)
|
420
|
+
expect(config_file).to configure_request_headers
|
395
421
|
expect(config_file).to configure_environment("development")
|
396
422
|
expect(config_file).to configure_environment("staging")
|
397
423
|
expect(config_file).to configure_environment("production")
|
@@ -437,6 +463,7 @@ describe Appsignal::CLI::Install do
|
|
437
463
|
|
438
464
|
expect(output).to include_env_push_api_key(push_api_key)
|
439
465
|
expect(output).to include_env_app_name(app_name)
|
466
|
+
expect(output).to include_env_request_headers
|
440
467
|
end
|
441
468
|
|
442
469
|
it "completes the installation" do
|
@@ -460,6 +487,7 @@ describe Appsignal::CLI::Install do
|
|
460
487
|
expect(output).to include_file_config
|
461
488
|
expect(config_file).to configure_app_name(app_name)
|
462
489
|
expect(config_file).to configure_push_api_key(push_api_key)
|
490
|
+
expect(config_file).to configure_request_headers
|
463
491
|
expect(config_file).to configure_environment("development")
|
464
492
|
expect(config_file).to configure_environment("staging")
|
465
493
|
expect(config_file).to configure_environment("production")
|
@@ -504,6 +532,7 @@ describe Appsignal::CLI::Install do
|
|
504
532
|
|
505
533
|
expect(output).to include_env_push_api_key(push_api_key)
|
506
534
|
expect(output).to include_env_app_name(app_name)
|
535
|
+
expect(output).to include_env_request_headers
|
507
536
|
end
|
508
537
|
|
509
538
|
it "completes the installation" do
|
@@ -527,6 +556,7 @@ describe Appsignal::CLI::Install do
|
|
527
556
|
expect(output).to include_file_config
|
528
557
|
expect(config_file).to configure_app_name(app_name)
|
529
558
|
expect(config_file).to configure_push_api_key(push_api_key)
|
559
|
+
expect(config_file).to configure_request_headers
|
530
560
|
expect(config_file).to configure_environment("development")
|
531
561
|
expect(config_file).to configure_environment("staging")
|
532
562
|
expect(config_file).to configure_environment("production")
|
@@ -571,6 +601,7 @@ describe Appsignal::CLI::Install do
|
|
571
601
|
|
572
602
|
expect(output).to include_env_push_api_key(push_api_key)
|
573
603
|
expect(output).to include_env_app_name(app_name)
|
604
|
+
expect(output).to include_env_request_headers
|
574
605
|
end
|
575
606
|
|
576
607
|
it "completes the installation" do
|
@@ -594,6 +625,7 @@ describe Appsignal::CLI::Install do
|
|
594
625
|
expect(output).to include_file_config
|
595
626
|
expect(config_file).to configure_app_name(app_name)
|
596
627
|
expect(config_file).to configure_push_api_key(push_api_key)
|
628
|
+
expect(config_file).to configure_request_headers
|
597
629
|
expect(config_file).to configure_environment("development")
|
598
630
|
expect(config_file).to configure_environment("staging")
|
599
631
|
expect(config_file).to configure_environment("production")
|
@@ -625,6 +657,7 @@ describe Appsignal::CLI::Install do
|
|
625
657
|
"\e[31mWarning:\e[0m We could not detect which framework you are using."
|
626
658
|
expect(output).to_not include_env_push_api_key
|
627
659
|
expect(output).to_not include_env_app_name
|
660
|
+
expect(output).to_not include_env_request_headers
|
628
661
|
expect(File.exist?(config_file_path)).to be_falsy
|
629
662
|
end
|
630
663
|
end
|