696f42a29f86012c58a79e40b250d9944f033ef5
[dcaegen2/collectors/hv-ves.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * dcaegen2-collectors-veshv
4  * ================================================================================
5  * Copyright (C) 2019 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.config.impl
21
22 import arrow.core.None
23 import arrow.core.Option
24 import arrow.core.Some
25 import com.nhaarman.mockitokotlin2.mock
26 import org.assertj.core.api.Assertions.assertThat
27 import org.assertj.core.api.Assertions.fail
28 import org.jetbrains.spek.api.Spek
29 import org.jetbrains.spek.api.dsl.describe
30 import org.jetbrains.spek.api.dsl.it
31 import org.onap.dcae.collectors.veshv.config.api.model.routing
32 import org.onap.dcae.collectors.veshv.config.impl.ConfigurationValidator.Companion.DEFAULT_LOG_LEVEL
33 import org.onap.dcae.collectors.veshv.utils.logging.LogLevel
34 import org.onap.dcaegen2.services.sdk.security.ssl.SecurityKeys
35 import java.time.Duration
36
37 internal object ConfigurationValidatorTest : Spek({
38     describe("ConfigurationValidator") {
39         val cut = ConfigurationValidator()
40
41         describe("validating partial configuration with missing fields") {
42             val config = PartialConfiguration(
43                     Some(PartialServerConfig(listenPort = Some(1)))
44             )
45
46             it("should return ValidationError") {
47                 val result = cut.validate(config)
48                 assertThat(result.isLeft()).isTrue()
49             }
50         }
51
52         describe("validating configuration with empty log level") {
53             val config = PartialConfiguration(
54                     Some(PartialServerConfig(
55                             Some(1),
56                             Some(2),
57                             Some(3)
58                     )),
59                     Some(PartialCbsConfig(
60                             Some(5),
61                             Some(3)
62                     )),
63                     Some(PartialSecurityConfig(
64                             Some(mock())
65                     )),
66                     Some(PartialCollectorConfig(
67                             Some(4),
68                             Some(emptyList()),
69                             Some(routing { }.build())
70                     )),
71                     None
72             )
73
74             it("should use default log level") {
75                 val result = cut.validate(config)
76                 result.fold(
77                         {
78                             fail("Configuration should have been created successfully")
79                         },
80                         {
81                             assertThat(it.logLevel).isEqualTo(DEFAULT_LOG_LEVEL)
82                         }
83                 )
84             }
85         }
86
87         describe("validating complete configuration") {
88             val idleTimeoutSec = 10
89             val firstReqDelaySec = 10
90             val securityKeys = Some(mock<SecurityKeys>())
91             val routing = routing { }.build()
92
93             val config = PartialConfiguration(
94                     Some(PartialServerConfig(
95                             Some(1),
96                             Some(idleTimeoutSec),
97                             Some(2)
98                     )),
99                     Some(PartialCbsConfig(
100                             Some(firstReqDelaySec),
101                             Some(3)
102                     )),
103                     Some(PartialSecurityConfig(
104                             securityKeys
105                     )),
106                     Some(PartialCollectorConfig(
107                             Some(4),
108                             Some(emptyList()),
109                             Some(routing)
110                     )),
111                     Some(LogLevel.INFO)
112             )
113
114             it("should create valid configuration") {
115                 val result = cut.validate(config)
116                 result.fold(
117                         {
118                             fail("Configuration should have been created successfully")
119                         },
120                         {
121                             assertThat(it.server.idleTimeout)
122                                     .isEqualTo(Duration.ofSeconds(idleTimeoutSec.toLong()))
123
124                             assertThat(it.security.keys)
125                                     .isEqualTo(securityKeys)
126
127                             assertThat(it.cbs.firstRequestDelay)
128                                     .isEqualTo(Duration.ofSeconds(firstReqDelaySec.toLong()))
129
130                             assertThat(it.collector.routing)
131                                     .isEqualTo(routing)
132                         }
133                 )
134             }
135         }
136
137         describe("validating configuration with security disabled") {
138             val idleTimeoutSec = 10
139             val firstReqDelaySec = 10
140             val securityKeys: Option<SecurityKeys> = None
141             val routing = routing { }.build()
142
143             val config = PartialConfiguration(
144                     Some(PartialServerConfig(
145                             Some(1),
146                             Some(idleTimeoutSec),
147                             Some(2)
148                     )),
149                     Some(PartialCbsConfig(
150                             Some(firstReqDelaySec),
151                             Some(3)
152                     )),
153                     Some(PartialSecurityConfig(
154                             securityKeys
155                     )),
156                     Some(PartialCollectorConfig(
157                             Some(4),
158                             Some(emptyList()),
159                             Some(routing)
160                     )),
161                     Some(LogLevel.INFO)
162             )
163
164             it("should create valid configuration") {
165                 val result = cut.validate(config)
166                 result.fold(
167                         {
168                             fail("Configuration should have been created successfully but was $it")
169                         },
170                         {
171                             assertThat(it.server.idleTimeout)
172                                     .isEqualTo(Duration.ofSeconds(idleTimeoutSec.toLong()))
173
174                             assertThat(it.security.keys)
175                                     .isEqualTo(securityKeys)
176
177                             assertThat(it.cbs.firstRequestDelay)
178                                     .isEqualTo(Duration.ofSeconds(firstReqDelaySec.toLong()))
179
180                             assertThat(it.collector.routing)
181                                     .isEqualTo(routing)
182                         }
183                 )
184             }
185         }
186
187     }
188 })