/plugin/src/test/java/com/atlassian/plugin/remotable/plugin/descriptor/PluginDescriptorValidatorProviderTest.java

https://bitbucket.org/rodogu/remotable-plugins · Java · 154 lines · 121 code · 33 blank · 0 comment · 0 complexity · 95079662431c7ddf2ef9790b7cb89e86 MD5 · raw file

  1. package com.atlassian.plugin.remotable.plugin.descriptor;
  2. import com.atlassian.plugin.osgi.bridge.external.PluginRetrievalService;
  3. import com.atlassian.plugin.remotable.api.InstallationMode;
  4. import com.atlassian.plugin.remotable.plugin.PermissionManager;
  5. import com.atlassian.plugin.remotable.spi.permission.PermissionsReader;
  6. import com.atlassian.plugin.schema.descriptor.DescribedModuleDescriptorFactory;
  7. import com.atlassian.plugin.schema.spi.Schema;
  8. import com.atlassian.sal.api.ApplicationProperties;
  9. import com.google.common.collect.ImmutableList;
  10. import com.google.common.collect.ImmutableSet;
  11. import com.google.common.collect.Iterables;
  12. import org.junit.Before;
  13. import org.junit.Test;
  14. import org.junit.runner.RunWith;
  15. import org.mockito.Mock;
  16. import org.mockito.runners.MockitoJUnitRunner;
  17. import java.util.Set;
  18. import static org.junit.Assert.assertEquals;
  19. import static org.junit.Assert.assertTrue;
  20. import static org.mockito.Mockito.mock;
  21. import static org.mockito.Mockito.when;
  22. @RunWith(MockitoJUnitRunner.class)
  23. public final class PluginDescriptorValidatorProviderTest
  24. {
  25. private PluginDescriptorValidatorProvider pluginDescriptorValidatorProvider;
  26. @Mock
  27. private PluginRetrievalService pluginRetrievalService;
  28. @Mock
  29. private ApplicationProperties applicationProperties;
  30. @Mock
  31. private PermissionsReader permissionReader;
  32. @Mock
  33. private DescribedModuleDescriptorFactoryAccessor describedModuleDescriptorFactoryAccessor;
  34. @Mock
  35. private PermissionManager permissionManager;
  36. @Before
  37. public void setUp()
  38. {
  39. pluginDescriptorValidatorProvider = new PluginDescriptorValidatorProvider(pluginRetrievalService, applicationProperties, describedModuleDescriptorFactoryAccessor, permissionReader, permissionManager);
  40. }
  41. @Test
  42. public void testGetModuleSchemasWithNoDescribedModuleFactory()
  43. {
  44. when(describedModuleDescriptorFactoryAccessor.getDescribedModuleDescriptorFactories()).thenReturn(ImmutableList.<DescribedModuleDescriptorFactory>of());
  45. Iterable<Schema> moduleSchemas = pluginDescriptorValidatorProvider.getModuleSchemas(InstallationMode.LOCAL);
  46. assertTrue(Iterables.isEmpty(moduleSchemas));
  47. }
  48. @Test
  49. public void testGetModuleSchemasWithDescribedModuleFactoryButNoSchema()
  50. {
  51. final DescribedModuleDescriptorFactory describedModuleDescriptorFactory = mock(DescribedModuleDescriptorFactory.class);
  52. when(describedModuleDescriptorFactoryAccessor.getDescribedModuleDescriptorFactories()).thenReturn(ImmutableList.of(describedModuleDescriptorFactory));
  53. when(describedModuleDescriptorFactory.getModuleDescriptorKeys()).thenReturn(ImmutableList.<String>of());
  54. Iterable<Schema> moduleSchemas = pluginDescriptorValidatorProvider.getModuleSchemas(InstallationMode.LOCAL);
  55. assertTrue(Iterables.isEmpty(moduleSchemas));
  56. }
  57. @Test
  58. public void testGetModuleSchemasWithDescribedModuleFactoryButNullSchema()
  59. {
  60. final DescribedModuleDescriptorFactory factory = mock(DescribedModuleDescriptorFactory.class);
  61. when(describedModuleDescriptorFactoryAccessor.getDescribedModuleDescriptorFactories()).thenReturn(ImmutableList.of(factory));
  62. when(factory.getModuleDescriptorKeys()).thenReturn(ImmutableList.<String>of("key"));
  63. when(factory.getSchema("key")).thenReturn(null);
  64. Iterable<Schema> moduleSchemas = pluginDescriptorValidatorProvider.getModuleSchemas(InstallationMode.LOCAL);
  65. assertTrue(Iterables.isEmpty(moduleSchemas));
  66. }
  67. @Test
  68. public void testGetModuleSchemasWithDescribedModuleFactoryAndNonNullSchema()
  69. {
  70. final DescribedModuleDescriptorFactory factory = mock(DescribedModuleDescriptorFactory.class);
  71. when(describedModuleDescriptorFactoryAccessor.getDescribedModuleDescriptorFactories()).thenReturn(ImmutableList.of(factory));
  72. when(factory.getModuleDescriptorKeys()).thenReturn(ImmutableList.<String>of("key"));
  73. final Schema schema = mockSchema(factory, "key");
  74. Iterable<Schema> moduleSchemas = pluginDescriptorValidatorProvider.getModuleSchemas(InstallationMode.LOCAL);
  75. assertEquals(1, Iterables.size(moduleSchemas));
  76. assertEquals(schema, Iterables.get(moduleSchemas, 0));
  77. }
  78. @Test
  79. public void testGetModuleSchemasWithNonMatchingPermissions()
  80. {
  81. final DescribedModuleDescriptorFactory factory = mock(DescribedModuleDescriptorFactory.class);
  82. when(describedModuleDescriptorFactoryAccessor.getDescribedModuleDescriptorFactories()).thenReturn(ImmutableList.of(factory));
  83. when(factory.getModuleDescriptorKeys()).thenReturn(ImmutableList.<String>of("key"));
  84. final Schema schema = mockSchema(factory, "key", "required_permission");
  85. when(permissionManager.getPermissionKeys(InstallationMode.LOCAL)).thenReturn(ImmutableSet.<String>of("non_matching_permission"));
  86. Iterable<Schema> moduleSchemas = pluginDescriptorValidatorProvider.getModuleSchemas(InstallationMode.LOCAL);
  87. assertTrue(Iterables.isEmpty(moduleSchemas));
  88. }
  89. @Test
  90. public void testGetModuleSchemasWithAllPermissions()
  91. {
  92. final DescribedModuleDescriptorFactory factory = mock(DescribedModuleDescriptorFactory.class);
  93. when(describedModuleDescriptorFactoryAccessor.getDescribedModuleDescriptorFactories()).thenReturn(ImmutableList.of(factory));
  94. when(factory.getModuleDescriptorKeys()).thenReturn(ImmutableList.<String>of("key"));
  95. final Schema schema = mockSchema(factory, "key", "required_permission");
  96. Set<String> allPermissions = ImmutableSet.of();
  97. when(permissionManager.getPermissionKeys(InstallationMode.LOCAL)).thenReturn(allPermissions);
  98. Iterable<Schema> moduleSchemas = pluginDescriptorValidatorProvider.getModuleSchemas(InstallationMode.LOCAL);
  99. assertEquals(1, Iterables.size(moduleSchemas));
  100. assertEquals(schema, Iterables.get(moduleSchemas, 0));
  101. }
  102. @Test
  103. public void testGetModuleSchemasWithMatchingPermissions()
  104. {
  105. final DescribedModuleDescriptorFactory factory = mock(DescribedModuleDescriptorFactory.class);
  106. when(describedModuleDescriptorFactoryAccessor.getDescribedModuleDescriptorFactories()).thenReturn(ImmutableList.of(factory));
  107. when(factory.getModuleDescriptorKeys()).thenReturn(ImmutableList.<String>of("key"));
  108. final Schema schema = mockSchema(factory, "key", "required_permission");
  109. when(permissionManager.getPermissionKeys(InstallationMode.LOCAL)).thenReturn(ImmutableSet.<String>of("required_permission"));
  110. Iterable<Schema> moduleSchemas = pluginDescriptorValidatorProvider.getModuleSchemas(InstallationMode.LOCAL);
  111. assertEquals(1, Iterables.size(moduleSchemas));
  112. assertEquals(schema, Iterables.get(moduleSchemas, 0));
  113. }
  114. private Schema mockSchema(DescribedModuleDescriptorFactory factory, String moduleType, String... permissions)
  115. {
  116. final Schema schema = mock(Schema.class);
  117. when(factory.getSchema(moduleType)).thenReturn(schema);
  118. when(schema.getRequiredPermissions()).thenReturn(ImmutableSet.of(permissions));
  119. return schema;
  120. }
  121. }