/**
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @author Kevin Smith, Boundless, 2017
*/
package org.geowebcache.s3;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.classextension.EasyMock.createMock;
import static org.easymock.classextension.EasyMock.replay;
import static org.junit.Assert.fail;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Stream;
import org.geowebcache.GeoWebCacheException;
import org.geowebcache.layer.TileLayer;
import org.geowebcache.layer.TileLayerDispatcher;
import org.geowebcache.locks.LockProvider;
import org.geowebcache.locks.NoOpLockProvider;
import org.geowebcache.storage.AbstractBlobStoreTest;
import org.junit.Assume;
import org.junit.Rule;
import org.easymock.classextension.EasyMock;
public class S3BlobStoreConformanceTest extends AbstractBlobStoreTest<S3BlobStore> {
public PropertiesLoader testConfigLoader = new PropertiesLoader();
@Rule
public TemporaryS3Folder tempFolder = new TemporaryS3Folder(testConfigLoader.getProperties());
@Override
public void createTestUnit() throws Exception {
Assume.assumeTrue(tempFolder.isConfigured());
S3BlobStoreConfig config = tempFolder.getConfig();
TileLayerDispatcher layers = createMock(TileLayerDispatcher.class);
LockProvider lockProvider = new NoOpLockProvider();
Stream.of("testLayer", "testLayer1", "testLayer2")
.map(name-> {
TileLayer mock = createMock(name, TileLayer.class);
expect(mock.getName()).andStubReturn(name);
expect(mock.getId()).andStubReturn(name);
expect(mock.getGridSubsets()).andStubReturn(Collections.singleton("testGridSet"));
expect(mock.getMimeTypes()).andStubReturn(Arrays.asList(org.geowebcache.mime.ImageMime.png));
try {
expect(layers.getTileLayer(eq(name))).andStubReturn(mock);
} catch (GeoWebCacheException e) {
fail();
}
return mock;
}).forEach(EasyMock::replay);
replay(layers);
store = new S3BlobStore(config, layers, lockProvider);
}
}