1 package com.atlassian.plugin.osgi.util;
2
3 import junit.framework.TestCase;
4 import static org.mockito.Mockito.mock;
5 import static org.mockito.Mockito.when;
6 import org.osgi.framework.Bundle;
7 import org.apache.commons.io.IOUtils;
8
9 import java.io.IOException;
10 import java.io.InputStream;
11 import java.io.ByteArrayOutputStream;
12 import java.net.URL;
13 import java.util.Enumeration;
14
15 public class TestBundleClassLoaderAccessor extends TestCase
16 {
17 public void testGetResource() throws IOException
18 {
19 Bundle bundle = mock(Bundle.class);
20 when(bundle.getResource("foo.txt")).thenReturn(getClass().getClassLoader().getResource("foo.txt"));
21
22 URL url = BundleClassLoaderAccessor.getClassLoader(bundle, null).getResource("foo.txt");
23 assertNotNull(url);
24 }
25
26 public void testGetResourceAsStream() throws IOException
27 {
28 Bundle bundle = mock(Bundle.class);
29 when(bundle.getResource("foo.txt")).thenReturn(getClass().getClassLoader().getResource("foo.txt"));
30
31 InputStream in = BundleClassLoaderAccessor.getClassLoader(bundle, null).getResourceAsStream("foo.txt");
32 ByteArrayOutputStream out = new ByteArrayOutputStream();
33 IOUtils.copy(in, out);
34 assertTrue(out.toByteArray().length > 0);
35 }
36
37 public void testGetResources() throws IOException
38 {
39 Bundle bundle = mock(Bundle.class);
40 when(bundle.getResources("foo.txt")).thenReturn(getClass().getClassLoader().getResources("foo.txt"));
41
42 Enumeration<URL> e = BundleClassLoaderAccessor.getClassLoader(bundle, null).getResources("foo.txt");
43 assertNotNull(e);
44 assertTrue(e.hasMoreElements());
45 }
46
47 public void testGetResourcesIfNull() throws IOException
48 {
49 Bundle bundle = mock(Bundle.class);
50 when(bundle.getResources("foo.txt")).thenReturn(null);
51
52 Enumeration<URL> e = BundleClassLoaderAccessor.getClassLoader(bundle, null).getResources("foo.txt");
53 assertNotNull(e);
54 assertFalse(e.hasMoreElements());
55 }
56 }