aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperationTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperationTest.java')
-rw-r--r--catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperationTest.java553
1 files changed, 365 insertions, 188 deletions
diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperationTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperationTest.java
index 57689edb3d..5226a468d7 100644
--- a/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperationTest.java
+++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperationTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,33 +20,21 @@
package org.openecomp.sdc.be.model.operations.impl;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
+import com.thinkaurelius.titan.core.*;
+import com.thinkaurelius.titan.graphdb.relations.StandardVertexProperty;
+import com.thinkaurelius.titan.graphdb.types.system.EmptyVertex;
+import com.thinkaurelius.titan.graphdb.types.system.ImplicitKey;
+import fj.data.Either;
+import org.apache.tinkerpop.gremlin.structure.*;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
import org.openecomp.sdc.be.dao.utils.UserStatusEnum;
@@ -57,173 +45,362 @@ import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.resources.data.UserData;
import org.openecomp.sdc.common.api.UserRoleEnum;
-import fj.data.Either;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.*;
public class UserAdminOperationTest extends ModelTestBase {
- private static final TitanGenericDao titanGenericDao = mock(TitanGenericDao.class);
- @InjectMocks
- private static final UserAdminOperation userAdminOperation = new UserAdminOperation(titanGenericDao);
- private static final String ADMIN = "admin";
-
- @BeforeClass
- public static void setup() {
- ModelTestBase.init();
- }
-
- @Before
- public void initMocks() {
- MockitoAnnotations.initMocks(this);
- Mockito.reset(titanGenericDao);
- mockTitanUpdate();
- mockTitanDelete();
-
- }
-
- @Test
- public void testDeActivateUserDataSuccess() {
- UserData userData = mockTitanGet(ADMIN, UserRoleEnum.ADMIN, true);
-
- Either<User, StorageOperationStatus> eitherUser = userAdminOperation.deActivateUser(userAdminOperation.convertToUser(userData));
-
- verify(titanGenericDao, times(1)).updateNode(Mockito.eq(userData), Mockito.eq(UserData.class));
- verify(titanGenericDao, times(0)).deleteNode(Mockito.any(UserData.class), Mockito.eq(UserData.class));
- assertTrue(eitherUser.isLeft());
- User user = eitherUser.left().value();
- assertTrue(user.getStatus() == UserStatusEnum.INACTIVE);
- }
-
- @Test
- public void testDeleteUserWithoutResources() {
- UserData userData = mockTitanGet(ADMIN, UserRoleEnum.ADMIN, true);
-
- List<Edge> edgesList = new ArrayList<Edge>();
-
- Either<List<Edge>, TitanOperationStatus> eitherResult = Either.left(edgesList);
- when(titanGenericDao.getEdgesForNode(userData, Direction.BOTH)).thenReturn(eitherResult);
-
- Either<User, ActionStatus> eitherUser = userAdminOperation.deleteUserData(ADMIN);
- verify(titanGenericDao, times(0)).updateNode(Mockito.any(UserData.class), Mockito.eq(UserData.class));
- verify(titanGenericDao, times(1)).deleteNode(userData, UserData.class);
- assertTrue(eitherUser.isLeft());
-
- }
-
- @Test
- public void testDeleteUserWithResources() {
- UserData userData = mockTitanGet(ADMIN, UserRoleEnum.ADMIN, true);
-
- List<Edge> edgesList = new ArrayList<Edge>();
- edgesList.add(getEmptyEdgeImpl());
-
- Either<List<Edge>, TitanOperationStatus> eitherResult = Either.left(edgesList);
- when(titanGenericDao.getEdgesForNode(userData, Direction.BOTH)).thenReturn(eitherResult);
-
- Either<User, ActionStatus> eitherUser = userAdminOperation.deleteUserData(ADMIN);
- verify(titanGenericDao, times(0)).updateNode(Mockito.any(UserData.class), Mockito.eq(UserData.class));
- verify(titanGenericDao, times(0)).deleteNode(Mockito.any(UserData.class), Mockito.eq(UserData.class));
- assertTrue(eitherUser.isRight());
- assertTrue(eitherUser.right().value() == ActionStatus.USER_HAS_ACTIVE_ELEMENTS);
-
- }
-
- private Edge getEmptyEdgeImpl() {
- return new Edge() {
-
- @Override
- public Object id() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String label() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Graph graph() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public <V> Property<V> property(String key, V value) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void remove() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Iterator<Vertex> vertices(Direction direction) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public <V> Iterator<Property<V>> properties(String... propertyKeys) {
- // TODO Auto-generated method stub
- return null;
- }
-
- };
- }
-
- private UserData mockTitanGet(String userId, UserRoleEnum role, boolean isActive) {
- UserData userData = buildUserData(userId, role, isActive);
- Either<UserData, TitanOperationStatus> eitherUserData = Either.left(userData);
- when(titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), userId, UserData.class)).thenReturn(eitherUserData);
- return userData;
- }
-
- private static void mockTitanUpdate() {
- doAnswer(new Answer<Either<UserData, TitanOperationStatus>>() {
- public Either<UserData, TitanOperationStatus> answer(InvocationOnMock invocation) {
- Object[] args = invocation.getArguments();
- UserData retValue = (UserData) args[0];
- Either<UserData, TitanOperationStatus> result = Either.left(retValue);
- return result;
- }
-
- }).when(titanGenericDao).updateNode(Mockito.any(UserData.class), Mockito.eq(UserData.class));
- }
-
- private static void mockTitanDelete() {
- doAnswer(new Answer<Either<UserData, TitanOperationStatus>>() {
- public Either<UserData, TitanOperationStatus> answer(InvocationOnMock invocation) {
- Object[] args = invocation.getArguments();
- UserData retValue = (UserData) args[0];
- Either<UserData, TitanOperationStatus> result = Either.left(retValue);
- return result;
- }
-
- }).when(titanGenericDao).deleteNode(Mockito.any(UserData.class), Mockito.eq(UserData.class));
- }
-
- private void assertUserEquals(UserData expected, User actual) {
- assertEquals(expected.getEmail(), actual.getEmail());
- assertEquals(expected.getFirstName(), actual.getFirstName());
- assertEquals(expected.getLastName(), actual.getLastName());
- assertEquals(expected.getRole(), actual.getRole());
- assertEquals(expected.getStatus(), actual.getStatus().name());
- assertEquals(expected.getUserId(), actual.getUserId());
-
- }
-
- private static UserData buildUserData(String userId, UserRoleEnum role, boolean isActive) {
- UserData userData = new UserData();
- userData.setUserId(userId);
- userData.setRole(role.getName());
- userData.setEmail("someEmail@somePlace.com");
- userData.setFirstName("israel");
- userData.setLastName("israeli");
- userData.setLastLoginTime(Instant.MIN.getEpochSecond());
- userData.setStatus(isActive ? UserStatusEnum.ACTIVE.name() : UserStatusEnum.INACTIVE.name());
- return userData;
- }
+ private static final TitanGenericDao titanGenericDao = mock(TitanGenericDao.class);
+ @InjectMocks
+ private static final UserAdminOperation userAdminOperation = new UserAdminOperation(titanGenericDao);
+ private static final String ADMIN = "admin";
+
+ @BeforeClass
+ public static void setup() {
+ ModelTestBase.init();
+ }
+
+ @Before
+ public void initMocks() {
+ MockitoAnnotations.initMocks(this);
+ Mockito.reset(titanGenericDao);
+ mockTitanUpdate();
+ mockTitanDelete();
+
+ }
+
+ @Test
+ public void testDeActivateUserDataSuccess() {
+ UserData userData = mockTitanGet(ADMIN, UserRoleEnum.ADMIN, true);
+
+ Either<User, StorageOperationStatus> eitherUser = userAdminOperation.deActivateUser(userAdminOperation.convertToUser(userData));
+
+ verify(titanGenericDao, times(1)).updateNode(eq(userData), eq(UserData.class));
+ verify(titanGenericDao, times(0)).deleteNode(any(UserData.class), eq(UserData.class));
+ assertTrue(eitherUser.isLeft());
+ User user = eitherUser.left().value();
+ assertSame(user.getStatus(), UserStatusEnum.INACTIVE);
+ }
+
+ @Test
+ public void testDeleteUserWithoutResources() {
+ UserData userData = mockTitanGet(ADMIN, UserRoleEnum.ADMIN, true);
+
+ List<Edge> edgesList = new ArrayList<>();
+
+ Either<List<Edge>, TitanOperationStatus> eitherResult = Either.left(edgesList);
+ when(titanGenericDao.getEdgesForNode(userData, Direction.BOTH)).thenReturn(eitherResult);
+
+ Either<User, ActionStatus> eitherUser = userAdminOperation.deleteUserData(ADMIN);
+ verify(titanGenericDao, times(0)).updateNode(any(UserData.class), eq(UserData.class));
+ verify(titanGenericDao, times(1)).deleteNode(userData, UserData.class);
+ assertTrue(eitherUser.isLeft());
+
+ }
+
+ @Test
+ public void testDeleteUserWithResources() {
+ UserData userData = mockTitanGet(ADMIN, UserRoleEnum.ADMIN, true);
+
+ List<Edge> edgesList = new ArrayList<>();
+ edgesList.add(getEmptyEdgeImpl());
+
+ Either<List<Edge>, TitanOperationStatus> eitherResult = Either.left(edgesList);
+ when(titanGenericDao.getEdgesForNode(userData, Direction.BOTH)).thenReturn(eitherResult);
+
+ Either<User, ActionStatus> eitherUser = userAdminOperation.deleteUserData(ADMIN);
+ verify(titanGenericDao, times(0)).updateNode(any(UserData.class), eq(UserData.class));
+ verify(titanGenericDao, times(0)).deleteNode(any(UserData.class), eq(UserData.class));
+ assertTrue(eitherUser.isRight());
+ assertSame(eitherUser.right().value(), ActionStatus.USER_HAS_ACTIVE_ELEMENTS);
+
+ }
+
+ @Test
+ public void getUserPendingTasks_shouldReturnNonDeleted() {
+ String userId = "abc123";
+ String userKey = UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User);
+ User user = new User();
+ user.setUserId(userId);
+ TitanVertex userVertex = null;
+ TestVertex component1 = new TestVertex(null);
+ TestVertex component2 = new TestVertex(true);
+ TestVertex component3 = new TestVertex(false);
+ List<Edge> edges = new ArrayList<>();
+ Edge edge1 = new TestEdge(component1, "1");
+ Edge edge2 = new TestEdge(component2, "2");
+ Edge edge3 = new TestEdge(component3, "3");
+ edges.add(edge1);
+ edges.add(edge2);
+ edges.add(edge3);
+ when(titanGenericDao.getVertexByProperty(userKey, userId)).thenReturn(Either.left(userVertex));
+ when(titanGenericDao.getOutgoingEdgesByCriteria(any(), any(), any())).thenReturn(Either.left(edges));
+ Either<List<Edge>, StorageOperationStatus> result = userAdminOperation.getUserPendingTasksList(user, new HashMap<>());
+ assertThat(result.isLeft()).isTrue();
+ List<Edge> pendingTasks = result.left().value();
+ assertThat(pendingTasks.size()).isEqualTo(2);
+ assertThat(((TestEdge)pendingTasks.get(0)).getName()).isNotEqualTo("2");
+ assertThat(((TestEdge)pendingTasks.get(1)).getName()).isNotEqualTo("2");
+ }
+
+ private class TestVertex implements TitanVertex {
+
+ private final Boolean isDeleted;
+
+ private TestVertex(Boolean isDeleted) {
+ this.isDeleted = isDeleted;
+ }
+
+ @Override
+ public TitanEdge addEdge(String s, Vertex vertex, Object... objects) {
+ return null;
+ }
+
+ @Override
+ public <V> TitanVertexProperty<V> property(String s, V v, Object... objects) {
+ return null;
+ }
+
+ @Override
+ public <V> VertexProperty<V> property(String key) {
+ if (key.equals(GraphPropertiesDictionary.IS_DELETED.getProperty())) {
+ if (isDeleted==null)
+ return VertexProperty.empty();
+ return new StandardVertexProperty(1, ImplicitKey.ID, new EmptyVertex(), isDeleted, (byte)1);
+ }
+ return VertexProperty.empty();
+ }
+
+ @Override
+ public <V> TitanVertexProperty<V> property(VertexProperty.Cardinality cardinality, String s, V v, Object... objects) {
+ return null;
+ }
+
+ @Override
+ public Iterator<Edge> edges(Direction direction, String... strings) {
+ return null;
+ }
+
+ @Override
+ public Iterator<Vertex> vertices(Direction direction, String... strings) {
+ return null;
+ }
+
+ @Override
+ public Object id() {
+ return null;
+ }
+
+ @Override
+ public long longId() {
+ return 0;
+ }
+
+ @Override
+ public boolean hasId() {
+ return false;
+ }
+
+ @Override
+ public String label() {
+ return null;
+ }
+
+ @Override
+ public VertexLabel vertexLabel() {
+ return null;
+ }
+
+ @Override
+ public TitanVertexQuery<? extends TitanVertexQuery> query() {
+ return null;
+ }
+
+ @Override
+ public boolean isModified() {
+ return false;
+ }
+
+ @Override
+ public TitanTransaction graph() {
+ return null;
+ }
+
+ @Override
+ public void remove() {
+
+ }
+
+ @Override
+ public <V> V valueOrNull(PropertyKey propertyKey) {
+ return null;
+ }
+
+ @Override
+ public boolean isNew() {
+ return false;
+ }
+
+ @Override
+ public boolean isLoaded() {
+ return false;
+ }
+
+ @Override
+ public boolean isRemoved() {
+ return false;
+ }
+
+ @Override
+ public <V> Iterator<VertexProperty<V>> properties(String... strings) {
+ return null;
+ }
+ }
+
+ private class TestEdge implements Edge {
+
+ private final Vertex inVertx;
+ private final String name;
+
+ TestEdge(Vertex inVertx, String name) {
+ this.inVertx = inVertx;
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public Iterator<Vertex> vertices(Direction direction) {
+ return null;
+ }
+
+ @Override
+ public Vertex inVertex() {
+ return inVertx;
+ }
+
+ @Override
+ public Object id() {
+ return null;
+ }
+
+ @Override
+ public String label() {
+ return null;
+ }
+
+ @Override
+ public Graph graph() {
+ return null;
+ }
+
+ @Override
+ public <V> Property<V> property(String s, V v) {
+ return null;
+ }
+
+ @Override
+ public void remove() {
+
+ }
+
+ @Override
+ public <V> Iterator<Property<V>> properties(String... strings) {
+ return null;
+ }
+ }
+
+ private Edge getEmptyEdgeImpl() {
+ return new Edge() {
+
+ @Override
+ public Object id() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String label() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Graph graph() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public <V> Property<V> property(String key, V value) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void remove() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Iterator<Vertex> vertices(Direction direction) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public <V> Iterator<Property<V>> properties(String... propertyKeys) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ };
+ }
+
+ private UserData mockTitanGet(String userId, UserRoleEnum role, boolean isActive) {
+ UserData userData = buildUserData(userId, role, isActive);
+ Either<UserData, TitanOperationStatus> eitherUserData = Either.left(userData);
+ when(titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), userId, UserData.class)).thenReturn(eitherUserData);
+ return userData;
+ }
+
+ private static void mockTitanUpdate() {
+ doAnswer((Answer<Either<UserData, TitanOperationStatus>>) invocation -> {
+ Object[] args = invocation.getArguments();
+ UserData retValue = (UserData) args[0];
+ return Either.left(retValue);
+ }).when(titanGenericDao).updateNode(any(UserData.class), eq(UserData.class));
+ }
+
+ private static void mockTitanDelete() {
+ doAnswer((Answer<Either<UserData, TitanOperationStatus>>) invocation -> {
+ Object[] args = invocation.getArguments();
+ UserData retValue = (UserData) args[0];
+ return Either.left(retValue);
+ }).when(titanGenericDao).deleteNode(any(UserData.class), eq(UserData.class));
+ }
+
+ private static UserData buildUserData(String userId, UserRoleEnum role, boolean isActive) {
+ UserData userData = new UserData();
+ userData.setUserId(userId);
+ userData.setRole(role.getName());
+ userData.setEmail("someEmail@somePlace.com");
+ userData.setFirstName("israel");
+ userData.setLastName("israeli");
+ userData.setLastLoginTime(Instant.MIN.getEpochSecond());
+ userData.setStatus(isActive ? UserStatusEnum.ACTIVE.name() : UserStatusEnum.INACTIVE.name());
+ return userData;
+ }
}