1
0
mirror of synced 2025-12-31 06:05:12 -05:00
Files
airbyte/octavia-cli/unit_tests/test_check_context.py
Cole Snodgrass 2e099acc52 update headers from 2022 -> 2023 (#22594)
* It's 2023!

* 2022 -> 2023

---------

Co-authored-by: evantahler <evan@airbyte.io>
2023-02-08 13:01:16 -08:00

86 lines
3.4 KiB
Python

#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
import os
import shutil
import tempfile
from pathlib import Path
import airbyte_api_client
import pytest
from airbyte_api_client.model.workspace_id_request_body import WorkspaceIdRequestBody
from octavia_cli import check_context
from urllib3.exceptions import MaxRetryError
@pytest.fixture
def mock_api_client(mocker):
return mocker.Mock()
def test_api_check_health_available(mock_api_client, mocker):
mocker.patch.object(check_context, "health_api")
mock_api_response = mocker.Mock(available=True)
check_context.health_api.HealthApi.return_value.get_health_check.return_value = mock_api_response
assert check_context.check_api_health(mock_api_client) is None
check_context.health_api.HealthApi.assert_called_with(mock_api_client)
api_instance = check_context.health_api.HealthApi.return_value
api_instance.get_health_check.assert_called()
def test_api_check_health_unavailable(mock_api_client, mocker):
mocker.patch.object(check_context, "health_api")
mock_api_response = mocker.Mock(available=False)
check_context.health_api.HealthApi.return_value.get_health_check.return_value = mock_api_response
with pytest.raises(check_context.UnhealthyApiError):
check_context.check_api_health(mock_api_client)
def test_api_check_health_unreachable_api_exception(mock_api_client, mocker):
mocker.patch.object(check_context, "health_api")
check_context.health_api.HealthApi.return_value.get_health_check.side_effect = airbyte_api_client.ApiException()
with pytest.raises(check_context.UnreachableAirbyteInstanceError):
check_context.check_api_health(mock_api_client)
def test_api_check_health_unreachable_max_retry_error(mock_api_client, mocker):
mocker.patch.object(check_context, "health_api")
check_context.health_api.HealthApi.return_value.get_health_check.side_effect = MaxRetryError("foo", "bar")
with pytest.raises(check_context.UnreachableAirbyteInstanceError):
check_context.check_api_health(mock_api_client)
def test_check_workspace_exists(mock_api_client, mocker):
mocker.patch.object(check_context, "workspace_api")
mock_api_instance = mocker.Mock()
check_context.workspace_api.WorkspaceApi.return_value = mock_api_instance
assert check_context.check_workspace_exists(mock_api_client, "foo") is None
check_context.workspace_api.WorkspaceApi.assert_called_with(mock_api_client)
mock_api_instance.get_workspace.assert_called_with(WorkspaceIdRequestBody("foo"), _check_return_type=False)
def test_check_workspace_exists_error(mock_api_client, mocker):
mocker.patch.object(check_context, "workspace_api")
check_context.workspace_api.WorkspaceApi.return_value.get_workspace.side_effect = airbyte_api_client.ApiException()
with pytest.raises(check_context.WorkspaceIdError):
check_context.check_workspace_exists(mock_api_client, "foo")
@pytest.fixture
def project_directories():
dirpath = tempfile.mkdtemp()
yield str(Path(dirpath).parent.absolute()), [os.path.basename(dirpath)]
shutil.rmtree(dirpath)
def test_check_is_initialized(mocker, project_directories):
project_directory, sub_directories = project_directories
mocker.patch.object(check_context, "REQUIRED_PROJECT_DIRECTORIES", sub_directories)
assert check_context.check_is_initialized(project_directory)
def test_check_not_initialized():
assert not check_context.check_is_initialized(".")