diff --git a/mozen/src/main/java/mozen/business/IModelManager.java b/mozen/src/main/java/mozen/business/IModelManager.java index df1c4bf23e1cc5e5672fb0f9f7a8a3135466c868..d383f7e3cac169a85c0d150b5ded1cdb1f80415e 100644 --- a/mozen/src/main/java/mozen/business/IModelManager.java +++ b/mozen/src/main/java/mozen/business/IModelManager.java @@ -10,7 +10,7 @@ import mozen.messages.SearchResult; import mozen.model.User; public interface IModelManager { - Long addModel(ModelMessage message, User user) throws Exception; + Model addModel(ModelMessage message, User user) throws Exception; void addModelFile(MultipartFile file, long id, User user) throws Exception; void updateModel(ModelMessage message, long id, User user) throws Exception; void removeModel(long id, User user) throws Exception; diff --git a/mozen/src/main/java/mozen/business/IUserManager.java b/mozen/src/main/java/mozen/business/IUserManager.java index 58cfdf22af7a73bb2bb9ce6a458e574eea4737d7..874ffbc5049b7bafb39aa6c72455b0d7cbcb2126 100644 --- a/mozen/src/main/java/mozen/business/IUserManager.java +++ b/mozen/src/main/java/mozen/business/IUserManager.java @@ -6,7 +6,7 @@ import mozen.messages.SignupMessage; import mozen.model.User; public interface IUserManager { - Long addUser(SignupMessage message); + User addUser(SignupMessage message); void updateUser(User user, User userToUpdate); void removeUser(User user, Long id); diff --git a/mozen/src/main/java/mozen/business/ModelManager.java b/mozen/src/main/java/mozen/business/ModelManager.java index 2dc243625797e813e8824fdcf2d6a116392ef4ac..fd1daa802999a5d0247221cbd5678e79a6577879 100644 --- a/mozen/src/main/java/mozen/business/ModelManager.java +++ b/mozen/src/main/java/mozen/business/ModelManager.java @@ -3,6 +3,7 @@ package mozen.business; import java.util.Collection; import java.util.Date; import java.util.HashSet; +import java.util.Optional; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +34,7 @@ public class ModelManager implements IModelManager { private TagRepository tagRepo; @Override - public Long addModel(ModelMessage message, User user) throws Exception { + public Model addModel(ModelMessage message, User user) throws Exception { Model model = new Model(); System.err.println("[MODEL MANAGER] add model n:" + message.getName() + " sd:" + message.getShortDescription() @@ -63,28 +64,23 @@ public class ModelManager implements IModelManager { modelRepo.save(model); - return model.getId(); + return model; } @Override public void addModelFile(MultipartFile file, long id, User user) throws Exception { - System.err.println("[MODEL MANAGER] add model file 0"); Model model = modelRepo.findById(id).get(); - System.err.println("[MODEL MANAGER] add model file 1"); + if (model == null) throw new Exception("Unknown model"); if (!UserHelper.isAuthor(model.getAuthor(), user)) throw new Exception("Not the author"); - - System.err.println("[MODEL MANAGER] add model file 2"); + model.setChecksum(Md5Utils.getMD5(file)); model.setFile(file.getBytes()); model.setFileType(file.getContentType()); - System.err.println("[MODEL MANAGER] add model file 3"); - modelRepo.save(model); - System.err.println("[MODEL MANAGER] add model file 4"); } @Override @@ -145,12 +141,9 @@ public class ModelManager implements IModelManager { @Override public SearchResult findModel(String name, int page, int size, String sort) { - System.err.println("[MODEL MANAGER] search n:" + name + " p:" + page + " si:" + size + " so:" + sort); Pageable paging = PageRequest.of(page - 1, size, Sort.by(sort)); Page<Model> resultPage = modelRepo.findByNameContainingIgnoreCase(name, paging); - System.err.println("[MODEL MANAGER] search result " + resultPage.getTotalElements()); - SearchResult result = new SearchResult(); if (resultPage.hasContent()) { result.setTotalResult((int) resultPage.getTotalElements()); @@ -167,14 +160,10 @@ public class ModelManager implements IModelManager { @Override public SearchResult findModelWithTags(String name, int page, int size, String sort, Collection<String> tagsName) { - System.err.println( - "[MODEL MANAGER] search with tags n:" + name + " p:" + page + " si:" + size + " so:" + sort + " t:" + tagsName); Pageable paging = PageRequest.of(page - 1, size, Sort.by(sort)); Collection<Tag> tags = tagRepo.findByNameIn(tagsName); Page<Model> resultPage = modelRepo.findDistinctByNameContainingIgnoreCaseAndTagsIn(name, tags, paging); - System.err.println("[MODEL MANAGER] search result " + resultPage.getTotalElements()); - SearchResult result = new SearchResult(); if (resultPage.hasContent()) { result.setTotalResult((int) resultPage.getTotalElements()); @@ -191,7 +180,9 @@ public class ModelManager implements IModelManager { @Override public Model getModel(long id) { - return modelRepo.findById(id).get(); + Optional<Model> model = modelRepo.findById(id); + if (model.isPresent()) return model.get(); + else return null; } @Override diff --git a/mozen/src/main/java/mozen/business/UserManager.java b/mozen/src/main/java/mozen/business/UserManager.java index 84cb6c38c88e5dfc8e9e19ee68743f3691627c09..d2aac7fa7e0b3ee6dd063024b7f668aebb8d50c2 100644 --- a/mozen/src/main/java/mozen/business/UserManager.java +++ b/mozen/src/main/java/mozen/business/UserManager.java @@ -1,6 +1,7 @@ package mozen.business; import java.util.Collection; +import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @@ -21,7 +22,7 @@ public class UserManager implements IUserManager { BCryptPasswordEncoder bCryptPasswordEncoder; @Override - public Long addUser(SignupMessage message) { + public User addUser(SignupMessage message) { System.err.println("[USER MANAGER] add new user u:" + message.getUsername() + " e:" + message.getEmail() + " p:" + message.getPassword()); User u = new User(); @@ -31,7 +32,7 @@ public class UserManager implements IUserManager { u.setRole(Role.ROLE_DEFAULT); repo.save(u); - return u.getId(); + return u; } @Override @@ -47,7 +48,9 @@ public class UserManager implements IUserManager { @Override public User getUser(Long id) { - return repo.findById(id).get(); + Optional<User> user = repo.findById(id); + if(user.isPresent()) return user.get(); + else return null; } @Override diff --git a/mozen/src/main/java/mozen/web/ModelController.java b/mozen/src/main/java/mozen/web/ModelController.java index 6fab5277596463a1d0352bff6692145126db6441..0933527188064bc9d69cfde7b95d10caa140dde8 100644 --- a/mozen/src/main/java/mozen/web/ModelController.java +++ b/mozen/src/main/java/mozen/web/ModelController.java @@ -61,7 +61,7 @@ public class ModelController { } try { - long modelId = modelManager.addModel(message, user); + long modelId = modelManager.addModel(message, user).getId(); response.setMessage(Long.toString(modelId)); } catch (Exception e) { response.setError(true); diff --git a/mozen/src/test/java/mozen/business/ModelManagerTest.java b/mozen/src/test/java/mozen/business/ModelManagerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9fce495a9489515f2b63980cb3031be0cc60cede --- /dev/null +++ b/mozen/src/test/java/mozen/business/ModelManagerTest.java @@ -0,0 +1,117 @@ +package mozen.business; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + +import mozen.messages.ModelMessage; +import mozen.model.Model; +import mozen.model.User; + +@SpringBootTest +public class ModelManagerTest { + + @Autowired + ModelManager modelManager; + + @Test + @Transactional + void addModelTest () { + ModelMessage message = new ModelMessage(); + message.setName("testmodel"); + message.setShortDescription("this is short desc for testmodel"); + message.setLongDescription("this is long desc for testmodel"); + message.setPerformance(98.9); + message.setPerformanceUnit("test unit"); + message.setParameterCount(84654); + + User user = new User(); + user.setUsername("test"); + user.setEmail("test@test.com"); + user.setUsername("1234"); + + try { + Model model = modelManager.addModel(message, user); + + assertEquals(message.getName(), model.getName()); + assertEquals(message.getShortDescription(), model.getShortDescription()); + assertEquals(message.getLongDescription(), model.getLongDescription()); + assertEquals(message.getParameterCount(), model.getParameterCount()); + assertEquals(message.getPerformanceUnit(), model.getPerformanceUnit()); + assertEquals(message.getPerformance(), model.getPerformance()); + assertEquals(user.getUsername(), model.getAuthor().getUsername()); + // check tags missing + } catch (Exception e) { + assertTrue(false); + } + } + + @Test + @Transactional + void getModelTest () { + ModelMessage message = new ModelMessage(); + message.setName("testmodel"); + message.setShortDescription("this is short desc for testmodel"); + message.setLongDescription("this is long desc for testmodel"); + message.setPerformance(98.9); + message.setPerformanceUnit("test unit"); + message.setParameterCount(84654); + + User user = new User(); + user.setUsername("test"); + user.setEmail("test@test.com"); + user.setUsername("1234"); + + Model model; + try { model = modelManager.addModel(message, user);} catch (Exception e) {assertTrue(false); return;} + + Model modelFind = modelManager.getModel(model.getId()); + assertEquals(model, modelFind); + } + + @Test + void getModelNotPresentTest () { + Model modelFind = modelManager.getModel(368436); + + assertNull(modelFind); + } + + @Test + @Transactional + void removeModelTest () { + ModelMessage message = new ModelMessage(); + message.setName("testmodel"); + message.setShortDescription("this is short desc for testmodel"); + message.setLongDescription("this is long desc for testmodel"); + message.setPerformance(98.9); + message.setPerformanceUnit("test unit"); + message.setParameterCount(84654); + + User user = new User(); + user.setUsername("test"); + user.setEmail("test@test.com"); + user.setUsername("1234"); + + Model model; + try { model = modelManager.addModel(message, user);} catch (Exception e) {assertTrue(false); return;} + + try { + modelManager.removeModel(model.getId(), user); + } catch (Exception e) { + assertTrue(false); + } + + try { + Model modelFind = modelManager.getModel(model.getId()); + assertNull(modelFind); + } catch (Exception e) { + assertTrue(false); + } + } + +} \ No newline at end of file diff --git a/mozen/src/test/java/mozen/business/UserManagerTest.java b/mozen/src/test/java/mozen/business/UserManagerTest.java index 706b051ab60e17cbe02bfd0e9cd2138bf689ecb0..574a0e8df55bf18a9a35c532e456342d45c6510d 100644 --- a/mozen/src/test/java/mozen/business/UserManagerTest.java +++ b/mozen/src/test/java/mozen/business/UserManagerTest.java @@ -1,11 +1,85 @@ package mozen.business; -import org.junit.jupiter.api.extension.ExtendWith; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.transaction.annotation.Transactional; + +import mozen.messages.SignupMessage; +import mozen.model.User; -@ExtendWith(SpringExtension.class) @SpringBootTest public class UserManagerTest { - + @Autowired + UserManager userManager; + + @Test + @Transactional + void addUserTest () { + SignupMessage message = new SignupMessage(); + message.setEmail("test@test.com"); + message.setUsername("testuser"); + message.setPassword("1234"); + + User user = userManager.addUser(message); + + assertEquals(message.getEmail(), user.getEmail()); + assertEquals(message.getUsername(), user.getUsername()); + assertNotEquals(message.getPassword(), user.getPassword()); + } + + @Test + @Transactional + void getUserTest () { + User user = userManager.addUser(new SignupMessage("testuser", "1234", "test@test.com")); + + User userFind = userManager.getUser(user.getId()); + + assertEquals(user, userFind); + } + + @Test + @Transactional + void getUserByUsernameTest () { + User user = userManager.addUser(new SignupMessage("testuser", "1234", "test@test.com")); + + User userFind = userManager.getUserByUsername(user.getUsername()); + + assertEquals(user, userFind); + } + + @Test + void updateUserTest () { + assertTrue(true); + } + + @Test + @Transactional + void removeUserTest () { + User user = userManager.addUser(new SignupMessage("testuser", "1234", "test@test.com")); + Long id = user.getId(); + + userManager.removeUser(user, id); + + User userFind = userManager.getUser(id); + assertNull(userFind); + } + + @Test + @Transactional + void removeUserWrongTest () { + User user = userManager.addUser(new SignupMessage("testuser", "1234", "test@test.com")); + User user2 = userManager.addUser(new SignupMessage("testuser2", "1234", "test2@test.com")); + Long id = user.getId(); + + userManager.removeUser(user2, id); + + User userFind = userManager.getUser(id); + assertEquals(user, userFind); + } } \ No newline at end of file diff --git a/mozen/src/test/java/mozen/repos/UserRepositoryTest.java b/mozen/src/test/java/mozen/repos/UserRepositoryTest.java deleted file mode 100644 index b83aacc575345f52c55b424fc19661be989a7778..0000000000000000000000000000000000000000 --- a/mozen/src/test/java/mozen/repos/UserRepositoryTest.java +++ /dev/null @@ -1,11 +0,0 @@ -package mozen.repos; - -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -@ExtendWith(SpringExtension.class) -@SpringBootTest -public class UserRepositoryTest { - -} \ No newline at end of file