diff --git a/carbon/app.py b/carbon/app.py index 83e1af4..5879475 100644 --- a/carbon/app.py +++ b/carbon/app.py @@ -244,6 +244,7 @@ def run_connection_test(self) -> None: f"Failed to connect to the Symplectic Elements FTP server: {error}" ) logger.exception(error_message) + raise else: logger.info("Successfully connected to the Symplectic Elements FTP server") ftps.quit() diff --git a/carbon/database.py b/carbon/database.py index b36f8cf..49e45ad 100644 --- a/carbon/database.py +++ b/carbon/database.py @@ -114,6 +114,7 @@ def run_connection_test(self) -> None: except Exception as error: error_message = f"Failed to connect to the Data Warehouse: {error}" logger.exception(error_message) + raise else: dbapi_connection = connection.connection version = ( diff --git a/tests/test_cli.py b/tests/test_cli.py index d5a218e..6f521fd 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -188,11 +188,19 @@ def test_cli_connection_tests_success(caplog, functional_engine, runner): assert "Successfully connected to the Symplectic Elements FTP server" in caplog.text -def test_cli_connection_tests_fail( - caplog, ftp_server, monkeypatch, nonfunctional_engine, runner +def test_cli_database_connection_test_fails(caplog, nonfunctional_engine, runner): + with patch("carbon.cli.DatabaseEngine") as mocked_engine: + mocked_engine.return_value = nonfunctional_engine + result = runner.invoke(main, ["--run_connection_tests"]) + assert result.exit_code == 1 + + assert "Failed to connect to the Data Warehouse" in caplog.text + + +def test_cli_ftp_connection_test_fails( + caplog, ftp_server, functional_engine, monkeypatch, runner ): ftp_socket, _ = ftp_server - monkeypatch.setenv( "SYMPLECTIC_FTP_JSON", ( @@ -202,10 +210,10 @@ def test_cli_connection_tests_fail( '"SYMPLECTIC_FTP_PASS": "invalid_password"}' ), ) + with patch("carbon.cli.DatabaseEngine") as mocked_engine: - mocked_engine.return_value = nonfunctional_engine + mocked_engine.return_value = functional_engine result = runner.invoke(main, ["--run_connection_tests"]) - assert result.exit_code == 0 + assert result.exit_code == 1 - assert "Failed to connect to the Data Warehouse" in caplog.text assert "Failed to connect to the Symplectic Elements FTP server" in caplog.text