Retry mechanism (with back off algorithm) is removed with more frequent watchdog...
[cps.git] / cps-ncmp-service / src / test / groovy / org / onap / cps / ncmp / init / InventoryModelLoaderSpec.groovy
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2023-2024 Nordix Foundation
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.ncmp.init
22
23 import ch.qos.logback.classic.Level
24 import ch.qos.logback.classic.Logger
25 import ch.qos.logback.core.read.ListAppender
26 import org.onap.cps.api.CpsAnchorService
27 import org.onap.cps.api.CpsDataService
28 import org.onap.cps.api.CpsDataspaceService
29 import org.onap.cps.api.CpsModuleService
30 import org.onap.cps.spi.model.Dataspace
31 import org.slf4j.LoggerFactory
32 import org.springframework.boot.context.event.ApplicationStartedEvent
33 import org.springframework.context.annotation.AnnotationConfigApplicationContext
34 import spock.lang.Specification
35
36 import static org.onap.cps.ncmp.impl.inventory.NcmpPersistence.NCMP_DATASPACE_NAME
37 import static org.onap.cps.ncmp.impl.inventory.NcmpPersistence.NCMP_DMI_REGISTRY_ANCHOR
38
39 class InventoryModelLoaderSpec extends Specification {
40
41     def mockCpsAdminService = Mock(CpsDataspaceService)
42     def mockCpsModuleService = Mock(CpsModuleService)
43     def mockCpsDataService = Mock(CpsDataService)
44     def mockCpsAnchorService = Mock(CpsAnchorService)
45     def objectUnderTest = new InventoryModelLoader(mockCpsAdminService, mockCpsModuleService, mockCpsAnchorService, mockCpsDataService)
46
47     def applicationContext = new AnnotationConfigApplicationContext()
48
49     def expectedYangResourceToContentMap
50     def logger = (Logger) LoggerFactory.getLogger(objectUnderTest.class)
51     def loggingListAppender
52
53     void setup() {
54         expectedYangResourceToContentMap = objectUnderTest.createYangResourcesToContentMap('dmi-registry@2024-02-23.yang')
55         logger.setLevel(Level.DEBUG)
56         loggingListAppender = new ListAppender()
57         logger.addAppender(loggingListAppender)
58         loggingListAppender.start()
59         applicationContext.refresh()
60     }
61
62     void cleanup() {
63         ((Logger) LoggerFactory.getLogger(CmDataSubscriptionModelLoader.class)).detachAndStopAllAppenders()
64         applicationContext.close()
65     }
66
67     def 'Onboard subscription model via application ready event.'() {
68         given: 'dataspace is ready for use'
69             mockCpsAdminService.getDataspace(NCMP_DATASPACE_NAME) >> new Dataspace('')
70         when: 'the application is started'
71             objectUnderTest.onApplicationEvent(Mock(ApplicationStartedEvent))
72         then: 'the module service is used to create the new schema set from the correct resource'
73             1 * mockCpsModuleService.createSchemaSet(NCMP_DATASPACE_NAME, 'dmi-registry-2024-02-23', expectedYangResourceToContentMap)
74         and: 'the admin service is used to update the anchor'
75             1 * mockCpsAnchorService.updateAnchorSchemaSet(NCMP_DATASPACE_NAME, NCMP_DMI_REGISTRY_ANCHOR, 'dmi-registry-2024-02-23')
76         and: 'No schema sets are being removed by the module service (yet)'
77             0 * mockCpsModuleService.deleteSchemaSet(NCMP_DATASPACE_NAME, _, _)
78     }
79
80 }