From 5c07a29f5c06c6bd47a72f673a7c359aca05fe82 Mon Sep 17 00:00:00 2001 From: Bogdan Kostov Date: Mon, 19 Aug 2024 13:24:00 +0200 Subject: [PATCH] Fix failing tests --- .../kbss/analysis/dao/FaultEventDaoTest.java | 3 ++- .../kbss/analysis/dao/FaultTreeDaoTest.java | 26 ++++++++++++------- .../cvut/kbss/analysis/dao/UserDaoTest.java | 3 ++- .../config/TestPersistenceConfig.java | 9 +++++-- .../ComponentRepositoryServiceTest.java | 9 ++++--- .../FaultEventRepositoryServiceTest.java | 26 ++++++++++++++++++- .../FaultTreeRepositoryServiceTest.java | 10 +++++++ .../service/SystemRepositoryServiceTest.java | 6 ++--- .../service/UserRepositoryServiceTest.java | 6 +++++ 9 files changed, 78 insertions(+), 20 deletions(-) diff --git a/src/test/java/cz/cvut/kbss/analysis/dao/FaultEventDaoTest.java b/src/test/java/cz/cvut/kbss/analysis/dao/FaultEventDaoTest.java index 4d4793f1..7cf3a658 100755 --- a/src/test/java/cz/cvut/kbss/analysis/dao/FaultEventDaoTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/dao/FaultEventDaoTest.java @@ -1,5 +1,6 @@ package cz.cvut.kbss.analysis.dao; +import cz.cvut.kbss.analysis.config.conf.SecurityConf; import cz.cvut.kbss.analysis.environment.Generator; import cz.cvut.kbss.analysis.model.FaultEvent; import cz.cvut.kbss.analysis.model.diagram.Rectangle; @@ -11,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; -@ContextConfiguration(classes = {FaultEventDao.class}) +@ContextConfiguration(classes = {FaultEventDao.class, UserDao.class, SecurityConf.class}) class FaultEventDaoTest extends BaseDaoTestRunner{ @Autowired diff --git a/src/test/java/cz/cvut/kbss/analysis/dao/FaultTreeDaoTest.java b/src/test/java/cz/cvut/kbss/analysis/dao/FaultTreeDaoTest.java index 83d3435c..78807483 100755 --- a/src/test/java/cz/cvut/kbss/analysis/dao/FaultTreeDaoTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/dao/FaultTreeDaoTest.java @@ -1,5 +1,6 @@ package cz.cvut.kbss.analysis.dao; +import cz.cvut.kbss.analysis.config.conf.SecurityConf; import cz.cvut.kbss.analysis.environment.Generator; import cz.cvut.kbss.analysis.model.FaultEvent; import cz.cvut.kbss.analysis.model.FaultTree; @@ -15,7 +16,7 @@ import java.util.Set; import java.util.stream.Collectors; -@ContextConfiguration(classes = {FaultTreeDao.class, FaultEventDao.class}) +@ContextConfiguration(classes = {FaultTreeDao.class, FaultEventDao.class, UserDao.class, SecurityConf.class}) class FaultTreeDaoTest extends BaseDaoTestRunner { @Autowired @@ -96,21 +97,28 @@ public void symmetricBranches_shouldQueryAll() { transactional(() -> faultTreeDao.update(tree)); // probabilities propagation update (simulation) // create subtree - FaultEvent X = createEvent("X"); - FaultEvent Y = createEvent("Y"); - FaultEvent Z = createEvent("Z"); - X.addChild(Y); - X.addChild(Z); - transactional(() -> faultEventDao.persist(X)); + FaultEvent BX = createEvent("X"); + FaultEvent BY = createEvent("Y"); + FaultEvent BZ = createEvent("Z"); + BX.addChild(BY); + BX.addChild(BZ); + + FaultEvent CX = createEvent("X"); + FaultEvent CY = createEvent("Y"); + FaultEvent CZ = createEvent("Z"); + CX.addChild(CY); + CX.addChild(CZ); + transactional(() -> faultEventDao.persist(BX)); + transactional(() -> faultEventDao.persist(CX)); transactional(() -> faultTreeDao.update(tree)); // probabilities propagation update (simulation) // add subtree below B - B.addChild(X); + B.addChild(BX); transactional(() -> faultEventDao.update(B)); transactional(() -> faultTreeDao.update(tree)); // probabilities propagation update (simulation) // add subtree below C - C.addChild(X); + C.addChild(CX); transactional(() -> faultEventDao.update(C)); transactional(() -> faultTreeDao.update(tree)); // probabilities propagation update (simulation) diff --git a/src/test/java/cz/cvut/kbss/analysis/dao/UserDaoTest.java b/src/test/java/cz/cvut/kbss/analysis/dao/UserDaoTest.java index 336519e8..60415588 100755 --- a/src/test/java/cz/cvut/kbss/analysis/dao/UserDaoTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/dao/UserDaoTest.java @@ -1,5 +1,6 @@ package cz.cvut.kbss.analysis.dao; +import cz.cvut.kbss.analysis.config.conf.SecurityConf; import cz.cvut.kbss.analysis.model.User; import cz.cvut.kbss.jopa.model.EntityManager; import org.junit.jupiter.api.Assertions; @@ -10,7 +11,7 @@ import java.util.Optional; import java.util.UUID; -@ContextConfiguration(classes = {UserDao.class}) +@ContextConfiguration(classes = {UserDao.class, SecurityConf.class}) class UserDaoTest extends BaseDaoTestRunner { @Autowired diff --git a/src/test/java/cz/cvut/kbss/analysis/environment/config/TestPersistenceConfig.java b/src/test/java/cz/cvut/kbss/analysis/environment/config/TestPersistenceConfig.java index e971c421..5d413aba 100755 --- a/src/test/java/cz/cvut/kbss/analysis/environment/config/TestPersistenceConfig.java +++ b/src/test/java/cz/cvut/kbss/analysis/environment/config/TestPersistenceConfig.java @@ -3,14 +3,19 @@ import com.github.ledsoft.jopa.spring.transaction.DelegatingEntityManager; import com.github.ledsoft.jopa.spring.transaction.JopaTransactionManager; import cz.cvut.kbss.analysis.environment.TestPersistenceFactory; +import cz.cvut.kbss.analysis.service.IdentifierService; +import cz.cvut.kbss.analysis.service.security.SecurityUtils; import cz.cvut.kbss.jopa.model.EntityManagerFactory; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration @ComponentScan(basePackages = "cz.cvut.kbss.analysis.persistence") -@Import({TestPersistenceFactory.class}) +@Import({TestPersistenceFactory.class, IdentifierService.class, SecurityUtils.class }) @EnableTransactionManagement public class TestPersistenceConfig { diff --git a/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java b/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java index 5fe1154c..9a6b0fc8 100755 --- a/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/service/ComponentRepositoryServiceTest.java @@ -10,7 +10,6 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mapdb.Fun; import org.mockito.*; import java.util.Optional; @@ -121,13 +120,17 @@ void linkComponents_shouldFindComponents_shouldSetParentComponent_shouldCallUpda Mockito.when(componentDao.find(eq(linkComponent.getUri()))).thenReturn(Optional.of(linkComponent)); Mockito.when(componentDao.exists(eq(component.getUri()))).thenReturn(true); + Mockito.when(componentDao.exists(eq(linkComponent.getUri()))).thenReturn(true); Mockito.when(componentValidator.supports(any())).thenReturn(true); Mockito.when(componentDao.update(eq(component))).thenReturn(component); + Mockito.when(componentDao.update(eq(linkComponent))).thenReturn(linkComponent); repositoryService.linkComponents(component.getUri(), linkComponent.getUri()); - Mockito.verify(componentDao).update(component); - Assertions.assertEquals(linkComponent.getUri(), component.getParentComponent()); + Assertions.assertEquals(linkComponent, component.getParentComponent()); + Assertions.assertTrue(linkComponent.getComponents() != null ); + Assertions.assertTrue(linkComponent.getComponents().size() == 1); + Assertions.assertTrue(linkComponent.getComponents().contains( component)); } @Test diff --git a/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java b/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java index 4267acc2..a607ba68 100755 --- a/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryServiceTest.java @@ -7,7 +7,10 @@ import cz.cvut.kbss.analysis.model.Component; import cz.cvut.kbss.analysis.model.FailureMode; import cz.cvut.kbss.analysis.model.FaultEvent; +import cz.cvut.kbss.analysis.model.UserReference; +import cz.cvut.kbss.analysis.service.security.SecurityUtils; import cz.cvut.kbss.analysis.service.validation.FaultEventValidator; +import cz.cvut.kbss.analysis.util.Vocabulary; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,6 +19,7 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import java.net.URI; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -34,6 +38,12 @@ public class FaultEventRepositoryServiceTest { @Mock FaultTreeDao faultTreeDao; + @Mock + SecurityUtils securityUtils; + + @Mock + FaultEventTypeService faultEventTypeService; + @InjectMocks FaultEventRepositoryService repositoryService; @@ -42,18 +52,29 @@ void setUp() { MockitoAnnotations.initMocks(this); } + protected void setUserReference(){ + UserReference user = new UserReference(); + user.setUri(URI.create(Vocabulary.s_c_Person + "/test-user")); + Mockito.when(securityUtils.getCurrentUserReference()).thenReturn(user); + } + @Test void update_shouldCallPreUpdate() { + + FaultEvent event = new FaultEvent(); event.setUri(Generator.generateUri()); + Mockito.when(faultEventDao.find(event.getUri())).thenReturn(Optional.of(event)); Mockito.when(faultEventDao.exists(event.getUri())).thenReturn(true); Mockito.when(faultEventValidator.supports(any())).thenReturn(true); Mockito.when(faultEventDao.update(eq(event))).thenReturn(event); + setUserReference(); repositoryService.update(event); Mockito.verify(faultEventValidator).validate(eq(event), any()); +// Mockito.verify(repositoryService).preUpdate(event); } @Test @@ -71,6 +92,7 @@ void remove_isNotRootEvent_shouldJustRun() { FaultEvent event = new FaultEvent(); event.setUri(Generator.generateUri()); + setUserReference(); Mockito.when(faultTreeDao.isRootEvent(eq(event.getUri()))).thenReturn(false); repositoryService.remove(event); @@ -86,7 +108,7 @@ void addInputEvent_shouldDo2PhaseUpdate() { FaultEvent parentEvent = new FaultEvent(); parentEvent.setUri(Generator.generateUri()); - + setUserReference(); Mockito.when(faultEventDao.find(eq(parentEvent.getUri()))).thenReturn(Optional.of(parentEvent)); Mockito.when(faultEventDao.exists(parentEvent.getUri())).thenReturn(true); Mockito.when(faultEventValidator.supports(any())).thenReturn(true); @@ -132,6 +154,7 @@ void addFailureMode_shouldSetData_shouldUpdateEvent() { component.setUri(Generator.generateUri()); failureMode.setItem(component); + setUserReference(); Mockito.when(faultEventDao.find(eq(event.getUri()))).thenReturn(Optional.of(event)); Mockito.when(componentRepositoryService.findRequired(eq(failureMode.getItem().getUri()))).thenReturn(component); Mockito.when(faultEventDao.exists(event.getUri())).thenReturn(true); @@ -156,6 +179,7 @@ void deleteFailureMode_shouldRemoveFromEventFromFailureModeEffects() { failureMode.setUri(Generator.generateUri()); event.setBehavior(failureMode); + setUserReference(); Mockito.when(faultEventDao.find(eq(event.getUri()))).thenReturn(Optional.of(event)); Mockito.when(faultEventDao.exists(event.getUri())).thenReturn(true); Mockito.when(faultEventValidator.supports(any())).thenReturn(true); diff --git a/src/test/java/cz/cvut/kbss/analysis/service/FaultTreeRepositoryServiceTest.java b/src/test/java/cz/cvut/kbss/analysis/service/FaultTreeRepositoryServiceTest.java index 88ec1d54..56ae30eb 100755 --- a/src/test/java/cz/cvut/kbss/analysis/service/FaultTreeRepositoryServiceTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/service/FaultTreeRepositoryServiceTest.java @@ -3,7 +3,9 @@ import cz.cvut.kbss.analysis.dao.FaultTreeDao; import cz.cvut.kbss.analysis.environment.Generator; import cz.cvut.kbss.analysis.model.FaultEvent; +import cz.cvut.kbss.analysis.model.FaultEventType; import cz.cvut.kbss.analysis.model.FaultTree; +import cz.cvut.kbss.analysis.service.security.SecurityUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -14,6 +16,7 @@ import org.springframework.validation.Validator; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Optional; @@ -32,6 +35,9 @@ class FaultTreeRepositoryServiceTest { @InjectMocks FaultTreeRepositoryService repositoryService; + @Mock + SecurityUtils securityUtils; + @BeforeEach void setUp() { MockitoAnnotations.initMocks(this); @@ -42,6 +48,10 @@ void findWithPropagation_shouldFindTree_shouldUpdateProbabilities() { FaultTree tree = new FaultTree(); tree.setUri(Generator.generateUri()); tree.setManifestingEvent(new FaultEvent()); + FaultEventType fet = new FaultEventType(); + fet.setAuxiliary(true); + tree.getManifestingEvent().setSupertypes(new HashSet<>()); + tree.getManifestingEvent().getSupertypes().add(fet); Mockito.when(faultTreeDao.find(tree.getUri())).thenReturn(Optional.of(tree)); Mockito.when(faultTreeDao.exists(tree.getUri())).thenReturn(true); diff --git a/src/test/java/cz/cvut/kbss/analysis/service/SystemRepositoryServiceTest.java b/src/test/java/cz/cvut/kbss/analysis/service/SystemRepositoryServiceTest.java index 63eba711..75d55476 100755 --- a/src/test/java/cz/cvut/kbss/analysis/service/SystemRepositoryServiceTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/service/SystemRepositoryServiceTest.java @@ -1,11 +1,10 @@ package cz.cvut.kbss.analysis.service; import cz.cvut.kbss.analysis.dao.SystemDao; -import cz.cvut.kbss.analysis.dto.update.FailureModesTableUpdateDTO; import cz.cvut.kbss.analysis.environment.Generator; import cz.cvut.kbss.analysis.model.Component; -import cz.cvut.kbss.analysis.model.FailureModesTable; import cz.cvut.kbss.analysis.model.System; +import cz.cvut.kbss.analysis.service.security.SecurityUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -17,7 +16,6 @@ import java.util.Optional; -import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; @@ -28,6 +26,8 @@ class SystemRepositoryServiceTest { @Mock ComponentRepositoryService componentRepositoryService; @Mock + SecurityUtils securityUtils; + @Mock Validator validator; @InjectMocks SystemRepositoryService repositoryService; diff --git a/src/test/java/cz/cvut/kbss/analysis/service/UserRepositoryServiceTest.java b/src/test/java/cz/cvut/kbss/analysis/service/UserRepositoryServiceTest.java index 15fb44c0..72a488bc 100755 --- a/src/test/java/cz/cvut/kbss/analysis/service/UserRepositoryServiceTest.java +++ b/src/test/java/cz/cvut/kbss/analysis/service/UserRepositoryServiceTest.java @@ -7,6 +7,7 @@ import cz.cvut.kbss.analysis.exception.LogicViolationException; import cz.cvut.kbss.analysis.exception.UsernameNotAvailableException; import cz.cvut.kbss.analysis.model.User; +import cz.cvut.kbss.analysis.service.security.SecurityUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -29,6 +30,8 @@ class UserRepositoryServiceTest { Validator validator; @InjectMocks UserRepositoryService repositoryService; + @Mock + SecurityUtils securityUtils; @BeforeEach void setUp() { @@ -70,8 +73,10 @@ void updateCurrent_passwordsDoNotMatch_shouldThrowException() { UserUpdateDTO updateDTO = new UserUpdateDTO(); updateDTO.setUri(user.getUri()); + Mockito.when(securityUtils.getCurrentUser()).thenReturn(user); Mockito.when(passwordEncoder.matches(updateDTO.getPassword(), user.getPassword())).thenReturn(false); + assertThrows(LogicViolationException.class, () -> repositoryService.updateCurrent(updateDTO)); } @@ -85,6 +90,7 @@ void updateCurrent_passwordsOk_shouldEncodePassword_shouldCallUpdate() { updateDTO.setNewPassword("oldPassword"); updateDTO.setUri(user.getUri()); + Mockito.when(securityUtils.getCurrentUser()).thenReturn(user); Mockito.when(passwordEncoder.matches(updateDTO.getPassword(), user.getPassword())).thenReturn(true); Mockito.when(userDao.exists(user.getUri())).thenReturn(true); Mockito.when(validator.supports(any())).thenReturn(true);