2 * Copyright © 2019 Bell Canada.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.ccsdk.cds.blueprintsprocessor.configs.api
19 import kotlinx.coroutines.runBlocking
21 import org.junit.runner.RunWith
22 import org.onap.ccsdk.cds.blueprintsprocessor.core.BluePrintCoreConfiguration
23 import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintCatalogService
24 import org.slf4j.LoggerFactory
25 import org.springframework.beans.factory.annotation.Autowired
26 import org.springframework.boot.autoconfigure.security.SecurityProperties
27 import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest
28 import org.springframework.context.annotation.ComponentScan
29 import org.springframework.http.MediaType
30 import org.springframework.test.context.ContextConfiguration
31 import org.springframework.test.context.TestPropertySource
32 import org.springframework.test.context.junit4.SpringRunner
33 import org.springframework.test.web.reactive.server.WebTestClient
34 import org.springframework.web.reactive.function.BodyInserters
37 @RunWith(SpringRunner::class)
39 @ContextConfiguration(classes = [BluePrintCoreConfiguration::class,
40 BluePrintCatalogService::class, SecurityProperties::class])
41 @ComponentScan(basePackages = ["org.onap.ccsdk.cds.blueprintsprocessor", "org.onap.ccsdk.cds.controllerblueprints"])
42 @TestPropertySource(locations = ["classpath:application-test.properties"])
43 class ResourceConfigSnapshotControllerTest {
45 private val log = LoggerFactory.getLogger(ResourceConfigSnapshotControllerTest::class.toString())
48 lateinit var webTestClient: WebTestClient
50 val resourceId = "fcaa6ac3ff08"
51 val resourceType = "PNF"
52 val snapshotData = "PAYLOAD DATA"
54 var requestArguments = "resourceId=$resourceId&resourceType=$resourceType"
57 fun `ping return Success`() {
59 webTestClient.get().uri("/api/v1/configs/health-check")
68 fun `update configuration is allowed and updates timestamp`() {
73 .uri("/api/v1/configs/$resourceType/$resourceId/running")
74 .body(BodyInserters.fromObject(snapshotData))
76 .expectStatus().is2xxSuccessful
78 .jsonPath("$.createdDate")
79 .value<String> { println(it) }
83 .uri("/api/v1/configs/$resourceType/$resourceId/running")
84 .body(BodyInserters.fromObject(snapshotData))
86 .expectStatus().is2xxSuccessful
88 .jsonPath("$.createdDate")
89 .value<String> { println(it)}
94 fun `get returns requested JSON content-type`() {
96 post(resourceType, "22", "RUNNING")
97 get("json", resourceType,"22", "RUNNING")
102 fun `get returns requested XML content-type`() {
104 post(resourceType, "3", "CANDIDATE")
105 get("xml", resourceType, "3", "CANDIDATE")
110 fun `get returns 400 error if missing arg`() {
112 val arguments = "artifactName=WRONGARG1&resolutionKey=WRONGARG1"
114 webTestClient.get().uri("/api/v1/configs?$arguments")
116 .expectStatus().isBadRequest
121 fun `get returns 400 error if wrong Status arg`() {
123 val arguments = "resourceId=MISSING&resourceType=PNF&status=TOTALLY_WRONG"
125 webTestClient.get().uri("/api/v1/configs?$arguments")
127 .expectStatus().isBadRequest
132 fun `get returns 404 if entry not found`() {
137 .uri("/api/v1/configs?resourceId=MISSING&resourceType=PNF")
139 .expectStatus().isNotFound
143 private fun post( resourceType: String, resourceId: String, status: String) {
146 .uri("/api/v1/configs/$resourceType/$resourceId/$status")
147 .body(BodyInserters.fromObject(snapshotData))
149 .expectStatus().is2xxSuccessful
153 private fun get(expectedType : String, resourceType: String, resourceId: String, status: String) {
154 var requestArguments = "resourceId=$resourceId&resourceType=$resourceType&status=$status"
156 if (expectedType.isNotEmpty()) {
157 requestArguments = "$requestArguments&format=$expectedType"
160 .uri("/api/v1/configs?$requestArguments")
162 .expectStatus().is2xxSuccessful
163 .expectHeader().contentType(MediaType.valueOf("application/$expectedType"))
164 .expectBody().equals(snapshotData)
168 .uri("/api/v1/configs?$requestArguments")
170 .expectStatus().is2xxSuccessful
171 .expectHeader().contentType(MediaType.TEXT_PLAIN)
172 .expectBody().equals(snapshotData)