Skip to content

Commit

Permalink
fix: Respect requests/curl custom Certificate Authorities env vars (
Browse files Browse the repository at this point in the history
  • Loading branch information
edgarrmondragon committed Feb 9, 2023
1 parent 8048580 commit dc04f5e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/meltano/core/hub/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,17 @@ def _get(self, url: str) -> requests.Response:
Raises:
HubConnectionError: If the Hub API could not be reached.
"""
prep = self._build_request("GET", url)
settings = self.session.merge_environment_settings(
prep.url,
None,
None,
None,
None,
)

try:
return self.session.send(self._build_request("GET", url))
return self.session.send(prep, **settings)
except requests.exceptions.ConnectionError as connection_err:
raise HubConnectionError("Could not reach Meltano Hub.") from connection_err

Expand Down
22 changes: 22 additions & 0 deletions tests/meltano/core/hub/test_meltano_hub_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import mock
import pytest
from requests import HTTPError, Response
from requests.adapters import BaseAdapter

from meltano.cli import cli
from meltano.cli.discovery import discover
Expand Down Expand Up @@ -136,3 +137,24 @@ def test_request_headers(self, subject: MeltanoHubService):
get_context.return_value = None
request = subject._build_request("GET", "https://example.com")
assert "X-Meltano-Command" not in request.headers

def test_custom_ca(self, project, monkeypatch):
send_kwargs = {}

class _Adapter(BaseAdapter):
def send(self, request, **kwargs):
nonlocal send_kwargs
send_kwargs = kwargs

response = Response()
response._content = b'{"name": "tap-mock", "namespace": "tap_mock"}'
response.status_code = 200
return response

mock_url = "hub://meltano"
hub = MeltanoHubService(project)
hub.session.mount(mock_url, _Adapter())

monkeypatch.setenv("REQUESTS_CA_BUNDLE", "/path/to/ca.pem")
hub._get(mock_url)
assert send_kwargs["verify"] == "/path/to/ca.pem"

0 comments on commit dc04f5e

Please sign in to comment.