View Javadoc

1   package com.atlassian.plugin.schema.impl;
2   
3   import com.atlassian.plugin.RequirePermission;
4   import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
5   import com.atlassian.plugin.hostcontainer.HostContainer;
6   import com.atlassian.plugin.module.ModuleFactory;
7   import com.atlassian.plugin.schema.spi.Schema;
8   import com.google.common.collect.Iterables;
9   import org.junit.Before;
10  import org.junit.Test;
11  import org.junit.runner.RunWith;
12  import org.mockito.Mock;
13  import org.mockito.runners.MockitoJUnitRunner;
14  
15  import static org.junit.Assert.assertEquals;
16  import static org.junit.Assert.assertNotNull;
17  import static org.junit.Assert.assertNull;
18  import static org.junit.Assert.assertTrue;
19  
20  @RunWith(MockitoJUnitRunner.class)
21  public final class DefaultDescribedModuleDescriptorFactoryTest
22  {
23      private DefaultDescribedModuleDescriptorFactory moduleDescriptorFactory;
24  
25      @Mock
26      private HostContainer hostContainer;
27  
28      @Before
29      public void setUp()
30      {
31          moduleDescriptorFactory = new DefaultDescribedModuleDescriptorFactory(hostContainer);
32      }
33  
34      @Test
35      public void testGetSchemaForUnknownModuleTypeReturnsNull()
36      {
37          assertNull(moduleDescriptorFactory.getSchema("type"));
38      }
39  
40      @Test
41      public void testGetSchemaForModuleTypeWithNoDefinedSchemaReturnsNull()
42      {
43          moduleDescriptorFactory.addModuleDescriptor("type", TestModuleDescriptor.class);
44          assertNull(moduleDescriptorFactory.getSchema("type"));
45      }
46  
47      @Test
48      public void testGetSchemaForModuleTypeWithDefinedSchemaReturnsNotNull()
49      {
50          moduleDescriptorFactory.addModuleDescriptor("test-module-type", TestModuleDescriptor.class);
51          final Schema schema = moduleDescriptorFactory.getSchema("test-module-type");
52          assertNotNull(schema);
53          assertTrue(Iterables.isEmpty(schema.getRequiredPermissions()));
54      }
55  
56      @Test
57      public void testGetSchemaForModuleTypeWithDefinedSchemaAndPermissions()
58      {
59          moduleDescriptorFactory.addModuleDescriptor("test-module-type", TestModuleDescriptorWithRequirePermission.class);
60          final Schema schema = moduleDescriptorFactory.getSchema("test-module-type");
61          assertNotNull(schema);
62          assertEquals(1, Iterables.size(schema.getRequiredPermissions()));
63          assertEquals("a_required_permission", Iterables.getFirst(schema.getRequiredPermissions(), null));
64      }
65  
66      private static class TestModuleDescriptor extends AbstractModuleDescriptor
67      {
68          public TestModuleDescriptor(ModuleFactory moduleFactory)
69          {
70              super(moduleFactory);
71          }
72  
73          @Override
74          public Object getModule()
75          {
76              throw new UnsupportedOperationException("Not implemented");
77          }
78      }
79  
80      @RequirePermission("a_required_permission")
81      private static class TestModuleDescriptorWithRequirePermission extends AbstractModuleDescriptor
82      {
83          public TestModuleDescriptorWithRequirePermission(ModuleFactory moduleFactory)
84          {
85              super(moduleFactory);
86          }
87  
88          @Override
89          public Object getModule()
90          {
91              throw new UnsupportedOperationException("Not implemented");
92          }
93      }
94  }