diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InstalledPluginResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InstalledPluginResourceTest.java index 7fa0081c5c..8971ab5a8d 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InstalledPluginResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InstalledPluginResourceTest.java @@ -33,6 +33,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; +import static sonia.scm.plugin.PluginTestHelper.createInstalled; @ExtendWith(MockitoExtension.class) class InstalledPluginResourceTest { @@ -85,7 +86,7 @@ class InstalledPluginResourceTest { @Test void getInstalledPlugins() throws URISyntaxException, UnsupportedEncodingException { - InstalledPlugin installedPlugin = createPlugin(); + InstalledPlugin installedPlugin = createInstalled(""); when(pluginManager.getInstalled()).thenReturn(Collections.singletonList(installedPlugin)); when(collectionMapper.mapInstalled(Collections.singletonList(installedPlugin))).thenReturn(new MockedResultDto()); @@ -104,7 +105,7 @@ class InstalledPluginResourceTest { PluginInformation pluginInformation = new PluginInformation(); pluginInformation.setVersion("2.0.0"); pluginInformation.setName("pluginName"); - InstalledPlugin installedPlugin = createPlugin(pluginInformation); + InstalledPlugin installedPlugin = createInstalled(pluginInformation); when(pluginManager.getInstalled("pluginName")).thenReturn(Optional.of(installedPlugin)); @@ -123,18 +124,6 @@ class InstalledPluginResourceTest { } } - private InstalledPlugin createPlugin() { - return createPlugin(new PluginInformation()); - } - - private InstalledPlugin createPlugin(PluginInformation information) { - InstalledPlugin plugin = mock(InstalledPlugin.class); - InstalledPluginDescriptor descriptor = mock(InstalledPluginDescriptor.class); - lenient().when(descriptor.getInformation()).thenReturn(information); - lenient().when(plugin.getDescriptor()).thenReturn(descriptor); - return plugin; - } - @Nested class WithoutAuthorization { diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java index 5cf6bdd45a..27e3ca32ea 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java @@ -21,6 +21,8 @@ import java.net.URI; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static sonia.scm.plugin.PluginTestHelper.createAvailable; +import static sonia.scm.plugin.PluginTestHelper.createInstalled; @ExtendWith(MockitoExtension.class) class PluginDtoMapperTest { @@ -72,22 +74,16 @@ class PluginDtoMapperTest { @Test void shouldAppendInstalledSelfLink() { - InstalledPlugin plugin = createInstalled(); + InstalledPlugin plugin = createInstalled(createPluginInformation()); PluginDto dto = mapper.mapInstalled(plugin); assertThat(dto.getLinks().getLinkBy("self").get().getHref()) .isEqualTo("https://hitchhiker.com/v2/plugins/installed/scm-cas-plugin"); } - private InstalledPlugin createInstalled(PluginInformation information) { - InstalledPlugin plugin = mock(InstalledPlugin.class, Answers.RETURNS_DEEP_STUBS); - when(plugin.getDescriptor().getInformation()).thenReturn(information); - return plugin; - } - @Test void shouldAppendAvailableSelfLink() { - AvailablePlugin plugin = createAvailable(); + AvailablePlugin plugin = createAvailable(createPluginInformation()); PluginDto dto = mapper.mapAvailable(plugin); assertThat(dto.getLinks().getLinkBy("self").get().getHref()) @@ -96,7 +92,7 @@ class PluginDtoMapperTest { @Test void shouldNotAppendInstallLinkWithoutPermissions() { - AvailablePlugin plugin = createAvailable(); + AvailablePlugin plugin = createAvailable(createPluginInformation()); PluginDto dto = mapper.mapAvailable(plugin); assertThat(dto.getLinks().getLinkBy("install")).isEmpty(); @@ -105,7 +101,7 @@ class PluginDtoMapperTest { @Test void shouldAppendInstallLink() { when(subject.isPermitted("plugin:manage")).thenReturn(true); - AvailablePlugin plugin = createAvailable(); + AvailablePlugin plugin = createAvailable(createPluginInformation()); PluginDto dto = mapper.mapAvailable(plugin); assertThat(dto.getLinks().getLinkBy("install").get().getHref()) @@ -123,25 +119,10 @@ class PluginDtoMapperTest { @Test void shouldAppendDependencies() { - AvailablePlugin plugin = createAvailable(); + AvailablePlugin plugin = createAvailable(createPluginInformation()); when(plugin.getDescriptor().getDependencies()).thenReturn(ImmutableSet.of("one", "two")); PluginDto dto = mapper.mapAvailable(plugin); assertThat(dto.getDependencies()).containsOnly("one", "two"); } - - private InstalledPlugin createInstalled() { - return createInstalled(createPluginInformation()); - } - - private AvailablePlugin createAvailable() { - return createAvailable(createPluginInformation()); - } - - private AvailablePlugin createAvailable(PluginInformation information) { - AvailablePluginDescriptor descriptor = mock(AvailablePluginDescriptor.class); - when(descriptor.getInformation()).thenReturn(information); - return new AvailablePlugin(descriptor); - } - } diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java index 322163ee1a..16e1e2d73a 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java @@ -26,6 +26,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.in; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; +import static sonia.scm.plugin.PluginTestHelper.createAvailable; +import static sonia.scm.plugin.PluginTestHelper.createInstalled; @ExtendWith(MockitoExtension.class) class DefaultPluginManagerTest { @@ -354,33 +356,4 @@ class DefaultPluginManagerTest { } } - - private AvailablePlugin createAvailable(String name) { - PluginInformation information = new PluginInformation(); - information.setName(name); - return createAvailable(information); - } - - private InstalledPlugin createInstalled(String name) { - PluginInformation information = new PluginInformation(); - information.setName(name); - return createInstalled(information); - } - - private InstalledPlugin createInstalled(PluginInformation information) { - InstalledPlugin plugin = mock(InstalledPlugin.class, Answers.RETURNS_DEEP_STUBS); - returnInformation(plugin, information); - return plugin; - } - - private AvailablePlugin createAvailable(PluginInformation information) { - AvailablePluginDescriptor descriptor = mock(AvailablePluginDescriptor.class); - lenient().when(descriptor.getInformation()).thenReturn(information); - return new AvailablePlugin(descriptor); - } - - private void returnInformation(Plugin mockedPlugin, PluginInformation information) { - when(mockedPlugin.getDescriptor().getInformation()).thenReturn(information); - } - } diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/PluginTestHelper.java b/scm-webapp/src/test/java/sonia/scm/plugin/PluginTestHelper.java new file mode 100644 index 0000000000..7e3577d775 --- /dev/null +++ b/scm-webapp/src/test/java/sonia/scm/plugin/PluginTestHelper.java @@ -0,0 +1,37 @@ +package sonia.scm.plugin; + +import org.mockito.Answers; + +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class PluginTestHelper { + public static AvailablePlugin createAvailable(String name) { + PluginInformation information = new PluginInformation(); + information.setName(name); + return createAvailable(information); + } + + public static InstalledPlugin createInstalled(String name) { + PluginInformation information = new PluginInformation(); + information.setName(name); + return createInstalled(information); + } + + public static InstalledPlugin createInstalled(PluginInformation information) { + InstalledPlugin plugin = mock(InstalledPlugin.class, Answers.RETURNS_DEEP_STUBS); + returnInformation(plugin, information); + return plugin; + } + + public static AvailablePlugin createAvailable(PluginInformation information) { + AvailablePluginDescriptor descriptor = mock(AvailablePluginDescriptor.class); + lenient().when(descriptor.getInformation()).thenReturn(information); + return new AvailablePlugin(descriptor); + } + + private static void returnInformation(Plugin mockedPlugin, PluginInformation information) { + when(mockedPlugin.getDescriptor().getInformation()).thenReturn(information); + } +}