Remove unnecessary stubbings from CachingContentStoreTest

This commit is contained in:
Sara Aspery
2025-02-25 14:48:11 +00:00
parent 99fce928fa
commit 6c08c3cff2

View File

@@ -2,7 +2,7 @@
* #%L * #%L
* Alfresco Repository * Alfresco Repository
* %% * %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited * Copyright (C) 2005 - 2025 Alfresco Software Limited
* %% * %%
* This file is part of the Alfresco software. * This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of * If the software was purchased under a paid Alfresco license, the terms of
@@ -25,13 +25,11 @@
*/ */
package org.alfresco.repo.content.caching; package org.alfresco.repo.content.caching;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame; import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyLong;
@@ -51,6 +49,13 @@ import java.util.Collections;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.alfresco.repo.content.ContentContext; import org.alfresco.repo.content.ContentContext;
import org.alfresco.repo.content.ContentRestoreParams; import org.alfresco.repo.content.ContentRestoreParams;
import org.alfresco.repo.content.ContentStore; import org.alfresco.repo.content.ContentStore;
@@ -62,12 +67,6 @@ import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentStreamListener; import org.alfresco.service.cmr.repository.ContentStreamListener;
import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.DirectAccessUrl; import org.alfresco.service.cmr.repository.DirectAccessUrl;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
/** /**
* Tests for the CachingContentStore class. Tests use mock backing store and cache. * Tests for the CachingContentStore class. Tests use mock backing store and cache.
@@ -80,38 +79,35 @@ public class CachingContentStoreTest
private CachingContentStore cachingStore; private CachingContentStore cachingStore;
private ContentReader sourceContent; private ContentReader sourceContent;
private ContentReader cachedContent; private ContentReader cachedContent;
@Mock @Mock
private ContentStore backingStore; private ContentStore backingStore;
@Mock @Mock
private ContentCache cache; private ContentCache cache;
@Before @Before
public void setUp() throws Exception public void setUp() throws Exception
{ {
cachingStore = new CachingContentStore(backingStore, cache, false); cachingStore = new CachingContentStore(backingStore, cache, false);
cachingStore.setQuota(new UnlimitedQuotaStrategy()); cachingStore.setQuota(new UnlimitedQuotaStrategy());
sourceContent = mock(ContentReader.class, "sourceContent"); sourceContent = mock(ContentReader.class, "sourceContent");
cachedContent = mock(ContentReader.class, "cachedContent"); cachedContent = mock(ContentReader.class, "cachedContent");
} }
@Test @Test
public void getReaderForItemInCache() public void getReaderForItemInCache()
{ {
when(cache.contains("url")).thenReturn(true); when(cache.contains("url")).thenReturn(true);
when(cache.getReader("url")).thenReturn(cachedContent); when(cache.getReader("url")).thenReturn(cachedContent);
ContentReader returnedReader = cachingStore.getReader("url"); ContentReader returnedReader = cachingStore.getReader("url");
assertSame(returnedReader, cachedContent); assertSame(returnedReader, cachedContent);
verify(backingStore, never()).getReader(anyString()); verify(backingStore, never()).getReader(anyString());
} }
@Test @Test
// Item isn't in cache, so will be cached and returned. // Item isn't in cache, so will be cached and returned.
public void getReaderForItemMissingFromCache() public void getReaderForItemMissingFromCache()
@@ -120,64 +116,57 @@ public class CachingContentStoreTest
when(backingStore.getReader("url")).thenReturn(sourceContent); when(backingStore.getReader("url")).thenReturn(sourceContent);
when(sourceContent.getSize()).thenReturn(1274L); when(sourceContent.getSize()).thenReturn(1274L);
when(cache.put("url", sourceContent)).thenReturn(true); when(cache.put("url", sourceContent)).thenReturn(true);
QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class); QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class);
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
when(quota.beforeWritingCacheFile(1274L)).thenReturn(true); when(quota.beforeWritingCacheFile(1274L)).thenReturn(true);
when(quota.afterWritingCacheFile(1274L)).thenReturn(true); when(quota.afterWritingCacheFile(1274L)).thenReturn(true);
ContentReader returnedReader = cachingStore.getReader("url"); ContentReader returnedReader = cachingStore.getReader("url");
assertSame(returnedReader, cachedContent); assertSame(returnedReader, cachedContent);
verify(quota).afterWritingCacheFile(1274L); verify(quota).afterWritingCacheFile(1274L);
// Check backing store reader is only acquired once // Check backing store reader is only acquired once
verify(backingStore, only()).getReader("url"); verify(backingStore, only()).getReader("url");
} }
@Test @Test
public void getReaderForItemMissingFromCacheWillGiveUpAfterRetrying() public void getReaderForItemMissingFromCacheWillGiveUpAfterRetrying()
{ {
when(cache.getReader("url")).thenThrow(new CacheMissException("url")); when(cache.getReader("url")).thenThrow(new CacheMissException("url"));
when(backingStore.getReader("url")).thenReturn(sourceContent); when(backingStore.getReader("url")).thenReturn(sourceContent);
when(cache.put("url", sourceContent)).thenReturn(true); when(cache.put("url", sourceContent)).thenReturn(true);
ContentReader returnedReader = cachingStore.getReader("url"); ContentReader returnedReader = cachingStore.getReader("url");
// Upon failure, item is removed from cache // Upon failure, item is removed from cache
verify(cache, atLeastOnce()).remove("url"); verify(cache, atLeastOnce()).remove("url");
// The content comes direct from the backing store // The content comes direct from the backing store
assertSame(returnedReader, sourceContent); assertSame(returnedReader, sourceContent);
} }
@Test @Test
public void getReaderForItemMissingFromCacheWillRetryAndCanSucceed() public void getReaderForItemMissingFromCacheWillRetryAndCanSucceed()
{ {
when(cache.getReader("url")). when(cache.getReader("url")).thenThrow(new CacheMissException("url")).thenReturn(cachedContent);
thenThrow(new CacheMissException("url")).
thenReturn(cachedContent);
when(backingStore.getReader("url")).thenReturn(sourceContent); when(backingStore.getReader("url")).thenReturn(sourceContent);
when(cache.put("url", sourceContent)).thenReturn(true); when(cache.put("url", sourceContent)).thenReturn(true);
ContentReader returnedReader = cachingStore.getReader("url"); ContentReader returnedReader = cachingStore.getReader("url");
assertSame(returnedReader, cachedContent); assertSame(returnedReader, cachedContent);
} }
@Test @Test
public void getReaderForItemMissingFromCacheButNoContentToCache() public void getReaderForItemMissingFromCacheButNoContentToCache()
{ {
when(cache.getReader("url")).thenThrow(new CacheMissException("url"));
when(backingStore.getReader("url")).thenReturn(sourceContent); when(backingStore.getReader("url")).thenReturn(sourceContent);
when(cache.put("url", sourceContent)).thenReturn(false); when(cache.put("url", sourceContent)).thenReturn(false);
cachingStore.getReader("url"); cachingStore.getReader("url");
} }
@Test @Test
// When attempting to read uncached content. // When attempting to read uncached content.
public void quotaManagerCanVetoCacheFileWriting() public void quotaManagerCanVetoCacheFileWriting()
@@ -187,32 +176,30 @@ public class CachingContentStoreTest
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
when(sourceContent.getSize()).thenReturn(1274L); when(sourceContent.getSize()).thenReturn(1274L);
when(quota.beforeWritingCacheFile(1274L)).thenReturn(false); when(quota.beforeWritingCacheFile(1274L)).thenReturn(false);
ContentReader returnedReader = cachingStore.getReader("url"); ContentReader returnedReader = cachingStore.getReader("url");
verify(cache, never()).put("url", sourceContent); verify(cache, never()).put("url", sourceContent);
assertSame(returnedReader, sourceContent); assertSame(returnedReader, sourceContent);
verify(quota, never()).afterWritingCacheFile(anyLong()); verify(quota, never()).afterWritingCacheFile(anyLong());
} }
@Test @Test
public void getWriterWhenNotCacheOnInbound() public void getWriterWhenNotCacheOnInbound()
{ {
QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class); QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class);
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
ContentContext ctx = ContentContext.NULL_CONTEXT; ContentContext ctx = ContentContext.NULL_CONTEXT;
cachingStore.getWriter(ctx); cachingStore.getWriter(ctx);
verify(backingStore).getWriter(ctx); verify(backingStore).getWriter(ctx);
// No quota manager interaction - as no caching happening. // No quota manager interaction - as no caching happening.
verify(quota, never()).beforeWritingCacheFile(anyLong()); verify(quota, never()).beforeWritingCacheFile(anyLong());
verify(quota, never()).afterWritingCacheFile(anyLong()); verify(quota, never()).afterWritingCacheFile(anyLong());
} }
@Test @Test
public void getWriterWhenCacheOnInbound() throws ContentIOException, IOException public void getWriterWhenCacheOnInbound() throws ContentIOException, IOException
{ {
@@ -229,12 +216,12 @@ public class CachingContentStoreTest
when(cacheWriter.getSize()).thenReturn(54321L); when(cacheWriter.getSize()).thenReturn(54321L);
QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class); QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class);
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
// Quota manager interceptor is fired. // Quota manager interceptor is fired.
when(quota.beforeWritingCacheFile(0L)).thenReturn(true); when(quota.beforeWritingCacheFile(0L)).thenReturn(true);
cachingStore.getWriter(ctx); cachingStore.getWriter(ctx);
// Check that a listener was attached to cacheWriter with the correct behaviour // Check that a listener was attached to cacheWriter with the correct behaviour
ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class); ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class);
verify(cacheWriter).addListener(arg.capture()); verify(cacheWriter).addListener(arg.capture());
@@ -245,8 +232,7 @@ public class CachingContentStoreTest
// Post caching quota manager hook is fired. // Post caching quota manager hook is fired.
verify(quota).afterWritingCacheFile(54321L); verify(quota).afterWritingCacheFile(54321L);
} }
@Test @Test
// When attempting to perform write-through caching, i.e. cacheOnInbound = true // When attempting to perform write-through caching, i.e. cacheOnInbound = true
public void quotaManagerCanVetoInboundCaching() public void quotaManagerCanVetoInboundCaching()
@@ -254,19 +240,18 @@ public class CachingContentStoreTest
cachingStore = new CachingContentStore(backingStore, cache, true); cachingStore = new CachingContentStore(backingStore, cache, true);
QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class); QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class);
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
ContentContext ctx = ContentContext.NULL_CONTEXT; ContentContext ctx = ContentContext.NULL_CONTEXT;
ContentWriter backingStoreWriter = mock(ContentWriter.class); ContentWriter backingStoreWriter = mock(ContentWriter.class);
when(backingStore.getWriter(ctx)).thenReturn(backingStoreWriter); when(backingStore.getWriter(ctx)).thenReturn(backingStoreWriter);
when(quota.beforeWritingCacheFile(0L)).thenReturn(false); when(quota.beforeWritingCacheFile(0L)).thenReturn(false);
ContentWriter returnedWriter = cachingStore.getWriter(ctx); ContentWriter returnedWriter = cachingStore.getWriter(ctx);
assertSame("Should be writing direct to backing store", backingStoreWriter, returnedWriter); assertSame("Should be writing direct to backing store", backingStoreWriter, returnedWriter);
verify(quota, never()).afterWritingCacheFile(anyLong()); verify(quota, never()).afterWritingCacheFile(anyLong());
} }
@Test @Test
public void quotaManagerCanRequestFileDeletionFromCacheAfterWrite() public void quotaManagerCanRequestFileDeletionFromCacheAfterWrite()
{ {
@@ -283,19 +268,19 @@ public class CachingContentStoreTest
when(cacheWriter.getSize()).thenReturn(54321L); when(cacheWriter.getSize()).thenReturn(54321L);
QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class); QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class);
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
// Quota manager interceptor is fired. // Quota manager interceptor is fired.
when(quota.beforeWritingCacheFile(0L)).thenReturn(true); when(quota.beforeWritingCacheFile(0L)).thenReturn(true);
cachingStore.getWriter(ctx); cachingStore.getWriter(ctx);
// Check that a listener was attached to cacheWriter with the correct behaviour // Check that a listener was attached to cacheWriter with the correct behaviour
ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class); ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class);
verify(cacheWriter).addListener(arg.capture()); verify(cacheWriter).addListener(arg.capture());
// Don't keep the new cache file // Don't keep the new cache file
when(quota.afterWritingCacheFile(54321L)).thenReturn(false); when(quota.afterWritingCacheFile(54321L)).thenReturn(false);
// Simulate a stream close // Simulate a stream close
arg.getValue().contentStreamClosed(); arg.getValue().contentStreamClosed();
// Check behaviour of the listener // Check behaviour of the listener
@@ -306,7 +291,7 @@ public class CachingContentStoreTest
verify(cache).deleteFile("url"); verify(cache).deleteFile("url");
verify(cache).remove("url"); verify(cache).remove("url");
} }
@Test @Test
public void quotaManagerCanRequestFileDeletionFromCacheAfterWriteWhenNotCacheOnInbound() public void quotaManagerCanRequestFileDeletionFromCacheAfterWriteWhenNotCacheOnInbound()
{ {
@@ -314,17 +299,16 @@ public class CachingContentStoreTest
when(backingStore.getReader("url")).thenReturn(sourceContent); when(backingStore.getReader("url")).thenReturn(sourceContent);
when(sourceContent.getSize()).thenReturn(1274L); when(sourceContent.getSize()).thenReturn(1274L);
when(cache.put("url", sourceContent)).thenReturn(true); when(cache.put("url", sourceContent)).thenReturn(true);
QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class); QuotaManagerStrategy quota = mock(QuotaManagerStrategy.class);
cachingStore.setQuota(quota); cachingStore.setQuota(quota);
// Don't veto writing the cache file. // Don't veto writing the cache file.
when(quota.beforeWritingCacheFile(1274L)).thenReturn(true); when(quota.beforeWritingCacheFile(1274L)).thenReturn(true);
// Do request cache file deletion. // Do request cache file deletion.
when(quota.afterWritingCacheFile(1234L)).thenReturn(false);
ContentReader returnedReader = cachingStore.getReader("url"); ContentReader returnedReader = cachingStore.getReader("url");
// Was the file deleted? // Was the file deleted?
verify(cache).deleteFile("url"); verify(cache).deleteFile("url");
verify(cache).remove("url"); verify(cache).remove("url");
@@ -332,12 +316,12 @@ public class CachingContentStoreTest
// rather than the cache. // rather than the cache.
assertSame(returnedReader, sourceContent); assertSame(returnedReader, sourceContent);
} }
@Test(expected=RuntimeException.class) @Test(expected = RuntimeException.class)
// Check that exceptions raised by the backing store's putContent(ContentReader) // Check that exceptions raised by the backing store's putContent(ContentReader)
// aren't swallowed and can therefore cause the transaction to fail. // aren't swallowed and can therefore cause the transaction to fail.
public void exceptionRaisedWhenCopyingTempToBackingStoreIsPropogatedCorrectly() public void exceptionRaisedWhenCopyingTempToBackingStoreIsPropogatedCorrectly()
throws ContentIOException, IOException throws ContentIOException, IOException
{ {
cachingStore = new CachingContentStore(backingStore, cache, true); cachingStore = new CachingContentStore(backingStore, cache, true);
ContentContext ctx = ContentContext.NULL_CONTEXT; ContentContext ctx = ContentContext.NULL_CONTEXT;
@@ -348,19 +332,18 @@ public class CachingContentStoreTest
when(cache.getWriter("url")).thenReturn(cacheWriter); when(cache.getWriter("url")).thenReturn(cacheWriter);
ContentReader readerFromCacheWriter = mock(ContentReader.class); ContentReader readerFromCacheWriter = mock(ContentReader.class);
when(cacheWriter.getReader()).thenReturn(readerFromCacheWriter); when(cacheWriter.getReader()).thenReturn(readerFromCacheWriter);
doThrow(new RuntimeException()).when(bsWriter).putContent(any(ContentReader.class)); doThrow(new RuntimeException()).when(bsWriter).putContent(any(ContentReader.class));
cachingStore.getWriter(ctx); cachingStore.getWriter(ctx);
// Get the stream listener and trigger it // Get the stream listener and trigger it
ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class); ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class);
verify(cacheWriter).addListener(arg.capture()); verify(cacheWriter).addListener(arg.capture());
// Simulate a stream close // Simulate a stream close
arg.getValue().contentStreamClosed(); arg.getValue().contentStreamClosed();
} }
@Test @Test
public void encodingAttrsCopiedToBackingStoreWriter() public void encodingAttrsCopiedToBackingStoreWriter()
{ {
@@ -373,28 +356,28 @@ public class CachingContentStoreTest
when(cache.getWriter("url")).thenReturn(cacheWriter); when(cache.getWriter("url")).thenReturn(cacheWriter);
ContentReader readerFromCacheWriter = mock(ContentReader.class); ContentReader readerFromCacheWriter = mock(ContentReader.class);
when(cacheWriter.getReader()).thenReturn(readerFromCacheWriter); when(cacheWriter.getReader()).thenReturn(readerFromCacheWriter);
when(cacheWriter.getEncoding()).thenReturn("UTF-8"); when(cacheWriter.getEncoding()).thenReturn("UTF-8");
when(cacheWriter.getLocale()).thenReturn(Locale.UK); when(cacheWriter.getLocale()).thenReturn(Locale.UK);
when(cacheWriter.getMimetype()).thenReturn("not/real/mimetype"); when(cacheWriter.getMimetype()).thenReturn("not/real/mimetype");
cachingStore.getWriter(ctx); cachingStore.getWriter(ctx);
// Get the stream listener and trigger it // Get the stream listener and trigger it
ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class); ArgumentCaptor<ContentStreamListener> arg = ArgumentCaptor.forClass(ContentStreamListener.class);
verify(cacheWriter).addListener(arg.capture()); verify(cacheWriter).addListener(arg.capture());
// Simulate a stream close // Simulate a stream close
arg.getValue().contentStreamClosed(); arg.getValue().contentStreamClosed();
verify(bsWriter).setEncoding("UTF-8"); verify(bsWriter).setEncoding("UTF-8");
verify(bsWriter).setLocale(Locale.UK); verify(bsWriter).setLocale(Locale.UK);
verify(bsWriter).setMimetype("not/real/mimetype"); verify(bsWriter).setMimetype("not/real/mimetype");
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Tests for spoofed content follow... // Tests for spoofed content follow...
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@Test @Test
public void spoofedGetReader() public void spoofedGetReader()
{ {
@@ -405,7 +388,7 @@ public class CachingContentStoreTest
assertEquals(1024, reader.getSize()); assertEquals(1024, reader.getSize());
verify(backingStore, never()).getReader(anyString()); verify(backingStore, never()).getReader(anyString());
} }
@Test @Test
public void spoofedDelete() public void spoofedDelete()
{ {
@@ -415,7 +398,7 @@ public class CachingContentStoreTest
assertFalse(deleted); assertFalse(deleted);
verify(backingStore, never()).delete(anyString()); verify(backingStore, never()).delete(anyString());
} }
@Test @Test
public void spoofedExists() public void spoofedExists()
{ {
@@ -425,7 +408,7 @@ public class CachingContentStoreTest
assertTrue(exists); assertTrue(exists);
verify(backingStore, never()).exists(anyString()); verify(backingStore, never()).exists(anyString());
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Tests for delegated methods follow... // Tests for delegated methods follow...
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -434,64 +417,58 @@ public class CachingContentStoreTest
{ {
when(backingStore.isContentUrlSupported("url")).thenReturn(true); when(backingStore.isContentUrlSupported("url")).thenReturn(true);
assertTrue(cachingStore.isContentUrlSupported("url")); assertTrue(cachingStore.isContentUrlSupported("url"));
when(backingStore.isContentUrlSupported("url")).thenReturn(false); when(backingStore.isContentUrlSupported("url")).thenReturn(false);
assertFalse(cachingStore.isContentUrlSupported("url")); assertFalse(cachingStore.isContentUrlSupported("url"));
} }
@Test @Test
public void delegatedIsWriteSupported() public void delegatedIsWriteSupported()
{ {
when(backingStore.isWriteSupported()).thenReturn(true); when(backingStore.isWriteSupported()).thenReturn(true);
assertTrue(cachingStore.isWriteSupported()); assertTrue(cachingStore.isWriteSupported());
when(backingStore.isWriteSupported()).thenReturn(false); when(backingStore.isWriteSupported()).thenReturn(false);
assertFalse(cachingStore.isWriteSupported()); assertFalse(cachingStore.isWriteSupported());
} }
@Test @Test
public void delegatedGetSpaceFree() public void delegatedGetSpaceFree()
{ {
when(backingStore.getSpaceFree()).thenReturn(124L); when(backingStore.getSpaceFree()).thenReturn(124L);
assertEquals(124L, cachingStore.getSpaceFree()); assertEquals(124L, cachingStore.getSpaceFree());
} }
@Test @Test
public void delegatedGetSpaceTotal() public void delegatedGetSpaceTotal()
{ {
when(backingStore.getSpaceTotal()).thenReturn(4234L); when(backingStore.getSpaceTotal()).thenReturn(4234L);
assertEquals(4234L, cachingStore.getSpaceTotal()); assertEquals(4234L, cachingStore.getSpaceTotal());
} }
@Test @Test
public void delegatedGetRootLocation() public void delegatedGetRootLocation()
{ {
when(backingStore.getRootLocation()).thenReturn("/random/root/dir"); when(backingStore.getRootLocation()).thenReturn("/random/root/dir");
assertEquals("/random/root/dir", cachingStore.getRootLocation()); assertEquals("/random/root/dir", cachingStore.getRootLocation());
} }
@Test @Test
public void delegatedExists() public void delegatedExists()
{ {
when(backingStore.exists("url")).thenReturn(true); when(backingStore.exists("url")).thenReturn(true);
assertTrue(cachingStore.exists("url")); assertTrue(cachingStore.exists("url"));
when(backingStore.exists("url")).thenReturn(false); when(backingStore.exists("url")).thenReturn(false);
assertFalse(cachingStore.exists("url")); assertFalse(cachingStore.exists("url"));
} }
@Test @Test
public void delegatedDelete() public void delegatedDelete()
{ {
when(backingStore.delete("url")).thenReturn(true); when(backingStore.delete("url")).thenReturn(true);
assertTrue(cachingStore.delete("url")); assertTrue(cachingStore.delete("url"));
when(backingStore.delete("url")).thenReturn(false); when(backingStore.delete("url")).thenReturn(false);
assertFalse(cachingStore.delete("url")); assertFalse(cachingStore.delete("url"));
} }
@@ -511,7 +488,7 @@ public class CachingContentStoreTest
try try
{ {
when(backingStore.requestContentDirectUrl(anyString(), eq(true), anyString(), anyString(), anyLong())).thenThrow(new UnsupportedOperationException()); when(backingStore.requestContentDirectUrl(anyString(), eq(true), anyString(), anyString(), anyLong())).thenThrow(new UnsupportedOperationException());
cachingStore.requestContentDirectUrl("url", true,"someFile", "someMimetype", 30L); cachingStore.requestContentDirectUrl("url", true, "someFile", "someMimetype", 30L);
fail(); fail();
} }
catch (UnsupportedOperationException e) catch (UnsupportedOperationException e)
@@ -524,7 +501,7 @@ public class CachingContentStoreTest
public void getRequestContentDirectUrl() public void getRequestContentDirectUrl()
{ {
when(backingStore.requestContentDirectUrl(anyString(), eq(true), anyString(), anyString(), anyLong())).thenReturn(new DirectAccessUrl()); when(backingStore.requestContentDirectUrl(anyString(), eq(true), anyString(), anyString(), anyLong())).thenReturn(new DirectAccessUrl());
cachingStore.requestContentDirectUrl("url", true,"someFile", "someMimeType", 30L); cachingStore.requestContentDirectUrl("url", true, "someFile", "someMimeType", 30L);
} }
@Test @Test