示例#1
0
def load_response(file_or_stream):
    from rest_framework.response import Response

    context = json.loads(_read(file_or_stream))
    response = Response(context['data'],
                        status=context['status_code'],
                        content_type=context['content_type'])
    response._is_rendered = True
    if dj_version < (3, 2):
        response._headers = context['headers']
    else:
        response.headers = context['headers']
    return response
示例#2
0
    def unauthorized_response(self, request):

        response = Response(
            {"detail": "This action is not authorized"},
            content_type="application/json",
            status=status.HTTP_401_UNAUTHORIZED,
        )
        response.accepted_renderer = JSONRenderer()
        response.accepted_media_type = "application/json"
        response.renderer_context = {}

        # Render the response
        response._is_rendered = False
        response.render()
        return response
def test_process_response_exception(django_request, mocker, caplog):
    mock_send_message = mocker.patch(
        SEND_MSG_F,
        side_effect=Exception('ERR'),
    )

    settings.TELEGRAM_BOT = {
        'CONVERSATIONS': [
            'tests.bot.conftest.ConvTest',
        ],
        'TOKEN': 'token',
        'COMMANDS_SUFFIX': 'dev',
        'HISTORY_LOOKUP_MODEL_PROPERTY': 'created_at',
        'MIDDLEWARE': {
            'CHAT_ID':
            123,
            'RULES': [{
                'view': 'view',
                'conditions': {
                    'type': 'function',
                    'function': 'tests.test_configurator.cond_fn',
                },
                'trigger_codes': [1, 2],
                'message': 'msg',
            }],
        },
    }
    response = Response(
        data={'field': 'value'},
        headers={'Content-Type': 'application/json'},
    )
    response._is_rendered = True
    response.content = '{"field":"value"}'
    response.render()
    response.status_code = 1

    def get_response(self):
        return response

    with caplog.at_level(logging.ERROR):
        mw = TelegramMiddleware(get_response)
    assert mw(django_request) == response
    mock_send_message.assert_called_once()
    expected_config = settings.TELEGRAM_BOT['MIDDLEWARE']['RULES'][0]
    assert (
        f'TelegramMiddleware rule {expected_config} finished with error: ERR'
    ) in caplog.records[0].message
def test_process_response_matches(django_request, mocker):
    mock_send_message = mocker.patch(
        SEND_MSG_F,
        return_value=True,
    )

    settings.TELEGRAM_BOT = {
        'CONVERSATIONS': [
            'tests.bot.conftest.ConvTest',
        ],
        'TOKEN': 'token',
        'COMMANDS_SUFFIX': 'dev',
        'HISTORY_LOOKUP_MODEL_PROPERTY': 'created_at',
        'MIDDLEWARE': {
            'CHAT_ID':
            123,
            'RULES': [{
                'view': 'view',
                'trigger_codes': [1, 2],
                'conditions': {
                    'type': 'value',
                    'field': 'field',
                    'field_value': 'value',
                },
                'message': 'msg',
            }],
        },
    }
    response = Response(
        data={'field': 'value'},
        headers={'Content-Type': 'application/json'},
    )
    response._is_rendered = True
    response.content = '{"field":"value"}'
    response.render()
    response.status_code = 1

    def get_response(self):
        return response

    mw = TelegramMiddleware(get_response)

    assert mw(django_request) == response
    mock_send_message.assert_called_once_with(
        '[dev] view with pk pk-1 has ended with 1 and sends message: msg', )