Write CSIT test case for unencrypted connection

Change-Id: I33be06d98b079ed16cdf3840db983dbcc768f0e7
Issue-ID: DCAEGEN2-771
Signed-off-by: Filip Krzywka <filip.krzywka@nokia.com>
diff --git a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml
index 66cbde2..1673715 100644
--- a/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml
+++ b/test/csit/plans/dcaegen2-collectors-hv-ves/testsuites/docker-compose.yml
@@ -60,6 +60,25 @@
     networks:
       - ves-hv-default
 
+  unencrypted-ves-hv-collector:
+    image: $DOCKER_REGISTRY/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:latest
+    ports:
+      - "7060:6060"
+      - "7061:6061/tcp"
+    entrypoint: ["java", "-Dio.netty.leakDetection.level=paranoid", "-cp", "*:", "org.onap.dcae.collectors.veshv.main.MainKt"]
+    command: ["--listen-port", "6061","--config-url", "http://consul:8500/v1/kv/veshv-config", "--ssl-disable"]
+    healthcheck:
+      interval: 10s
+      timeout: 5s
+      retries: 2
+      test: "curl --request GET --fail --silent --show-error localhost:6060/health/ready && nc -vz localhost 6061"
+    depends_on:
+      - kafka
+    volumes:
+      - ./ssl/:/etc/ves-hv/
+    networks:
+      - ves-hv-default
+
   dcae-app-simulator:
     image: $DOCKER_REGISTRY/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-dcae-app-simulator:latest
     ports:
diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/authorization.robot b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/authorization.robot
index 1b832f2..15c1c48 100644
--- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/authorization.robot
+++ b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/authorization.robot
@@ -11,21 +11,47 @@
 Client Authorization Suite Setup
     Log   Started Suite: VES-HV Client Authorization
     ${XNF_PORTS_LIST}=    Create List    7000
-    Configure Invalid xNF Simulators On Ports    ${XNF_PORTS_LIST}
+    ${XNF_WITH_INVALID_CERTIFICATES}=   Configure xNF Simulators    ${XNF_PORTS_LIST}
+    ...                                               should_use_valid_certs=${false}
+    Set Suite Variable   ${XNF_WITH_INVALID_CERTIFICATES}
+    ${XNF_PORTS_LIST}=    Create List    7001
+    ${XNF_WITHOUT_SSL}=   Configure xNF Simulators    ${XNF_PORTS_LIST}
+    ...                                               should_disable_ssl=${true}
+    Set Suite Variable   ${XNF_WITHOUT_SSL}
+    ${XNF_PORTS_LIST}=    Create List    7002
+    ${XNF_WITHOUT_SSL_CONNECTING_TO_UNENCRYPTED_HV_VES}=   Configure xNF Simulators    ${XNF_PORTS_LIST}
+    ...                                                                                should_disable_ssl=${true}
+    ...                                                                                should_connect_to_unencrypted_hv_ves=${true}
+    Set Suite Variable   ${XNF_WITHOUT_SSL_CONNECTING_TO_UNENCRYPTED_HV_VES}
     Log   Suite setup finished
 
-
 *** Test Cases ***
 Authorization
     [Documentation]   VES-HV Collector should not authorize XNF with invalid certificate and not route any message
     ...               to topics
 
-    ${SIMULATORS_LIST}=   Get Invalid xNF Simulators   1
-    Send Messages From xNF Simulators   ${SIMULATORS_LIST}   ${XNF_VALID_MESSAGES_REQUEST}
+    Send Messages From xNF Simulators   ${XNF_WITH_INVALID_CERTIFICATES}   ${XNF_VALID_MESSAGES_REQUEST}
 
     Wait until keyword succeeds   60 sec   5 sec
     ...     Assert Dcae App Consumed   ${DCAE_APP_API_MESSAGES_COUNT_URL}   ${AMOUNT_0}
 
+Unencrypted connection from client
+    [Documentation]   VES-HV Collector should not authorize XNF trying to connect through unencrypted connection
+
+    Send Messages From xNF Simulators   ${XNF_WITHOUT_SSL}   ${XNF_VALID_MESSAGES_REQUEST}
+
+    Wait until keyword succeeds   60 sec   5 sec
+    ...     Assert Dcae App Consumed   ${DCAE_APP_API_MESSAGES_COUNT_URL}   ${AMOUNT_0}
+
+Unencrypted connection on both ends
+    [Documentation]   When run without SSL turned on, VES-HV Collector should route all valid messages
+    ...               from xNF trying to connect through unencrypted connection
+
+    Send Messages From xNF Simulators   ${XNF_WITHOUT_SSL_CONNECTING_TO_UNENCRYPTED_HV_VES}   ${XNF_VALID_MESSAGES_REQUEST}
+
+    Wait until keyword succeeds   60 sec   5 sec
+    ...     Assert Dcae App Consumed   ${DCAE_APP_API_MESSAGES_COUNT_URL}   ${AMOUNT_5000}
+
 
 *** Variables ***
 ${VES_HV_SCENARIOS}                            %{WORKSPACE}/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios
