def test_login_agent_on_already_in_use(self, AgentdClient):
        AgentdClient.return_value = self.agentd_client
        self.agentd_client.agents.login_agent.side_effect = AgentdClientError(error.ALREADY_IN_USE)

        agent.login_agent(self.agi, self.agent_id, self.extension, self.context)

        self.agi.set_variable.assert_called_once_with(agent.AGENTSTATUS_VAR, 'already_in_use')
    def test_login_agent(self, AgentdClient):
        AgentdClient.return_value = self.agentd_client

        agent.login_agent(self.agi, self.agent_id, self.extension, self.context)

        AgentdClient.assert_called_once_with(**self.agentd_config)
        self.agentd_client.agents.login_agent.assert_called_once_with(self.agent_id,
                                                                      self.extension,
                                                                      self.context)
        self.agi.set_variable.assert_called_once_with(agent.AGENTSTATUS_VAR, 'logged')
def agent_login(agi, cursor, args):
    try:
        agent_id = int(args[0])
        extension = args[1]
        context = args[2]

        agent.login_agent(agi, agent_id, extension, context)
    except Exception as e:
        logger.exception("Error while logging in agent")
        agi.dp_break(e)