3b1836ebcb24fde322a92f60bc98aef200a91a5e
[dcaegen2/collectors/hv-ves.git] /
1 /*
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20 package org.onap.dcae.collectors.veshv.main.config
21
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
36
37
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")
45
46     beforeEachTest {
47         cut = ArgBasedClientConfiguration()
48     }
49
50     fun parse(vararg cmdLine: String): ClientConfiguration =
51             cut.parse(cmdLine).fold(
52                     {throw AssertionError("Parsing result should be present")},
53                     ::identity
54             )
55
56     describe("parsing arguments") {
57         lateinit var result: ClientConfiguration
58
59         given("all parameters are present in the long form") {
60
61             beforeEachTest {
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)
68             }
69
70             it("should set proper port") {
71                 assertThat(result.vesPort).isEqualTo(6969)
72             }
73
74
75             it("should set proper config url") {
76                 assertThat(result.messagesAmount).isEqualTo(messagesAmount)
77             }
78
79             it("should set proper security configuration") {
80                 assertThat(result.security).isEqualTo(
81                         SecurityConfiguration(pk, cert, trustCert)
82                 )
83             }
84         }
85
86         given("some parameters are present in the short form") {
87
88             beforeEachTest {
89                 result = parse("-h", "ves-hv", "--ves-port", "666", "-m", messagesAmount.toString())
90             }
91
92             it("should set proper port") {
93                 assertThat(result.vesPort).isEqualTo(666)
94             }
95
96             it("should set proper messages amount") {
97                 assertThat(result.messagesAmount).isEqualTo(messagesAmount)
98             }
99         }
100
101         given("all optional parameters are absent") {
102
103             beforeEachTest {
104                 result = parse("-h", "ves-hv", "-p", "666")
105             }
106
107             it("should set default messages amount") {
108                 assertThat(result.messagesAmount).isEqualTo(DefaultValues.MESSAGES_AMOUNT)
109             }
110
111             on("security config") {
112                 val securityConfiguration = result.security
113
114                 it("should set default trust cert file") {
115                     assertThat(securityConfiguration.trustedCert.toString()).isEqualTo(DefaultValues.TRUST_CERT_FILE)
116                 }
117
118                 it("should set default server cert file") {
119                     assertThat(securityConfiguration.cert.toString()).isEqualTo(DefaultValues.CERT_FILE)
120                 }
121
122                 it("should set default private key file") {
123                     assertThat(securityConfiguration.privateKey.toString()).isEqualTo(DefaultValues.PRIVATE_KEY_FILE)
124                 }
125             }
126         }
127     }
128 })