@Test public void whenEmptyHeaderTypeMustReturnError() throws Exception { //Prepare the SUT File uniqueFile = File.createTempFile("webHookTest_", ".txt", new File("target")); StaplerRequest staplerRequest = Mockito.mock(RequestImpl.class); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); //perform the test performDoIndexTest(staplerRequest, staplerResponse, uniqueFile); //validate that everything was done as planed verify(staplerResponse).setStatus(403); String expectedOutput = "Only push event can be accepted."; isExpectedOutput(uniqueFile, expectedOutput); log.info("Test succeeded."); }
@Test public void whenWrongHeaderTypeMustReturnError() throws Exception { //Prepare the SUT File uniqueFile = File.createTempFile("webHookTest_", ".txt", new File("target")); StaplerRequest staplerRequest = Mockito.mock(RequestImpl.class); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); when(staplerRequest.getHeader("X-Gogs-Event")).thenReturn("junk"); //perform the testÎ performDoIndexTest(staplerRequest, staplerResponse, uniqueFile); //validate that everything was done as planed verify(staplerResponse).setStatus(403); String expectedOutput = "Only push event can be accepted."; isExpectedOutput(uniqueFile, expectedOutput); log.info("Test succeeded."); }
@Test public void whenQueryStringIsNullMustThrowException() throws Exception { //Prepare the SUT StaplerRequest staplerRequest = Mockito.mock(RequestImpl.class); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); when(staplerRequest.getHeader("X-Gogs-Event")).thenReturn("push"); when(staplerRequest.getQueryString()).thenReturn(null); GogsWebHook gogsWebHook = new GogsWebHook(); try { gogsWebHook.doIndex(staplerRequest, staplerResponse); } catch (NullPointerException e) { String expectedErrMsg = "The queryString in the request is null"; assertEquals("Not the expected error message.", expectedErrMsg, e.getMessage()); log.info("call failed as expected."); return; } fail("The call should have failed."); }
@Test public void whenNoJobInQueryStringMustReturnError() throws Exception { //Prepare the SUT File uniqueFile = File.createTempFile("webHookTest_", ".txt", new File("target")); StaplerRequest staplerRequest = Mockito.mock(RequestImpl.class); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); when(staplerRequest.getHeader("X-Gogs-Event")).thenReturn("push"); when(staplerRequest.getQueryString()).thenReturn("foo=bar&blaah=blaah"); //perform the testÎ performDoIndexTest(staplerRequest, staplerResponse, uniqueFile); //validate that everything was done as planed verify(staplerResponse).setStatus(404); String expectedOutput = "Parameter 'job' is missing."; isExpectedOutput(uniqueFile, expectedOutput); log.info("Test succeeded."); }
@Test public void whenEmptyJobInQueryStringMustReturnError() throws Exception { //Prepare the SUT File uniqueFile = File.createTempFile("webHookTest_", ".txt", new File("target")); StaplerRequest staplerRequest = Mockito.mock(RequestImpl.class); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); when(staplerRequest.getHeader("X-Gogs-Event")).thenReturn("push"); when(staplerRequest.getQueryString()).thenReturn("job&foo=bar"); //perform the testÎ performDoIndexTest(staplerRequest, staplerResponse, uniqueFile); //validate that everything was done as planed verify(staplerResponse).setStatus(404); String expectedOutput = "No value assigned to parameter 'job'"; isExpectedOutput(uniqueFile, expectedOutput); log.info("Test succeeded."); }
@Test public void whenEmptyJob2InQueryStringMustReturnError() throws Exception { //Prepare the SUT File uniqueFile = File.createTempFile("webHookTest_", ".txt", new File("target")); StaplerRequest staplerRequest = Mockito.mock(RequestImpl.class); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); when(staplerRequest.getHeader("X-Gogs-Event")).thenReturn("push"); when(staplerRequest.getQueryString()).thenReturn("job=&foo=bar"); //perform the testÎ performDoIndexTest(staplerRequest, staplerResponse, uniqueFile); //validate that everything was done as planed verify(staplerResponse).setStatus(404); String expectedOutput = "No value assigned to parameter 'job'"; isExpectedOutput(uniqueFile, expectedOutput); log.info("Test succeeded."); }
@Test public void whenUriDoesNotContainUrlNameMustReturnError() throws Exception { //Prepare the SUT File uniqueFile = File.createTempFile("webHookTest_", ".txt", new File("target")); StaplerRequest staplerRequest = Mockito.mock(RequestImpl.class); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); when(staplerRequest.getHeader("X-Gogs-Event")).thenReturn("push"); when(staplerRequest.getQueryString()).thenReturn("job=myJob"); MockServletInputStream inputStream = new MockServletInputStream("body"); when(staplerRequest.getInputStream()).thenReturn(inputStream); when(staplerRequest.getRequestURI()).thenReturn("/badUri/aaa"); //perform the testÎ performDoIndexTest(staplerRequest, staplerResponse, uniqueFile); //validate that everything was done as planed verify(staplerResponse).setStatus(404); String expectedOutput = "No payload or URI contains invalid entries."; isExpectedOutput(uniqueFile, expectedOutput); log.info("Test succeeded."); }
@Test public void callDoIndexWithNullReqMessageMustThrowException() throws IOException { GogsWebHook gogsWebHook = new GogsWebHook(); StaplerResponse staplerResponse = Mockito.mock(ResponseImpl.class); try { gogsWebHook.doIndex(null, staplerResponse); } catch (NullPointerException e) { String expectedErrMsg = "Null request submitted to doIndex method"; assertEquals("Not the expected error message.", expectedErrMsg, e.getMessage()); log.info("call failed as expected."); return; } fail("The call should have failed."); }
/** @return a response to use with {@link Stapler} binding utilities */ @VisibleForTesting StaplerResponse getResponse(Stapler stapler) { return new ResponseImpl(stapler, new FakeHttpServletResponse()) { @Override public void sendRedirect(String url) throws IOException { ; } }; }