@Test public void shouldHandleUpdateAssetsPath() throws Exception { PluginDescriptor pluginDescriptor = mock(PluginDescriptor.class); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfo(pluginDescriptor, null, null, null); when(pluginDescriptor.id()).thenReturn("plugin_id"); store.setPluginInfo(pluginInfo); store.updateAssetsPath("plugin_id", "static_assets_path"); assertThat(pluginInfo.getStaticAssetsPath(), is("static_assets_path")); } }
private AnalyticsPluginInfo analyticsPluginInfo() { AnalyticsPluginInfo analyticsPluginInfo = mock(AnalyticsPluginInfo.class); Capabilities capabilities = mock(Capabilities.class); when(capabilities.supportsDashboardAnalytics()).thenReturn(true); when(analyticsPluginInfo.getCapabilities()).thenReturn(capabilities); when(analyticsPluginInfo.getExtensionName()).thenReturn(PluginConstants.ANALYTICS_EXTENSION); return analyticsPluginInfo; }
public void updateAssetsPath(String pluginId, String assetPath) { AnalyticsPluginInfo pluginInfo = getPluginInfo(pluginId); pluginInfo.setStaticAssetsPath(assetPath); } }
@Test public void shouldContinueBuildingPluginInfoIfPluginSettingsIsNotProvidedByPlugin() { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); doThrow(new RuntimeException("foo")).when(extension).getPluginSettingsConfiguration("plugin1"); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfoBuilder(extension).pluginInfoFor(descriptor); assertThat(pluginInfo.getDescriptor(), is(descriptor)); assertThat(pluginInfo.getExtensionName(), is("analytics")); assertNull(pluginInfo.getPluginSettings()); } }
public AnalyticsPluginInfo pluginInfoFor(GoPluginDescriptor descriptor) { Capabilities capabilities = capabilities(descriptor.id()); PluggableInstanceSettings pluginSettingsAndView = getPluginSettingsAndView(descriptor, extension); Image image = image(descriptor.id()); return new AnalyticsPluginInfo(descriptor, image, capabilities, pluginSettingsAndView); }
private boolean supportsAnalyticsDashboard() { for (CombinedPluginInfo combinedPluginInfo : pluginInfoFinder.allPluginInfos(PluginConstants.ANALYTICS_EXTENSION)) { AnalyticsPluginInfo pluginInfo = (AnalyticsPluginInfo) combinedPluginInfo.extensionFor(PluginConstants.ANALYTICS_EXTENSION); if (pluginInfo != null && pluginInfo.getCapabilities().supportsDashboardAnalytics()) { return true; } } return false; } }
@Test public void shouldGetAnalytics() throws Exception { String responseBody = "{ \"view_path\": \"path/to/view\", \"data\": \"{}\" }"; AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfo( new GoPluginDescriptor(PLUGIN_ID, null, null, null, null, false), null, null, null); pluginInfo.setStaticAssetsPath("/assets/root"); metadataStore.setPluginInfo(pluginInfo); when(pluginManager.submitTo(eq(PLUGIN_ID), eq(ANALYTICS_EXTENSION), requestArgumentCaptor.capture())).thenReturn(new DefaultGoPluginApiResponse(SUCCESS_RESPONSE_CODE, responseBody)); AnalyticsData pipelineAnalytics = analyticsExtension.getAnalytics(PLUGIN_ID, "pipeline", "pipeline_with_highest_wait_time", Collections.singletonMap("pipeline_name", "test_pipeline")); String expectedRequestBody = "{" + "\"type\": \"pipeline\"," + "\"id\": \"pipeline_with_highest_wait_time\"," + " \"params\": {\"pipeline_name\": \"test_pipeline\"}}"; assertRequest(requestArgumentCaptor.getValue(), PluginConstants.ANALYTICS_EXTENSION, "1.0", REQUEST_GET_ANALYTICS, expectedRequestBody); assertThat(pipelineAnalytics.getData(), is("{}")); assertThat(pipelineAnalytics.getViewPath(), is("path/to/view")); assertThat(pipelineAnalytics.getFullViewPath(), is("/assets/root/path/to/view")); }
private String getCurrentStaticAssetsPath(String pluginId) { return AnalyticsMetadataStore.instance().getPluginInfo(pluginId).getStaticAssetsPath(); } }
@Test public void shouldBuildPluginInfoWithPluginDescriptor() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfoBuilder(extension).pluginInfoFor(descriptor); assertThat(pluginInfo.getDescriptor(), is(descriptor)); }
@Test public void shouldBuildPluginInfoWithImage() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); Image icon = new Image("content_type", "data", "hash"); when(extension.getIcon(descriptor.id())).thenReturn(icon); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfoBuilder(extension).pluginInfoFor(descriptor); assertThat(pluginInfo.getImage(), is(icon)); }
@Test public void onPluginLoaded_shouldAddPluginInfoToMetadataStore() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); AnalyticsMetadataLoader metadataLoader = new AnalyticsMetadataLoader(pluginManager, metadataStore, infoBuilder, extension); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfo(descriptor, null, null, null); when(extension.canHandlePlugin(descriptor.id())).thenReturn(true); when(infoBuilder.pluginInfoFor(descriptor)).thenReturn(pluginInfo); metadataLoader.pluginLoaded(descriptor); verify(metadataStore).setPluginInfo(pluginInfo); }
private boolean supportsAnalyticsDashboard() { for (CombinedPluginInfo combinedPluginInfo : getPluginInfoFinder().allPluginInfos(PluginConstants.ANALYTICS_EXTENSION)) { AnalyticsPluginInfo pluginInfo = (AnalyticsPluginInfo) combinedPluginInfo.extensionFor(PluginConstants.ANALYTICS_EXTENSION); if (pluginInfo.getCapabilities().supportsDashboardAnalytics()) { return true; } } return false; }
@Test public void shouldBuildPluginInfoWithPluginSettingsConfiguration() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); PluginSettingsConfiguration value = new PluginSettingsConfiguration(); value.add(new PluginSettingsProperty("username", null).with(Property.REQUIRED, true).with(Property.SECURE, false)); value.add(new PluginSettingsProperty("password", null).with(Property.REQUIRED, true).with(Property.SECURE, true)); when(extension.getPluginSettingsConfiguration("plugin1")).thenReturn(value); when(extension.getPluginSettingsView("plugin1")).thenReturn("some-html"); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfoBuilder(extension).pluginInfoFor(descriptor); List<PluginConfiguration> pluginConfigurations = Arrays.asList( new PluginConfiguration("username", new Metadata(true, false)), new PluginConfiguration("password", new Metadata(true, true)) ); PluginView pluginView = new PluginView("some-html"); assertThat(pluginInfo.getDescriptor(), is(descriptor)); assertThat(pluginInfo.getExtensionName(), is("analytics")); assertThat(pluginInfo.getPluginSettings(), is(new PluggableInstanceSettings(pluginConfigurations, pluginView))); }
@Test public void onPluginLoad_shouldNotifyPluginMetadataLoadListeners() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); AnalyticsMetadataLoader metadataLoader = new AnalyticsMetadataLoader(pluginManager, metadataStore, infoBuilder, extension); PluginMetadataChangeListener pluginMetadataChangeListener = mock(PluginMetadataChangeListener.class); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfo(descriptor, null, null, null); when(extension.canHandlePlugin(descriptor.id())).thenReturn(true); when(infoBuilder.pluginInfoFor(descriptor)).thenReturn(pluginInfo); metadataLoader.registerListeners(pluginMetadataChangeListener); metadataLoader.pluginLoaded(descriptor); InOrder inOrder = inOrder(metadataStore, pluginMetadataChangeListener); inOrder.verify(metadataStore).setPluginInfo(pluginInfo); inOrder.verify(pluginMetadataChangeListener).onPluginMetadataCreate(descriptor.id()); }
@Test public void shouldBuildPluginInfoWithCapabilities() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); Capabilities capabilities = new Capabilities(Collections.emptyList()); when(extension.getCapabilities(descriptor.id())).thenReturn(capabilities); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfoBuilder(extension).pluginInfoFor(descriptor); assertThat(pluginInfo.getCapabilities(), is(capabilities)); }
@Test public void onPluginUnLoaded_shouldNotifyPluginMetadataLoadListeners() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); AnalyticsMetadataLoader metadataLoader = new AnalyticsMetadataLoader(pluginManager, metadataStore, infoBuilder, extension); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfo(descriptor, null, null, null); PluginMetadataChangeListener pluginMetadataChangeListener = mock(PluginMetadataChangeListener.class); when(extension.canHandlePlugin(descriptor.id())).thenReturn(true); metadataStore.setPluginInfo(pluginInfo); metadataLoader.registerListeners(pluginMetadataChangeListener); metadataLoader.pluginUnLoaded(descriptor); InOrder inOrder = inOrder(metadataStore, pluginMetadataChangeListener); inOrder.verify(metadataStore).remove(descriptor.id()); inOrder.verify(pluginMetadataChangeListener).onPluginMetadataRemove(descriptor.id()); } }
@Test public void onPluginUnloaded_shouldRemoveTheCorrespondingPluginInfoFromStore() throws Exception { GoPluginDescriptor descriptor = new GoPluginDescriptor("plugin1", null, null, null, null, false); AnalyticsMetadataLoader metadataLoader = new AnalyticsMetadataLoader(pluginManager, metadataStore, infoBuilder, extension); AnalyticsPluginInfo pluginInfo = new AnalyticsPluginInfo(descriptor, null, null, null); metadataStore.setPluginInfo(pluginInfo); metadataLoader.pluginUnLoaded(descriptor); verify(metadataStore).remove(descriptor.id()); }
@Test public void shouldFindFirstExtensionWithImageIfPluginImplementsAtleastOneExtensionWithImage() throws Exception { Image image1 = new Image("c1", "d1", "hash1"); Image image2 = new Image("c2", "d2", "hash2"); Image image3 = new Image("c3", "d3", "hash3"); ElasticAgentPluginInfo elasticAgentPluginInfo = new ElasticAgentPluginInfo(null, null, image1, null, null); AuthorizationPluginInfo authorizationPluginInfo = new AuthorizationPluginInfo(null, null, null, image2, null); AnalyticsPluginInfo analyticsPluginInfo = new AnalyticsPluginInfo(null, image3, null, null); assertThat(new CombinedPluginInfo(elasticAgentPluginInfo).getImage(), is(image1)); assertThat(new CombinedPluginInfo(authorizationPluginInfo).getImage(), is(image2)); assertThat(new CombinedPluginInfo(analyticsPluginInfo).getImage(), is(image3)); assertThat(new CombinedPluginInfo(asList(elasticAgentPluginInfo, authorizationPluginInfo)).getImage(), anyOf(is(image1), is(image2))); assertThat(new CombinedPluginInfo(asList(analyticsPluginInfo, authorizationPluginInfo)).getImage(), anyOf(is(image2), is(image3))); }