/*
- * ============LICENSE_START=======================================================
+ * ============LICENSE_START=======================================================
* Copyright (C) 2022 Bell Canada
* Modifications Copyright (C) 2022 Nordix Foundation
* ================================================================================
import org.onap.cps.TestUtils
import org.onap.cps.spi.CpsModulePersistenceService
-import org.onap.cps.spi.exceptions.DataValidationException
import org.onap.cps.yang.YangTextSchemaSourceSet
import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
import org.spockframework.spring.SpringBean
import org.springframework.cache.caffeine.CaffeineCacheManager
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification
+import org.onap.cps.spi.utils.CpsValidator
+
@SpringBootTest
@EnableCaching
@SpringBean
CpsModulePersistenceService mockModuleStoreService = Mock()
+ @SpringBean
+ CpsValidator mockCpsValidator = Mock(CpsValidator)
+
@Autowired
YangTextSchemaSourceSetCache objectUnderTest
assert cachedValue.getModuleReferences() == expectedYangTextSchemaSourceSet.getModuleReferences()
and: 'the response is as expected'
assert result.getModuleReferences() == expectedYangTextSchemaSourceSet.getModuleReferences()
+ and: 'the CpsValidator is called on the dataspaceName and schemaSetName'
+ 1 * mockCpsValidator.validateNameCharacters('my-dataspace', 'my-schemaset')
}
def 'Cache Hit: Respond from cache'() {
0 * mockModuleStoreService.getYangSchemaResources(_, _)
}
- def 'Cache Hit: with invalid #scenario'() {
- when: 'schema-set information is asked'
- objectUnderTest.get(dataspaceName, schemaSetName)
- then: 'an data validation exception is thrown'
- thrown(DataValidationException)
- and: 'module persistence is not invoked'
- 0 * mockModuleStoreService.getYangSchemaResources(_, _)
- where: 'the following parameters are used'
- scenario | dataspaceName | schemaSetName
- 'dataspace name' | 'dataspace names with spaces' | 'schemaSetName'
- 'schema set name' | 'dataspaceName' | 'schema set name with spaces'
- 'dataspace and schema set name' | 'dataspace name with spaces' | 'schema set name with spaces'
- }
-
def 'Cache Update: when no data exist in the cache'() {
given: 'a schema set exists'
def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap('bookstore.yang')
then: 'cached value is same as expected'
def cachedValue = getCachedValue('my-dataspace', 'my-schemaset')
cachedValue.getModuleReferences() == yangTextSchemaSourceSet.getModuleReferences()
- }
-
- def 'Cache Update: with invalid #scenario'() {
- given: 'a schema set exists'
- def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap('bookstore.yang')
- def yangTextSchemaSourceSet = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap)
- when: 'schema-set information is asked'
- objectUnderTest.updateCache(dataspaceName, schemaSetName, yangTextSchemaSourceSet)
- then: 'an data validation exception is thrown'
- thrown(DataValidationException)
- and: 'module persistence is not invoked'
- 0 * mockModuleStoreService.getYangSchemaResources(_, _)
- where: 'the following parameters are used'
- scenario | dataspaceName | schemaSetName
- 'dataspace name' | 'dataspace names with spaces' | 'schemaSetName'
- 'schema set name' | 'dataspaceName' | 'schema set name with spaces'
- 'dataspace and schema set name' | 'dataspace name with spaces' | 'schema set name with spaces'
+ and: 'the CpsValidator is called on the dataspaceName and schemaSetName'
+ 1 * mockCpsValidator.validateNameCharacters('my-dataspace', 'my-schemaset')
}
def 'Cache Evict:with invalid #scenario'() {
objectUnderTest.removeFromCache('my-dataspace', 'my-schemaset')
then: 'cached does not have value'
assert getCachedValue('my-dataspace', 'my-schemaset') == null
- }
-
- def 'Cache Evict: remove when exist'() {
- when: 'cache is evicted for schemaset'
- objectUnderTest.removeFromCache(dataspaceName, schemaSetName)
- then: 'an data validation exception is thrown'
- thrown(DataValidationException)
- where: 'the following parameters are used'
- scenario | dataspaceName | schemaSetName
- 'dataspace name' | 'dataspace names with spaces' | 'schemaSetName'
- 'schema set name' | 'dataspaceName' | 'schema set name with spaces'
- 'dataspace and schema set name' | 'dataspace name with spaces' | 'schema set name with spaces'
+ and: 'the CpsValidator is called on the dataspaceName and schemaSetName'
+ 1 * mockCpsValidator.validateNameCharacters('my-dataspace', 'my-schemaset')
}
def 'Cache Evict: remove when does not exist'() {
objectUnderTest.removeFromCache('my-dataspace', 'my-schemaset')
then: 'cached does not have value'
assert getCachedValue('my-dataspace', 'my-schemaset') == null
+ and: 'the CpsValidator is called on the dataspaceName and schemaSetName'
+ 1 * mockCpsValidator.validateNameCharacters('my-dataspace', 'my-schemaset')
}
def getCachedValue(dataSpace, schemaSet) {