All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.qameta.allure.spring4.AllureSpring4WebMvc Maven / Gradle / Ivy

package io.qameta.allure.spring4;

import io.qameta.allure.attachment.DefaultAttachmentProcessor;
import io.qameta.allure.attachment.FreemarkerAttachmentRenderer;
import io.qameta.allure.attachment.http.HttpRequestAttachment;
import io.qameta.allure.attachment.http.HttpResponseAttachment;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import static io.qameta.allure.servletapi.HttpServletAttachmentBuilder.buildRequest;
import static io.qameta.allure.servletapi.HttpServletAttachmentBuilder.buildResponse;

/**
 * @author charlie (Dmitry Baev).
 */
public class AllureSpring4WebMvc implements HandlerInterceptor {

    @Override
    public boolean preHandle(final HttpServletRequest request,
                             final HttpServletResponse response,
                             final Object handler) throws Exception {
        return true;
    }

    @Override
    public void postHandle(final HttpServletRequest request,
                           final HttpServletResponse response,
                           final Object handler, final ModelAndView modelAndView) throws Exception {
        //do nothing
    }

    @Override
    public void afterCompletion(final HttpServletRequest request,
                                final HttpServletResponse response,
                                final Object handler,
                                final Exception ex) throws Exception {
        final HttpRequestAttachment requestAttachment = buildRequest(request);
        final HttpResponseAttachment responseAttachment = buildResponse(response);
        final DefaultAttachmentProcessor processor = new DefaultAttachmentProcessor();

        processor.addAttachment(
                requestAttachment,
                new FreemarkerAttachmentRenderer("http-request.ftl")
        );

        processor.addAttachment(
                responseAttachment,
                new FreemarkerAttachmentRenderer("http-response.ftl")
        );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy