2 * ============LICENSE_START=======================================================
3 * dcaegen2-collectors-veshv
4 * ================================================================================
5 * Copyright (C) 2018 NOKIA
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 package org.onap.dcae.collectors.veshv.main.config
22 import arrow.core.Failure
23 import arrow.core.Success
24 import arrow.core.identity
25 import org.assertj.core.api.Assertions.assertThat
26 import org.jetbrains.spek.api.Spek
27 import org.jetbrains.spek.api.dsl.describe
28 import org.jetbrains.spek.api.dsl.given
29 import org.jetbrains.spek.api.dsl.it
30 import org.jetbrains.spek.api.dsl.on
31 import org.onap.dcae.collectors.veshv.domain.SecurityConfiguration
32 import org.onap.dcae.collectors.veshv.simulators.xnf.config.ArgBasedClientConfiguration
33 import org.onap.dcae.collectors.veshv.simulators.xnf.config.ClientConfiguration
34 import org.onap.dcae.collectors.veshv.simulators.xnf.config.DefaultValues
35 import java.nio.file.Paths
38 object ArgBasedClientConfigurationTest : Spek({
39 lateinit var cut: ArgBasedClientConfiguration
40 val messagesAmount = 3L
41 val vesHost = "localhosting"
42 val pk = Paths.get("/", "etc", "ves", "pk.pem")
43 val cert = Paths.get("/", "etc", "ssl", "certs", "ca-bundle.crt")
44 val trustCert = Paths.get("/", "etc", "ves", "trusted.crt")
47 cut = ArgBasedClientConfiguration()
50 fun parse(vararg cmdLine: String): ClientConfiguration =
51 cut.parse(cmdLine).fold(
52 {throw AssertionError("Parsing result should be present")},
56 describe("parsing arguments") {
57 lateinit var result: ClientConfiguration
59 given("all parameters are present in the long form") {
62 result = parse("--ves-port", "6969",
63 "--ves-host", vesHost,
64 "--messages", messagesAmount.toString(),
65 "--private-key-file", pk.toFile().absolutePath,
66 "--cert-file", cert.toFile().absolutePath,
67 "--trust-cert-file", trustCert.toFile().absolutePath)
70 it("should set proper port") {
71 assertThat(result.vesPort).isEqualTo(6969)
75 it("should set proper config url") {
76 assertThat(result.messagesAmount).isEqualTo(messagesAmount)
79 it("should set proper security configuration") {
80 assertThat(result.security).isEqualTo(
81 SecurityConfiguration(pk, cert, trustCert)
86 given("some parameters are present in the short form") {
89 result = parse("-h", "ves-hv", "--ves-port", "666", "-m", messagesAmount.toString())
92 it("should set proper port") {
93 assertThat(result.vesPort).isEqualTo(666)
96 it("should set proper messages amount") {
97 assertThat(result.messagesAmount).isEqualTo(messagesAmount)
101 given("all optional parameters are absent") {
104 result = parse("-h", "ves-hv", "-p", "666")
107 it("should set default messages amount") {
108 assertThat(result.messagesAmount).isEqualTo(DefaultValues.MESSAGES_AMOUNT)
111 on("security config") {
112 val securityConfiguration = result.security
114 it("should set default trust cert file") {
115 assertThat(securityConfiguration.trustedCert.toString()).isEqualTo(DefaultValues.TRUST_CERT_FILE)
118 it("should set default server cert file") {
119 assertThat(securityConfiguration.cert.toString()).isEqualTo(DefaultValues.CERT_FILE)
122 it("should set default private key file") {
123 assertThat(securityConfiguration.privateKey.toString()).isEqualTo(DefaultValues.PRIVATE_KEY_FILE)