@@ -33,3 +59,4 @@
 ${XNF_VALID_MESSAGES_REQUEST}                  ${VES_HV_SCENARIOS}/authorization/xnf-valid-messages-request.json
 
 ${AMOUNT_0}                                    0
+${AMOUNT_5000}                                 5000
diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py
index 50f66cb..26d5a91 100644
--- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py
+++ b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/libraries/XnfSimulatorLibrary.py
@@ -1,4 +1,3 @@
-from VesHvContainersUtilsLibrary import copy_to_container
 import HttpRequests
 import os
 import docker
@@ -16,14 +15,21 @@
 
 class XnfSimulatorLibrary:
 
-    def start_xnf_simulators(self, list_of_ports, should_use_valid_certs=True):
+    def start_xnf_simulators(self, list_of_ports,
+                             should_use_valid_certs=True,
+                             should_disable_ssl=False,
+                             should_connect_to_unencrypted_hv_ves=False):
         logger.info("Creating " + str(len(list_of_ports)) + " xNF Simulator containers")
         dockerClient = docker.from_env()
 
         self.pullImageIfAbsent(dockerClient)
         logger.info("Using image: " + SIMULATOR_IMAGE_FULL_NAME)
 
-        simulators_addresses = self.create_containers(dockerClient, list_of_ports, should_use_valid_certs)
+        simulators_addresses = self.create_containers(dockerClient,
+                                                      list_of_ports,
+                                                      should_use_valid_certs,
+                                                      should_disable_ssl,
+                                                      should_connect_to_unencrypted_hv_ves)
 
         self.assert_containers_startup_was_successful(dockerClient)
         dockerClient.close()
@@ -37,10 +43,15 @@
                                                                   "This can take a while.")
             dockerClient.images.pull(SIMULATOR_IMAGE_FULL_NAME)
 
-    def create_containers(self, dockerClient, list_of_ports, should_use_valid_certs):
+    def create_containers(self,
+                          dockerClient,
+                          list_of_ports,
+                          should_use_valid_certs,
+                          should_disable_ssl,
+                          should_connect_to_unencrypted_hv_ves):
         simulators_addresses = []
         for port in list_of_ports:
-            xnf = XnfSimulator(port, should_use_valid_certs)
+            xnf = XnfSimulator(port, should_use_valid_certs, should_disable_ssl, should_connect_to_unencrypted_hv_ves)
             container = self.run_simulator(dockerClient, xnf)
             logger.info("Started container: " + container.name + "  " + container.id)
             simulators_addresses.append(container.name + ":" + xnf.port)
@@ -111,21 +122,30 @@
 class XnfSimulator:
     container_name_prefix = "ves-hv-collector-xnf-simulator"
 
-    def __init__(self, port, should_use_valid_certs):
+    def __init__(self,
+                 port,
+                 should_use_valid_certs,
+                 should_disable_ssl,
+                 should_connect_to_unencrypted_hv_ves):
         self.port = port
         cert_name_prefix = "" if should_use_valid_certs else "invalid_"
         certificates_path_with_file_prefix = collector_certs_lookup_dir + cert_name_prefix
         self.cert_path = certificates_path_with_file_prefix + "client.crt"
         self.key_path = certificates_path_with_file_prefix + "client.key"
         self.trust_cert_path = certificates_path_with_file_prefix + "trust.crt"
+        self.disable_ssl = should_disable_ssl
+        self.hv_collector_host = "unencrypted-ves-hv-collector" \
+            if should_connect_to_unencrypted_hv_ves else "ves-hv-collector"
 
     def get_startup_command(self):
         startup_command = ["--listen-port", self.port,
-                           "--ves-host", "ves-hv-collector",
+                           "--ves-host", self.hv_collector_host,
                            "--ves-port", "6061",
                            "--cert-file", self.cert_path,
                            "--private-key-file", self.key_path,
                            "--trust-cert-file", self.trust_cert_path]
+        if (self.disable_ssl):
+            startup_command.append("--ssl-disable")
         return startup_command
 
     def get_healthcheck_command(self):
diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot
index 6153afa..89208e4 100644
--- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot
+++ b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/message-routing.robot
@@ -14,7 +14,7 @@
 Message Routing Suite Setup
     Log   Started Suite: VES-HV Message Routing
     ${XNF_PORTS_LIST}=    Create List    7000
-    Configure Valid xNF Simulators On Ports    ${XNF_PORTS_LIST}
+    Configure xNF Simulators Using Valid Certificates On Ports    ${XNF_PORTS_LIST}
     Log   Suite setup finished
 
 *** Test Cases ***
@@ -22,8 +22,8 @@
     [Documentation]   VES-HV Collector should route all valid messages to topics specified in configuration
     ...               and do not change message payload generated in XNF simulator
 
-    ${SIMULATORS_LIST}=   Get Valid xNF Simulators   1
-    Send Messages From xNF Simulators   ${SIMULATORS_LIST}   ${XNF_FIXED_PAYLOAD_REQUEST}
+    ${XNF_SIMULATOR}=   Get xNF Simulators Using Valid Certificates
+    Send Messages From xNF Simulators   ${XNF_SIMULATOR}   ${XNF_FIXED_PAYLOAD_REQUEST}
 
     Wait until keyword succeeds   60 sec   5 sec
     ...    Assert Dcae App Consumed   ${DCAE_APP_API_MESSAGES_COUNT_URL}   ${AMOUNT_25000}
@@ -33,8 +33,8 @@
 Too big payload message handling
     [Documentation]   VES-HV Collector should interrupt the stream when encountered message with too big payload
 
-    ${SIMULATORS_LIST}=   Get Valid xNF Simulators   1
-    Send Messages From xNF Simulators   ${SIMULATORS_LIST}   ${XNF_TOO_BIG_PAYLOAD_REQUEST}
+    ${XNF_SIMULATOR}=   Get xNF Simulators Using Valid Certificates
+    Send Messages From xNF Simulators   ${XNF_SIMULATOR}   ${XNF_TOO_BIG_PAYLOAD_REQUEST}
 
     Wait until keyword succeeds   60 sec   5 sec
     ...    Assert Dcae App Consumed Less Equal Than   ${DCAE_APP_API_MESSAGES_COUNT_URL}   ${AMOUNT_25000}
@@ -43,8 +43,8 @@
 Invalid wire frame message handling
     [Documentation]  VES-HV Collector should skip messages with invalid wire frame
 
-    ${SIMULATORS_LIST}=   Get Valid xNF Simulators   1
-    Send Messages From xNF Simulators   ${SIMULATORS_LIST}   ${XNF_INVALID_WIRE_FRAME_REQUEST}
+    ${XNF_SIMULATOR}=   Get xNF Simulators Using Valid Certificates
+    Send Messages From xNF Simulators   ${XNF_SIMULATOR}   ${XNF_INVALID_WIRE_FRAME_REQUEST}
 
     Wait until keyword succeeds   60 sec   5 sec
     ...    Assert Dcae App Consumed   ${DCAE_APP_API_MESSAGES_COUNT_URL}   ${AMOUNT_50000}
@@ -54,8 +54,8 @@
 Invalid GPB data message handling
     [Documentation]   VES-HV Collector should skip messages with invalid GPB data
 
-    ${SIMULATORS_LIST}=   Get Valid xNF Simulators   1
-    Send Messages From xNF Simulators   ${SIMULATORS_LIST}   ${XNF_INVALID_GPB_DATA_REQUEST}
+    ${XNF_SIMULATOR}=   Get xNF Simulators Using Valid Certificates
+    Send Messages From xNF Simulators   ${XNF_SIMULATOR}   ${XNF_INVALID_GPB_DATA_REQUEST}
 
     Wait until keyword succeeds   60 sec   5 sec
     ...    Assert Dcae App Consumed   ${DCAE_APP_API_MESSAGES_COUNT_URL}  ${AMOUNT_50000}
@@ -65,8 +65,8 @@
 Unsupported domain message handling
     [Documentation]   VES-HV Collector should skip messages with unsupported domain
 
-    ${SIMULATORS_LIST}=   Get Valid xNF Simulators   1
-    Send Messages From xNF Simulators   ${SIMULATORS_LIST}   ${XNF_UNSUPPORTED_DOMAIN_REQUEST}
+    ${XNF_SIMULATOR}=   Get xNF Simulators Using Valid Certificates
+    Send Messages From xNF Simulators   ${XNF_SIMULATOR}   ${XNF_UNSUPPORTED_DOMAIN_REQUEST}
 
     Wait until keyword succeeds   60 sec   5 sec
     ...    Assert Dcae App Consumed  ${DCAE_APP_API_MESSAGES_COUNT_URL}   ${AMOUNT_50000}
diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/multiple-clients.robot b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/multiple-clients.robot
index 862a2bc..9b1982a 100644
--- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/multiple-clients.robot
+++ b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/multiple-clients.robot
@@ -11,14 +11,14 @@
 Multiple Clients Handling Suite Setup
     Log   Started Suite: VES-HV Multiple Clients Handling
     ${XNF_PORTS_LIST}=    Create List    7000   7001   7002
-    Configure Valid xNF Simulators On Ports    ${XNF_PORTS_LIST}
+    Configure xNF Simulators Using Valid Certificates On Ports    ${XNF_PORTS_LIST}
     Log   Suite setup finished
 
 *** Test Cases ***
 Handle Multiple Connections
     [Documentation]   VES-HV Collector should handle multiple incoming transmissions
 
-    ${SIMULATORS_LIST}=   Get Valid xNF Simulators   3
+    ${SIMULATORS_LIST}=   Get xNF Simulators Using Valid Certificates   3
     Send Messages From xNF Simulators   ${SIMULATORS_LIST}   ${XNF_SMALLER_PAYLOAD_REQUEST}
 
     Wait until keyword succeeds   60 sec   5 sec
diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/common-keywords.robot b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/common-keywords.robot
index bc03de2..58f5cbc 100644
--- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/common-keywords.robot
+++ b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/common-keywords.robot
@@ -4,30 +4,28 @@
 Library       Collections
 
 *** Keywords ***
-Configure Valid xNF Simulators On Ports
+Configure xNF Simulators Using Valid Certificates On Ports
     [Arguments]    ${XNF_PORTS_LIST}
-    ${VALID_XNF_SIMULATORS_ADDRESSES}=   Start Xnf Simulators    ${XNF_PORTS_LIST}    ${true}
+    ${VALID_XNF_SIMULATORS_ADDRESSES}=   Configure xNF Simulators   ${XNF_PORTS_LIST}
     Set Suite Variable    ${VALID_XNF_SIMULATORS_ADDRESSES}
 
-
-Configure Invalid xNF Simulators On Ports
+Configure xNF Simulators
     [Arguments]    ${XNF_PORTS_LIST}
-    ${INVALID_XNF_SIMULATORS_ADDRESSES}=   Start Xnf Simulators    ${XNF_PORTS_LIST}    ${false}
-    Set Suite Variable    ${INVALID_XNF_SIMULATORS_ADDRESSES}
+    ...            ${should_use_valid_certs}=${true}
+    ...            ${should_disable_ssl}=${false}
+    ...            ${should_connect_to_unencrypted_hv_ves}=${false}
+    ${XNF_SIMULATORS_ADDRESSES}=   Start Xnf Simulators   ${XNF_PORTS_LIST}
+    ...                                                           ${should_use_valid_certs}
+    ...                                                           ${should_disable_ssl}
+    ...                                                           ${should_connect_to_unencrypted_hv_ves}
+    [Return]   ${XNF_SIMULATORS_ADDRESSES}
 
-
-Get Valid xNF Simulators
-    [Arguments]  ${AMOUNT}
+Get xNF Simulators Using Valid Certificates
+    [Arguments]  ${AMOUNT}=1
     ${SIMULATORS}=   Get Slice From List   ${VALID_XNF_SIMULATORS_ADDRESSES}   0   ${AMOUNT}
     [Return]   ${SIMULATORS}
 
 
-Get Invalid xNF Simulators
-    [Arguments]  ${AMOUNT}
-    ${SIMULATORS}=   Get Slice From List   ${INVALID_XNF_SIMULATORS_ADDRESSES}   0   ${AMOUNT}
-    [Return]   ${SIMULATORS}
-
-
 Send Messages From xNF Simulators
     [Arguments]    ${XNF_HOSTS_LIST}   ${MESSAGE_FILEPATH}
     :FOR   ${HOST}   IN    @{XNF_HOSTS_LIST}
diff --git a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/authorization/xnf-valid-messages-request.json b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/authorization/xnf-valid-messages-request.json
index c71793d..75d9387 100644
--- a/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/authorization/xnf-valid-messages-request.json
+++ b/test/csit/tests/dcaegen2-collectors-hv-ves/testcases/resources/scenarios/authorization/xnf-valid-messages-request.json
@@ -18,6 +18,6 @@
       "sourceName": "sample-source-name"
     },
     "messageType": "VALID",
-    "messagesAmount": 500000
+    "messagesAmount": 5000
   }
 ]
\ No newline at end of file