X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=dist%2Fhttp-resources%2F2.0.0%2Fxref-test%2Fde%2Fjuplo%2Fhttpresources%2FHttpResourceChainAwareResourceLoaderTest.html;fp=dist%2Fhttp-resources%2F2.0.0%2Fxref-test%2Fde%2Fjuplo%2Fhttpresources%2FHttpResourceChainAwareResourceLoaderTest.html;h=c9869b11ebe5a117d9d6c4fe0e40a98ce54e8e6e;hb=96ec104e2974d001e9bc82c3af8b21029b2042d4;hp=0000000000000000000000000000000000000000;hpb=de1fa457a1c69c673d4dd5c0a2c9af568f74ea12;p=website diff --git a/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/HttpResourceChainAwareResourceLoaderTest.html b/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/HttpResourceChainAwareResourceLoaderTest.html new file mode 100644 index 00000000..c9869b11 --- /dev/null +++ b/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/HttpResourceChainAwareResourceLoaderTest.html @@ -0,0 +1,190 @@ + + + +/home/kai/Dokumente/yourshouter/http-resources/src/test/java/de/juplo/httpresources/HttpResourceChainAwareResourceLoaderTest.java xref + + + +
View Javadoc
+1   package de.juplo.httpresources;
+2   
+3   import org.junit.jupiter.api.Test;
+4   import org.junit.jupiter.api.extension.ExtendWith;
+5   import org.mockito.Mock;
+6   import org.mockito.junit.jupiter.MockitoExtension;
+7   import org.mockito.junit.jupiter.MockitoSettings;
+8   import org.mockito.quality.Strictness;
+9   import org.slf4j.Logger;
+10  import org.slf4j.LoggerFactory;
+11  import org.springframework.core.io.Resource;
+12  import org.springframework.web.context.WebApplicationContext;
+13  
+14  import static org.assertj.core.api.Assertions.assertThat;
+15  import static org.mockito.ArgumentMatchers.eq;
+16  import static org.mockito.Mockito.*;
+17  
+18  
+19  @ExtendWith({ MockitoExtension.class })
+20  @MockitoSettings(strictness = Strictness.LENIENT)
+21  public class HttpResourceChainAwareResourceLoaderTest
+22  {
+23    private static final Logger LOG =
+24        LoggerFactory.getLogger(HttpResourceChainAwareResourceLoaderTest.class);
+25  
+26  
+27    @Test
+28    public void testResourceExistsForaLocation(
+29        @Mock WebApplicationContext context,
+30        @Mock Resource existing,
+31        @Mock Resource nonExisting)
+32    {
+33      LOG.info("<-- start of test-case");
+34  
+35      HttpResourceChainAwareResourceLoader loader =
+36          new HttpResourceChainAwareResourceLoader(context, new String[] { "A/", "B/", "C/" });
+37  
+38      when(context.getResource(eq("A/PATH"))).thenReturn(existing);
+39      when(context.getResource(eq("B/PATH"))).thenReturn(nonExisting);
+40      when(context.getResource(eq("C/PATH"))).thenReturn(nonExisting);
+41      when(context.getResource(eq("PATH"))).thenReturn(nonExisting);
+42      when(existing.exists()).thenReturn(true);
+43      when(nonExisting.exists()).thenReturn(false);
+44  
+45      assertThat(loader.getResource("PATH")).isSameAs(existing);
+46  
+47      verify(context, times(1)).getResource(eq("A/PATH"));
+48      verify(context, never()).getResource(eq("B/PATH"));
+49      verify(context, never()).getResource(eq("C/PATH"));
+50      verify(context, never()).getResource(eq("PATH"));
+51    }
+52  
+53    @Test
+54    public void testResourceExistsForSecondLocation(
+55        @Mock WebApplicationContext context,
+56        @Mock Resource existing,
+57        @Mock Resource nonExisting)
+58    {
+59      LOG.info("<-- start of test-case");
+60  
+61      HttpResourceChainAwareResourceLoader loader =
+62          new HttpResourceChainAwareResourceLoader(context, new String[] { "A/", "B/", "C/" });
+63  
+64      when(context.getResource(eq("A/PATH"))).thenReturn(nonExisting);
+65      when(context.getResource(eq("B/PATH"))).thenReturn(existing);
+66      when(context.getResource(eq("C/PATH"))).thenReturn(nonExisting);
+67      when(context.getResource(eq("PATH"))).thenReturn(nonExisting);
+68      when(existing.exists()).thenReturn(true);
+69      when(nonExisting.exists()).thenReturn(false);
+70  
+71      assertThat(loader.getResource("PATH")).isSameAs(existing);
+72  
+73      verify(context, times(1)).getResource(eq("A/PATH"));
+74      verify(context, times(1)).getResource(eq("B/PATH"));
+75      verify(context, never()).getResource(eq("C/PATH"));
+76      verify(context, never()).getResource(eq("PATH"));
+77    }
+78  
+79    @Test
+80    public void testResourceExistsForThirdLocation(
+81        @Mock WebApplicationContext context,
+82        @Mock Resource existing,
+83        @Mock Resource nonExisting)
+84    {
+85      LOG.info("<-- start of test-case");
+86  
+87      HttpResourceChainAwareResourceLoader loader =
+88          new HttpResourceChainAwareResourceLoader(context, new String[] { "A/", "B/", "C/" });
+89  
+90      when(context.getResource(eq("A/PATH"))).thenReturn(nonExisting);
+91      when(context.getResource(eq("B/PATH"))).thenReturn(nonExisting);
+92      when(context.getResource(eq("C/PATH"))).thenReturn(existing);
+93      when(context.getResource(eq("PATH"))).thenReturn(nonExisting);
+94      when(existing.exists()).thenReturn(true);
+95      when(nonExisting.exists()).thenReturn(false);
+96  
+97      assertThat(loader.getResource("PATH")).isSameAs(existing);
+98  
+99      verify(context, times(1)).getResource(eq("A/PATH"));
+100     verify(context, times(1)).getResource(eq("B/PATH"));
+101     verify(context, times(1)).getResource(eq("C/PATH"));
+102     verify(context, never()).getResource(eq("PATH"));
+103   }
+104 
+105   @Test
+106   public void testResourceDoesNotExist(
+107       @Mock WebApplicationContext context,
+108       @Mock Resource nonExisting,
+109       @Mock Resource other)
+110   {
+111     LOG.info("<-- start of test-case");
+112 
+113     HttpResourceChainAwareResourceLoader loader =
+114         new HttpResourceChainAwareResourceLoader(context, new String[] { "A/", "B/", "C/" });
+115 
+116     when(context.getResource(eq("A/PATH"))).thenReturn(nonExisting);
+117     when(context.getResource(eq("B/PATH"))).thenReturn(nonExisting);
+118     when(context.getResource(eq("C/PATH"))).thenReturn(nonExisting);
+119     when(context.getResource(eq("PATH"))).thenReturn(other);
+120     when(nonExisting.exists()).thenReturn(false);
+121 
+122     assertThat(loader.getResource("PATH")).isSameAs(other);
+123 
+124     verify(context, times(1)).getResource(eq("A/PATH"));
+125     verify(context, times(1)).getResource(eq("B/PATH"));
+126     verify(context, times(1)).getResource(eq("C/PATH"));
+127     verify(context, times(1)).getResource(eq("PATH"));
+128   }
+129 
+130   @Test
+131   public void testHandlingOfLeadingSlashesInResourceNames(
+132       @Mock WebApplicationContext context,
+133       @Mock Resource nonExisting,
+134       @Mock Resource other)
+135   {
+136     LOG.info("<-- start of test-case");
+137 
+138     HttpResourceChainAwareResourceLoader loader =
+139         new HttpResourceChainAwareResourceLoader(context, new String[] { "A/", "B/" });
+140 
+141     when(context.getResource(startsWith("A"))).thenReturn(nonExisting);
+142     when(context.getResource(startsWith("B"))).thenReturn(nonExisting);
+143     when(context.getResource(eq("/PATH/WITH/LEADING/SLASH"))).thenReturn(other);
+144     when(nonExisting.exists()).thenReturn(false);
+145 
+146     assertThat(loader.getResource("/PATH/WITH/LEADING/SLASH")).isSameAs(other);
+147 
+148     verify(context, times(1)).getResource(eq("A/PATH/WITH/LEADING/SLASH"));
+149     verify(context, times(1)).getResource(eq("B/PATH/WITH/LEADING/SLASH"));
+150     verify(context, times(1)).getResource(eq("/PATH/WITH/LEADING/SLASH"));
+151   }
+152 
+153   @Test
+154   public void testHandlingOfTrailingSlashesInResourceLocations(
+155       @Mock WebApplicationContext context,
+156       @Mock Resource nonExisting,
+157       @Mock Resource other)
+158   {
+159     LOG.info("<-- start of test-case");
+160 
+161     HttpResourceChainAwareResourceLoader loader =
+162         new HttpResourceChainAwareResourceLoader(context, new String[] { "A/", "B", "C//" });
+163 
+164     when(context.getResource(startsWith("A"))).thenReturn(nonExisting);
+165     when(context.getResource(startsWith("B"))).thenReturn(nonExisting);
+166     when(context.getResource(startsWith("C"))).thenReturn(nonExisting);
+167     when(context.getResource(eq("/PATH/WITH/LEADING/SLASH"))).thenReturn(other);
+168     when(nonExisting.exists()).thenReturn(false);
+169 
+170     assertThat(loader.getResource("/PATH/WITH/LEADING/SLASH")).isSameAs(other);
+171 
+172     verify(context, times(1)).getResource(eq("A/PATH/WITH/LEADING/SLASH"));
+173     verify(context, times(1)).getResource(eq("B/PATH/WITH/LEADING/SLASH"));
+174     verify(context, times(1)).getResource(eq("C//PATH/WITH/LEADING/SLASH"));
+175     verify(context, times(1)).getResource(eq("/PATH/WITH/LEADING/SLASH"));
+176   }
+177 }
+
+
+ + +