diff --git a/file-repository-core/pom.xml b/file-repository-core/pom.xml
index 4915a52acd9492c33261fede6b8a0f72c175bf6a..7394e5fcd0da6a01e3901e2fde94cbbf9973d275 100644
--- a/file-repository-core/pom.xml
+++ b/file-repository-core/pom.xml
@@ -125,6 +125,13 @@
${spring.security.version}
+
+ org.springframework.security
+ spring-security-test
+ ${spring.security.version}
+ test
+
+
org.springframework
spring-test
@@ -132,6 +139,13 @@
test
+
+ javax.inject
+ javax.inject
+ 1
+ test
+
+
org.springframework.data
spring-data-jpa
diff --git a/file-repository-core/src/main/java/org/genesys/filerepository/migration/RepositoryUpgrade20180920.java b/file-repository-core/src/main/java/org/genesys/filerepository/migration/RepositoryUpgrade20180920.java
index e9ba854af1f124bb97855968973b6bfd352e4c92..c3ecf02e1e8fa19b05f2d981d51aeb231624c322 100644
--- a/file-repository-core/src/main/java/org/genesys/filerepository/migration/RepositoryUpgrade20180920.java
+++ b/file-repository-core/src/main/java/org/genesys/filerepository/migration/RepositoryUpgrade20180920.java
@@ -19,9 +19,11 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
+import org.genesys.filerepository.model.ImageGallery;
import org.genesys.filerepository.model.QRepositoryFile;
import org.genesys.filerepository.model.RepositoryFile;
import org.genesys.filerepository.model.RepositoryFolder;
+import org.genesys.filerepository.persistence.ImageGalleryPersistence;
import org.genesys.filerepository.persistence.RepositoryFilePersistence;
import org.genesys.filerepository.service.RepositoryService;
import org.slf4j.Logger;
@@ -56,6 +58,9 @@ public class RepositoryUpgrade20180920 {
@Autowired
private RepositoryService repositoryService;
+
+ @Autowired
+ private ImageGalleryPersistence imagegalleryRepository;
@Autowired
private JPAQueryFactory jpaQueryFactory;
@@ -83,6 +88,18 @@ public class RepositoryUpgrade20180920 {
}
}
});
+
+
+ tmpl.execute(new TransactionCallbackWithoutResult() {
+ @Override
+ protected void doInTransactionWithoutResult(TransactionStatus status) {
+ try {
+ migrateImageGalleries();
+ } catch (Throwable e) {
+ LOG.error("Could not migrate 1.0 to 1.1 model: {}", e.getMessage(), e);
+ }
+ }
+ });
}
/**
@@ -141,4 +158,29 @@ public class RepositoryUpgrade20180920 {
LOG.warn("\n\n\t** All repository files have been moved to proper folders **\n\t You can remove the {} bean.\n\n", this.getClass().getName());
}
}
+
+ /**
+ * Do the migration.
+ *
+ * @throws Exception the exception
+ */
+ void migrateImageGalleries() throws Exception {
+ long count = 0;
+
+ for (ImageGallery imageGallery : imagegalleryRepository.findAll()) {
+ if (imageGallery.getFolder() == null) {
+ RepositoryFolder repoFolder = repositoryService.getFolder(Paths.get(imageGallery.getPath()));
+ if (imageGallery.getFolder() == null || imageGallery.getFolder().getId() != repoFolder.getId()) {
+ LOG.warn("Upgrading image gallery {} to folder={}", imageGallery.getPath(), repoFolder.getPath());
+ imageGallery.setFolder(repoFolder);
+ imagegalleryRepository.save(imageGallery);
+ count++;
+ }
+ }
+ }
+
+ if (count == 0) {
+ LOG.warn("\n\n\t** All image galleries have been moved to proper folders **\n\t You can remove the {} bean.\n\n", this.getClass().getName());
+ }
+ }
}
diff --git a/file-repository-core/src/main/java/org/genesys/filerepository/model/ImageGallery.java b/file-repository-core/src/main/java/org/genesys/filerepository/model/ImageGallery.java
index bcda90e5bcdc212872452c71dec48655314a9052..ebd36730e970a1959ce6d1c20c043a4704a5301b 100644
--- a/file-repository-core/src/main/java/org/genesys/filerepository/model/ImageGallery.java
+++ b/file-repository-core/src/main/java/org/genesys/filerepository/model/ImageGallery.java
@@ -16,27 +16,33 @@
package org.genesys.filerepository.model;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
+import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
+import javax.persistence.OneToOne;
import javax.persistence.OrderColumn;
import javax.persistence.Table;
-import javax.persistence.Transient;
import org.genesys.blocks.model.AuditedVersionedModel;
import org.genesys.blocks.model.Copyable;
import org.genesys.blocks.security.model.AclAwareModel;
import org.hibernate.annotations.Type;
+import com.fasterxml.jackson.annotation.JsonIdentityInfo;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty.Access;
+import com.fasterxml.jackson.annotation.ObjectIdGenerators;
+
/**
* {@link ImageGallery} is a collection of ordered {@link RepositoryImage}
* instances.
@@ -60,6 +66,7 @@ public class ImageGallery extends AuditedVersionedModel implements AclAwareModel
* a unique path in the repository.
*/
@Column(nullable = false, unique = true)
+ @JsonIgnore
private String path;
/**
@@ -81,9 +88,40 @@ public class ImageGallery extends AuditedVersionedModel implements AclAwareModel
@OrderColumn(name = "position")
private List images;
- @Transient
- private Path folderPath;
+ /** The folder. */
+ @OneToOne(cascade = {}, fetch = FetchType.LAZY, optional = false)
+ @JoinColumn(unique = true)
+ @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "path")
+ @JsonIdentityReference(alwaysAsId = true)
+ @JsonProperty(access = Access.READ_ONLY)
+ private RepositoryFolder folder;
+
+
+ @Override
+ public AclAwareModel aclParentObject() {
+ return folder;
+ }
+ /**
+ * Gets the folder.
+ *
+ * @return the folder
+ */
+ public RepositoryFolder getFolder() {
+ return folder;
+ }
+
+ /**
+ * Sets the folder.
+ *
+ * @param folder the new folder
+ */
+ public void setFolder(RepositoryFolder folder) {
+ this.folder = folder;
+ }
+
+
+
/**
* Gets the path.
*
@@ -181,18 +219,4 @@ public class ImageGallery extends AuditedVersionedModel implements AclAwareModel
copy.images = new ArrayList<>(this.images);
return copy;
}
-
- /**
- * Gets the folder path.
- *
- * @return the folder path
- */
- public Path getFolderPath() {
- synchronized (this) {
- if (folderPath == null) {
- this.folderPath = Paths.get(this.path);
- }
- }
- return this.folderPath;
- }
}
diff --git a/file-repository-core/src/main/java/org/genesys/filerepository/persistence/ImageGalleryPersistence.java b/file-repository-core/src/main/java/org/genesys/filerepository/persistence/ImageGalleryPersistence.java
index 5b440a8f1ab7c3b556df78ca14fe2e4e159fcd80..17c4aa298df86ab5fbbf3b2242e6bbded30bc457 100644
--- a/file-repository-core/src/main/java/org/genesys/filerepository/persistence/ImageGalleryPersistence.java
+++ b/file-repository-core/src/main/java/org/genesys/filerepository/persistence/ImageGalleryPersistence.java
@@ -17,18 +17,16 @@
package org.genesys.filerepository.persistence;
import org.genesys.filerepository.model.ImageGallery;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
+import org.genesys.filerepository.model.RepositoryFolder;
import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.querydsl.QueryDslPredicateExecutor;
import org.springframework.stereotype.Repository;
-// TODO: Auto-generated Javadoc
/**
* The Interface ImageGalleryPersistence.
*/
@Repository
-public interface ImageGalleryPersistence extends JpaRepository {
+public interface ImageGalleryPersistence extends JpaRepository, QueryDslPredicateExecutor {
/**
* Find gallery for specified path.
@@ -36,16 +34,6 @@ public interface ImageGalleryPersistence extends JpaRepositoryprefix.
- *
- * @param prefix the prefix
- * @param pageable the pageable
- * @return the page
- */
- @Query("select ig from org.genesys.filerepository.model.ImageGallery ig where ig.path like ?1%")
- Page listByPath(String prefix, Pageable pageable);
+ ImageGallery findByFolder(RepositoryFolder folder);
}
diff --git a/file-repository-core/src/main/java/org/genesys/filerepository/service/ImageGalleryService.java b/file-repository-core/src/main/java/org/genesys/filerepository/service/ImageGalleryService.java
index 5ef4823dbe404d467c3c3223ee676c28bc190358..e04357d713bf0e9604ba98759cd0acbe78c46a25 100644
--- a/file-repository-core/src/main/java/org/genesys/filerepository/service/ImageGalleryService.java
+++ b/file-repository-core/src/main/java/org/genesys/filerepository/service/ImageGalleryService.java
@@ -52,8 +52,9 @@ public interface ImageGalleryService {
* @param title Image gallery title in English.
* @param description Image gallery description in English.
* @return the new ImageGallery or existing gallery at the specified path.
+ * @throws InvalidRepositoryPathException
*/
- ImageGallery createImageGallery(Path path, String title, String description);
+ ImageGallery createImageGallery(Path path, String title, String description) throws InvalidRepositoryPathException;
/**
* Delete the image gallery, but don't remove the images at that path.
@@ -107,7 +108,8 @@ public interface ImageGalleryService {
* @param prefix the prefix
* @param pageable the pageable
* @return paginated image gallery data
+ * @throws InvalidRepositoryPathException
*/
- Page listImageGalleries(Path root, Pageable pageable);
+ Page listImageGalleries(Path root, Pageable pageable) throws InvalidRepositoryPathException;
}
diff --git a/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/ImageGalleryServiceImpl.java b/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/ImageGalleryServiceImpl.java
index 7feb0a192d19db58e48340f5786f9a99b1fdb299..216dd4f735600e7bf46c0407b5989c8073d731da 100644
--- a/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/ImageGalleryServiceImpl.java
+++ b/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/ImageGalleryServiceImpl.java
@@ -23,8 +23,11 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import org.genesys.blocks.security.SecurityContextUtil;
import org.genesys.filerepository.InvalidRepositoryPathException;
import org.genesys.filerepository.model.ImageGallery;
+import org.genesys.filerepository.model.QImageGallery;
+import org.genesys.filerepository.model.RepositoryFolder;
import org.genesys.filerepository.model.RepositoryImage;
import org.genesys.filerepository.persistence.ImageGalleryPersistence;
import org.genesys.filerepository.service.BytesStorageService;
@@ -35,14 +38,18 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
+import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.access.prepost.PostAuthorize;
-import org.springframework.security.access.prepost.PostFilter;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import com.querydsl.jpa.impl.JPAQuery;
+import com.querydsl.jpa.impl.JPAQueryFactory;
+
// TODO: Auto-generated Javadoc
/**
* The Class ImageGalleryServiceImpl.
@@ -70,6 +77,10 @@ public class ImageGalleryServiceImpl implements ImageGalleryService {
@Autowired
private ThumbnailGenerator thumbnailGenerator;
+ /** The jpa query factory. */
+ @Autowired
+ private JPAQueryFactory jpaQueryFactory;
+
/*
* (non-Javadoc)
* @see
@@ -79,7 +90,7 @@ public class ImageGalleryServiceImpl implements ImageGalleryService {
@Override
@PostAuthorize("returnObject == null or hasRole('ADMINISTRATOR') or hasPermission(returnObject, 'read')")
public ImageGallery loadImageGallery(final Path path) {
- final ImageGallery imageGallery = imageGalleryPersistence.findByPath(path.normalize().toAbsolutePath().toString());
+ final ImageGallery imageGallery = imageGalleryPersistence.findByFolder(repositoryService.getFolder(path));
return deepLoad(imageGallery);
}
@@ -106,17 +117,23 @@ public class ImageGalleryServiceImpl implements ImageGalleryService {
@Override
@Transactional
@PreAuthorize("isAuthenticated()")
- public ImageGallery createImageGallery(final Path path, final String title, final String description) {
+ public ImageGallery createImageGallery(final Path path, final String title, final String description) throws InvalidRepositoryPathException {
LOG.debug("Creating ImageGallery at path={}", path);
- ImageGallery imageGallery = imageGalleryPersistence.findByPath(path.normalize().toAbsolutePath().toString());
+ RepositoryFolder repositoryFolder = repositoryService.ensureFolder(path.normalize().toAbsolutePath());
+
+ ImageGallery imageGallery = imageGalleryPersistence.findByFolder(repositoryFolder);
if (imageGallery != null) {
return imageGallery;
- } else {
- LOG.info("Creating new image gallery at path={}", path);
- imageGallery = new ImageGallery();
}
+ if (!SecurityContextUtil.hasRole("ADMINISTRATOR") && !SecurityContextUtil.hasPermission(repositoryFolder, "WRITE")) {
+ throw new AccessDeniedException("No WRITE permission on " + repositoryFolder.getPath());
+ }
+
+ LOG.info("Creating new image gallery at path={}", path);
+ imageGallery = new ImageGallery();
+ imageGallery.setFolder(repositoryFolder);
imageGallery.setPath(path.normalize().toAbsolutePath().toString());
imageGallery.setTitle(title);
imageGallery.setDescription(description);
@@ -295,7 +312,7 @@ public class ImageGalleryServiceImpl implements ImageGalleryService {
* @return the page
*/
@Override
- @PostFilter("hasRole('ADMINISTRATOR') or hasPermission(filterObject, 'read')")
+ @PreAuthorize("hasRole('ADMINISTRATOR')")
public Page listImageGalleries(final Pageable pageable) {
return imageGalleryPersistence.findAll(pageable);
}
@@ -307,8 +324,22 @@ public class ImageGalleryServiceImpl implements ImageGalleryService {
* java.lang.String, org.springframework.data.domain.Pageable)
*/
@Override
- @PostFilter("hasRole('ADMINISTRATOR') or hasPermission(filterObject, 'read')")
- public Page listImageGalleries(final Path root, final Pageable pageable) {
- return imageGalleryPersistence.listByPath(root.normalize().toAbsolutePath().toString(), pageable);
+ public Page listImageGalleries(final Path root, final Pageable pageable) throws InvalidRepositoryPathException {
+ List folders = repositoryService.listPaths(root);
+ // Remove folders user can't read
+ folders.removeIf(folder -> !SecurityContextUtil.hasRole("ADMINISTRATOR") && !SecurityContextUtil.hasPermission(folder, "READ"));
+
+ JPAQuery query = jpaQueryFactory.selectFrom(QImageGallery.imageGallery).where(QImageGallery.imageGallery.folder.in(folders));
+ long total = query.fetchCount();
+
+ List content = query.join(QImageGallery.imageGallery.folder).fetchJoin()
+ // page
+ .offset(pageable.getOffset()).limit(pageable.getPageSize())
+ // fetch
+ .fetch();
+
+ // content.forEach(imageGallery -> imageGallery.getImages().size());
+ // content.forEach(imageGallery -> imageGallery.getFolder().getId());
+ return new PageImpl<>(content, pageable, total);
}
}
diff --git a/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/RepositoryServiceImpl.java b/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/RepositoryServiceImpl.java
index ad1a391d4143f06daa6dde9fc9624b6b4ad4333d..f50994c673852f27acac6de6fc02e167ce389777 100644
--- a/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/RepositoryServiceImpl.java
+++ b/file-repository-core/src/main/java/org/genesys/filerepository/service/impl/RepositoryServiceImpl.java
@@ -33,6 +33,7 @@ import javax.imageio.ImageIO;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.tika.Tika;
+import org.genesys.blocks.security.SecurityContextUtil;
import org.genesys.filerepository.FolderNotEmptyException;
import org.genesys.filerepository.InvalidRepositoryFileDataException;
import org.genesys.filerepository.InvalidRepositoryPathException;
@@ -51,6 +52,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.access.prepost.PostAuthorize;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;
@@ -88,7 +90,7 @@ public class RepositoryServiceImpl implements RepositoryService, InitializingBea
/** The bytes storage service. */
@Autowired
private BytesStorageService bytesStorageService;
-
+
/*
* (non-Javadoc)
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
@@ -139,6 +141,8 @@ public class RepositoryServiceImpl implements RepositoryService, InitializingBea
PathValidator.checkValidPath(repositoryPath);
+ RepositoryFolder repositoryFolder = ensureFolder(repositoryPath);
+
contentType = updateContentTypeIfNecessary(contentType, bytes);
if ((originalFilename == null) || (contentType == null) || (bytes == null)) {
@@ -162,7 +166,6 @@ public class RepositoryServiceImpl implements RepositoryService, InitializingBea
repositoryFile.setMd5Sum(DigestUtils.md5Hex(bytes));
repositoryFile.setSize(bytes.length);
- RepositoryFolder repositoryFolder = ensureFolder(repositoryPath);
repositoryFile.setFolder(repositoryFolder);
repositoryFile.setOriginalFilename(originalFilename);
@@ -527,7 +530,9 @@ public class RepositoryServiceImpl implements RepositoryService, InitializingBea
return new Tika().detect(bytes);
} else {
final String detectedContentType = new Tika().detect(bytes);
- LOG.info("Content-Type provided={} detected={}", contentType, detectedContentType);
+ if (! detectedContentType.equals(contentType)) {
+ LOG.debug("Content-Type provided={} detected={}", contentType, detectedContentType);
+ }
return contentType;
}
}
@@ -780,6 +785,10 @@ public class RepositoryServiceImpl implements RepositoryService, InitializingBea
if ("/".equals(folderPath.toString())) {
// Root folder
+ if (! SecurityContextUtil.hasRole("ADMINISTRATOR")) {
+ // Only administrator can create folders on root
+ throw new AccessDeniedException("No WRITE permission on /");
+ }
return null;
} else {
PathValidator.checkValidFolderName(folderPath.getFileName().toString());
@@ -791,9 +800,15 @@ public class RepositoryServiceImpl implements RepositoryService, InitializingBea
folder = new RepositoryFolder();
folder.setName(folderPath.getFileName().toString());
if (folderPath.getParent() != null) {
+ // This will assure permissions on existing parent folder
folder.setParent(ensureFolder(folderPath.getParent()));
}
folderRepository.save(folder);
+ } else {
+ // Assure permissions on folder if it already exists
+ if (! SecurityContextUtil.hasRole("ADMINISTRATOR") && ! SecurityContextUtil.hasPermission(folder, "WRITE")) {
+ throw new AccessDeniedException("No WRITE permission on " + folder.getPath());
+ }
}
return folder;
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/config/DatabaseConfig.java b/file-repository-core/src/test/java/org/genesys/filerepository/config/DatabaseConfig.java
index 079b7c7b1813defc83f58a70df16408a4a178a9f..8eb7ce57ee7a931d025abd23e9b20f35ac8e32ab 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/config/DatabaseConfig.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/config/DatabaseConfig.java
@@ -18,6 +18,7 @@ package org.genesys.filerepository.config;
import java.util.Properties;
+import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
@@ -39,6 +40,8 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
+import com.querydsl.jpa.impl.JPAQueryFactory;
+
/**
* The Class DatabaseConfig.
*/
@@ -82,6 +85,17 @@ public class DatabaseConfig {
return new JdbcTemplate(dataSource);
}
+ /**
+ * Jpa query factory.
+ *
+ * @param entityManager the entity manager
+ * @return the JPA query factory
+ */
+ @Bean
+ public JPAQueryFactory jpaQueryFactory(EntityManager entityManager) {
+ return new JPAQueryFactory(entityManager);
+ }
+
/**
* Entity manager factory.
*
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryAddTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryAddTest.java
index 5a3361493ab545a8ce8543c4ab76e571ea6002c2..aff52d5c684a28bd592418487b5fe0db59cc0383 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryAddTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryAddTest.java
@@ -31,11 +31,13 @@ import org.genesys.filerepository.NoSuchRepositoryFileException;
import org.genesys.filerepository.model.RepositoryFile;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.test.context.support.WithMockUser;
// TODO: Auto-generated Javadoc
/**
* The Class FileRepositoryAddTest.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class FileRepositoryAddTest extends RepositoryServiceTest {
/** The Constant SOME_BYTES. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryDirectoryTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryDirectoryTest.java
index 52a004a46f82dec813efbc1c52117d962057864d..be01b22d8ad81ece079ab16fb67ae028fb0caffa 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryDirectoryTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryDirectoryTest.java
@@ -33,10 +33,12 @@ import org.genesys.filerepository.model.RepositoryFile;
import org.genesys.filerepository.model.RepositoryFolder;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.test.context.support.WithMockUser;
/**
* Test the folder navigation of the repository.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class FileRepositoryDirectoryTest extends RepositoryServiceTest {
/** The Constant SOME_BYTES. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryExtensionTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryExtensionTest.java
index c9070c3b59d946e73811139ebdca7f7a04c7ba93..6537e2ee656b38f42e7fbb3b9a1ff91903ce4e1f 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryExtensionTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryExtensionTest.java
@@ -26,11 +26,13 @@ import org.genesys.filerepository.NoSuchRepositoryFileException;
import org.genesys.filerepository.model.RepositoryFile;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.test.context.support.WithMockUser;
// TODO: Auto-generated Javadoc
/**
* The Class FileRepositoryExtensionTest.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class FileRepositoryExtensionTest extends RepositoryServiceTest {
/** The initial content type. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryUpdateTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryUpdateTest.java
index 42f0c7a13c0801b8be6d38f3a179bbd33eeb0944..bea8a3f82032c3480345398298971f4bc923f64f 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryUpdateTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/FileRepositoryUpdateTest.java
@@ -31,12 +31,14 @@ import org.genesys.filerepository.NoSuchRepositoryFileException;
import org.genesys.filerepository.model.RepositoryFile;
import org.junit.Before;
import org.junit.Test;
+import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.transaction.annotation.Transactional;
// TODO: Auto-generated Javadoc
/**
* The Class FileRepositoryUpdateTest.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class FileRepositoryUpdateTest extends RepositoryServiceTest {
/** The initial content type. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryTest.java
index 33da90fcad823a968e42912b7626cd76e7529a1d..250c8e1b5d61574bb42cd333d0a12da9d8d102f2 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryTest.java
@@ -17,7 +17,7 @@
package org.genesys.filerepository.service;
import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertThat;
import java.io.IOException;
import java.nio.file.Path;
@@ -26,19 +26,26 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
+import javax.transaction.Transactional;
+
import org.genesys.filerepository.InvalidRepositoryFileDataException;
import org.genesys.filerepository.InvalidRepositoryPathException;
import org.genesys.filerepository.NoSuchRepositoryFileException;
import org.genesys.filerepository.model.ImageGallery;
import org.genesys.filerepository.model.RepositoryImage;
+import org.genesys.filerepository.persistence.ImageGalleryPersistence;
import org.junit.After;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.security.test.context.support.WithMockUser;
// TODO: Auto-generated Javadoc
/**
* The Class ImageGalleryTest.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class ImageGalleryTest extends RepositoryServiceTest {
/** The Constant DEFAULT_GALLERY_TITLE. */
@@ -64,19 +71,17 @@ public class ImageGalleryTest extends RepositoryServiceTest {
@Autowired
private RepositoryService fileRepoService;
+ @Autowired
+ private ImageGalleryPersistence galleryRepository;
+
/**
* After test.
- *
- * @throws NoSuchRepositoryFileException the no such repository file exception
- * @throws IOException Signals that an I/O exception has occurred.
- * @throws InvalidRepositoryPathException the invalid repository path exception
*/
@After
- public void afterTest() throws NoSuchRepositoryFileException, IOException, InvalidRepositoryPathException {
- final ImageGallery imageGallery = imageGalleryService.loadImageGallery(initialPath);
- if (imageGallery != null) {
- imageGalleryService.removeGallery(imageGallery);
- }
+ @Transactional
+ public void afterTest() throws Throwable {
+ galleryRepository.deleteAll();
+ super.afterTest();
}
/**
@@ -90,9 +95,10 @@ public class ImageGalleryTest extends RepositoryServiceTest {
/**
* Creates the gallery.
+ * @throws InvalidRepositoryPathException
*/
@Test
- public void createGallery() {
+ public void createGallery() throws InvalidRepositoryPathException {
ImageGallery imageGallery = imageGalleryService.loadImageGallery(initialPath);
assertThat("Must be null", imageGallery, nullValue());
@@ -129,9 +135,10 @@ public class ImageGalleryTest extends RepositoryServiceTest {
/**
* Creates the gallery update blah.
+ * @throws InvalidRepositoryPathException
*/
@Test
- public void createGalleryUpdateBlah() {
+ public void createGalleryUpdateBlah() throws InvalidRepositoryPathException {
ImageGallery imageGallery = imageGalleryService.createImageGallery(initialPath, DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
assertThat("Must not be null", imageGallery, notNullValue());
@@ -166,10 +173,10 @@ public class ImageGalleryTest extends RepositoryServiceTest {
final RepositoryImage repoImage = fileRepoService.addImage(initialPath, image1.getOriginalFilename(), image1.getContentType(), image1.getImageBytes(), null);
// Expect the image to be included in the list!
- assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), hasSize(1));
- assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(repoImage));
+ assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(initialPath).getImages(), hasSize(1));
+ assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(repoImage));
- imageGalleryService.removeGallery(imageGalleryService.loadImageGallery(imageGallery.getFolderPath()));
+ imageGalleryService.removeGallery(imageGalleryService.loadImageGallery(initialPath));
fileRepoService.removeFile(repoImage);
}
@@ -185,22 +192,22 @@ public class ImageGalleryTest extends RepositoryServiceTest {
@Test
public void autoImagesOnPath() throws InvalidRepositoryPathException, InvalidRepositoryFileDataException, NoSuchRepositoryFileException, IOException {
- final ImageGallery imageGallery = imageGalleryService.createImageGallery(initialPath, DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
+ imageGalleryService.createImageGallery(initialPath, DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
// Add an image to the gallery path
final TestImage image1 = new TestImage("10x10.png", "image/png");
final RepositoryImage repoImage1 = (RepositoryImage) fileRepoService.addFile(initialPath, image1.getOriginalFilename(), image1.getContentType(), image1.getImageBytes(), null);
// Expect the image to be included in the list!
- assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(repoImage1));
+ assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(repoImage1));
// Add an image to the gallery path
final TestImage image2 = new TestImage("11x10.png", "image/png");
final RepositoryImage repoImage2 = (RepositoryImage) fileRepoService.addFile(initialPath, image2.getOriginalFilename(), image2.getContentType(), image2.getImageBytes(), null);
- assertThat("Image gallery must include both images!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(repoImage1, repoImage2));
+ assertThat("Image gallery must include both images!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(repoImage1, repoImage2));
- imageGalleryService.removeGallery(imageGalleryService.loadImageGallery(imageGallery.getFolderPath()));
+ imageGalleryService.removeGallery(imageGalleryService.loadImageGallery(initialPath));
// repositoryService.removeFile(repoImage2);
// repositoryService.removeFile(repoImage1);
}
@@ -217,7 +224,7 @@ public class ImageGalleryTest extends RepositoryServiceTest {
@Test
public void autoRemoveImagesOnPath() throws InvalidRepositoryPathException, InvalidRepositoryFileDataException, NoSuchRepositoryFileException, IOException {
- final ImageGallery imageGallery = imageGalleryService.createImageGallery(initialPath, DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
+ imageGalleryService.createImageGallery(initialPath, DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
// Add an image to the gallery path
final TestImage image1 = new TestImage("10x10.png", "image/png");
@@ -227,16 +234,16 @@ public class ImageGalleryTest extends RepositoryServiceTest {
final TestImage image2 = new TestImage("11x10.png", "image/png");
final RepositoryImage repoImage2 = fileRepoService.addImage(initialPath, image2.getOriginalFilename(), image2.getContentType(), image2.getImageBytes(), null);
- assertThat("Image gallery must include both images!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(repoImage1, repoImage2));
+ assertThat("Image gallery must include both images!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(repoImage1, repoImage2));
fileRepoService.removeFile(repoImage2);
- assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(repoImage1));
+ assertThat("Image gallery must include the image!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(repoImage1));
fileRepoService.removeFile(repoImage1);
// Expect the image to be gone from the list!
- assertThat("Image gallery must be deleted", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()), is(nullValue()));
+ assertThat("Image gallery must be deleted", imageGalleryService.loadImageGallery(initialPath), is(nullValue()));
}
/**
@@ -262,26 +269,26 @@ public class ImageGalleryTest extends RepositoryServiceTest {
images.add(repoImg);
}
- imageGallery = imageGalleryService.loadImageGallery(imageGallery.getFolderPath());
+ imageGallery = imageGalleryService.loadImageGallery(initialPath);
assertThat("Image gallery must have 20 images", imageGallery.getImages(), hasSize(20));
// Remove something in the middle of the gallery
fileRepoService.removeImage(images.remove(4));
// Test order
- assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
+ assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
// Remove something in the start of the gallery
fileRepoService.removeFile(images.remove(0));
// Test order
- assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
+ assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
// Remove something in the end of the gallery
fileRepoService.removeFile(images.remove(images.size() - 1));
// Test order
- assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
+ assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
// Remove randomly until empty
final Random rnd = new Random(System.currentTimeMillis());
@@ -290,10 +297,10 @@ public class ImageGalleryTest extends RepositoryServiceTest {
fileRepoService.removeFile(images.remove(idx));
if (images.size() == 0) {
- assertThat("Image gallery must be deleted", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()), is(nullValue()));
+ assertThat("Image gallery must be deleted", imageGalleryService.loadImageGallery(initialPath), is(nullValue()));
} else {
// Test order
- assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(imageGallery.getFolderPath()).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
+ assertThat("Images must be reordered!", imageGalleryService.loadImageGallery(initialPath).getImages(), contains(images.toArray(EMPTY_REPOSITORYIMAGE_ARRAY)));
}
}
}
@@ -318,7 +325,7 @@ public class ImageGalleryTest extends RepositoryServiceTest {
final TestImage image2 = new TestImage("11x10.png", "image/png");
final RepositoryImage repoImage2 = fileRepoService.addImage(initialPath, image2.getOriginalFilename(), image2.getContentType(), image2.getImageBytes(), null);
- imageGallery = imageGalleryService.loadImageGallery(imageGallery.getFolderPath());
+ imageGallery = imageGalleryService.loadImageGallery(initialPath);
assertThat("Image gallery must include both images!", imageGallery.getImages(), contains(repoImage1, repoImage2));
@@ -357,7 +364,7 @@ public class ImageGalleryTest extends RepositoryServiceTest {
ImageGallery imageGallery = imageGalleryService.createImageGallery(initialPath, DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
- imageGallery = imageGalleryService.loadImageGallery(imageGallery.getFolderPath());
+ imageGallery = imageGalleryService.loadImageGallery(initialPath);
assertThat("Image gallery must include both images!", imageGallery.getImages(), contains(repoImage1, repoImage2));
@@ -365,4 +372,33 @@ public class ImageGalleryTest extends RepositoryServiceTest {
fileRepoService.removeFile(repoImage2);
fileRepoService.removeFile(repoImage1);
}
+
+
+ /**
+ * Delete gallery.
+ *
+ * @throws InvalidRepositoryPathException the invalid repository path exception
+ */
+ @Test
+ public void listGalleries() throws InvalidRepositoryPathException {
+ imageGalleryService.createImageGallery(initialPath.resolve("gallery1"), DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
+ imageGalleryService.createImageGallery(initialPath.resolve("gallery2"), DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
+ imageGalleryService.createImageGallery(initialPath.resolve("sub/gallery3"), DEFAULT_GALLERY_TITLE, DEFAULT_GALLERY_DESCRIPTION);
+
+ Page page = imageGalleryService.listImageGalleries(new PageRequest(0, 3));
+ assertThat(page.getContent().size(), is(3));
+ assertThat(page.getTotalElements(), is(3l));
+
+ page = imageGalleryService.listImageGalleries(new PageRequest(0, 2));
+ assertThat(page.getContent().size(), is(2));
+ assertThat(page.getTotalElements(), is(3l));
+
+ page = imageGalleryService.listImageGalleries(initialPath, new PageRequest(0, 3));
+ assertThat(page.getContent().size(), is(3));
+ assertThat(page.getTotalElements(), is(3l));
+
+ page = imageGalleryService.listImageGalleries(initialPath.resolve("sub"), new PageRequest(0, 3));
+ assertThat(page.getContent().size(), is(1));
+ assertThat(page.getTotalElements(), is(1l));
+ }
}
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryThumbnailsTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryThumbnailsTest.java
index 1fdd7e4d6c5515ddc051fbca877950e2bc9219fb..ff9b5f023c3adc5b39f476b8184ef3d84d2bb8d4 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryThumbnailsTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/ImageGalleryThumbnailsTest.java
@@ -38,12 +38,14 @@ import org.genesys.filerepository.service.impl.ImageGalleryServiceImpl;
import org.junit.After;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.transaction.annotation.Transactional;
// TODO: Auto-generated Javadoc
/**
* The Class ImageGalleryTest.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class ImageGalleryThumbnailsTest extends RepositoryServiceTest {
/** The Constant DEFAULT_GALLERY_TITLE. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/MetadataTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/MetadataTest.java
index da28f7d4286110dafd6d4d0fb987823d31bef472..c7b137659a00a9bdb5352925bc67a3d860b8f514 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/MetadataTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/MetadataTest.java
@@ -30,6 +30,7 @@ import org.genesys.filerepository.model.RepositoryImage;
import org.junit.After;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.transaction.annotation.Transactional;
import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -38,6 +39,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
/**
* Repository metadata tests.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class MetadataTest extends RepositoryServiceTest {
/** The timestamp. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryFolderTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryFolderTest.java
index 629587acd292ec5aa552fc329dd6d2ea6b7d5f4d..65d5ecf3f394473c0ef8488e12dde1eb9402b103 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryFolderTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryFolderTest.java
@@ -27,11 +27,13 @@ import org.genesys.filerepository.FolderNotEmptyException;
import org.genesys.filerepository.InvalidRepositoryPathException;
import org.genesys.filerepository.model.RepositoryFolder;
import org.junit.Test;
+import org.springframework.security.test.context.support.WithMockUser;
// TODO: Auto-generated Javadoc
/**
* The Class FileRepositoryAddTest.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class RepositoryFolderTest extends RepositoryServiceTest {
@Test
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageAddTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageAddTest.java
index 6b19b735a819a9fbaafcccb21e182e24a26fddc7..9ad636f81bbb857c9efce2dfd28a3d66c712e0c0 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageAddTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageAddTest.java
@@ -33,6 +33,7 @@ import org.genesys.filerepository.model.RepositoryImage;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -42,6 +43,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { ServiceBeanConfig.class, DatabaseConfig.class })
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class RepositoryImageAddTest {
/** The initial content type. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageUpdateTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageUpdateTest.java
index 1704c46240de85f14c0de8fa35d61bcea387ea54..de19e2856bf48bf16d84a82b2c55fe8d6137b173 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageUpdateTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryImageUpdateTest.java
@@ -26,15 +26,16 @@ import org.genesys.filerepository.InvalidRepositoryPathException;
import org.genesys.filerepository.NoSuchRepositoryFileException;
import org.genesys.filerepository.metadata.ImageMetadata.Orientation;
import org.genesys.filerepository.model.RepositoryImage;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.test.context.support.WithMockUser;
// TODO: Auto-generated Javadoc
/**
* The Class RepositoryImageUpdateTest.
*/
+@WithMockUser(username = "user", password = "user", roles = "ADMINISTRATOR")
public class RepositoryImageUpdateTest extends RepositoryServiceTest {
/** The initial content type. */
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryServiceTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryServiceTest.java
index 9bccf66cc454ab2e46bad4749e8465a24df9b764..7d46cfc4961a366a67f84445f1e9b4041a798bc8 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryServiceTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/RepositoryServiceTest.java
@@ -16,6 +16,8 @@ import org.genesys.filerepository.persistence.RepositoryFolderRepository;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -25,6 +27,8 @@ import org.springframework.transaction.annotation.Transactional;
@ContextConfiguration(classes = { ServiceBeanConfig.class, DatabaseConfig.class })
public abstract class RepositoryServiceTest {
+ protected final Logger LOG = LoggerFactory.getLogger(getClass());
+
protected static final Path ROOT = Paths.get("/");
/** The file repo service. */
@@ -40,9 +44,7 @@ public abstract class RepositoryServiceTest {
@Before
@Transactional
public void beforeTest() throws Throwable {
- fileRepository.deleteAll();
- deleteFolders(folderRepository.findAll());
-
+ afterTest();
assertThat(fileRepository.count(), is(0l));
assertThat(folderRepository.count(), is(0l));
}
@@ -52,9 +54,8 @@ public abstract class RepositoryServiceTest {
for (RepositoryFolder folder : toDelete) {
try {
folderRepository.delete(folder);
- System.err.println("Folder deleted " + folder);
} catch (Throwable e) {
- System.err.println("Folder NOT deleted " + folder);
+ LOG.debug("Folder not deleted " + folder);
pending.add(folder);
}
}
@@ -66,7 +67,8 @@ public abstract class RepositoryServiceTest {
@After
@Transactional
public void afterTest() throws Throwable {
-
+ fileRepository.deleteAll();
+ deleteFolders(folderRepository.findAll());
}
}
diff --git a/file-repository-core/src/test/java/org/genesys/filerepository/service/S3StorageServiceTest.java b/file-repository-core/src/test/java/org/genesys/filerepository/service/S3StorageServiceTest.java
index 7671fa59b80f28a3719adbf67b45a27274bd74cc..a5fed1b0f7b349372b4a99dc620790b389e3d666 100644
--- a/file-repository-core/src/test/java/org/genesys/filerepository/service/S3StorageServiceTest.java
+++ b/file-repository-core/src/test/java/org/genesys/filerepository/service/S3StorageServiceTest.java
@@ -335,7 +335,7 @@ public class S3StorageServiceTest {
*/
@Test(expected = IOException.class)
public void invalidUpsertNullFilename() throws IOException, InvalidKeyException, NoSuchAlgorithmException {
- bytesStorageService.upsert(Paths.get("/test/", null), SOME_BYTES);
+ bytesStorageService.upsert(Paths.get("/test/"), SOME_BYTES);
}
/**
@@ -407,7 +407,7 @@ public class S3StorageServiceTest {
*/
@Test(expected = IOException.class)
public void invalidRemoveNullFilename() throws IOException, InvalidKeyException, NoSuchAlgorithmException {
- bytesStorageService.remove(Paths.get("/test/", null));
+ bytesStorageService.remove(Paths.get("/test/"));
}
/**
diff --git a/file-repository-ftpserver/pom.xml b/file-repository-ftpserver/pom.xml
index d92ef3b9d80460e7fad36c5dc77df1ad8f66bc8e..22665534333a5affd60f4cbcf96715c603b5490b 100644
--- a/file-repository-ftpserver/pom.xml
+++ b/file-repository-ftpserver/pom.xml
@@ -57,6 +57,13 @@
${spring.version}
test
+
+
+ org.springframework.security
+ spring-security-test
+ ${spring.security.version}
+ test
+
commons-net
@@ -80,6 +87,13 @@
test
+
+ javax.inject
+ javax.inject
+ 1
+ test
+
+
commons-io
commons-io
diff --git a/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/ApplicationConfig.java b/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/ApplicationConfig.java
index fb12eb45ece0658d477fbcbd32be6d77f2d3bc44..6ade5da712370d4b756231eb0ca9c3368498c4fe 100644
--- a/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/ApplicationConfig.java
+++ b/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/ApplicationConfig.java
@@ -16,6 +16,7 @@
package org.genesys.filerepository.service.ftp;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import org.apache.ftpserver.ftplet.Authentication;
@@ -29,8 +30,11 @@ import org.apache.ftpserver.usermanager.UsernamePasswordAuthentication;
import org.apache.ftpserver.usermanager.impl.AbstractUserManager;
import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
import org.apache.ftpserver.usermanager.impl.WritePermission;
+import org.genesys.blocks.security.model.BasicUser;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
/**
* The Class ApplicationConfig.
@@ -128,10 +132,10 @@ public class ApplicationConfig {
if (authentication instanceof UsernamePasswordAuthentication) {
final UsernamePasswordAuthentication upauth = (UsernamePasswordAuthentication) authentication;
- final String user = upauth.getUsername();
+ final String username = upauth.getUsername();
String password = upauth.getPassword();
- if (user == null) {
+ if (username == null) {
throw new AuthenticationFailedException("Authentication failed");
}
@@ -139,7 +143,7 @@ public class ApplicationConfig {
password = "";
}
- final String storedPassword = user.concat("1!");
+ final String storedPassword = username.concat("1!");
if (!password.equals(storedPassword)) {
// user does not exist
@@ -148,11 +152,25 @@ public class ApplicationConfig {
// if (getPasswordEncryptor().matches(password, storedPassword)) {
if (password.equals(storedPassword)) {
- try {
- return getUserByName(user);
- } catch (final FtpException e) {
- throw new AuthenticationFailedException("Authentication failed", e);
- }
+ // using this to grant us ADMIN role
+ BasicUser user=new BasicUser() {
+ @Override
+ public Collection extends GrantedAuthority> getAuthorities() {
+ List roles=new ArrayList<>();
+ roles.add(new SimpleGrantedAuthority("ROLE_ADMINISTRATOR"));
+ return roles;
+ }
+ };
+
+ FtpUser ftpUser = new FtpUser(user);
+ ftpUser.setName(username);
+ final List authorities = new ArrayList<>();
+ authorities.add(new ConcurrentLoginPermission(10, 0));
+ authorities.add(new WritePermission());
+ ftpUser.setAuthorities(authorities);
+ ftpUser.setHomeDirectory("/");
+ return ftpUser;
+
} else {
throw new AuthenticationFailedException("Authentication failed");
}
diff --git a/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/FtpServerTest.java b/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/FtpServerTest.java
index f1805d0a2130d0e691252e0b240b93caf7d3a00c..663eef5aca424c3b215e9e45d93fb8109710ab3a 100644
--- a/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/FtpServerTest.java
+++ b/file-repository-ftpserver/src/test/java/org/genesys/filerepository/service/ftp/FtpServerTest.java
@@ -15,11 +15,7 @@
*/
package org.genesys.filerepository.service.ftp;
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.hasItems;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
import java.io.ByteArrayInputStream;