def test_new_executors_not_in_database(self, session):
        agent = AgentFactory.create()
        executors = [{
            'executor_name': 'nmap_executor',
            'args': {
                'param1': True
            }
        }]

        assert update_executors(agent, executors)
    def test_remove_all_executors(self, session):
        agent = AgentFactory.create()
        params = {'old_param': True}
        executor = ExecutorFactory.create(name='old_executor',
                                          agent=agent,
                                          parameters_metadata=params)
        session.add(executor)
        session.commit()
        executors = []

        assert update_executors(agent, executors)
        count_executors = Executor.query.filter_by(agent=agent).count()
        assert count_executors == 0
    def test_executors_with_some_invalid_executors(self, session):
        agent = AgentFactory.create()
        executors = [{
            'invalid_key': 'nmap_executor'
        }, {
            'executor_name': 'executor 1',
            'args': {
                'param1': True
            }
        }]

        assert update_executors(agent, executors)
        count_executors = Executor.query.filter_by(agent=agent).count()
        assert count_executors == 1
    def test_executor_already_in_database_but_new_parameters_incoming(
            self, session):
        agent = AgentFactory.create()
        old_params = {'old_param': True}
        executor = ExecutorFactory.create(agent=agent,
                                          parameters_metadata=old_params)
        session.add(executor)
        session.commit()
        new_params = old_params
        new_params.update({'param1': True})
        executors = [{'executor_name': executor.name, 'args': new_params}]

        assert update_executors(agent, executors)
        from_db_executor = Executor.query.filter_by(id=executor.id,
                                                    agent=agent).first()
        assert from_db_executor.parameters_metadata == new_params
    def test_remove_one_of_two_executors(self, session):
        agent = AgentFactory.create()
        executor = ExecutorFactory.create(name='executor 1',
                                          agent=agent,
                                          parameters_metadata={'param1': True})
        session.add(executor)
        another_executor = ExecutorFactory.create(
            name='executor 2',
            agent=agent,
            parameters_metadata={'param2': True})
        session.add(executor)
        session.add(another_executor)
        session.commit()
        executors = [{'executor_name': 'executor 2', 'args': {'param2': True}}]

        assert update_executors(agent, executors)
        count_executors = Executor.query.filter_by(agent=agent).count()
        assert count_executors == 1
        from_db_executor = Executor.query.filter_by(id=another_executor.id,
                                                    agent=agent).first()
        assert from_db_executor.name == 'executor 2'
    def test_new_executor_and_delete_the_old_one(self, session):
        agent = AgentFactory.create()
        params = {'old_param': True}
        executor = ExecutorFactory.create(name='old_executor',
                                          agent=agent,
                                          parameters_metadata=params)
        session.add(executor)
        session.commit()
        executors = [{
            'executor_name': 'new executor',
            'args': {
                'param1': True
            }
        }]

        assert update_executors(agent, executors)
        count_executors = Executor.query.filter_by(agent=agent).count()
        assert count_executors == 1
        current_executor = Executor.query.filter_by(agent=agent).first()
        assert current_executor.name == 'new executor'
        assert current_executor.parameters_metadata == {'param1': True}
    def test_executors_with_missing_args(self, session):
        agent = AgentFactory.create()
        executors = [{'executor_name': 'nmap_executor'}]

        assert update_executors(agent, executors)