class_docstr: Tests for RulesEngine
class_docstr_tok: ["Tests","for","RulesEngine"]
docstr: RulesEngine - _configure_outputs, unstaged with all outputs and one invalid output
docstr_tok: ["RulesEngine","-","_configure_outputs",",","unstaged","with","all","outputs","and","one","invalid","output"]
code: def test_configure_outputs_invalid_output(self):
      """RulesEngine - _configure_outputs, unstaged with all outputs and one invalid output"""
      rule = Mock(
          outputs_set={"aws-sns:static"},
          dynamic_outputs=[
              Mock(
                  return_value="invalid_output_will_not_be_in_final_outputs"
              )
          ],
          is_staged=Mock(return_value=False),
      )
      record = {"foo": "bar"}
  
      with patch.object(
          RulesEngine, "_configure_dynamic_outputs"
      ) as configure_dynamic:
          configure_dynamic.return_value = [
              "invalid_output_will_not_be_in_final_outputs"
          ]
  
          outputs = self._rules_engine._configure_outputs(record, rule)
  
          # Tests
          rule.is_staged.assert_called()
          configure_dynamic.assert_called()
          configure_dynamic.assert_called_with(record, rule)
          expected = self._rules_engine._required_outputs_set.union(
              {"aws-sns:static"}
          )
          assert_equal(outputs, expected)
  
imports: from datetime import datetime, timedelta
  from mock import Mock, patch, PropertyMock
  from nose.tools import assert_equal, assert_false, assert_true
  from publishers.community.generic import remove_internal_fields
  from streamalert.shared.publisher import AlertPublisher, Register, DefaultPublisher
  import streamalert.rules_engine.rules_engine
  from streamalert.rules_engine.rules_engine import RulesEngine
label_desc: Use image node_id 31 for calling the TestRulesEngine obj's underlying member method code with example usage: obj.test_configure_outputs_invalid_output() without return types