Esempio n. 1
0
def test_get_instance_build_logs_by_user(m, request_context, mock_user):
    assert not auth.current_user.is_anonymous, "Unexpected user in session"
    assert auth.current_registry is not None, "Unexpected registry in session"
    # pagination settings
    default_limit = 131072
    parts = 4
    part_size = round(default_limit / parts)
    logger.debug("Number of parts: %d", parts)
    logger.debug("Part size: %d", part_size)
    # set workflow/test_instance/test_build
    workflow = {"uuid": "1111-222"}
    build = MagicMock()
    build.id = "1"
    output_part = str("n" * part_size)
    build.get_output.return_value = output_part
    logger.debug("Part length: %r", len(output_part))
    workflow = MagicMock()
    workflow.uuid = "1111-222"
    instance = MagicMock()
    instance.uuid = '12345'
    instance.suite = MagicMock()
    instance.suite.uuid = '1111'
    instance.get_test_build.return_value = build
    instance.test_suite.workflow = workflow
    m.get_test_instance.return_value = instance
    m.get_user_workflows.return_value = []
    m.get_suite.return_value = instance.suite
    m.get_user_workflow_version = workflow
    # test get logs defaults offset and limit
    response = controllers.instances_builds_get_logs(instance['uuid'],
                                                     build.id)
    m.get_test_instance.assert_called_once()
    m.get_suite.assert_called_once()
    m.get_user_workflow_version.assert_called_once()
    assert isinstance(response, str), "Unexpected response type"
    assert len(
        response
    ) == part_size, f"Unexpected log length: it should be limited to {part_size} bytes"
    # test pagination
    for n in range(0, parts):
        # test get logs defaults offset and limit
        response = controllers.instances_builds_get_logs(
            instance['uuid'],
            build.id,
            limit_bytes=part_size,
            offset_bytes=part_size * n)
        assert isinstance(response, str), "Unexpected response type"
        assert len(
            response
        ) == part_size, f"Unexpected log length: it should be limited to {part_size} bytes"
Esempio n. 2
0
def test_get_instance_build_logs_by_user_invalid_limit(m, request_context,
                                                       mock_user):
    assert not auth.current_user.is_anonymous, "Unexpected user in session"
    assert auth.current_registry is not None, "Unexpected registry in session"
    workflow = {"uuid": "1111-222"}
    build = MagicMock()
    build.id = "1"
    default_limit = 131072
    build.output = str(os.urandom(default_limit))
    instance = MagicMock()
    instance.uuid = '12345'
    instance.get_test_build.return_value = build
    instance.test_suite.workflow = workflow
    m.get_test_instance.return_value = instance
    m.get_user_workflows.return_value = [workflow]
    # test get logs defaults offset and limit
    response = controllers.instances_builds_get_logs(instance['uuid'],
                                                     build.id,
                                                     limit_bytes=-1000)
    logger.debug("Response: %r", response)
    assert response.status_code == 400, "Unexpected response"
    error = json.loads(response.data)
    logger.debug("Error object: %r", error)
    assert isinstance(error, dict), "Unexpected response type"
    assert messages.invalid_log_limit in error[
        "detail"], "Unexpected error message"