Added oparent to sdc main
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / ConsumerBusinessLogicTest.java
index 259d47b..95aa805 100644 (file)
-package org.openecomp.sdc.be.components.impl;
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 
-import javax.annotation.Generated;
+package org.openecomp.sdc.be.components.impl;
 
-import org.junit.Assert;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
 import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.datatypes.elements.ConsumerDataDefinition;
+import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.model.ConsumerDefinition;
 import org.openecomp.sdc.be.model.User;
-import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
+import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
+import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
+import org.openecomp.sdc.be.model.operations.impl.ConsumerOperation;
+import org.openecomp.sdc.be.resources.data.ConsumerData;
+import org.openecomp.sdc.be.user.IUserBusinessLogic;
 import org.openecomp.sdc.exception.ResponseFormat;
-
 import fj.data.Either;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
 
 
 public class ConsumerBusinessLogicTest {
 
-       private ConsumerBusinessLogic createTestSubject() {
-               return new ConsumerBusinessLogic();
+       private User user;
+       private ConsumerDefinition consumer;
+       private ConsumerDataDefinition consumerDataDefinition;
+
+       @InjectMocks
+       private ConsumerBusinessLogic consumerBusinessLogic;
+
+       @Mock
+       private ComponentsUtils componentsUtils;
+
+       @Mock
+       private IUserBusinessLogic iUserBusinessLogic;
+
+       @Mock
+       private IGraphLockOperation iGraphLockOperation;
+
+       @Mock
+       private ConsumerOperation consumerOperation;
+
+       @Mock
+       private ConsumerData consumerData;
+
+       @Before
+       public void setUp(){
+               consumerBusinessLogic = new ConsumerBusinessLogic();
+               consumerDataDefinition = new ConsumerDataDefinition();
+               consumer = new ConsumerDefinition();
+               MockitoAnnotations.initMocks(this);
+               user = new User("Stan", "Lee", "stan.lee",
+                               "stan.lee@marvel.com", "ADMIN", 1542024000L);
+       }
+
+       @Test
+       public void testCreateConsumer_givenMissingUser_thenReturnsError() {
+               User user = new User();
+               ConsumerDefinition consumerDefinition = new ConsumerDefinition();
+               Mockito.when(componentsUtils.getResponseFormat(ActionStatus.MISSING_INFORMATION))
+                               .thenReturn(new ResponseFormat());
+               assertTrue(consumerBusinessLogic.createConsumer(user, consumerDefinition).isRight());
        }
 
-       
        @Test
-       public void testCreateConsumer() throws Exception {
-               ConsumerBusinessLogic testSubject;
-               User user = null;
-               ConsumerDefinition consumer = null;
-               Either<ConsumerDefinition, ResponseFormat> result;
+       public void testCreateConsumer_givenNonListedUser_thenReturnsError() {
+               ConsumerDefinition consumerDefinition = new ConsumerDefinition();
+               Mockito.when(componentsUtils.getResponseFormat(ActionStatus.RESTRICTED_ACCESS))
+                               .thenReturn(new ResponseFormat());
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.right(ActionStatus.RESTRICTED_OPERATION));
+               assertTrue(consumerBusinessLogic.createConsumer(user, consumerDefinition).isRight());
+       }
 
-               // default test
-               testSubject = createTestSubject();
+       @Test
+       public void testCreateConsumer_givenNonAdminUser_thenReturnsError() {
+               user.setRole("DESIGNER");
+               Mockito.when(componentsUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION))
+                               .thenReturn(new ResponseFormat());
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.left(user));
+               assertTrue(consumerBusinessLogic.createConsumer(user, consumer).isRight());
        }
 
-       
+       @Test
+       public void testCreateConsumer_givenInvalidConsumerNames_thenReturnsError() {
+               Map<String, ActionStatus> invalidConsumerNames = new HashMap<>();
+               invalidConsumerNames.put(null, ActionStatus.MISSING_DATA);
+               invalidConsumerNames.put(".#()", ActionStatus.INVALID_CONTENT);
+               invalidConsumerNames.put(RandomStringUtils.random(256, true, false), ActionStatus.EXCEEDS_LIMIT);
+               for(Map.Entry<String, ActionStatus> e: invalidConsumerNames.entrySet()){
+                       consumer.setConsumerName(e.getKey());
+                       Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                                       .thenReturn(Either.left(user));
+                       Mockito.when(componentsUtils.getResponseFormat(e.getValue(), "Consumer name"))
+                                       .thenReturn(new ResponseFormat());
+                       assertTrue(consumerBusinessLogic.createConsumer(user, consumer).isRight());
+               }
+       }
 
