View Javadoc

1   package com.atlassian.plugin.webresource;
2   
3   import static com.atlassian.plugin.servlet.AbstractFileServerServlet.PATH_SEPARATOR;
4   import static com.atlassian.plugin.webresource.SinglePluginResource.URL_PREFIX;
5   import static org.mockito.Mockito.when;
6   
7   import com.atlassian.plugin.ModuleDescriptor;
8   import com.atlassian.plugin.Plugin;
9   import com.atlassian.plugin.servlet.DownloadableResource;
10  
11  import org.mockito.Mock;
12  import org.mockito.MockitoAnnotations;
13  
14  import junit.framework.TestCase;
15  
16  public class TestRelativeURLTransformResource extends TestCase
17  {
18      public static final String STATIC_PREFIX = "/test/s/en_GB/1/10/1000/_";
19      public static final String MODULE_KEY = "atlassian:test-resource";
20      public static final String TRANSFORM_PREFIX = STATIC_PREFIX + URL_PREFIX + PATH_SEPARATOR + MODULE_KEY + PATH_SEPARATOR;
21      @Mock
22      private DownloadableResource mockOriginalResource;
23      @Mock
24      private WebResourceUrlProvider mockWebResourceUrlProvider;
25      @Mock
26      private ModuleDescriptor mockModuleDescriptor;
27  
28      private Plugin testPlugin;
29      private RelativeURLTransformResource transformResource;
30  
31      @Override
32      public void setUp() throws Exception
33      {
34          super.setUp();
35  
36          MockitoAnnotations.initMocks(this);
37          transformResource = new RelativeURLTransformResource(mockWebResourceUrlProvider, mockModuleDescriptor, mockOriginalResource);
38  
39          testPlugin = TestUtils.createTestPlugin();
40          when(mockModuleDescriptor.getPlugin()).thenReturn(testPlugin);
41          when(mockModuleDescriptor.getCompleteKey()).thenReturn(MODULE_KEY);
42          when(mockWebResourceUrlProvider.getStaticResourcePrefix("1", UrlMode.RELATIVE)).thenReturn(STATIC_PREFIX);
43      }
44  
45      @Override
46      public void tearDown() throws Exception
47      {
48          transformResource = null;
49          mockWebResourceUrlProvider = null;
50          mockModuleDescriptor = null;
51          mockOriginalResource = null;
52  
53          super.tearDown();
54      }
55  
56      public void testReplaceRelative()
57      {
58          assertTransformWorked(TRANSFORM_PREFIX + "../relative.png", "../relative.png");
59      }
60  
61      public void testReplaceAbsoluteSkipped()
62      {
63          assertTransformWorked("/absolute.png", "/absolute.png");
64      }
65  
66      public void testReplaceAbsoluteSkippedFQ()
67      {
68          assertTransformWorked("http://atlassian.com/test/absolute.png", "http://atlassian.com/test/absolute.png");
69      }
70  
71      public void testReplaceAbsoluteHttpsSkipped()
72      {
73          assertTransformWorked("https://atlassian.com/test/absolute.png", "https://atlassian.com/test/absolute.png");
74      }
75  
76      public void testReplaceDataUriSkipped()
77      {
78          assertTransformWorked("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAA",
79              "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAA");
80      }
81  
82      public void testReplaceRelativeWithFunkyCharacters()
83      {
84          assertTransformWorked("/f\u00F8tex/absolute.png", "/f\u00F8tex/absolute.png");
85      }
86  
87      public void testReplaceRelativeWithFunkyCharactersFQ()
88      {
89          assertTransformWorked("http://www.f\u00F8tex.dk", "http://www.f\u00F8tex.dk");
90      }
91  
92      public void testReplaceRelativeWithFunkyCharactersTxPrefix()
93      {
94          assertTransformWorked(TRANSFORM_PREFIX + "f\u00F8tex.png", "f\u00F8tex.png");
95      }
96  
97      public void testReplaceRelativeWithNumbers()
98      {
99          assertTransformWorked("/1/absolute.png", "/1/absolute.png");
100     }
101 
102     public void testReplaceRelativeWithNumbersFQ()
103     {
104         assertTransformWorked("http://192.168.1.1:8080/test/absolute.png", "http://192.168.1.1:8080/test/absolute.png");
105     }
106 
107     public void testReplaceRelativeWithNumbersTxPrefix()
108     {
109         assertTransformWorked(TRANSFORM_PREFIX + "../relative1.png", "../relative1.png");
110     }
111 
112     private void assertTransformWorked(final String expectedUrl, final String originalUrl)
113     {
114         assertTransformWorked("url(%s)", expectedUrl, originalUrl);
115         assertTransformWorked("url( %s )", expectedUrl, originalUrl);
116         assertTransformWorked("url (%s)", expectedUrl, originalUrl);
117         assertTransformWorked("url(\"%s\")", expectedUrl, originalUrl);
118         assertTransformWorked("url( \"%s\")", expectedUrl, originalUrl);
119         assertTransformWorked("url (\"%s\")", expectedUrl, originalUrl);
120         assertTransformWorked("url('%s')", expectedUrl, originalUrl);
121         assertTransformWorked("url( '%s' )", expectedUrl, originalUrl);
122         assertTransformWorked("url ('%s' )", expectedUrl, originalUrl);
123     }
124 
125     private void assertTransformWorked(final String format, final String expectedUrl, final String originalUrl)
126     {
127         final String original = String.format(".test { blahblah %s }", String.format(format, originalUrl));
128         final String expected = String.format(".test { blahblah %s }", String.format(format, expectedUrl));
129         assertEquals(expected, transformResource.transform(original).toString());
130     }
131 }