1
0
mirror of synced 2026-01-01 00:02:54 -05:00
Files
airbyte/octavia-cli/integration_tests/test_api_http_headers.py

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