def test_multiple_builds_with_component_instance():
    """Test multiple calls to the 'build()' method when adding component instances."""
    builder = AEABuilder()
    builder.set_name("aea_1")
    builder.add_private_key("fetchai")

    a_protocol = Protocol(
        ProtocolConfig("a_protocol", "author", "0.1.0"), DefaultMessage
    )
    builder.add_component_instance(a_protocol)

    # the first call works
    aea_1 = builder.build()
    assert isinstance(aea_1, AEA)

    # the second call fails
    with pytest.raises(ValueError, match="Cannot build.*"):
        builder.build()

    # after reset, it works
    builder.reset()
    builder.set_name("aea_1")
    builder.add_private_key("fetchai")
    builder.add_component_instance(a_protocol)
    aea_2 = builder.build()
    assert isinstance(aea_2, AEA)
def test_multiple_builds_with_private_keys():
    """Test multiple calls to the 'build()' method when adding custom private keys."""
    builder = AEABuilder()
    builder.set_name("aea_1")
    builder.add_private_key("fetchai", FETCHAI_PRIVATE_KEY_PATH)

    # the first call works
    aea_1 = builder.build()
    assert isinstance(aea_1, AEA)

    # the second call fails
    with pytest.raises(ValueError, match="Cannot build.*"):
        builder.build()

    # after reset, it works
    builder.reset()
    builder.set_name("aea_1")
    builder.add_private_key("fetchai", FETCHAI_PRIVATE_KEY_PATH)
    aea_2 = builder.build()
    assert isinstance(aea_2, AEA)
示例#3
0
def test_set_from_config_custom():
    """Test set configuration from config loaded."""
    dm_dotted_path = f"aea.decision_maker.default{DOTTED_PATH_MODULE_ELEMENT_SEPARATOR}DecisionMakerHandler"
    dm_file_path = ROOT_DIR + "/aea/decision_maker/default.py"
    builder = AEABuilder()
    agent_configuration = Mock()
    agent_configuration.default_connection = "test/test:0.1.0"
    agent_configuration.decision_maker_handler = {
        "dotted_path": dm_dotted_path,
        "file_path": dm_file_path,
    }
    agent_configuration.error_handler = {
        "dotted_path": f"aea.error_handler.default{DOTTED_PATH_MODULE_ELEMENT_SEPARATOR}ErrorHandler",
        "file_path": ROOT_DIR + "/aea/error_handler/default.py",
    }
    agent_configuration.skill_exception_policy = ExceptionPolicyEnum.just_log
    agent_configuration.connection_exception_policy = ExceptionPolicyEnum.just_log
    agent_configuration._default_connection = None
    agent_configuration.connection_private_key_paths_dict = {"fetchai": None}
    agent_configuration.ledger_apis_dict = {"fetchai": None}
    agent_configuration.private_key_paths_dict = {"fetchai": None}
    agent_configuration.protocols = (
        agent_configuration.connections
    ) = agent_configuration.contracts = agent_configuration.skills = []

    builder.set_from_configuration(agent_configuration, aea_project_path="/anydir")
    assert builder._decision_maker_handler_class is None
    assert builder._decision_maker_handler_dotted_path == dm_dotted_path
    assert builder._decision_maker_handler_file_path == dm_file_path
    assert builder._load_decision_maker_handler_class() is not None
    builder.reset(is_full_reset=True)
    agent_configuration.decision_maker_handler = {
        "dotted_path": dm_dotted_path,
        "file_path": None,
    }
    builder.set_from_configuration(agent_configuration, aea_project_path="/anydir")
    assert builder._load_decision_maker_handler_class() is not None