diff options
6 files changed, 481 insertions, 142 deletions
diff --git a/security-util-lib/src/main/java/org/onap/sdc/security/AuthenticationCookie.java b/security-util-lib/src/main/java/org/onap/sdc/security/AuthenticationCookie.java index 9440eea..b8f3afa 100644 --- a/security-util-lib/src/main/java/org/onap/sdc/security/AuthenticationCookie.java +++ b/security-util-lib/src/main/java/org/onap/sdc/security/AuthenticationCookie.java @@ -21,9 +21,13 @@ package org.onap.sdc.security; import java.util.Set; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; +import lombok.ToString; +@EqualsAndHashCode +@ToString public class AuthenticationCookie { @Getter @Setter @@ -72,35 +76,5 @@ public class AuthenticationCookie { this.lastName = lastName; } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof AuthenticationCookie)) return false; - AuthenticationCookie that = (AuthenticationCookie) o; - - if (getMaxSessionTime() != that.getMaxSessionTime()) return false; - if (getCurrentSessionTime() != that.getCurrentSessionTime()) return false; - if (getUserID() != null ? !getUserID().equals(that.getUserID()) : that.getUserID() != null) return false; - return getRoles() != null ? getRoles().containsAll(that.getRoles()) : that.getRoles() == null; - } - - @Override - public int hashCode() { - int result = getUserID() != null ? getUserID().hashCode() : 0; - result = 31 * result + (getRoles() != null ? getRoles().hashCode() : 0); - result = 31 * result + (int) (getMaxSessionTime() ^ (getMaxSessionTime() >>> 32)); - result = 31 * result + (int) (getCurrentSessionTime() ^ (getCurrentSessionTime() >>> 32)); - return result; - } - - @Override - public String toString() { - return "AuthenticationCookie{" + - "userID='" + userID + '\'' + - ", roles=" + roles + - ", maxSessionTime=" + maxSessionTime + - ", currentSessionTime=" + currentSessionTime + - '}'; - } } diff --git a/security-util-lib/src/main/java/org/onap/sdc/security/SecurityUtil.java b/security-util-lib/src/main/java/org/onap/sdc/security/SecurityUtil.java index 98410d2..27d946f 100644 --- a/security-util-lib/src/main/java/org/onap/sdc/security/SecurityUtil.java +++ b/security-util-lib/src/main/java/org/onap/sdc/security/SecurityUtil.java @@ -20,133 +20,148 @@ package org.onap.sdc.security; -import fj.data.Either; -import org.onap.sdc.security.logging.wrappers.Logger; +import static java.nio.charset.StandardCharsets.UTF_8; -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.spec.SecretKeySpec; +import fj.data.Either; import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.util.Base64; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.SecretKeySpec; +import org.onap.sdc.security.logging.enums.EcompLoggerErrorCode; +import org.onap.sdc.security.logging.wrappers.Logger; public class SecurityUtil { - private static final Logger LOG = Logger.getLogger( SecurityUtil.class ); - private static final byte[] KEY = new byte[]{-64,5,-32 ,-117 ,-44,8,-39, 1, -9, 36,-46,-81, 62,-15,-63,-75}; + private static final Logger LOG = Logger.getLogger(SecurityUtil.class); + private static final byte[] KEY = + new byte[] {-64, 5, -32, -117, -44, 8, -39, 1, -9, 36, -46, -81, 62, -15, -63, -75}; public static final SecurityUtil INSTANCE = new SecurityUtil(); - public static final String ALGORITHM = "AES" ; - public static final String CHARSET = StandardCharsets.UTF_8.name(); + public static final String ALGORITHM = "AES"; + public static final String CHARSET = UTF_8.name(); - public static Key secKey = null ; + public static Key secKey = null; /** - * * cmd commands >$PROGRAM_NAME decrypt "$ENCRYPTED_MSG" - * >$PROGRAM_NAME encrypt "message" - **/ + * >$PROGRAM_NAME encrypt "message" + **/ - private SecurityUtil(){ super(); } + private SecurityUtil() { + } static { - try{ - secKey = generateKey( KEY, ALGORITHM ); - } - catch(Exception e){ - LOG.warn("cannot generate key for {}", ALGORITHM); + try { + secKey = generateKey(KEY, ALGORITHM); + } catch (Exception e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR,"cannot generate key for {}", ALGORITHM); } } - - public static Key generateKey(final byte[] KEY, String algorithm){ + public static Key generateKey(final byte[] KEY, String algorithm) { return new SecretKeySpec(KEY, algorithm); } //obfuscates key prefix -> ********** - public String obfuscateKey(String sensitiveData){ + public String obfuscateKey(String sensitiveData) { - if (sensitiveData != null){ - int len = sensitiveData.length(); - StringBuilder builder = new StringBuilder(sensitiveData); - for (int i=0; i<len/2; i++){ - builder.setCharAt(i, '*'); - } - return builder.toString(); + if (sensitiveData == null) { + return null; + } + int len = sensitiveData.length(); + StringBuilder builder = new StringBuilder(sensitiveData); + for (int i = 0; i < len / 2; i++) { + builder.setCharAt(i, '*'); } - return sensitiveData; + return builder.toString(); } + /** - * @param strDataToEncrypt - plain string to encrypt - * Encrypt the Data - * a. Declare / Initialize the Data. Here the data is of type String - * b. Convert the Input Text to Bytes - * c. Encrypt the bytes using doFinal method + * @param strDataToEncrypt - plain string to encrypt + * Encrypt the Data + * a. Declare / Initialize the Data. Here the data is of type String + * b. Convert the Input Text to Bytes + * c. Encrypt the bytes using doFinal method */ - public Either<String,String> encrypt(String strDataToEncrypt){ - if (strDataToEncrypt != null ){ + public Either<String, String> encrypt(String strDataToEncrypt) { + if (strDataToEncrypt != null) { try { LOG.debug("Encrypt key -> {}", secKey); - Cipher aesCipherForEncryption = Cipher.getInstance("AES"); // Must specify the mode explicitly as most JCE providers default to ECB mode!! + Cipher aesCipherForEncryption = Cipher.getInstance( + "AES"); // Must specify the mode explicitly as most JCE providers default to ECB mode!! aesCipherForEncryption.init(Cipher.ENCRYPT_MODE, secKey); byte[] byteDataToEncrypt = strDataToEncrypt.getBytes(); byte[] byteCipherText = aesCipherForEncryption.doFinal(byteDataToEncrypt); - String strCipherText = new String( Base64.getMimeEncoder().encode(byteCipherText), CHARSET ); + String strCipherText = new String(Base64.getMimeEncoder().encode(byteCipherText), CHARSET); LOG.debug("Cipher Text generated using AES is {}", strCipherText); return Either.left(strCipherText); - } catch( NoSuchAlgorithmException | UnsupportedEncodingException e){ - LOG.warn( "cannot encrypt data unknown algorithm or missing encoding for {}" ,secKey.getAlgorithm()); - } catch( InvalidKeyException e){ - LOG.warn( "invalid key recieved - > {} | {}" , Base64.getDecoder().decode( secKey.getEncoded() ), e.getMessage() ); - } catch( IllegalBlockSizeException | BadPaddingException | NoSuchPaddingException e){ - LOG.warn( "bad algorithm definition (Illegal Block Size or padding), please review you algorithm block&padding" , e.getMessage() ); + } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR, + "cannot encrypt data unknown algorithm or missing encoding for {}", secKey.getAlgorithm()); + } catch (InvalidKeyException e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR, "invalid key recieved - > {} | {}", + new String(Base64.getDecoder().decode(secKey.getEncoded())), e.getMessage()); + } catch (IllegalBlockSizeException | BadPaddingException | NoSuchPaddingException e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR, + "bad algorithm definition (Illegal Block Size or padding), please review you algorithm block&padding", + e.getMessage()); } } - return Either.right("Cannot encrypt "+strDataToEncrypt); + return Either.right("Cannot encrypt " + strDataToEncrypt); } /** * Decrypt the Data - * @param byteCipherText - should be valid bae64 input in the length of 16bytes + * + * @param byteCipherText - should be valid bae64 input in the length of 16bytes * @param isBase64Decoded - is data already base64 encoded&aligned to 16 bytes - * a. Initialize a new instance of Cipher for Decryption (normally don't reuse the same object) - * b. Decrypt the cipher bytes using doFinal method + * a. Initialize a new instance of Cipher for Decryption (normally don't reuse the same + * object) + * b. Decrypt the cipher bytes using doFinal method */ - public Either<String,String> decrypt(byte[] byteCipherText , boolean isBase64Decoded){ - if (byteCipherText != null){ + public Either<String, String> decrypt(byte[] byteCipherText, boolean isBase64Decoded) { + if (byteCipherText != null) { byte[] alignedCipherText = byteCipherText; - try{ - if (isBase64Decoded) + try { + if (isBase64Decoded) { alignedCipherText = Base64.getDecoder().decode(byteCipherText); - LOG.debug("Decrypt key -> "+secKey.getEncoded()); - Cipher aesCipherForDecryption = Cipher.getInstance("AES"); // Must specify the mode explicitly as most JCE providers default to ECB mode!! + } + LOG.debug("Decrypt key -> " + secKey.getEncoded()); + Cipher aesCipherForDecryption = Cipher.getInstance( + "AES"); // Must specify the mode explicitly as most JCE providers default to ECB mode!! aesCipherForDecryption.init(Cipher.DECRYPT_MODE, secKey); byte[] byteDecryptedText = aesCipherForDecryption.doFinal(alignedCipherText); String strDecryptedText = new String(byteDecryptedText); - LOG.debug("Decrypted Text message is: {}" , obfuscateKey( strDecryptedText )); + LOG.debug("Decrypted Text message is: {}", obfuscateKey(strDecryptedText)); return Either.left(strDecryptedText); - } catch( NoSuchAlgorithmException e){ - LOG.warn( "cannot encrypt data unknown algorithm or missing encoding for {}" ,secKey.getAlgorithm()); - } catch( InvalidKeyException e){ - LOG.warn( "invalid key recieved - > {} | {}" , Base64.getDecoder().decode( secKey.getEncoded() ), e.getMessage() ); - } catch( IllegalBlockSizeException | BadPaddingException | NoSuchPaddingException e){ - LOG.warn( "bad algorithm definition (Illegal Block Size or padding), please review you algorithm block&padding" , e.getMessage() ); + } catch (NoSuchAlgorithmException e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR, + "cannot encrypt data unknown algorithm or missing encoding for {}", secKey.getAlgorithm()); + } catch (InvalidKeyException e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR, "invalid key recieved - > {} | {}", + new String(Base64.getDecoder().decode(secKey.getEncoded())), e.getMessage()); + } catch (IllegalBlockSizeException | BadPaddingException | NoSuchPaddingException e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR, + "bad algorithm definition (Illegal Block Size or padding), please review you algorithm block&padding", + e.getMessage()); } } return Either.right("Decrypt FAILED"); } - public Either<String,String> decrypt(String byteCipherText){ + public Either<String, String> decrypt(String byteCipherText) { try { - return decrypt(byteCipherText.getBytes(CHARSET),true); - } catch( UnsupportedEncodingException e ){ - LOG.warn( "Missing encoding for {} | {} " ,secKey.getAlgorithm() , e.getMessage()); + return decrypt(byteCipherText.getBytes(CHARSET), true); + } catch (UnsupportedEncodingException e) { + LOG.warn(EcompLoggerErrorCode.PERMISSION_ERROR, "Missing encoding for {} | {} ", secKey.getAlgorithm(), + e.getMessage()); } return Either.right("Decrypt FAILED"); } diff --git a/security-util-lib/src/main/java/org/onap/sdc/security/filters/SampleFilter.java b/security-util-lib/src/main/java/org/onap/sdc/security/filters/SampleFilter.java index 853c40d..0578c1d 100644 --- a/security-util-lib/src/main/java/org/onap/sdc/security/filters/SampleFilter.java +++ b/security-util-lib/src/main/java/org/onap/sdc/security/filters/SampleFilter.java @@ -38,8 +38,8 @@ public class SampleFilter extends SessionValidationFilter { private static class Configuration implements ISessionValidationFilterConfiguration { private String securityKey = "AGLDdG4D04BKm2IxIWEr8o=="; - private long maxSessionTimeOut = 24*60*60*1000; - private long sessionIdleTimeOut = 60*60*1000; + private long maxSessionTimeOut = 24*60*60*1_000L; + private long sessionIdleTimeOut = 60*60*1_000L; private String redirectURL = "http://portal.api.simpledemo.onap.org:8989/ECOMPPORTAL/login.htm"; private List<String> excludedUrls = new ArrayList<>(Arrays.asList("/config","/configmgr","/rest","/kibanaProxy","/healthcheck","/upload.*")); private String cookieName = "kuku"; diff --git a/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/HttpResponse.java b/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/HttpResponse.java index 57aaf3c..61f440c 100644 --- a/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/HttpResponse.java +++ b/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/HttpResponse.java @@ -20,11 +20,19 @@ package org.onap.sdc.security.logging.elements; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.ToString; import org.apache.commons.lang3.StringUtils; +@ToString +@AllArgsConstructor public class HttpResponse<T> { + @Getter private final T response; + @Getter private final int statusCode; + @Getter private final String description; public HttpResponse(T response, int statusCode) { @@ -32,37 +40,5 @@ public class HttpResponse<T> { this.statusCode = statusCode; this.description = StringUtils.EMPTY; } - - public HttpResponse(T response, int statusCode, String description) { - this.response = response; - this.statusCode = statusCode; - this.description = description; - } - - public T getResponse() { - return response; - } - public int getStatusCode() { - return statusCode; - } - - public String getDescription() { - return description; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("HttpResponse [response="); - builder.append(response); - builder.append(", statusCode="); - builder.append(statusCode); - builder.append(", description="); - builder.append(description); - builder.append("]"); - return builder.toString(); - } - - } diff --git a/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/LoggerFactory.java b/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/LoggerFactory.java index fe67de1..67645d7 100644 --- a/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/LoggerFactory.java +++ b/security-util-lib/src/main/java/org/onap/sdc/security/logging/elements/LoggerFactory.java @@ -30,19 +30,19 @@ public class LoggerFactory { @SuppressWarnings("unchecked") public static <T, V> V getLogger(Class<T> type, Logger logger) { - if (type.getName().equals(LoggerAudit.class.getName())) { + if (type.isAssignableFrom(LoggerAudit.class) ) { return (V) new LoggerAudit(new LogFieldsMdcHandler(), logger); } - if (type.getName().equals(LoggerDebug.class.getName())) { + if (type.isAssignableFrom(LoggerDebug.class)) { return (V) new LoggerDebug(new LogFieldsMdcHandler(), logger); } - if (type.getName().equals(LoggerMetric.class.getName())) { + if (type.isAssignableFrom(LoggerMetric.class)) { return (V) new LoggerMetric(new LogFieldsMdcHandler(), logger); } - if (type.getName().equals(LoggerError.class.getName())) { + if (type.isAssignableFrom(LoggerError.class)) { return (V) new LoggerError(new LogFieldsMdcHandler(), logger); } @@ -52,23 +52,23 @@ public class LoggerFactory { @SuppressWarnings("unchecked") public static <T, V> V getMdcLogger(Class<T> type, Logger logger) { - if (type.getName().equals(LoggerAudit.class.getName())) { + if (type.isAssignableFrom(LoggerAudit.class)) { return (V) new LoggerAudit(LogFieldsMdcHandler.getInstance(), logger); } - if (type.getName().equals(LoggerDebug.class.getName())) { + if (type.isAssignableFrom(LoggerDebug.class)) { return (V) new LoggerDebug(LogFieldsMdcHandler.getInstance(), logger); } - if (type.getName().equals(LoggerMetric.class.getName())) { + if (type.isAssignableFrom(LoggerMetric.class)) { return (V) new LoggerMetric(LogFieldsMdcHandler.getInstance(), logger); } - if (type.getName().equals(LoggerError.class.getName())) { + if (type.isAssignableFrom(LoggerError.class)) { return (V) new LoggerError(LogFieldsMdcHandler.getInstance(), logger); } - if (type.getName().equals(LoggerSupportability.class.getName())) { + if (type.isAssignableFrom(LoggerSupportability.class)) { return (V) new LoggerSupportability(LogFieldsMdcHandler.getInstance(), logger); } diff --git a/zusammen-lib/src/test/java/org/onap/sdc/common/zusammen/persistence/ZusammenConnectorTest.java b/zusammen-lib/src/test/java/org/onap/sdc/common/zusammen/persistence/ZusammenConnectorTest.java new file mode 100644 index 0000000..b65cdc9 --- /dev/null +++ b/zusammen-lib/src/test/java/org/onap/sdc/common/zusammen/persistence/ZusammenConnectorTest.java @@ -0,0 +1,374 @@ +/* + * Copyright © 2019 European Support Limited + * + * 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. + */ + +package org.onap.sdc.common.zusammen.persistence; + + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.amdocs.zusammen.adaptor.inbound.api.health.HealthAdaptor; +import com.amdocs.zusammen.adaptor.inbound.api.health.HealthAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.item.ElementAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemAdaptor; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemAdaptorFactory; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemVersionAdaptor; +import com.amdocs.zusammen.adaptor.inbound.api.item.ItemVersionAdaptorFactory; +import com.amdocs.zusammen.commons.health.data.HealthInfo; +import com.amdocs.zusammen.commons.health.data.HealthStatus; +import com.amdocs.zusammen.datatypes.Id; +import com.amdocs.zusammen.datatypes.SessionContext; +import com.amdocs.zusammen.datatypes.Space; +import com.amdocs.zusammen.datatypes.item.Info; +import com.amdocs.zusammen.datatypes.item.Item; +import com.amdocs.zusammen.datatypes.item.ItemVersion; +import com.amdocs.zusammen.datatypes.item.ItemVersionData; +import com.amdocs.zusammen.datatypes.item.ItemVersionStatus; +import com.amdocs.zusammen.datatypes.item.SynchronizationStatus; +import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions; +import com.amdocs.zusammen.datatypes.itemversion.Tag; +import com.amdocs.zusammen.datatypes.response.ErrorCode; +import com.amdocs.zusammen.datatypes.response.Module; +import com.amdocs.zusammen.datatypes.response.Response; +import com.amdocs.zusammen.datatypes.response.ReturnCode; +import com.google.common.collect.ImmutableList; +import java.util.Collection; +import java.util.List; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.onap.sdc.common.zusammen.persistence.impl.ZusammenConnectorImpl; + +@RunWith(MockitoJUnitRunner.class) +public class ZusammenConnectorTest { + + @Mock + private ItemAdaptorFactory itemAdaptorFactoryMock; + @Mock + private ItemVersionAdaptorFactory versionAdaptorFactoryMock; + @Mock + private ElementAdaptorFactory elementAdaptorFactoryMock; + @Mock + private HealthAdaptorFactory healthAdaptorFactoryMock; + private ZusammenConnector zusammenConnector; + @Mock + private SessionContext sessionContext; + + @Before + public void init() { + zusammenConnector = + new ZusammenConnectorImpl(itemAdaptorFactoryMock, versionAdaptorFactoryMock, elementAdaptorFactoryMock, + healthAdaptorFactoryMock); + + } + + @Test + public void checkHealthTest() { + HealthAdaptor healthAdaptor = mock(HealthAdaptor.class); + when(healthAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(healthAdaptor); + String test = "test"; + HealthInfo healthInfos = new HealthInfo(test, HealthStatus.UP, test); + List<HealthInfo> healtInfoList = ImmutableList.of(healthInfos); + when(healthAdaptor.getHealthStatus(sessionContext)).thenReturn(healtInfoList); + Collection<HealthInfo> healthInfosCollection = zusammenConnector.checkHealth(sessionContext); + assertEquals(healtInfoList.size(), healthInfosCollection.size()); + } + + @Test + public void checkReleaseVersion() { + HealthAdaptor healthAdaptor = mock(HealthAdaptor.class); + when(healthAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(healthAdaptor); + String version = "version"; + when(healthAdaptor.getVersion()).thenReturn(version); + String releaseVersion = zusammenConnector.getReleaseVersion(sessionContext); + assertEquals(version, releaseVersion); + } + + @Test + public void checkListItems() { + ItemAdaptor itemAdaptor = mock(ItemAdaptor.class); + when(itemAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + List<Item> items = ImmutableList.of(new Item(), new Item()); + Response<Collection<Item>> response = new Response<>(items); + when(itemAdaptor.list(sessionContext)).thenReturn(response); + Collection<Item> itemList = zusammenConnector.listItems(sessionContext); + assertEquals(items.size(), itemList.size()); + } + + @Test(expected = org.onap.sdc.common.zusammen.services.exceptions.ZusammenException.class) + public void checkListItemFailure() { + ItemAdaptor itemAdaptor = mock(ItemAdaptor.class); + when(itemAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + List<Item> items = ImmutableList.of(new Item(), new Item()); + Response<Collection<Item>> response = new Response<>(items); + setResponseErrorReturnCode(response); + when(itemAdaptor.list(sessionContext)).thenReturn(response); + zusammenConnector.listItems(sessionContext); + fail("Should never get here"); + } + + @Test + public void testCreateItem() { + ItemAdaptor itemAdaptor = mock(ItemAdaptor.class); + when(itemAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + String idStr = "idStr"; + Id id = new Id(idStr); + Response<Id> response = new Response<>(id); + Info info = new Info(); + when(itemAdaptor.create(sessionContext, info)).thenReturn(response); + Id retId = zusammenConnector.createItem(sessionContext, info); + assertEquals(idStr, retId.getValue()); + } + + @Test(expected = org.onap.sdc.common.zusammen.services.exceptions.ZusammenException.class) + public void testCreateItemFailure() { + ItemAdaptor itemAdaptor = mock(ItemAdaptor.class); + when(itemAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + String idStr = "idStr"; + Id id = new Id(idStr); + Response<Id> response = new Response<>(id); + setResponseErrorReturnCode(response); + Info info = new Info(); + when(itemAdaptor.create(sessionContext, info)).thenReturn(response); + zusammenConnector.createItem(sessionContext, info); + + } + + + @Test + public void testDeleteItem() { + ItemAdaptor itemAdaptor = mock(ItemAdaptor.class); + when(itemAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + Response<Void> response = new Response<>(null); + + Id itemId = new Id(); + when(itemAdaptor.delete(sessionContext, itemId)).thenReturn(response); + zusammenConnector.deleteItem(sessionContext, itemId); + assertNotNull(zusammenConnector); + } + + @Test + public void testUpdateItem() { + ItemAdaptor itemAdaptor = mock(ItemAdaptor.class); + when(itemAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + Response<Void> response = new Response<>(null); + Id itemId = new Id(); + Info info = new Info(); + when(itemAdaptor.update(sessionContext, itemId, info)).thenReturn(response); + zusammenConnector.updateItem(sessionContext, itemId, info); + assertNotNull(zusammenConnector); + } + + + @Test + public void testPublicVersionAdaptor() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + List<ItemVersion> itemVersions = ImmutableList.of(new ItemVersion(), new ItemVersion()); + Response<Collection<ItemVersion>> response = new Response<>(itemVersions); + Id id = new Id(); + when(itemAdaptor.list(sessionContext, Space.PUBLIC, id)).thenReturn(response); + Collection<ItemVersion> itemVersionsResult = zusammenConnector.listPublicVersions(sessionContext, id); + assertEquals(itemVersions.size(), itemVersionsResult.size()); + } + + @Test + public void testListPublicVersions() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + ItemVersion itemVersion = new ItemVersion(); + Response<ItemVersion> response = new Response<>(itemVersion); + Id id = new Id(); + when(itemAdaptor.get(sessionContext, Space.PUBLIC, id, id)).thenReturn(response); + ItemVersion itemVersionsResult = zusammenConnector.getPublicVersion(sessionContext, id, id); + assertEquals(itemVersion, itemVersionsResult); + } + + + @Test + public void testListPublicVersion() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + List<ItemVersion> itemVersions = ImmutableList.of(new ItemVersion(), new ItemVersion()); + Response<Collection<ItemVersion>> response = new Response<>(itemVersions); + Id id = new Id(); + when(itemAdaptor.list(sessionContext, Space.PUBLIC, id)).thenReturn(response); + Collection<ItemVersion> itemVersionsResult = zusammenConnector.listPublicVersions(sessionContext, id); + assertEquals(itemVersions.size(), itemVersionsResult.size()); + } + + @Test + public void testCreateVersion() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + List<ItemVersion> itemVersions = ImmutableList.of(new ItemVersion(), new ItemVersion()); + Response<Collection<ItemVersion>> response = new Response<>(itemVersions); + Id id = new Id(); + when(itemAdaptor.list(sessionContext, Space.PUBLIC, id)).thenReturn(response); + Collection<ItemVersion> itemVersionsResult = zusammenConnector.listPublicVersions(sessionContext, id); + assertEquals(itemVersions.size(), itemVersionsResult.size()); + } + + @Test + public void testGetPublicVersion() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + ItemVersion itemVersionIn = new ItemVersion(); + Id id = new Id(); + String myId = "myId"; + id.setValue(myId); + itemVersionIn.setId(id); + Response<ItemVersion> response = new Response<>(itemVersionIn); + when(itemAdaptor.get(sessionContext, Space.PUBLIC, id, id)).thenReturn(response); + ItemVersion itemVersion = zusammenConnector.getPublicVersion(sessionContext, id, id); + assertEquals(myId, itemVersion.getId().getValue()); + } + + @Test + public void testCreateVersionVersion() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + ItemVersionData itemVersionData = new ItemVersionData(); + Id id = new Id(); + String myId = "myId"; + id.setValue(myId); + Response<Id> response = new Response<>(id); + when(itemAdaptor.create(sessionContext, id, id, itemVersionData)).thenReturn(response); + Id outId = zusammenConnector.createVersion(sessionContext, id, id, itemVersionData); + assertEquals(myId, outId.getValue()); + } + + @Test + public void testUpdateVersionVersion() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + ItemVersionData itemVersionData = new ItemVersionData(); + Id id = new Id(); + Response<Void> response = new Response<>(null); + Response<Void> spyResponse = spy(response); + when(itemAdaptor.update(sessionContext, id, id, itemVersionData)).thenReturn(spyResponse); + zusammenConnector.updateVersion(sessionContext, id, id, itemVersionData); + verify(spyResponse).getValue(); + + } + + @Test + public void testGetVersion() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + ItemVersion itemVersion = new ItemVersion(); + Id id = new Id(); + String value = "myId"; + id.setValue(value); + itemVersion.setId(id); + Response<ItemVersion> response = new Response<>(null); + response.setValue(itemVersion); + when(itemAdaptor.get(sessionContext, Space.PRIVATE, id, id)).thenReturn(response); + ItemVersion version = zusammenConnector.getVersion(sessionContext, id, id); + assertEquals(id.getValue(), itemVersion.getId().getValue()); + } + + @Test + public void testGetVersionStatus() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + ItemVersionStatus itemVersionStatus = new ItemVersionStatus(SynchronizationStatus.OUT_OF_SYNC, true); + Response<ItemVersionStatus> response = new Response<>(null); + response.setValue(itemVersionStatus); + Id id = new Id(); + when(itemAdaptor.getStatus(sessionContext, id, id)).thenReturn(response); + ItemVersionStatus versionStatus = zusammenConnector.getVersionStatus(sessionContext, id, id); + assertEquals(SynchronizationStatus.OUT_OF_SYNC, versionStatus.getSynchronizationStatus()); + } + + @Test + public void testTagVersion() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + Response<Void> response = new Response<>(null); + Id id = new Id(); + String name = "mame"; + Tag tag = new Tag(name, name); + Tag spyTag = spy(tag); + when(itemAdaptor.tag(sessionContext, id, id, null, spyTag)).thenReturn(response); + zusammenConnector.tagVersion(sessionContext, id, id, spyTag); + verify(spyTag).getName(); + + } + + + @Test + public void testResetVersionRevision() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + ItemVersionAdaptor itemVersionAdaptor = spy(itemAdaptor); + Response<Void> response = new Response<>(null); + Id id = new Id(); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemVersionAdaptor); + when(itemVersionAdaptor.resetRevision(sessionContext, id, id, id)).thenReturn(response); + zusammenConnector.resetVersionRevision(sessionContext, id, id, id); + verify(itemVersionAdaptor).resetRevision(sessionContext, id, id, id); + + } + + @Test + public void testRevertVersionRevision() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + ItemVersionAdaptor itemVersionAdaptor = spy(itemAdaptor); + Response<Void> response = new Response<>(null); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemVersionAdaptor); + Id id = new Id(); + when(itemVersionAdaptor.revertRevision(sessionContext, id, id, id)).thenReturn(response); + zusammenConnector.revertVersionRevision(sessionContext, id, id, id); + verify(itemVersionAdaptor).revertRevision(sessionContext, id, id, id); + } + + + @Test + public void testListVersionRevisions() { + ItemVersionAdaptor itemAdaptor = mock(ItemVersionAdaptor.class); + ItemVersionRevisions itemVersionRevisions = new ItemVersionRevisions(); + Response<ItemVersionRevisions> response = new Response<>(itemVersionRevisions); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemAdaptor); + Id id = new Id(); + when(itemAdaptor.listRevisions(sessionContext, id, id)).thenReturn(response); + ItemVersionRevisions itemVersionRevisions1 = zusammenConnector.listVersionRevisions(sessionContext, id, id); + assertEquals(itemVersionRevisions, itemVersionRevisions1); + } + + @Test + public void testPublishVersion() { + ItemVersionAdaptor itemVersionAdaptor = spy(ItemVersionAdaptor.class); + Response<Void> response = new Response<>(null); + when(versionAdaptorFactoryMock.createInterface(sessionContext)).thenReturn(itemVersionAdaptor); + Id id = new Id(); + String blaBla = "bla bla"; + when(itemVersionAdaptor.publish(sessionContext, id, id, blaBla)).thenReturn(response); + zusammenConnector.publishVersion(sessionContext, id, id, blaBla); + verify(itemVersionAdaptor).publish(sessionContext, id, id, blaBla); + } + + + private void setResponseErrorReturnCode(Response response) { + response.setReturnCode(new ReturnCode(ErrorCode.CL_ELEMENT_GET, Module.ZSTM, "bla bla", null)); + } +} |