From adcd4f2bc695840e9ecbc05003bc52c675f22fec Mon Sep 17 00:00:00 2001 From: KAPIL SINGAL Date: Fri, 22 Jan 2021 11:49:51 -0500 Subject: Renaming Files having BluePrint to have Blueprint Replacing BluePrint with Blueprint throughout Issue-ID: CCSDK-3098 Signed-off-by: KAPIL SINGAL Change-Id: Ibee8bad07ae7d9287073db2d4f2f2cd730fa8b96 --- .../grpc/GrpcPropertiesDSLTest.kt | 18 +- .../service/BluePrintGrpcLibPropertyServiceTest.kt | 218 --------------------- .../grpc/service/BluePrintGrpcServerTest.kt | 110 ----------- .../service/BlueprintGrpcLibPropertyServiceTest.kt | 218 +++++++++++++++++++++ .../grpc/service/BlueprintGrpcServerTest.kt | 110 +++++++++++ .../service/MockTLSBluePrintProcessingServer.kt | 92 --------- .../service/MockTLSBlueprintProcessingServer.kt | 92 +++++++++ 7 files changed, 429 insertions(+), 429 deletions(-) delete mode 100644 ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcLibPropertyServiceTest.kt delete mode 100644 ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcServerTest.kt create mode 100644 ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcLibPropertyServiceTest.kt create mode 100644 ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcServerTest.kt delete mode 100644 ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBluePrintProcessingServer.kt create mode 100644 ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBlueprintProcessingServer.kt (limited to 'ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin') diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSLTest.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSLTest.kt index 3de857fa5..1e7000e37 100644 --- a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSLTest.kt +++ b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSLTest.kt @@ -17,7 +17,7 @@ package org.onap.ccsdk.cds.blueprintsprocessor.grpc import org.junit.Test -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants +import org.onap.ccsdk.cds.controllerblueprints.core.BlueprintConstants import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipTypeConnectsTo import org.onap.ccsdk.cds.controllerblueprints.core.dsl.serviceTemplate import kotlin.test.assertEquals @@ -60,12 +60,12 @@ class GrpcPropertiesDSLTest { assertNotNull(relationshipTypes, "failed to get relationship types") assertEquals(2, relationshipTypes.size, "relationshipTypes doesn't match") assertNotNull( - relationshipTypes[BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO], - "failed to get ${BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO}" + relationshipTypes[BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO], + "failed to get ${BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO}" ) assertNotNull( - relationshipTypes[BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_SERVER], - "failed to get ${BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_SERVER}" + relationshipTypes[BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_SERVER], + "failed to get ${BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_SERVER}" ) } @@ -115,12 +115,12 @@ class GrpcPropertiesDSLTest { assertNotNull(relationshipTypes, "failed to get relationship types") assertEquals(2, relationshipTypes.size, "relationshipTypes doesn't match") assertNotNull( - relationshipTypes[BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO], - "failed to get ${BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO}" + relationshipTypes[BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO], + "failed to get ${BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO}" ) assertNotNull( - relationshipTypes[BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_CLIENT], - "failed to get ${BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_CLIENT}" + relationshipTypes[BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_CLIENT], + "failed to get ${BlueprintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_GRPC_CLIENT}" ) } } diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcLibPropertyServiceTest.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcLibPropertyServiceTest.kt deleted file mode 100644 index 30722c8e3..000000000 --- a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcLibPropertyServiceTest.kt +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright © 2019 IBM. - * Modifications Copyright © 2018-2019 AT&T Intellectual Property. - * - * 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.ccsdk.cds.blueprintsprocessor.grpc.service - -import com.fasterxml.jackson.databind.JsonNode -import com.fasterxml.jackson.databind.ObjectMapper -import org.junit.Assert -import org.junit.Test -import org.junit.runner.RunWith -import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintPropertiesService -import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintPropertyConfiguration -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.BasicAuthGrpcClientProperties -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.BluePrintGrpcLibConfiguration -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcClientProperties -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcServerProperties -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TokenAuthGrpcClientProperties -import org.onap.ccsdk.cds.controllerblueprints.core.jsonAsJsonType -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.test.context.ContextConfiguration -import org.springframework.test.context.TestPropertySource -import org.springframework.test.context.junit4.SpringRunner -import kotlin.test.assertEquals -import kotlin.test.assertNotNull -import kotlin.test.assertTrue - -@RunWith(SpringRunner::class) -@ContextConfiguration( - classes = [ - BluePrintGrpcLibConfiguration::class, - BluePrintPropertyConfiguration::class, BluePrintPropertiesService::class - ] -) -@TestPropertySource( - properties = - [ - "blueprintsprocessor.grpcclient.sample.type=basic-auth", - "blueprintsprocessor.grpcclient.sample.host=127.0.0.1", - "blueprintsprocessor.grpcclient.sample.port=50505", - "blueprintsprocessor.grpcclient.sample.username=sampleuser", - "blueprintsprocessor.grpcclient.sample.password=sampleuser", - - "blueprintsprocessor.grpcclient.token.type=token-auth", - "blueprintsprocessor.grpcclient.token.host=127.0.0.1", - "blueprintsprocessor.grpcclient.token.port=50505", - "blueprintsprocessor.grpcclient.token.username=sampleuser", - "blueprintsprocessor.grpcclient.token.password=sampleuser", - - "blueprintsprocessor.grpcserver.tls-sample.type=tls-auth", - "blueprintsprocessor.grpcserver.tls-sample.port=50505", - "blueprintsprocessor.grpcserver.tls-sample.certChain=server1.pem", - "blueprintsprocessor.grpcserver.tls-sample.privateKey=server1.key", - "blueprintsprocessor.grpcserver.tls-sample.trustCertCollection=ca.pem", - - "blueprintsprocessor.grpcclient.tls-sample.type=tls-auth", - "blueprintsprocessor.grpcclient.tls-sample.host=127.0.0.1", - "blueprintsprocessor.grpcclient.tls-sample.port=50505", - "blueprintsprocessor.grpcclient.tls-sample.trustCertCollection=ca.pem", - "blueprintsprocessor.grpcclient.tls-sample.clientCertChain=client.pem", - "blueprintsprocessor.grpcclient.tls-sample.clientPrivateKey=client.key" - ] -) -class BluePrintGrpcLibPropertyServiceTest { - - @Autowired - lateinit var bluePrintGrpcLibPropertyService: BluePrintGrpcLibPropertyService - - /** - * Tests the GRPC client properties with selector for basic auth. - */ - @Test - fun testGrpcClientProperties() { - val properties = bluePrintGrpcLibPropertyService.grpcClientProperties( - "blueprintsprocessor.grpcclient.sample" - ) - as BasicAuthGrpcClientProperties - assertNotNull(properties, "failed to create property bean") - assertNotNull( - properties.host, "failed to get host property in property bean" - ) - assertNotNull( - properties.port, "failed to get host property in property bean" - ) - assertNotNull( - properties.username, "failed to get host property in property bean" - ) - assertNotNull( - properties.password, "failed to get host property in property bean" - ) - } - - /** - * Tests the GRPC client properties with JSON node for token auth. - */ - @Test - fun testGrpcClientPropertiesWithJson() { - val json: String = "{\n" + - " \"type\" : \"token-auth\",\n" + - " \"host\" : \"127.0.0.1\",\n" + - " \"port\" : \"50505\"\n" + - "}" - val mapper = ObjectMapper() - val actualObj: JsonNode = mapper.readTree(json) - val properties = bluePrintGrpcLibPropertyService.grpcClientProperties( - actualObj - ) as TokenAuthGrpcClientProperties - assertNotNull(properties, "failed to create property bean") - assertEquals(properties.host, "127.0.0.1") - assertNotNull(properties.port, "50505") - } - - /** - * Tests the GRPC client service with selector for basic auth. - */ - @Test - fun testGrpcClientServiceBasic() { - val svc = bluePrintGrpcLibPropertyService.blueprintGrpcClientService( - "sample" - ) - assertTrue(svc is BasicAuthGrpcClientService) - } - - /** - * Tests the GRPC client service with selector for token auth. - */ - @Test - fun testGrpcClientServiceToken() { - val svc = bluePrintGrpcLibPropertyService.blueprintGrpcClientService( - "token" - ) - assertTrue(svc is TokenAuthGrpcClientService) - } - - /** - * Tests the GRPC client service with JSON node for basic auth. - */ - @Test - fun testGrpcClientServiceWithJson() { - val json: String = "{\n" + - " \"type\" : \"basic-auth\",\n" + - " \"host\" : \"127.0.0.1\",\n" + - " \"port\" : \"50505\",\n" + - " \"username\" : \"sampleuser\",\n" + - " \"password\" : \"samplepwd\"\n" + - "}" - val mapper = ObjectMapper() - val actualObj: JsonNode = mapper.readTree(json) - val svc = bluePrintGrpcLibPropertyService - .blueprintGrpcClientService(actualObj) - assertTrue(svc is BasicAuthGrpcClientService) - } - - @Test - fun testGrpcClientTLSProperties() { - val properties = bluePrintGrpcLibPropertyService - .grpcClientProperties("blueprintsprocessor.grpcclient.tls-sample") as TLSAuthGrpcClientProperties - assertNotNull(properties, "failed to create property bean") - assertNotNull(properties.host, "failed to get host property in property bean") - assertNotNull(properties.port, "failed to get host property in property bean") - assertNotNull(properties.trustCertCollection, "failed to get trustCertCollection property in property bean") - assertNotNull(properties.clientCertChain, "failed to get clientCertChain property in property bean") - assertNotNull(properties.clientPrivateKey, "failed to get clientPrivateKey property in property bean") - - val configDsl = """{ - "type" : "tls-auth", - "host" : "localhost", - "port" : "50505", - "trustCertCollection" : "server1.pem", - "clientCertChain" : "server1.key", - "clientPrivateKey" : "ca.pem" - } - """.trimIndent() - val jsonProperties = bluePrintGrpcLibPropertyService - .grpcClientProperties(configDsl.jsonAsJsonType()) as TLSAuthGrpcClientProperties - assertNotNull(jsonProperties, "failed to create property bean from json") - } - - @Test - fun testGrpcServerTLSProperties() { - val properties = bluePrintGrpcLibPropertyService - .grpcServerProperties("blueprintsprocessor.grpcserver.tls-sample") as TLSAuthGrpcServerProperties - assertNotNull(properties, "failed to create property bean") - assertNotNull(properties.port, "failed to get host property in property bean") - assertNotNull(properties.trustCertCollection, "failed to get trustCertCollection property in property bean") - assertNotNull(properties.certChain, "failed to get certChain property in property bean") - assertNotNull(properties.privateKey, "failed to get privateKey property in property bean") - - val configDsl = """{ - "type" : "tls-auth", - "port" : "50505", - "certChain" : "server1.pem", - "privateKey" : "server1.key", - "trustCertCollection" : "ca.pem" - } - """.trimIndent() - val jsonProperties = bluePrintGrpcLibPropertyService - .grpcServerProperties(configDsl.jsonAsJsonType()) as TLSAuthGrpcServerProperties - assertNotNull(jsonProperties, "failed to create property bean from json") - - val grpcServerService = bluePrintGrpcLibPropertyService.blueprintGrpcServerService("tls-sample") - assertNotNull(grpcServerService, "failed to get grpc server service") - Assert.assertEquals(TLSAuthGrpcServerService::class.java, grpcServerService.javaClass) - } -} diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcServerTest.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcServerTest.kt deleted file mode 100644 index 026fe5af5..000000000 --- a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BluePrintGrpcServerTest.kt +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright © 2018-2019 AT&T Intellectual Property. - * - * 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.ccsdk.cds.blueprintsprocessor.grpc.service - -import com.github.marcoferrer.krotoplus.coroutines.client.clientCallBidiStreaming -import com.google.protobuf.util.JsonFormat -import kotlinx.coroutines.channels.consumeEach -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ACTION_MODE_SYNC -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.GRPCLibConstants -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcClientProperties -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcServerProperties -import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers -import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader -import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc -import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput -import java.util.UUID -import kotlin.test.Test -import kotlin.test.assertNotNull - -class BluePrintGrpcServerTest { - - private val tlsAuthGrpcServerProperties = TLSAuthGrpcServerProperties().apply { - port = 50052 - type = GRPCLibConstants.TYPE_TLS_AUTH - certChain = "src/test/resources/tls-manual/py-executor-chain.pem" - privateKey = "src/test/resources/tls-manual/py-executor-key.pem" - } - - private val tlsAuthGrpcClientProperties = TLSAuthGrpcClientProperties().apply { - host = "localhost" - port = 50052 - type = GRPCLibConstants.TYPE_TLS_AUTH - trustCertCollection = "src/test/resources/tls-manual/py-executor-chain.pem" - } - - @Test - fun testGrpcTLSContext() { - val tlsAuthGrpcServerService = TLSAuthGrpcServerService(tlsAuthGrpcServerProperties) - val sslContext = tlsAuthGrpcServerService.sslContext() - assertNotNull(sslContext, "failed to create grpc server ssl context") - - val tlsAuthGrpcClientService = TLSAuthGrpcClientService(tlsAuthGrpcClientProperties) - val clientSslContext = tlsAuthGrpcClientService.sslContext() - assertNotNull(clientSslContext, "failed to create grpc client ssl context") - } - - /** TLS Client Integration testing, GRPC TLS Junit testing is not supported. */ - // @Test - fun testGrpcTLSServerIntegration() { - runBlocking { - val tlsAuthGrpcClientService = TLSAuthGrpcClientService(tlsAuthGrpcClientProperties) - val grpcChannel = tlsAuthGrpcClientService.channel() - /** Get Send and Receive Channel for bidirectional process method*/ - val (reqChannel, resChannel) = clientCallBidiStreaming( - BluePrintProcessingServiceGrpc.getProcessMethod(), - grpcChannel - ) - launch { - resChannel.consumeEach { - log.info("Received Response") - if (it.status.eventType == EventType.EVENT_COMPONENT_EXECUTED) { - resChannel.cancel() - } - } - } - val request = getRequest("12345") - reqChannel.send(request) - } - } - - private fun getRequest(requestId: String): ExecutionServiceInput { - val commonHeader = CommonHeader.newBuilder() - .setTimestamp("2012-04-23T18:25:43.511Z") - .setOriginatorId("System") - .setRequestId(requestId) - .setSubRequestId("$requestId-" + UUID.randomUUID().toString()).build() - val actionIdentifier = ActionIdentifiers.newBuilder() - .setActionName("SampleScript") - .setBlueprintName("sample-cba") - .setBlueprintVersion("1.0.0") - .setMode(ACTION_MODE_SYNC) - .build() - val jsonContent = """{ "key1" : "value1" }""" - val payloadBuilder = ExecutionServiceInput.newBuilder().payloadBuilder - JsonFormat.parser().merge(jsonContent, payloadBuilder) - - return ExecutionServiceInput.newBuilder() - .setCommonHeader(commonHeader) - .setActionIdentifiers(actionIdentifier) - .setPayload(payloadBuilder.build()) - .build() - } -} diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcLibPropertyServiceTest.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcLibPropertyServiceTest.kt new file mode 100644 index 000000000..40e245ade --- /dev/null +++ b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcLibPropertyServiceTest.kt @@ -0,0 +1,218 @@ +/* + * Copyright © 2019 IBM. + * Modifications Copyright © 2018-2019 AT&T Intellectual Property. + * + * 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.ccsdk.cds.blueprintsprocessor.grpc.service + +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.ObjectMapper +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith +import org.onap.ccsdk.cds.blueprintsprocessor.core.BlueprintPropertiesService +import org.onap.ccsdk.cds.blueprintsprocessor.core.BlueprintPropertyConfiguration +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.BasicAuthGrpcClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.BlueprintGrpcLibConfiguration +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcServerProperties +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TokenAuthGrpcClientProperties +import org.onap.ccsdk.cds.controllerblueprints.core.jsonAsJsonType +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.test.context.ContextConfiguration +import org.springframework.test.context.TestPropertySource +import org.springframework.test.context.junit4.SpringRunner +import kotlin.test.assertEquals +import kotlin.test.assertNotNull +import kotlin.test.assertTrue + +@RunWith(SpringRunner::class) +@ContextConfiguration( + classes = [ + BlueprintGrpcLibConfiguration::class, + BlueprintPropertyConfiguration::class, BlueprintPropertiesService::class + ] +) +@TestPropertySource( + properties = + [ + "blueprintsprocessor.grpcclient.sample.type=basic-auth", + "blueprintsprocessor.grpcclient.sample.host=127.0.0.1", + "blueprintsprocessor.grpcclient.sample.port=50505", + "blueprintsprocessor.grpcclient.sample.username=sampleuser", + "blueprintsprocessor.grpcclient.sample.password=sampleuser", + + "blueprintsprocessor.grpcclient.token.type=token-auth", + "blueprintsprocessor.grpcclient.token.host=127.0.0.1", + "blueprintsprocessor.grpcclient.token.port=50505", + "blueprintsprocessor.grpcclient.token.username=sampleuser", + "blueprintsprocessor.grpcclient.token.password=sampleuser", + + "blueprintsprocessor.grpcserver.tls-sample.type=tls-auth", + "blueprintsprocessor.grpcserver.tls-sample.port=50505", + "blueprintsprocessor.grpcserver.tls-sample.certChain=server1.pem", + "blueprintsprocessor.grpcserver.tls-sample.privateKey=server1.key", + "blueprintsprocessor.grpcserver.tls-sample.trustCertCollection=ca.pem", + + "blueprintsprocessor.grpcclient.tls-sample.type=tls-auth", + "blueprintsprocessor.grpcclient.tls-sample.host=127.0.0.1", + "blueprintsprocessor.grpcclient.tls-sample.port=50505", + "blueprintsprocessor.grpcclient.tls-sample.trustCertCollection=ca.pem", + "blueprintsprocessor.grpcclient.tls-sample.clientCertChain=client.pem", + "blueprintsprocessor.grpcclient.tls-sample.clientPrivateKey=client.key" + ] +) +class BlueprintGrpcLibPropertyServiceTest { + + @Autowired + lateinit var bluePrintGrpcLibPropertyService: BlueprintGrpcLibPropertyService + + /** + * Tests the GRPC client properties with selector for basic auth. + */ + @Test + fun testGrpcClientProperties() { + val properties = bluePrintGrpcLibPropertyService.grpcClientProperties( + "blueprintsprocessor.grpcclient.sample" + ) + as BasicAuthGrpcClientProperties + assertNotNull(properties, "failed to create property bean") + assertNotNull( + properties.host, "failed to get host property in property bean" + ) + assertNotNull( + properties.port, "failed to get host property in property bean" + ) + assertNotNull( + properties.username, "failed to get host property in property bean" + ) + assertNotNull( + properties.password, "failed to get host property in property bean" + ) + } + + /** + * Tests the GRPC client properties with JSON node for token auth. + */ + @Test + fun testGrpcClientPropertiesWithJson() { + val json: String = "{\n" + + " \"type\" : \"token-auth\",\n" + + " \"host\" : \"127.0.0.1\",\n" + + " \"port\" : \"50505\"\n" + + "}" + val mapper = ObjectMapper() + val actualObj: JsonNode = mapper.readTree(json) + val properties = bluePrintGrpcLibPropertyService.grpcClientProperties( + actualObj + ) as TokenAuthGrpcClientProperties + assertNotNull(properties, "failed to create property bean") + assertEquals(properties.host, "127.0.0.1") + assertNotNull(properties.port, "50505") + } + + /** + * Tests the GRPC client service with selector for basic auth. + */ + @Test + fun testGrpcClientServiceBasic() { + val svc = bluePrintGrpcLibPropertyService.blueprintGrpcClientService( + "sample" + ) + assertTrue(svc is BasicAuthGrpcClientService) + } + + /** + * Tests the GRPC client service with selector for token auth. + */ + @Test + fun testGrpcClientServiceToken() { + val svc = bluePrintGrpcLibPropertyService.blueprintGrpcClientService( + "token" + ) + assertTrue(svc is TokenAuthGrpcClientService) + } + + /** + * Tests the GRPC client service with JSON node for basic auth. + */ + @Test + fun testGrpcClientServiceWithJson() { + val json: String = "{\n" + + " \"type\" : \"basic-auth\",\n" + + " \"host\" : \"127.0.0.1\",\n" + + " \"port\" : \"50505\",\n" + + " \"username\" : \"sampleuser\",\n" + + " \"password\" : \"samplepwd\"\n" + + "}" + val mapper = ObjectMapper() + val actualObj: JsonNode = mapper.readTree(json) + val svc = bluePrintGrpcLibPropertyService + .blueprintGrpcClientService(actualObj) + assertTrue(svc is BasicAuthGrpcClientService) + } + + @Test + fun testGrpcClientTLSProperties() { + val properties = bluePrintGrpcLibPropertyService + .grpcClientProperties("blueprintsprocessor.grpcclient.tls-sample") as TLSAuthGrpcClientProperties + assertNotNull(properties, "failed to create property bean") + assertNotNull(properties.host, "failed to get host property in property bean") + assertNotNull(properties.port, "failed to get host property in property bean") + assertNotNull(properties.trustCertCollection, "failed to get trustCertCollection property in property bean") + assertNotNull(properties.clientCertChain, "failed to get clientCertChain property in property bean") + assertNotNull(properties.clientPrivateKey, "failed to get clientPrivateKey property in property bean") + + val configDsl = """{ + "type" : "tls-auth", + "host" : "localhost", + "port" : "50505", + "trustCertCollection" : "server1.pem", + "clientCertChain" : "server1.key", + "clientPrivateKey" : "ca.pem" + } + """.trimIndent() + val jsonProperties = bluePrintGrpcLibPropertyService + .grpcClientProperties(configDsl.jsonAsJsonType()) as TLSAuthGrpcClientProperties + assertNotNull(jsonProperties, "failed to create property bean from json") + } + + @Test + fun testGrpcServerTLSProperties() { + val properties = bluePrintGrpcLibPropertyService + .grpcServerProperties("blueprintsprocessor.grpcserver.tls-sample") as TLSAuthGrpcServerProperties + assertNotNull(properties, "failed to create property bean") + assertNotNull(properties.port, "failed to get host property in property bean") + assertNotNull(properties.trustCertCollection, "failed to get trustCertCollection property in property bean") + assertNotNull(properties.certChain, "failed to get certChain property in property bean") + assertNotNull(properties.privateKey, "failed to get privateKey property in property bean") + + val configDsl = """{ + "type" : "tls-auth", + "port" : "50505", + "certChain" : "server1.pem", + "privateKey" : "server1.key", + "trustCertCollection" : "ca.pem" + } + """.trimIndent() + val jsonProperties = bluePrintGrpcLibPropertyService + .grpcServerProperties(configDsl.jsonAsJsonType()) as TLSAuthGrpcServerProperties + assertNotNull(jsonProperties, "failed to create property bean from json") + + val grpcServerService = bluePrintGrpcLibPropertyService.blueprintGrpcServerService("tls-sample") + assertNotNull(grpcServerService, "failed to get grpc server service") + Assert.assertEquals(TLSAuthGrpcServerService::class.java, grpcServerService.javaClass) + } +} diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcServerTest.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcServerTest.kt new file mode 100644 index 000000000..130175e64 --- /dev/null +++ b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/BlueprintGrpcServerTest.kt @@ -0,0 +1,110 @@ +/* + * Copyright © 2018-2019 AT&T Intellectual Property. + * + * 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.ccsdk.cds.blueprintsprocessor.grpc.service + +import com.github.marcoferrer.krotoplus.coroutines.client.clientCallBidiStreaming +import com.google.protobuf.util.JsonFormat +import kotlinx.coroutines.channels.consumeEach +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import org.onap.ccsdk.cds.blueprintsprocessor.core.api.data.ACTION_MODE_SYNC +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.GRPCLibConstants +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcClientProperties +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcServerProperties +import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers +import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader +import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType +import org.onap.ccsdk.cds.controllerblueprints.processing.api.BlueprintProcessingServiceGrpc +import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput +import java.util.UUID +import kotlin.test.Test +import kotlin.test.assertNotNull + +class BlueprintGrpcServerTest { + + private val tlsAuthGrpcServerProperties = TLSAuthGrpcServerProperties().apply { + port = 50052 + type = GRPCLibConstants.TYPE_TLS_AUTH + certChain = "src/test/resources/tls-manual/py-executor-chain.pem" + privateKey = "src/test/resources/tls-manual/py-executor-key.pem" + } + + private val tlsAuthGrpcClientProperties = TLSAuthGrpcClientProperties().apply { + host = "localhost" + port = 50052 + type = GRPCLibConstants.TYPE_TLS_AUTH + trustCertCollection = "src/test/resources/tls-manual/py-executor-chain.pem" + } + + @Test + fun testGrpcTLSContext() { + val tlsAuthGrpcServerService = TLSAuthGrpcServerService(tlsAuthGrpcServerProperties) + val sslContext = tlsAuthGrpcServerService.sslContext() + assertNotNull(sslContext, "failed to create grpc server ssl context") + + val tlsAuthGrpcClientService = TLSAuthGrpcClientService(tlsAuthGrpcClientProperties) + val clientSslContext = tlsAuthGrpcClientService.sslContext() + assertNotNull(clientSslContext, "failed to create grpc client ssl context") + } + + /** TLS Client Integration testing, GRPC TLS Junit testing is not supported. */ + // @Test + fun testGrpcTLSServerIntegration() { + runBlocking { + val tlsAuthGrpcClientService = TLSAuthGrpcClientService(tlsAuthGrpcClientProperties) + val grpcChannel = tlsAuthGrpcClientService.channel() + /** Get Send and Receive Channel for bidirectional process method*/ + val (reqChannel, resChannel) = clientCallBidiStreaming( + BlueprintProcessingServiceGrpc.getProcessMethod(), + grpcChannel + ) + launch { + resChannel.consumeEach { + log.info("Received Response") + if (it.status.eventType == EventType.EVENT_COMPONENT_EXECUTED) { + resChannel.cancel() + } + } + } + val request = getRequest("12345") + reqChannel.send(request) + } + } + + private fun getRequest(requestId: String): ExecutionServiceInput { + val commonHeader = CommonHeader.newBuilder() + .setTimestamp("2012-04-23T18:25:43.511Z") + .setOriginatorId("System") + .setRequestId(requestId) + .setSubRequestId("$requestId-" + UUID.randomUUID().toString()).build() + val actionIdentifier = ActionIdentifiers.newBuilder() + .setActionName("SampleScript") + .setBlueprintName("sample-cba") + .setBlueprintVersion("1.0.0") + .setMode(ACTION_MODE_SYNC) + .build() + val jsonContent = """{ "key1" : "value1" }""" + val payloadBuilder = ExecutionServiceInput.newBuilder().payloadBuilder + JsonFormat.parser().merge(jsonContent, payloadBuilder) + + return ExecutionServiceInput.newBuilder() + .setCommonHeader(commonHeader) + .setActionIdentifiers(actionIdentifier) + .setPayload(payloadBuilder.build()) + .build() + } +} diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBluePrintProcessingServer.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBluePrintProcessingServer.kt deleted file mode 100644 index 78fa27d3a..000000000 --- a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBluePrintProcessingServer.kt +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright © 2018-2019 AT&T Intellectual Property. - * - * 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.ccsdk.cds.blueprintsprocessor.grpc.service - -import io.grpc.stub.StreamObserver -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.GRPCLibConstants -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcServerProperties -import org.onap.ccsdk.cds.blueprintsprocessor.grpc.interceptor.GrpcServerLoggingInterceptor -import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType -import org.onap.ccsdk.cds.controllerblueprints.common.api.Status -import org.onap.ccsdk.cds.controllerblueprints.core.logger -import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc -import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput -import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput - -val log = logger(MockTLSBluePrintProcessingServer::class) - -/** For Integration testing stat this server, Set the working path to run this method */ -fun main() { - try { - val tlsAuthGrpcServerProperties = TLSAuthGrpcServerProperties().apply { - port = 50052 - type = GRPCLibConstants.TYPE_TLS_AUTH - certChain = "src/test/resources/tls-manual/py-executor-chain.pem" - privateKey = "src/test/resources/tls-manual/py-executor-key.pem" - } - val server = TLSAuthGrpcServerService(tlsAuthGrpcServerProperties).serverBuilder() - .intercept(GrpcServerLoggingInterceptor()) - .addService(MockTLSBluePrintProcessingServer()) - .build() - server.start() - log.info("GRPC Serve started(${server.isShutdown}) on port(${server.port})...") - server.awaitTermination() - } catch (e: Exception) { - log.error("Failed to start tls grpc integration server", e) - } -} - -class MockTLSBluePrintProcessingServer : BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase() { - - override fun process(responseObserver: StreamObserver): StreamObserver { - - return object : StreamObserver { - override fun onNext(executionServiceInput: ExecutionServiceInput) { - log.info( - "Received requestId(${executionServiceInput.commonHeader.requestId}) " + - "subRequestId(${executionServiceInput.commonHeader.subRequestId})" - ) - responseObserver.onNext(buildResponse(executionServiceInput)) - responseObserver.onCompleted() - } - - override fun onError(error: Throwable) { - log.debug("Fail to process message", error) - responseObserver.onError( - io.grpc.Status.INTERNAL - .withDescription(error.message) - .asException() - ) - } - - override fun onCompleted() { - log.info("Completed") - } - } - } - - private fun buildResponse(input: ExecutionServiceInput): ExecutionServiceOutput { - val status = Status.newBuilder().setCode(200) - .setEventType(EventType.EVENT_COMPONENT_EXECUTED) - .build() - return ExecutionServiceOutput.newBuilder() - .setCommonHeader(input.commonHeader) - .setActionIdentifiers(input.actionIdentifiers) - .setStatus(status) - .build() - } -} diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBlueprintProcessingServer.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBlueprintProcessingServer.kt new file mode 100644 index 000000000..5426d7327 --- /dev/null +++ b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/service/MockTLSBlueprintProcessingServer.kt @@ -0,0 +1,92 @@ +/* + * Copyright © 2018-2019 AT&T Intellectual Property. + * + * 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.ccsdk.cds.blueprintsprocessor.grpc.service + +import io.grpc.stub.StreamObserver +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.GRPCLibConstants +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.TLSAuthGrpcServerProperties +import org.onap.ccsdk.cds.blueprintsprocessor.grpc.interceptor.GrpcServerLoggingInterceptor +import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType +import org.onap.ccsdk.cds.controllerblueprints.common.api.Status +import org.onap.ccsdk.cds.controllerblueprints.core.logger +import org.onap.ccsdk.cds.controllerblueprints.processing.api.BlueprintProcessingServiceGrpc +import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput +import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput + +val log = logger(MockTLSBlueprintProcessingServer::class) + +/** For Integration testing stat this server, Set the working path to run this method */ +fun main() { + try { + val tlsAuthGrpcServerProperties = TLSAuthGrpcServerProperties().apply { + port = 50052 + type = GRPCLibConstants.TYPE_TLS_AUTH + certChain = "src/test/resources/tls-manual/py-executor-chain.pem" + privateKey = "src/test/resources/tls-manual/py-executor-key.pem" + } + val server = TLSAuthGrpcServerService(tlsAuthGrpcServerProperties).serverBuilder() + .intercept(GrpcServerLoggingInterceptor()) + .addService(MockTLSBlueprintProcessingServer()) + .build() + server.start() + log.info("GRPC Serve started(${server.isShutdown}) on port(${server.port})...") + server.awaitTermination() + } catch (e: Exception) { + log.error("Failed to start tls grpc integration server", e) + } +} + +class MockTLSBlueprintProcessingServer : BlueprintProcessingServiceGrpc.BlueprintProcessingServiceImplBase() { + + override fun process(responseObserver: StreamObserver): StreamObserver { + + return object : StreamObserver { + override fun onNext(executionServiceInput: ExecutionServiceInput) { + log.info( + "Received requestId(${executionServiceInput.commonHeader.requestId}) " + + "subRequestId(${executionServiceInput.commonHeader.subRequestId})" + ) + responseObserver.onNext(buildResponse(executionServiceInput)) + responseObserver.onCompleted() + } + + override fun onError(error: Throwable) { + log.debug("Fail to process message", error) + responseObserver.onError( + io.grpc.Status.INTERNAL + .withDescription(error.message) + .asException() + ) + } + + override fun onCompleted() { + log.info("Completed") + } + } + } + + private fun buildResponse(input: ExecutionServiceInput): ExecutionServiceOutput { + val status = Status.newBuilder().setCode(200) + .setEventType(EventType.EVENT_COMPONENT_EXECUTED) + .build() + return ExecutionServiceOutput.newBuilder() + .setCommonHeader(input.commonHeader) + .setActionIdentifiers(input.actionIdentifiers) + .setStatus(status) + .build() + } +} -- cgit 1.2.3-korg