+       @Test
+       public void testCreateConsumer_givenInvalidConsumerPasswords_thenReturnsError() {
+               Map<String, ActionStatus> invalidPasswordResults = new HashMap<>();
+               invalidPasswordResults.put(null, ActionStatus.MISSING_DATA);
+               invalidPasswordResults.put(RandomStringUtils.random(64, '*' ), ActionStatus.INVALID_CONTENT_PARAM);
+               invalidPasswordResults.put("password", ActionStatus.INVALID_LENGTH);
+               for(Map.Entry<String, ActionStatus> e: invalidPasswordResults.entrySet()){
+                       consumer.setConsumerName("_marvel");
+                       consumer.setConsumerPassword(e.getKey());
+                       Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                                       .thenReturn(Either.left(user));
+                       Mockito.when(componentsUtils.getResponseFormat(e.getValue(), "Consumer password"))
+                                       .thenReturn(new ResponseFormat());
+                       assertTrue(consumerBusinessLogic.createConsumer(user, consumer).isRight());
+               }
+       }
 
-       
        @Test
-       public void testGetConsumer() throws Exception {
-               ConsumerBusinessLogic testSubject;
-               String consumerId = "";
-               User user = null;
-               Either<ConsumerDefinition, ResponseFormat> result;
+       public void testCreateConsumer_givenInvalidConsumerSalts_thenReturnsError() {
+               consumer.setConsumerPassword(RandomStringUtils.random(64, true,true));
+               Map<String, ActionStatus> invalidPasswordSalts = new HashMap<>();
+               invalidPasswordSalts.put(null, ActionStatus.MISSING_DATA);
+               invalidPasswordSalts.put(RandomStringUtils.random(32, "*" ), ActionStatus.INVALID_CONTENT_PARAM);
+               invalidPasswordSalts.put("password", ActionStatus.INVALID_LENGTH);
+               for(Map.Entry<String, ActionStatus> e: invalidPasswordSalts.entrySet()){
+                       consumer.setConsumerName("_marvel");
+                       consumer.setConsumerSalt(e.getKey());
+                       Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                                       .thenReturn(Either.left(user));
+                       Mockito.when(componentsUtils.getResponseFormat(e.getValue(), "Consumer salt"))
+                                       .thenReturn(new ResponseFormat());
+                       assertTrue(consumerBusinessLogic.createConsumer(user, consumer).isRight());
+               }
+       }
 
-               // test 1
-               testSubject = createTestSubject();
-               user = null;
+       @Test
+       public void testCreateConsumer_givenConsumerNotLocked_thenReturnsError() {
+               consumer.setConsumerName("_marvel");
+               consumer.setConsumerPassword(RandomStringUtils.random(64, true,true));
+               consumer.setConsumerSalt(RandomStringUtils.random(32, 'a'));
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.left(user));
+               Mockito.when(iGraphLockOperation.lockComponent(anyString(), any(NodeTypeEnum.class)))
+                               .thenReturn(StorageOperationStatus.GENERAL_ERROR);
+               assertTrue(consumerBusinessLogic.createConsumer(user, consumer).isRight());
        }
 
-       
        @Test
-       public void testGetConsumer_1() throws Exception {
-               ConsumerBusinessLogic testSubject;
-               String consumerId = "";
-               Either<ConsumerDefinition, ResponseFormat> result;
+       public void testCreateConsumer_givenUnableToCreateCredentials_thenReturnsError() {
+               ConsumerDataDefinition consumerDataDefinition = new ConsumerDataDefinition();
+               consumerDataDefinition.setConsumerName("_marvel");
+               consumerDataDefinition.setConsumerPassword(RandomStringUtils.random(64, true,true));
+               consumerDataDefinition.setConsumerSalt(RandomStringUtils.random(32, 'a'));
+               ConsumerDefinition consumer = new ConsumerDefinition(consumerDataDefinition);
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.left(user));
+               Mockito.when(iGraphLockOperation.lockComponent(anyString(), any(NodeTypeEnum.class)))
+                               .thenReturn(StorageOperationStatus.OK);
+               Mockito.when(consumerOperation.getCredentials(anyString()))
+                               .thenReturn(Either.right(StorageOperationStatus.OK));
+               Mockito.when(consumerOperation.createCredentials(any(ConsumerData.class)))
+                               .thenReturn(Either.right(StorageOperationStatus.USER_NOT_FOUND));
+               assertTrue(consumerBusinessLogic.createConsumer(user, consumer).isRight());
+       }
 
