com.github.mike10004.jenkinsbbhook.WebhookHandlerTest.java Source code

Java tutorial

Introduction

Here is the source code for com.github.mike10004.jenkinsbbhook.WebhookHandlerTest.java

Source

/*
 * (c) 2015 Mike Chaberski, distributed under MIT License
 */
package com.github.mike10004.jenkinsbbhook;

import com.github.mike10004.jenkinsbbhook.WebhookHandler.CrumbData;
import com.google.common.base.Supplier;
import com.google.gson.Gson;
import static javax.servlet.http.HttpServletResponse.SC_ACCEPTED;
import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
import static javax.servlet.http.HttpServletResponse.SC_OK;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Rule;
import org.mockserver.client.server.MockServerClient;
import org.mockserver.junit.MockServerRule;
import org.mockserver.model.HttpRequest;
import org.mockserver.model.HttpResponse;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockServletContext;

/**
 *
 * @author mchaberski
 */
public class WebhookHandlerTest {

    @Rule
    public MockServerRule mockServerRule = new MockServerRule(this);

    public WebhookHandlerTest() {
    }

    @Test
    public void testRelayBuildRequest() throws Exception {
        System.out.println("testRelayBuildRequest");
        MockServerClient jenkinsServer = new MockServerClient("localhost", mockServerRule.getHttpPort());
        CrumbData crumbData = new CrumbData("5647382910", ".crumb");
        String crumbDataJson = new Gson().toJson(crumbData);
        String apiToken = "12345";
        String username = "betty@example.com";
        String projectToken = "09876";
        jenkinsServer.when(HttpRequest.request("/crumbIssuer/api/json")
        //                .with
        ).respond(HttpResponse.response(crumbDataJson).withStatusCode(SC_OK));
        String jobName = "my-jenkins-project";
        String pushJson = "{}";
        jenkinsServer
                .when(HttpRequest.request("/job/" + jobName + "/build").withMethod("POST")
                        .withHeader(crumbData.crumbRequestField, crumbData.crumb)
                        .withQueryStringParameter("token", projectToken))
                .respond(HttpResponse.response().withStatusCode(SC_ACCEPTED));
        MockServletContext servletContext = new MockServletContext();
        MockHttpServletRequest request = new MockHttpServletRequest(servletContext);
        request.addHeader("X-Event-Key", "repo:push");

        servletContext.setInitParameter(ContextAppParams.PARAM_JENKINS_BASE_URL,
                "http://localhost:" + mockServerRule.getHttpPort());
        WebhookHandler instance = new WebhookHandler(new Supplier<CloseableHttpClient>() {
            @Override
            public CloseableHttpClient get() {
                return HttpClients.createDefault();
            }
        }, servletContext);

        instance.relayBuildRequest(request, jobName, projectToken, username, apiToken, pushJson);

    }

}