aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/SubscriptionModelLoaderSpec.groovy
diff options
context:
space:
mode:
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/SubscriptionModelLoaderSpec.groovy')
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/SubscriptionModelLoaderSpec.groovy31
1 files changed, 30 insertions, 1 deletions
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/SubscriptionModelLoaderSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/SubscriptionModelLoaderSpec.groovy
index 0e647ad87..907208228 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/SubscriptionModelLoaderSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/init/SubscriptionModelLoaderSpec.groovy
@@ -26,9 +26,11 @@ import ch.qos.logback.core.read.ListAppender
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.onap.cps.api.CpsAdminService
+import org.onap.cps.api.CpsDataService
import org.onap.cps.api.CpsModuleService
import org.onap.cps.ncmp.api.impl.exception.NcmpStartUpException
import org.onap.cps.spi.exceptions.AlreadyDefinedException
+import org.onap.cps.spi.exceptions.DataValidationException
import org.onap.cps.spi.exceptions.SchemaSetNotFoundException
import org.springframework.boot.SpringApplication
import org.slf4j.LoggerFactory
@@ -39,11 +41,13 @@ class SubscriptionModelLoaderSpec extends Specification {
def mockCpsAdminService = Mock(CpsAdminService)
def mockCpsModuleService = Mock(CpsModuleService)
- def objectUnderTest = new SubscriptionModelLoader(mockCpsAdminService, mockCpsModuleService)
+ def mockCpsDataService = Mock(CpsDataService)
+ def objectUnderTest = new SubscriptionModelLoader(mockCpsAdminService, mockCpsModuleService, mockCpsDataService)
def SUBSCRIPTION_DATASPACE_NAME = objectUnderTest.SUBSCRIPTION_DATASPACE_NAME;
def SUBSCRIPTION_ANCHOR_NAME = objectUnderTest.SUBSCRIPTION_ANCHOR_NAME;
def SUBSCRIPTION_SCHEMASET_NAME = objectUnderTest.SUBSCRIPTION_SCHEMASET_NAME;
+ def SUBSCRIPTION_REGISTRY_DATANODE_NAME = objectUnderTest.SUBSCRIPTION_REGISTRY_DATANODE_NAME;
def sampleYangContentMap = ['subscription.yang':'module subscription { *sample content* }']
@@ -75,6 +79,8 @@ class SubscriptionModelLoaderSpec extends Specification {
1 * mockCpsModuleService.createSchemaSet(SUBSCRIPTION_DATASPACE_NAME, SUBSCRIPTION_SCHEMASET_NAME,sampleYangContentMap)
and: 'the admin service to create an anchor set is called once'
1 * mockCpsAdminService.createAnchor(SUBSCRIPTION_DATASPACE_NAME, SUBSCRIPTION_SCHEMASET_NAME, SUBSCRIPTION_ANCHOR_NAME)
+ and: 'the data service to create a top level datanode is called once'
+ 1 * mockCpsDataService.saveData(SUBSCRIPTION_DATASPACE_NAME, SUBSCRIPTION_ANCHOR_NAME, '{"' + SUBSCRIPTION_REGISTRY_DATANODE_NAME + '":{}}', _)
}
def 'Create schema set from model file'() {
@@ -138,6 +144,29 @@ class SubscriptionModelLoaderSpec extends Specification {
thrown(NcmpStartUpException)
}
+ def 'Create top level node fails due to an AlreadyDefined exception'() {
+ given: 'the saving of the node data will throw an Already Defined exception'
+ mockCpsDataService.saveData(*_) >>
+ { AlreadyDefinedException.forDataNode('/xpath', "sampleContextName", null) }
+ when: 'the method to onboard model is called'
+ objectUnderTest.onboardSubscriptionModel()
+ then: 'no exception thrown'
+ noExceptionThrown()
+ }
+
+ def 'Create top level node fails due to any other exception'() {
+ given: 'the saving of the node data will throw an exception'
+ mockCpsDataService.saveData(*_) >>
+ { throw new DataValidationException("Invalid JSON", "JSON Data is invalid") }
+ when: 'the method to onboard model is called'
+ objectUnderTest.onboardSubscriptionModel()
+ then: 'the log message contains the correct exception message'
+ def debugMessage = appender.list[0].toString()
+ assert debugMessage.contains("Creating data node for subscription model failed: Invalid JSON")
+ and: 'exception is thrown'
+ thrown(NcmpStartUpException)
+ }
+
def 'Get file content as string'() {
when: 'the method to get yang content is called'
def response = objectUnderTest.getFileContentAsString()