diff --git a/lib/java_buildpack/framework/app_dynamics_agent.rb b/lib/java_buildpack/framework/app_dynamics_agent.rb index 4b3bb9c9b5..de7c8a94b2 100644 --- a/lib/java_buildpack/framework/app_dynamics_agent.rb +++ b/lib/java_buildpack/framework/app_dynamics_agent.rb @@ -145,7 +145,8 @@ def copy_appd_default_configuration(default_conf_dir) def check_if_resource_exists(resource_uri, conf_file) # check if resource exists on remote server begin - response = Net::HTTP.start(resource_uri.host, resource_uri.port) do |http| + opts = { use_ssl: true } if resource_uri.scheme == 'https' + response = Net::HTTP.start(resource_uri.host, resource_uri.port, opts) do |http| http.request_head(resource_uri) end rescue StandardError => e diff --git a/spec/java_buildpack/framework/app_dynamics_agent_spec.rb b/spec/java_buildpack/framework/app_dynamics_agent_spec.rb index 19567dbf64..cfa8ea9989 100644 --- a/spec/java_buildpack/framework/app_dynamics_agent_spec.rb +++ b/spec/java_buildpack/framework/app_dynamics_agent_spec.rb @@ -164,6 +164,30 @@ end component.compile end + + end + + context do + let(:environment) { { 'APPD_CONF_HTTP_URL' => 'https://foo.com' } } + + it 'sets APPD_CONF_HTTP_URL env var to download config files over HTTPS', + cache_fixture: 'stub-app-dynamics-agent.zip' do + + config_files = %w[logging/log4j2.xml logging/log4j.xml app-agent-config.xml controller-info.xml + service-endpoint.xml transactions.xml custom-interceptors.xml + custom-activity-correlation.xml] + + config_files.each do |file| + uri = "https://foo.com/java/#{file}" + allow(application_cache).to receive(:get) + .with(uri) + allow(Net::HTTP).to receive(:start).with('foo.com', 443, use_ssl: true).and_call_original + stub_request(:head, uri) + .with(headers: { 'Accept' => '*/*', 'Host' => 'foo.com', 'User-Agent' => 'Ruby' }) + .to_return(status: 200, body: '', headers: {}) + end + component.compile + end end end end