/* This file is part of Delivery Pipeline Plugin. Delivery Pipeline Plugin is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Delivery Pipeline Plugin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Delivery Pipeline Plugin. If not, see <http://www.gnu.org/licenses/>. */ package se.diabol.jenkins.pipeline; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.acegisecurity.BadCredentialsException; import org.junit.Test; import org.junit.runner.RunWith; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import se.diabol.jenkins.pipeline.trigger.TriggerException; import javax.servlet.http.HttpServletResponse; @RunWith(MockitoJUnitRunner.class) public class PipelineApiTest { @Test public void testDoManualStep() throws Exception { StaplerRequest request = Mockito.mock(StaplerRequest.class); StaplerResponse response = Mockito.mock(StaplerResponse.class); DeliveryPipelineView view = Mockito.mock(DeliveryPipelineView.class); doThrow(new TriggerException("Ops")).when(view).triggerManual("upstream", "downstream", "12"); doThrow(new BadCredentialsException("Ops")).when(view).triggerManual("upstream", "downstream", "13"); PipelineApi api = new PipelineApi(view); api.doManualStep(request, response, null, null, null); verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE); response = Mockito.mock(StaplerResponse.class); api.doManualStep(request, response, null, "hej", null); verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE); response = Mockito.mock(StaplerResponse.class); api.doManualStep(request, response, "hej", "hej", null); verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE); response = Mockito.mock(StaplerResponse.class); api.doManualStep(request, response, null, "hej", "hej"); verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE); response = Mockito.mock(StaplerResponse.class); api.doManualStep(request, response, null, null, "hej"); verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE); response = Mockito.mock(StaplerResponse.class); api.doManualStep(request, response,"upstream", "downstream", "12"); verify(response, times(1)).setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response = Mockito.mock(StaplerResponse.class); api.doManualStep(request, response,"upstream", "downstream", "13"); verify(response, times(1)).setStatus(HttpServletResponse.SC_FORBIDDEN); view = Mockito.mock(DeliveryPipelineView.class); api = new PipelineApi(view); response = Mockito.mock(StaplerResponse.class); api.doManualStep(request, response,"upstream", "downstream", "14"); verify(response, times(1)).setStatus(HttpServletResponse.SC_OK); verify(view).triggerManual("upstream", "downstream", "14"); } @Test public void testDoRebuild() throws Exception { StaplerRequest request = Mockito.mock(StaplerRequest.class); StaplerResponse response = Mockito.mock(StaplerResponse.class); DeliveryPipelineView view = Mockito.mock(DeliveryPipelineView.class); doThrow(new BadCredentialsException("Ops")).when(view).triggerRebuild("secretproject", "1"); PipelineApi api = new PipelineApi(view); api.doRebuildStep(request, response, null, null); verify(response, times(1)).setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE); api.doRebuildStep(request, response, "project", "1"); verify(response, times(1)).setStatus(HttpServletResponse.SC_OK); api.doRebuildStep(request, response, "secretproject", "1"); verify(response, times(1)).setStatus(HttpServletResponse.SC_FORBIDDEN); } }