-               // default test
-               testSubject = createTestSubject();
+       @Test
+       public void testCreateConsumer_givenValidUserAndConsumer_thenReturnsConsumer() {
+               ConsumerDataDefinition consumerDataDefinition = new ConsumerDataDefinition();
+               consumerDataDefinition.setConsumerName("_marvel");
+               consumerDataDefinition.setConsumerPassword(RandomStringUtils.random(64, true,true));
+               consumerDataDefinition.setConsumerSalt(RandomStringUtils.random(32, 'a'));
+               ConsumerDefinition consumer = new ConsumerDefinition(consumerDataDefinition);
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.left(user));
+               Mockito.when(iGraphLockOperation.lockComponent(anyString(), any(NodeTypeEnum.class)))
+                               .thenReturn(StorageOperationStatus.OK);
+               Mockito.when(consumerOperation.getCredentials(anyString()))
+                               .thenReturn(Either.right(StorageOperationStatus.OK));
+               Mockito.when(consumerOperation.createCredentials(any(ConsumerData.class)))
+                               .thenReturn(Either.left(new ConsumerData(consumerDataDefinition)));
+               assertTrue(consumerBusinessLogic.createConsumer(user, consumer).isLeft());
        }
 
-       
        @Test
-       public void testDeleteConsumer() throws Exception {
-               ConsumerBusinessLogic testSubject;
-               String consumerId = "";
-               User user = null;
-               Either<ConsumerDefinition, ResponseFormat> result;
+       public void testGetConsumer_givenNullUser_thenReturnsError() {
+               Mockito.when(consumerOperation.getCredentials("marvel123"))
+                               .thenReturn(Either.right(StorageOperationStatus.USER_NOT_FOUND));
+               assertTrue(consumerBusinessLogic.getConsumer("marvel123", null).isRight());
+       }
 
-               // default test
-               testSubject = createTestSubject();
+       @Test
+       public void testGetConsumer_givenValidUserAndConsumerId_thenReturnsConsumer() {
+               Mockito.when(consumerOperation.getCredentials("marvel123"))
+                               .thenReturn(Either.left(new ConsumerData()));
+               Mockito.when(consumerData.getConsumerDataDefinition())
+                               .thenReturn(consumerDataDefinition);
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.left(user));
+               assertTrue(consumerBusinessLogic.getConsumer("marvel123", user).isLeft());
        }
 
-       
        @Test
-       public void testUpdateConsumer() throws Exception {
-               ConsumerBusinessLogic testSubject;
-               ConsumerDefinition consumer = null;
-               User modifier = null;
-               boolean isCreateRequest = false;
-               Either<ConsumerDefinition, ResponseFormat> result;
+       public void testUpdateConsumer_givenValidConsumer_thenReturnsUpdatedConsumer() {
+               ConsumerDefinition updatedConsumer = new ConsumerDefinition(consumerDataDefinition);
+               updatedConsumer.setConsumerName("marvel2");
+               ConsumerDataDefinition updatedConsumerDataDef = new ConsumerDataDefinition();
+               updatedConsumerDataDef.setConsumerName("marvel2");
+               ConsumerData consumerData = new ConsumerData(updatedConsumerDataDef);
+               Mockito.when(consumerOperation.updateCredentials(any(ConsumerData.class)))
+                               .thenReturn(Either.left(consumerData));
+               assertEquals(updatedConsumer.getConsumerName(), consumerBusinessLogic.updateConsumer(consumer).left().value().getConsumerName());
+       }
 
-               // default test
-               testSubject = createTestSubject();
+       @Test
+       public void testUpdateConsumer_givenUpdateFailure_thenReturnsError() {
+               Mockito.when(consumerOperation.updateCredentials(any(ConsumerData.class)))
+                               .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
+               assertTrue(consumerBusinessLogic.updateConsumer(consumer).isRight());
        }
 
-       
+       @Test
+       public void testDeleteConsumer_givenValidUserAndConsumerId_thenReturnsSuccessful() {
+               ConsumerData consumerData = new ConsumerData(new ConsumerDataDefinition());
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.left(user));
+               Mockito.when(consumerOperation.deleteCredentials("marvel123"))
+                               .thenReturn(Either.left(consumerData));
+               assertTrue(consumerBusinessLogic.deleteConsumer("marvel123", user).isLeft());
+       }
 
-}
\ No newline at end of file
+       @Test
+       public void testDeleteConsumer_givenInvalidUser_thenReturnsError() {
+               Mockito.when(iUserBusinessLogic.getUser(user.getUserId(), false))
+                               .thenReturn(Either.left(user));
+               Mockito.when(consumerOperation.deleteCredentials("marvel123"))
+                               .thenReturn(Either.right(StorageOperationStatus.USER_NOT_FOUND));
+               assertTrue(consumerBusinessLogic.deleteConsumer("marvel123", user).isRight());
+       }
+}