def test_import_incomplete_config_file_success( self, status_check_all_mock: AsyncMock, get_strategy_pydantic_config_cls: MagicMock): strategy_name = "perpetual_market_making" strategy_file_name = f"{strategy_name}.yml" status_check_all_mock.return_value = True dummy_strategy_config_cls = self.build_dummy_strategy_config_cls( strategy_name) get_strategy_pydantic_config_cls.return_value = dummy_strategy_config_cls cm = ClientConfigAdapter( dummy_strategy_config_cls(no_default="some value")) with TemporaryDirectory() as d: d = Path(d) import_command.STRATEGIES_CONF_DIR_PATH = d temp_file_name = d / strategy_file_name cm_yml_str = cm.generate_yml_output_str_with_comments() cm_yml_str = cm_yml_str.replace("\nno_default: some value\n", "") with open(temp_file_name, "w+") as outfile: outfile.write(cm_yml_str) self.async_run_with_timeout( self.app.import_config_file(strategy_file_name)) self.assertEqual(strategy_file_name, self.app.strategy_file_name) self.assertEqual(strategy_name, self.app.strategy_name) self.assertTrue( self.cli_mock_assistant.check_log_called_with( "\nEnter \"start\" to start market making.")) self.assertNotEqual(cm, self.app.strategy_config_map) validation_errors = self.app.strategy_config_map.validate_model() self.assertEqual(1, len(validation_errors)) self.assertEqual("no_default - field required", validation_errors[0])
def test_generate_yml_output_dict_title(self): class DummyStrategy(BaseClientModel): class Config: title = "pure_market_making" strategy: str = "pure_market_making" instance = ClientConfigAdapter(DummyStrategy()) res_str = instance.generate_yml_output_str_with_comments() expected_str = """\ ##################################### ### pure_market_making config ### ##################################### strategy: pure_market_making """ self.assertEqual(expected_str, res_str)
def test_generate_yml_output_dict_with_secret(self): class DummyModel(BaseClientModel): secret_attr: SecretStr class Config: title = "dummy_model" Security.secrets_manager = ETHKeyFileSecretManger(password="******") secret_value = "some_secret" instance = ClientConfigAdapter(DummyModel(secret_attr=secret_value)) res_str = instance.generate_yml_output_str_with_comments() expected_str = """\ ############################## ### dummy_model config ### ############################## secret_attr: """ self.assertTrue(res_str.startswith(expected_str)) self.assertNotIn(secret_value, res_str)