예제 #1
0
    def test_with_some_error(self):
        self.resource_to_org_ids.update({
            'foo': [sen.o1, sen.o2],
            'bar': [sen.o3, sen.o4, sen.o5],
        })
        exc_type = ZeroDivisionError  # (just an example exception class)
        self.mock._get_result_dicts_and_output_body.side_effect = exc_type

        with self.assertRaises(exc_type) as exc_context:
            self.meth.input_callback(self.routing_key, self.body,
                                     sen.properties)

        self.assertEqual(
            self.force_exit_on_any_remaining_entered_contexts_mock.mock_calls,
            [
                call(self.mock.auth_api),
            ])
        self.assertEqual(self.mock.mock_calls, [
            call.setting_error_event_info(self.event_data),
            call.setting_error_event_info().__enter__(),
            call._check_event_type(self.event_type, self.event_data),
            call.auth_api.__enter__(),
            call._get_resource_to_org_ids(self.event_type, self.event_data),
            call._get_result_dicts_and_output_body(
                self.event_type, self.event_data, self.resource_to_org_ids),
            call.auth_api.__exit__(exc_type, exc_context.exception, ANY),
            call.setting_error_event_info().__exit__(
                exc_type, exc_context.exception, ANY),
        ])
예제 #2
0
    def test_without_org_ids(self, resource_to_org_ids_items):
        self.resource_to_org_ids.update(resource_to_org_ids_items)

        self.meth.input_callback(self.routing_key, self.body, sen.properties)

        self.assertEqual(self.mock.mock_calls, [
            call.setting_error_event_info(self.event_data),
            call.setting_error_event_info().__enter__(),
            call._check_event_type(self.event_type, self.event_data),
            call.auth_api.__enter__(),
            call._get_resource_to_org_ids(self.event_type, self.event_data),
            call.auth_api.__exit__(None, None, None),
            call.setting_error_event_info().__exit__(None, None, None),
        ])
예제 #3
0
    def test_with_some_org_ids(self, resource_to_org_ids_items):
        self.resource_to_org_ids.update(resource_to_org_ids_items)

        self.meth.input_callback(self.routing_key, self.body, sen.properties)

        self.assertEqual(self.mock.mock_calls, [
            call.setting_error_event_info(self.event_data),
            call.setting_error_event_info().__enter__(),
            call._check_event_type(self.event_type, self.event_data),
            call.auth_api.__enter__(),
            call._get_resource_to_org_ids(self.event_type, self.event_data),
            call._get_result_dicts_and_output_body(
                self.event_type, self.event_data, self.resource_to_org_ids),
            call._publish_output_data(
                self.event_type, self.resource_to_org_ids, sen.raw_result_dict,
                sen.cleaned_result_dict, sen.output_body),
            call.auth_api.__exit__(None, None, None),
            call.setting_error_event_info().__exit__(None, None, None),
        ])
예제 #4
0
 def test__input_callback(self, FilePagedSequence_mock):
     FilePagedSequence_mock.return_value = MagicMock()
     FilePagedSequence_mock.return_value.__enter__.return_value = sentinel.working_seq
     data = MagicMock(**{'get.return_value': sentinel.rid})
     self.mock.configure_mock(
         **{
             '_fix_body.return_value':
             sentinel.body,
             'prepare_data.return_value':
             data,
             'setting_error_event_info':
             MagicMock(),
             'get_output_rk.return_value':
             sentinel.output_rk,
             'get_output_bodies.return_value':
             [sentinel.output_body1, sentinel.output_body2],
         })
     self.meth.input_callback(sentinel.routing_key, sentinel.body,
                              sentinel.properties)
     self.assertEqual(self.mock.mock_calls, [
         call._fix_body(sentinel.body),
         call.prepare_data(sentinel.routing_key, sentinel.body,
                           sentinel.properties),
         call.prepare_data().get('properties.message_id'),
         call.setting_error_event_info(sentinel.rid),
         call.setting_error_event_info().__enter__(),
         call.get_output_rk(data),
         call.get_output_bodies(data, sentinel.working_seq),
         call.publish_output(routing_key=sentinel.output_rk,
                             body=sentinel.output_body1),
         call.publish_output(routing_key=sentinel.output_rk,
                             body=sentinel.output_body2),
         call.setting_error_event_info().__exit__(None, None, None),
     ])
     self.assertEqual(FilePagedSequence_mock.mock_calls, [
         call(page_size=1000),
         call().__enter__(),
         call().__exit__(None, None, None),
     ])
예제 #5
0
    def test__get_output_bodies(self):
        parsed = [MagicMock(**{'__class__': RecordDict,
                               'used_as_context_manager': True,
                               'get_ready_json.return_value':
                                   getattr(sentinel,
                                           'output_body{}'.format(i))})
                  for i in (1, 2)]
        self.mock.configure_mock(**{
            'parse.return_value': parsed,
            'get_output_message_id.side_effect': [
                sentinel.msg_A,
                sentinel.msg_B,
            ],
            'setting_error_event_info': MagicMock(),
            'postprocess_parsed.side_effect': (
                lambda data, parsed, total, item_no: parsed
            ),
        })
        seq_mock = FilePagedSequence._instance_mock()
        output_bodies = self.meth.get_output_bodies(sentinel.data, seq_mock)
        self.assertIs(output_bodies, seq_mock)
        self.assertEqual(seq_mock._list, [
            sentinel.output_body1,
            sentinel.output_body2,
        ])
        self.assertEqual(parsed[0].mock_calls, [
            call.__setitem__('id', sentinel.msg_A),
            call.get_ready_json(),
        ])
        self.assertEqual(parsed[1].mock_calls, [
            call.__setitem__('id', sentinel.msg_B),
            call.get_ready_json(),
        ])
        self.assertEqual(self.mock.mock_calls, [
            call.parse(sentinel.data),
            call.get_output_message_id(parsed[0]),
            call.delete_too_long_address(parsed[0]),
            call.get_output_message_id(parsed[1]),
            call.delete_too_long_address(parsed[1]),

            call.setting_error_event_info(parsed[0]),
            call.setting_error_event_info().__enter__(),
            call.postprocess_parsed(sentinel.data,
                                    parsed[0],
                                    2,
                                    item_no=1),
            call.setting_error_event_info().__exit__(None, None, None),

            call.setting_error_event_info(parsed[1]),
            call.setting_error_event_info().__enter__(),
            call.postprocess_parsed(sentinel.data,
                                    parsed[1],
                                    2,
                                    item_no=2),
            call.setting_error_event_info().__exit__(None, None, None),
        ])