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
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
37 * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
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")
50 cut = ArgBasedServerConfiguration()
53 fun parse(vararg cmdLine: String): ServerConfiguration =
54 cut.parse(cmdLine).fold(
55 {throw AssertionError("Parsing result should be present")},
59 describe("parsing arguments") {
60 given("all parameters are present in the long form") {
61 lateinit var result: ServerConfiguration
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)
72 it("should set proper port") {
73 assertThat(result.port).isEqualTo(6969)
76 it("should set proper first consul request delay") {
77 assertThat(result.firstRequestDelay).isEqualTo(Duration.ofSeconds(10))
80 it("should set proper config url") {
81 assertThat(result.configurationUrl).isEqualTo(configurationUrl)
84 it("should set proper security configuration") {
85 assertThat(result.securityConfiguration).isEqualTo(
86 SecurityConfiguration(pk, cert, trustCert)
93 given("some parameters are present in the short form") {
94 lateinit var result: ServerConfiguration
97 result = parse("-p", "666", "-c", configurationUrl, "-d", firstRequestDelay)
100 it("should set proper port") {
101 assertThat(result.port).isEqualTo(666)
104 it("should set proper first consul request delay") {
105 assertThat(result.firstRequestDelay).isEqualTo(Duration.ofSeconds(10))
108 it("should set proper config url") {
109 assertThat(result.configurationUrl).isEqualTo(configurationUrl)
113 given("all optional parameters are absent") {
114 lateinit var result: ServerConfiguration
120 it("should set default port") {
121 assertThat(result.port).isEqualTo(DefaultValues.PORT)
124 it("should set default config url") {
125 assertThat(result.configurationUrl).isEqualTo(DefaultValues.CONFIG_URL)
128 it("should set default first consul request delay") {
129 assertThat(result.firstRequestDelay)
130 .isEqualTo(Duration.ofSeconds(DefaultValues.CONSUL_FIRST_REQUEST_DELAY))
133 on("security config") {
134 val securityConfiguration = result.securityConfiguration
136 it("should set default trust cert file") {
137 assertThat(securityConfiguration.trustedCert.toString()).isEqualTo(DefaultValues.TRUST_CERT_FILE)
140 it("should set default server cert file") {
141 assertThat(securityConfiguration.cert.toString()).isEqualTo(DefaultValues.CERT_FILE)
144 it("should set default private key file") {
145 assertThat(securityConfiguration.privateKey.toString()).isEqualTo(DefaultValues.PRIVATE_KEY_FILE)