def it_should_show_help(capsys) -> None: with pytest.raises(SystemExit): parse_main_arguments(list()) out, err = capsys.readouterr() assert err != "", "There should be an error message" assert out == "", "There should not be an output message"
def it_should_show_help(capsys) -> None: with pytest.raises(SystemExit): args = [ *_engine_args(DbEngine.MSSQL), *_server_args(), *_integrated_security_arg(), ] parse_main_arguments(args) _assert_error_message(capsys)
def it_should_require_password(capsys) -> None: with pytest.raises(SystemExit): args = [ *_path_args(), *_server_args(), *_db_name_args(), *_username_args(), ] parse_main_arguments(args) _assert_error_message(capsys)
def it_should_parse_the_log_level(capsys) -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), *_integrated_security_arg(), *_engine_args(DbEngine.MSSQL), "--log-level", "DEBUG" ] parsed = parse_main_arguments(args) _assert_no_messages(capsys) assert parsed is not None, "No arguments detected" assert parsed.log_level == "DEBUG"
def it_should_add_Encrypt_to_connection_string() -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), *_integrated_security_arg(), *_encrypt_args(), ] parsed = parse_main_arguments(args) url = str(parsed.get_adapter().engine.url) assert "Encrypt=yes" in url assert "TrustServerCertificate=yes" not in url
def it_should_have_a_plain_connection_string(capsys, ) -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), *_integrated_security_arg(), *_engine_args(DbEngine.MSSQL), ] parsed = parse_main_arguments(args) _assert_no_messages(capsys) assert ( "mssql+pyodbc://localhost,1433/EdFi_ODS?driver=ODBC+Driver+17+for+SQL+Server" == str(parsed.get_adapter().engine.url))
def it_should_parse_csv_path(capsys) -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), *_integrated_security_arg(), ] parsed = parse_main_arguments(args) assert parsed is not None, "No arguments detected" assert parsed.csv_path == PATH _assert_no_messages(capsys)
def it_should_not_require_username_and_password(capsys) -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), "-i", ] parsed = parse_main_arguments(args) assert parsed is not None, "No arguments detected" assert parsed.engine == DbEngine.MSSQL _assert_no_messages(capsys)
def it_should_default_to_mssql(capsys) -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), *_integrated_security_arg(), ] parsed = parse_main_arguments(args) assert parsed is not None, "No arguments detected" assert parsed.engine == DbEngine.MSSQL _assert_no_messages(capsys)
def it_should_inject_port_into_connection_string(capsys) -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), *_integrated_security_arg(), *port_args(), ] parsed = parse_main_arguments(args) _assert_no_messages(capsys) assert parsed is not None, "No arguments detected" assert str(PORT) in str(parsed.get_adapter().engine.url)
def main() -> None: load_dotenv() # WARNING! Do not make the following call in a function decorated with @catch_exceptions arguments = parse_main_arguments(sys.argv[1:]) _configure_logging(arguments) error_tracker: ErrorHandler = ErrorHandler() _run_loader(arguments) if error_tracker.fired: print( "A fatal error occurred, please review the log output for more information.", file=sys.stderr, ) sys.exit(1) sys.exit(0)
def fixture(capsys) -> MainArguments: # Arrange args = [ *_path_args(), *_server_args(), *_db_name_args(), *_engine_args(DbEngine.MSSQL), *_username_args(), *_password_args(), *port_args(), ] # Act parsed = parse_main_arguments(args) _assert_no_messages(capsys) return parsed
def it_should_set_trusted_connection_in_the_connection_string( capsys) -> None: args = [ *_path_args(), *_server_args(), *_db_name_args(), *_integrated_security_arg(), *_engine_args(DbEngine.MSSQL), ] parsed = parse_main_arguments(args) _assert_no_messages(capsys) assert parsed is not None, "No arguments detected" # Test the details of the connection string in a more appropriate test # suite - test only enough here to prove the point assert "Trusted_Connection=yes" in parsed.connection_string