4fc6d19e9d9578df77f92a855dc406314c63f2d4
[cps.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  *  ============LICENSE_END=========================================================
19  */
20
21 package org.onap.cps.integration.functional.ncmp.provmns
22
23 import org.onap.cps.integration.base.CpsIntegrationSpecBase
24 import org.onap.cps.ncmp.impl.provmns.model.ResourceOneOf
25 import org.springframework.http.MediaType
26
27 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete
28 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
29 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch
30 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put
31 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
32
33 @SuppressWarnings('SpellCheckingInspection')
34 class ProvMnSRestApiSpec extends CpsIntegrationSpecBase{
35
36     def 'Get Resource Data from provmns interface.'() {
37         given: 'a registered cm handle'
38             dmiDispatcher1.moduleNamesPerCmHandleId['ch-1'] = ['M1', 'M2']
39             registerCmHandle(DMI1_URL, 'ch-1', NO_MODULE_SET_TAG, 'A=1/B=2/C=3')
40         expect: 'not implemented response on GET endpoint'
41             mvc.perform(get("/ProvMnS/v1/A=1/B=2/C=3"))
42                     .andExpect(status().is2xxSuccessful())
43         cleanup: 'deregister CM handles'
44             deregisterCmHandle(DMI1_URL, 'ch-1')
45     }
46
47     def 'Put Resource Data from provmns interface.'() {
48         given: 'an example resource json body'
49             def jsonBody = jsonObjectMapper.asJsonString(new ResourceOneOf('test'))
50         expect: 'not implemented response on PUT endpoint'
51             mvc.perform(put("/ProvMnS/v1/A=1/B=2/C=3")
52                     .contentType(MediaType.APPLICATION_JSON)
53                     .content(jsonBody))
54                     .andExpect(status().isNotImplemented())
55     }
56
57     def 'Patch Resource Data from provmns interface.'() {
58         given: 'an example resource json body'
59             def jsonBody = jsonObjectMapper.asJsonString(new ResourceOneOf('test'))
60         expect: 'not implemented response on PATCH endpoint'
61             mvc.perform(patch("/ProvMnS/v1/A=1/B=2/C=3")
62                     .contentType(new MediaType('application', 'json-patch+json'))
63                     .content(jsonBody))
64                     .andExpect(status().isNotImplemented())
65     }
66
67     def 'Delete Resource Data from provmns interface.'() {
68         given: 'a registered cm handle'
69             dmiDispatcher1.moduleNamesPerCmHandleId['ch-1'] = ['M1', 'M2']
70             registerCmHandle(DMI1_URL, 'ch-1', NO_MODULE_SET_TAG, '/A=1/B=2/C=3')
71         expect: 'ok response on DELETE endpoint'
72             mvc.perform(delete("/ProvMnS/v1/A=1/B=2/C=3")).andExpect(status().isOk())
73         cleanup: 'deregister CM handles'
74             deregisterCmHandle(DMI1_URL, 'ch-1')
75     }
76 }