1   package com.atlassian.plugins.rest.module;
2   
3   import com.atlassian.plugin.osgi.factory.OsgiPlugin;
4   import com.atlassian.plugins.rest.module.OsgiComponentProviderFactory;
5   import com.sun.jersey.api.core.ResourceConfig;
6   import static org.junit.Assert.assertNotNull;
7   import static org.junit.Assert.assertNull;
8   import org.junit.Test;
9   import static org.mockito.Mockito.mock;
10  import static org.mockito.Mockito.when;
11  
12  import java.util.Collections;
13  import java.util.Set;
14  
15  public class OsgiComponentProviderFactoryTest
16  {
17      private OsgiComponentProviderFactory componentProviderFactory;
18  
19      private void initialiseComponentProviderFactory(Set<Class<?>> classes)
20      {
21          final ResourceConfig resourceConfig = mock(ResourceConfig.class);
22          final OsgiPlugin plugin = mock(OsgiPlugin.class);
23  
24          when(resourceConfig.getClasses()).thenReturn(classes);
25  
26          componentProviderFactory = new OsgiComponentProviderFactory(resourceConfig, plugin);
27      }
28  
29      @Test
30      public void testGetComponentProviderWithNoResourceOrProviderClasses()
31      {
32          initialiseComponentProviderFactory(null);
33  
34          assertNull(componentProviderFactory.getComponentProvider(this.getClass()));
35      }
36  
37      @Test
38      public void testGetComponentProviderWithEmptyResourceOrProviderClasses()
39      {
40          initialiseComponentProviderFactory(Collections.<Class<?>>emptySet());
41  
42          assertNull(componentProviderFactory.getComponentProvider(this.getClass()));
43      }
44  
45      @Test
46      public void testGetComponentProviderWithAResourceOrProviderClasses()
47      {
48          initialiseComponentProviderFactory(Collections.<Class<?>>singleton(this.getClass()));
49  
50          assertNotNull(componentProviderFactory.getComponentProvider(this.getClass()));
51          assertNull(componentProviderFactory.getComponentProvider(Object.class));
52      }
53  }