Ejemplo n.º 1
0
 def test_init_with_flags(self):
     triggers = [
         Flag(action='regMatch', args={'regex': '(.*)'}),
         Flag(action='regMatch', args={'regex': 'a'})
     ]
     step = Step('HelloWorld', 'helloWorld', triggers=triggers)
     self.__compare_init(step,
                         '',
                         'helloWorld',
                         'HelloWorld',
                         '', {},
                         triggers=['regMatch', 'regMatch'])
Ejemplo n.º 2
0
 def __execute_trigger(conditional, data_in):
     filters = [
         Filter(action=filter_element['action'],
                args=Triggers.__to_new_input_format(filter_element['args']))
         for filter_element in conditional['filters']
     ]
     return Flag(action=conditional['action'],
                 args=Triggers.__to_new_input_format(conditional['args']),
                 filters=filters).execute(data_in, {})
Ejemplo n.º 3
0
    def test_execute_with_triggers(self):
        triggers = [Flag(action='regMatch', args={'regex': 'aaa'})]
        step = Step(app='HelloWorld', action='helloWorld', triggers=triggers)
        instance = AppInstance.create(app_name='HelloWorld',
                                      device_name='device1')
        step.send_data_to_trigger({"data_in": {"data": 'aaa'}})

        result = {'triggered': False}

        @callbacks.data_sent.connect
        def callback_is_sent(sender, **kwargs):
            if kwargs['callback_name'] == "Trigger Step Taken":
                result['triggered'] = True

        step.execute(instance.instance, {})
        self.assertTrue(result['triggered'])
Ejemplo n.º 4
0
    def test_execute_multiple_triggers(self):
        triggers = [Flag(action='regMatch', args={'regex': 'aaa'})]
        step = Step(app='HelloWorld', action='helloWorld', triggers=triggers)
        instance = AppInstance.create(app_name='HelloWorld',
                                      device_name='device1')
        step.send_data_to_trigger({"data_in": {"data": 'a'}})

        trigger_taken = {'triggered': 0}
        trigger_not_taken = {'triggered': 0}

        @callbacks.data_sent.connect
        def callback_is_sent(sender, **kwargs):
            if kwargs['callback_name'] == "Trigger Step Taken":
                trigger_taken['triggered'] += 1
            elif kwargs['callback_name'] == "Trigger Step Not Taken":
                step.send_data_to_trigger({"data_in": {"data": 'aaa'}})
                trigger_not_taken['triggered'] += 1

        step.execute(instance.instance, {})
        self.assertEqual(trigger_taken['triggered'], 1)
        self.assertEqual(trigger_not_taken['triggered'], 1)
Ejemplo n.º 5
0
    def test_get_next_step(self):
        flag = Flag(action='regMatch', args={'regex': 'aaa'})
        next_step = NextStep(name='next', flags=[flag], status='Success')
        step = Step('HelloWorld', 'helloWorld', next_steps=[next_step])
        step._output = ActionResult(result='aaa', status='Success')

        result = {'triggered': False}

        @callbacks.data_sent.connect
        def validate_sent_data(sender, **kwargs):
            if isinstance(sender, Step):
                self.assertIs(sender, step)
                self.assertIn('callback_name', kwargs)
                self.assertEqual(kwargs['callback_name'],
                                 'Conditionals Executed')
                self.assertIn('object_type', kwargs)
                self.assertEqual(kwargs['object_type'], 'Step')
                result['triggered'] = True

        self.assertEqual(step.get_next_step({}), 'next')
        self.assertEqual(step._next_up, 'next')
        self.assertTrue(result['triggered'])
Ejemplo n.º 6
0
 def test_execute_action_with_valid_complex_args_valid_data(self):
     self.assertTrue(Flag(action='mod2_flag2', args={'arg1': {'a': '1', 'b': '5'}}).execute('some_long_string', {}))
Ejemplo n.º 7
0
 def test_get_next_step_invalid_step(self):
     flag = Flag(action='regMatch', args={'regex': 'aaa'})
     next_step = NextStep(name='next', flags=[flag], status='Success')
     step = Step('HelloWorld', 'helloWorld', next_steps=[next_step])
     step._output = ActionResult(result='bbb', status='Success')
     self.assertIsNone(step.get_next_step({}))
