8f0c2af94c8850d97598a7e652974be3237b3309
[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
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.model.ServerConfiguration
33 import java.nio.file.Paths
34 import java.time.Duration
35
36 /**
37  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
38  * @since May 2018
39  */
40 object ArgBasedServerConfigurationTest : Spek({
41     lateinit var cut: ArgBasedServerConfiguration
42     val configurationUrl = "http://test-address/test"
43     val firstRequestDelay = "10"
44     val listenPort = "6969"
45     val pk = Paths.get("/", "etc", "ves", "pk.pem")
46     val cert = Paths.get("/", "etc", "ssl", "certs", "ca-bundle.crt")
47     val trustCert = Paths.get("/", "etc", "ves", "trusted.crt")
48
49     beforeEachTest {
50         cut = ArgBasedServerConfiguration()
51     }
52
53     fun parse(vararg cmdLine: String): ServerConfiguration =
54             cut.parse(cmdLine).fold(
55                     {throw AssertionError("Parsing result should be present")},
56                     ::identity
57             )
58
59     describe("parsing arguments") {
60         given("all parameters are present in the long form") {
61             lateinit var result: ServerConfiguration
62
63             beforeEachTest {
64                 result = parse("--listen-port", listenPort,
65                         "--config-url", configurationUrl,
66                         "--first-request-delay", firstRequestDelay,
67                         "--private-key-file", pk.toFile().absolutePath,
68                         "--cert-file", cert.toFile().absolutePath,
69                         "--trust-cert-file", trustCert.toFile().absolutePath)
70             }
71
72             it("should set proper port") {
73                 assertThat(result.port).isEqualTo(6969)
74             }
75
76             it("should set proper first consul request delay") {
77                 assertThat(result.firstRequestDelay).isEqualTo(Duration.ofSeconds(10))
78             }
79
80             it("should set proper config url") {
81                 assertThat(result.configurationUrl).isEqualTo(configurationUrl)
82             }
83
84             it("should set proper security configuration") {
85                 assertThat(result.securityConfiguration).isEqualTo(
86                         SecurityConfiguration(pk, cert, trustCert)
87                 )
88             }
89
90
91         }
92
93         given("some parameters are present in the short form") {
94             lateinit var result: ServerConfiguration
95
96             beforeEachTest {
97                 result = parse("-p", "666", "-c", configurationUrl, "-d", firstRequestDelay)
98             }
99
100             it("should set proper port") {
101                 assertThat(result.port).isEqualTo(666)
102             }
103
104             it("should set proper first consul request delay") {
105                 assertThat(result.firstRequestDelay).isEqualTo(Duration.ofSeconds(10))
106             }
107
108             it("should set proper config url") {
109                 assertThat(result.configurationUrl).isEqualTo(configurationUrl)
110             }
111         }
112
113         given("all optional parameters are absent") {
114             lateinit var result: ServerConfiguration
115
116             beforeEachTest {
117                 result = parse()
118             }
119
120             it("should set default port") {
121                 assertThat(result.port).isEqualTo(DefaultValues.PORT)
122             }
123
124             it("should set default config url") {
125                 assertThat(result.configurationUrl).isEqualTo(DefaultValues.CONFIG_URL)
126             }
127
128             it("should set default first consul request delay") {
129                 assertThat(result.firstRequestDelay)
130                         .isEqualTo(Duration.ofSeconds(DefaultValues.CONSUL_FIRST_REQUEST_DELAY))
131             }
132
133             on("security config") {
134                 val securityConfiguration = result.securityConfiguration
135
136                 it("should set default trust cert file") {
137                     assertThat(securityConfiguration.trustedCert.toString()).isEqualTo(DefaultValues.TRUST_CERT_FILE)
138                 }
139
140                 it("should set default server cert file") {
141                     assertThat(securityConfiguration.cert.toString()).isEqualTo(DefaultValues.CERT_FILE)
142                 }
143
144                 it("should set default private key file") {
145                     assertThat(securityConfiguration.privateKey.toString()).isEqualTo(DefaultValues.PRIVATE_KEY_FILE)
146                 }
147             }
148         }
149     }
150 })