request.getParameter("delete") != null){ endPointContentStore.store.clear(); response.sendRedirect(stripTrailingSlash(myServer.getRootUrl()) + WebHookEndPointViewerController.MY_URL); return null; writer.write("Please don't POST here. POST test webhook requests to " + stripTrailingSlash(myServer.getRootUrl()) + WebHookEndPointController.MY_URL); writer.write("\r\n"); params.put("postURL", stripTrailingSlash(myServer.getRootUrl()) + WebHookEndPointController.MY_URL); params.put("count", endPointContentStore.store.size()); params.put("storeItems", endPointContentStore.getAll());
@Override public void report(HealthStatusScope scope, HealthStatusItemConsumer resultConsumer) { Map<String,Object> params = new HashMap<>(); params.put("possibleProblemFilesCount", myWebHookTeamCityRestApiZipPluginFixer.getFoundApiZipFilesContainingJaxbJars().size()); params.put("adminUrl", stripTrailingSlash(mySBuildServer.getRootUrl()) + "/admin/admin.html?item=" + WebHookRestApiAdminPage.TC_WEB_HOOK_REST_API_ADMIN_ID); final HealthStatusItem item = new HealthStatusItem("webhook-api-jar-conflict", myCategory, params); resultConsumer.consumeGlobal(item); }
@Override public void report(HealthStatusScope scope, HealthStatusItemConsumer resultConsumer) { Map<String,Object> params = new HashMap<>(); params.put("webhookRestApiRestartRequired", myWebHookTeamCityRestApiZipPluginFixer.isHaveFilesBeenCleanedSinceBoot()); params.put("adminUrl", stripTrailingSlash(mySBuildServer.getRootUrl()) + "/admin/admin.html?item=" + WebHookRestApiAdminPage.TC_WEB_HOOK_REST_API_ADMIN_ID); final HealthStatusItem item = new HealthStatusItem("webhook-api-restart-required", myCategory, params); resultConsumer.consumeGlobal(item); }
private SlackWrapper constructSlackWrapper(String channel, String username, String url, boolean useAttachements) { SlackWrapper slackWrapper = new SlackWrapper(useAttachements); slackWrapper.setChannel(channel); slackWrapper.setUsername(username); slackWrapper.setSlackUrl(url); slackWrapper.setServerUrl(myServer.getRootUrl()); return slackWrapper; }
private SlackWrapper constructSlackWrapper(String channel, String username, String url, boolean useAttachements) { SlackWrapper slackWrapper = new SlackWrapper(useAttachements); slackWrapper.setChannel(channel); slackWrapper.setUsername(username); slackWrapper.setSlackUrl(url); slackWrapper.setServerUrl(myServer.getRootUrl()); return slackWrapper; }
@Before public void setup() { User user = mock(User.class); when(user.getDescriptiveName()).thenReturn("Fred", "Bob"); responsibilityEntryOld = mock(ResponsibilityEntry.class); responsibilityEntryNew = mock(ResponsibilityEntry.class); when(responsibilityEntryOld.getResponsibleUser()).thenReturn(user); when(responsibilityEntryNew.getResponsibleUser()).thenReturn(user); when(responsibilityEntryOld.getComment()).thenReturn("Comment Old"); when(responsibilityEntryNew.getComment()).thenReturn("Comment New"); SBuildServer buildServer = mock(SBuildServer.class); when(buildServer.getRootUrl()).thenReturn("http://test.url"); variableResolverManager.registerVariableResolverFactory(new WebHooksBeanUtilsVelocityVariableResolverFactory()); whp = new WebHookPayloadXmlVelocityTemplate(new WebHookPayloadManager(buildServer), variableResolverManager); }
@Before public void setup() { User user = mock(User.class); when(user.getDescriptiveName()).thenReturn("Fred", "Bob"); responsibilityEntryOld = mock(ResponsibilityEntry.class); responsibilityEntryNew = mock(ResponsibilityEntry.class); when(responsibilityEntryOld.getResponsibleUser()).thenReturn(user); when(responsibilityEntryNew.getResponsibleUser()).thenReturn(user); when(responsibilityEntryOld.getComment()).thenReturn("Comment Old"); when(responsibilityEntryNew.getComment()).thenReturn("Comment New"); SBuildServer buildServer = mock(SBuildServer.class); when(buildServer.getRootUrl()).thenReturn("http://test.url"); variableResolverManager.registerVariableResolverFactory(new WebHooksBeanUtilsVelocityVariableResolverFactory()); whp = new WebHookPayloadJsonVelocityTemplate(new WebHookPayloadManager(buildServer), variableResolverManager); }
@Test(expected=UnsupportedWebHookFormatException.class) public void test_NotFound(){ SBuildServer mockServer = mock(SBuildServer.class); when(mockServer.getRootUrl()).thenReturn("http://test.url"); WebHookPayloadManager wpm = new WebHookPayloadManager(mockServer); assertTrue(wpm.getRegisteredFormats().isEmpty()); assertTrue(wpm.getRegisteredFormatsAsCollection().isEmpty()); assertNull(wpm.getFormat("SomethingThatDoesNotExist")); }
@Test public void testRegister() { SBuildServer mockServer = mock(SBuildServer.class); when(mockServer.getRootUrl()).thenReturn("http://test.url"); WebHookPayloadManager wpm = new WebHookPayloadManager(mockServer); WebHookPayloadJsonVelocityTemplate whp = new WebHookPayloadJsonVelocityTemplate(wpm, variableResolverManager); whp.register(); assertEquals(whp, wpm.getFormat(whp.getFormatShortName())); }
@Test public void TestCDataTemplatesViaChangeListener(){ when(mockServer.getRootUrl()).thenReturn("http://test.url"); wpm = new WebHookPayloadManager(mockServer); wtm = new WebHookTemplateManager(wpm, null); //File configFile = new File("src/test/resources/webhook-templates_single-entry-called-testXMLtemplate.xml"); ServerPaths serverPaths = new ServerPaths(new File("src/test/resources/testCDataTemplate")); WebHookTemplateFileChangeHandler changeListener = new WebHookTemplateFileChangeHandler(serverPaths, wtm, wpm, webHookTemplateJaxHelper); changeListener.register(); changeListener.handleConfigFileChange(); List<WebHookPayloadTemplate> regsiteredTemplates = wtm.getRegisteredTemplates(); assertEquals(1, regsiteredTemplates.size()); assertTrue(regsiteredTemplates.get(0).getTemplateId().equals("testXMLtemplate")); System.out.println("###########################"); System.out.println(regsiteredTemplates.get(0).getTemplateForState(BuildStateEnum.BUILD_SUCCESSFUL).getTemplateText()); System.out.println("###########################"); }
@Test public void testRegister() { SBuildServer mockServer = mock(SBuildServer.class); when(mockServer.getRootUrl()).thenReturn("http://test.url"); WebHookPayloadManager wpm = new WebHookPayloadManager(mockServer); WebHookPayloadXmlVelocityTemplate whp = new WebHookPayloadXmlVelocityTemplate(wpm, variableResolverManager); whp.register(); assertEquals(whp, wpm.getFormat(whp.getFormatShortName())); }
@Test public void testRegister() { SBuildServer mockServer = mock(SBuildServer.class); when(mockServer.getRootUrl()).thenReturn("http://test.url"); WebHookPayloadManager wpm = new WebHookPayloadManager(mockServer); WebHookPayloadJson whp = new WebHookPayloadJson(wpm, variableResolverManager); whp.register(); assertEquals(whp, wpm.getFormat(whp.getFormatShortName())); }
/** * Used by RepsonsiblityChanged. * Therefore, does not have access to a specific build instance. * @param server * @param buildType * @param state */ private void populateCommonContent(SBuildServer server, SBuildType buildType, BuildStateEnum state) { setBuildFullName(buildType.getFullName()); setBuildName(buildType.getName()); setBuildTypeId(TeamCityIdResolver.getBuildTypeId(buildType)); setBuildStatusUrl(server.getRootUrl() + "/viewLog.html?buildTypeId=" + buildType.getBuildTypeId() + "&buildId=lastFinished"); }
@Test public void TestXmlTemplatesWithTemplateIdsViaChangeListener(){ when(mockServer.getRootUrl()).thenReturn("http://test.url"); wpm = new WebHookPayloadManager(mockServer); wtm = new WebHookTemplateManager(wpm, null); //File configFile = new File("src/test/resources/webhook-templates_single-entry-called-testXMLtemplate.xml"); ServerPaths serverPaths = new ServerPaths(new File("src/test/resources/testXmlTemplateWithTemplateIds")); WebHookTemplateFileChangeHandler changeListener = new WebHookTemplateFileChangeHandler(serverPaths, wtm, wpm, webHookTemplateJaxHelper); changeListener.register(); changeListener.handleConfigFileChange(); List<WebHookPayloadTemplate> regsiteredTemplates = wtm.getRegisteredTemplates(); assertEquals(2, regsiteredTemplates.size()); assertEquals("testXMLtemplateWithId", wtm.getTemplate("testXMLtemplateWithId").getTemplateId()); }
@Test public void TestXmlTemplatesViaChangeListener(){ when(mockServer.getRootUrl()).thenReturn("http://test.url"); wpm = new WebHookPayloadManager(mockServer); wtm = new WebHookTemplateManager(wpm, new WebHookTemplateJaxHelperImpl()); //File configFile = new File("src/test/resources/webhook-templates_single-entry-called-testXMLtemplate.xml"); ServerPaths serverPaths = new ServerPaths(new File("src/test/resources/testXmlTemplate")); WebHookTemplateFileChangeHandler changeListener = new WebHookTemplateFileChangeHandler(serverPaths, wtm, wpm, webHookTemplateJaxHelper); changeListener.register(); changeListener.handleConfigFileChange(); List<WebHookPayloadTemplate> regsiteredTemplates = wtm.getRegisteredTemplates(); assertEquals(4, regsiteredTemplates.size()); assertEquals("testXMLtemplate", wtm.getTemplate("testXMLtemplate").getTemplateId()); }
@Test public void TestXmlTemplatesWithIdsViaChangeListener(){ when(mockServer.getRootUrl()).thenReturn("http://test.url"); wpm = new WebHookPayloadManager(mockServer); wtm = new WebHookTemplateManager(wpm, new WebHookTemplateJaxHelperImpl()); //File configFile = new File("src/test/resources/webhook-templates_single-entry-called-testXMLtemplate.xml"); ServerPaths serverPaths = new ServerPaths(new File("src/test/resources/testXmlTemplateWithTemplateIds")); WebHookTemplateFileChangeHandler changeListener = new WebHookTemplateFileChangeHandler(serverPaths, wtm, wpm, new WebHookTemplateJaxHelperImpl()); changeListener.register(); changeListener.handleConfigFileChange(); List<WebHookPayloadTemplate> regsiteredTemplates = wtm.getRegisteredTemplates(); WebHookPayloadTemplate template = wtm.getTemplate("testXMLtemplateWithId"); assertTrue(template != null); assertEquals(2, regsiteredTemplates.size()); }
@Test public void TestSlackComTemplate(){ when(mockServer.getRootUrl()).thenReturn("http://test.url"); wtm = new WebHookTemplateManager(null, new WebHookTemplateJaxHelperImpl()); AbstractXmlBasedWebHookTemplate wht = new SlackComXmlWebHookTemplate(wtm, wpm, webHookTemplateJaxHelper); wht.register(); assertEquals(wht.getTemplateId(), wtm.getTemplate(wht.getTemplateId()).getTemplateId()); }
@Test public void TestFindMatchingTemplates(){ when(mockServer.getRootUrl()).thenReturn("http://test.url"); wtm = new WebHookTemplateManager(null, webHookTemplateJaxHelper); AbstractXmlBasedWebHookTemplate wht = new SlackComXmlWebHookTemplate(wtm, wpm, webHookTemplateJaxHelper); wht.register(); TestWebHookTemplate wht2 = new TestWebHookTemplate(wtm); wht2.register(); AaaTestWebHookTemplate wht3 = new AaaTestWebHookTemplate(wtm); wht3.register(); BbbTestWebHookTemplate wht4 = new BbbTestWebHookTemplate(wtm); wht4.register(); assertTrue(wtm.findAllTemplatesForFormat(WebHookPayloadJsonTemplate.FORMAT_SHORT_NAME).contains(wht2)); System.out.println(wht.getTemplateForState(BuildStateEnum.BUILD_SUCCESSFUL).getTemplateText()); }
@Test public void TestXmlBranchAndNonBranchTemplatesViaChangeListener(){ when(mockServer.getRootUrl()).thenReturn("http://test.url"); wpm = new WebHookPayloadManager(mockServer); wtm = new WebHookTemplateManager(wpm, new WebHookTemplateJaxHelperImpl()); //File configFile = new File("src/test/resources/webhook-templates_single-entry-called-testXMLtemplate.xml"); ServerPaths serverPaths = new ServerPaths(new File("src/test/resources/testXmlTemplate")); WebHookTemplateFileChangeHandler changeListener = new WebHookTemplateFileChangeHandler(serverPaths, wtm, wpm, new WebHookTemplateJaxHelperImpl()); changeListener.register(); changeListener.handleConfigFileChange(); List<WebHookPayloadTemplate> regsiteredTemplates = wtm.getRegisteredTemplates(); WebHookPayloadTemplate template = wtm.getTemplate("testXMLtemplateWithCombinedTemplate"); assertTrue(template != null); assertEquals("{ \"anotherMergedbuildStatus\" : \"${buildStatus}\" }", template.getTemplateForState(BuildStateEnum.BUILD_STARTED).getTemplateText()); assertEquals("{ \"anotherMergedbuildStatus\" : \"${buildStatus}\" }", template.getBranchTemplateForState(BuildStateEnum.BUILD_STARTED).getTemplateText()); assertEquals("{ \"mergedBuildStatus\" : \"${buildStatus}\" }", template.getTemplateForState(BuildStateEnum.BUILD_BROKEN).getTemplateText()); assertEquals("{ \"mergedBuildStatus\" : \"${buildStatus}\" }", template.getBranchTemplateForState(BuildStateEnum.BUILD_BROKEN).getTemplateText()); assertEquals(4, regsiteredTemplates.size()); }
/** * Used by RepsonsiblityChanged. * Therefore, does not have access to a specific build instance. * @param server * @param buildType * @param state */ private void populateCommonContent(VariableResolverFactory variableResolverFactory, SBuildServer server, SBuildType buildType, BuildStateEnum state, Map<String,String> templates) { setNotifyType(state.getShortName()); setBuildRunners(buildType.getBuildRunners()); setBuildFullName(buildType.getFullName()); setBuildName(buildType.getName()); setBuildTypeId(TeamCityIdResolver.getBuildTypeId(buildType)); setBuildInternalTypeId(TeamCityIdResolver.getInternalBuildId(buildType)); setBuildExternalTypeId(TeamCityIdResolver.getExternalBuildId(buildType)); setProjectName(buildType.getProjectName()); setProjectId(TeamCityIdResolver.getProjectId(buildType.getProject())); setProjectInternalId(TeamCityIdResolver.getInternalProjectId(buildType.getProject())); setProjectExternalId(TeamCityIdResolver.getExternalProjectId(buildType.getProject())); setRootUrl(StringUtils.stripTrailingSlash(server.getRootUrl()) + "/"); setBuildStatusUrl(getRootUrl() + "viewLog.html?buildTypeId=" + buildType.getBuildTypeId() + "&buildId=lastFinished"); setBuildStateDescription(state.getDescriptionSuffix()); }