Ejemplo n.º 8
0
 def test_execute_action_with_valid_args_and_filters_invalid_data_and_routing(self):
     filters = [Filter(action='mod1_filter2', args={'arg1': '@step1'}), Filter(action='Top Filter')]
     # should go <input = invalid> -> <mod1_filter2 with error = invalid> -> <Top Filter with error = invalid>
     # -> <mod1_flag2 4+invalid throws error> -> False
     accumulator = {'step1': '5', 'step2': 4}
     self.assertFalse(Flag(action='mod1_flag2', args={'arg1': 4}, filters=filters).execute('invalid', accumulator))
Ejemplo n.º 9
0
 def test_init_with_args_no_conversion(self):
     flag = Flag(action='mod1_flag2', args={'arg1': 3})
     self.__compare_init(flag, 'mod1_flag2', [], {'arg1': 3})
Ejemplo n.º 10
0
 def test_execute_action_with_valid_args_and_filters_valid_data(self):
     filters = [Filter(action='mod1_filter2', args={'arg1': '5'}), Filter(action='Top Filter')]
     # should go <input = 1> -> <mod1_filter2 = 5+1 = 6> -> <Top Filter 6=6> -> <mod1_flag2 4+6%2==0> -> True
     self.assertTrue(Flag(action='mod1_flag2', args={'arg1': 4}, filters=filters).execute('1', {}))
Ejemplo n.º 11
0
 def test_execute_action_with_valid_args_and_filters_invalid_data(self):
     filters = [Filter(action='mod1_filter2', args={'arg1': '5'}), Filter(action='Top Filter')]
     # should go <input = invalid> -> <mod1_filter2 with error = invalid> -> <Top Filter with error = invalid>
     # -> <mod1_flag2 4+invalid throws error> -> False
     self.assertFalse(Flag(action='mod1_flag2', args={'arg1': 4}, filters=filters).execute('invalid', {}))
Ejemplo n.º 12
0
 def test_init_with_args_with_routing(self):
     flag = Flag(action='mod1_flag2', args={'arg1': '@step2'})
     self.__compare_init(flag, 'mod1_flag2', [], {'arg1': '@step2'})
Ejemplo n.º 13
0
 def test_init_with_uid(self):
     uid = uuid.uuid4().hex
     flag = Flag(action='Top Flag', uid=uid)
     self.__compare_init(flag, 'Top Flag', [], {}, uid=uid)
Ejemplo n.º 14
0
 def test_execute_action_only_no_args_invalid_data(self):
     self.assertFalse(Flag(action='Top Flag').execute('invalid', {}))
Ejemplo n.º 15
0
 def test_execute_action_only_no_args_valid_data_with_conversion(self):
     self.assertTrue(Flag(action='Top Flag').execute('3.4', {}))
Ejemplo n.º 16
0
 def test_init_with_filters(self):
     filters = [Filter(action='mod1_filter2', args={'arg1': '5.4'}), Filter(action='Top Filter')]
     flag = Flag(action='Top Flag', filters=filters)
     self.__compare_init(flag, 'Top Flag', filters, {})
Ejemplo n.º 17
0
 def test_init_with_args_invalid_arg_type(self):
     with self.assertRaises(InvalidInput):
         Flag(action='mod1_flag2', args={'arg1': 'aaa'})
Ejemplo n.º 18
0
 def test_init_with_args_invalid_arg_name(self):
     with self.assertRaises(InvalidInput):
         Flag(action='mod1_flag2', args={'invalid': '3'})
Ejemplo n.º 19
0
 def test_execute_action_with_valid_args_invalid_data(self):
     self.assertFalse(Flag(action='mod1_flag2', args={'arg1': 3}).execute('invalid', {}))
Ejemplo n.º 20
0
 def test_init_no_args_action_only(self):
     flag = Flag(action='Top Flag')
     self.__compare_init(flag, 'Top Flag', [], {})