60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
#
|
|
# Copyright (c) 2022 Airbyte, Inc., all rights reserved.
|
|
#
|
|
|
|
import logging
|
|
|
|
import pytest
|
|
from click.testing import CliRunner
|
|
from octavia_cli import api_http_headers, entrypoint
|
|
|
|
logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from vcrpy
|
|
vcr_log = logging.getLogger("vcr")
|
|
vcr_log.setLevel(logging.WARN)
|
|
|
|
AIRBYTE_URL = "http://localhost:8000"
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def vcr_config():
|
|
return {
|
|
"record_mode": "rewrite",
|
|
"match_on": ["method", "scheme", "host", "port", "path", "query", "headers"],
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def file_based_headers(tmp_path):
|
|
yaml_document = """
|
|
headers:
|
|
Custom-Header: Foo
|
|
"""
|
|
custom_api_http_headers_yaml_file_path = tmp_path / "custom_api_http_headers.yaml"
|
|
custom_api_http_headers_yaml_file_path.write_text(yaml_document)
|
|
expected_headers = [api_http_headers.ApiHttpHeader("Custom-Header", "Foo")]
|
|
return custom_api_http_headers_yaml_file_path, expected_headers
|
|
|
|
|
|
@pytest.fixture
|
|
def option_based_headers():
|
|
return ["Another-Custom-Header", "Bar"], [api_http_headers.ApiHttpHeader("Another-Custom-Header", "Bar")]
|
|
|
|
|
|
@pytest.mark.vcr
|
|
def test_api_http_headers(vcr, file_based_headers, option_based_headers):
|
|
raw_option_based_headers, expected_option_based_headers = option_based_headers
|
|
custom_api_http_headers_yaml_file_path, expected_file_based_headers = file_based_headers
|
|
expected_headers = expected_option_based_headers + expected_file_based_headers
|
|
runner = CliRunner()
|
|
command_options = (
|
|
["--airbyte-url", AIRBYTE_URL, "--api-http-headers-file-path", custom_api_http_headers_yaml_file_path, "--api-http-header"]
|
|
+ raw_option_based_headers
|
|
+ ["list", "connectors", "sources"]
|
|
)
|
|
|
|
result = runner.invoke(entrypoint.octavia, command_options, obj={})
|
|
for request in vcr.requests:
|
|
for expected_header in expected_headers:
|
|
assert request.headers[expected_header.name] == expected_header.value
|
|
assert result.exit_code == 0
|