import org.onap.cps.spi.exceptions.SchemaSetNotFoundException
import org.onap.cps.spi.exceptions.ModuleNamesNotFoundException
import org.onap.cps.spi.model.Anchor
-import org.onap.cps.spi.model.CmHandleQueryParameters
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.test.context.jdbc.Sql
import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper
ObjectMapper objectMapper
static final String SET_DATA = '/data/anchor.sql'
- static final String SET_FRAGMENT_DATA = '/data/fragment.sql'
static final String SAMPLE_DATA_FOR_ANCHORS_WITH_MODULES = '/data/anchors-schemaset-modules.sql'
static final String DATASPACE_WITH_NO_DATA = 'DATASPACE-002-NO-DATA'
static final Integer DELETED_ANCHOR_ID = 3002
@Sql([CLEAR_DATA, SAMPLE_DATA_FOR_ANCHORS_WITH_MODULES])
def 'Query anchors that have #scenario.'() {
when: 'all anchor are retrieved for the given dataspace name and module names'
- def anchors = objectUnderTest.queryAnchors('dataspace-1', inputModuleNames)
+ def anchors = objectUnderTest.queryAnchors(inputDataspaceName, inputModuleNames)
then: 'the expected anchors are returned'
anchors.size() == expectedAnchors.size()
anchors.containsAll(expectedAnchors)
where: 'the following data is used'
- scenario | inputModuleNames || expectedAnchors
- 'one module' | ['module-name-1'] || [buildAnchor('anchor-2', 'dataspace-1', 'schema-set-2'), buildAnchor('anchor-1', 'dataspace-1', 'schema-set-1')]
- 'two modules' | ['module-name-1', 'module-name-2'] || [buildAnchor('anchor-2', 'dataspace-1', 'schema-set-2'), buildAnchor('anchor-1', 'dataspace-1', 'schema-set-1')]
- 'no anchors for all three modules' | ['module-name-1', 'module-name-2', 'module-name-3'] || []
- }
-
- @Sql([CLEAR_DATA, SAMPLE_DATA_FOR_ANCHORS_WITH_MODULES])
- def 'Query all anchors for an #scenario.'() {
- when: 'attempt to query anchors'
- objectUnderTest.queryAnchors(dataspaceName, moduleNames)
- then: 'the correct exception is thrown with the relevant details'
- def thrownException = thrown(expectedException)
- thrownException.details.contains(expectedMessageDetails)
- where: 'the following data is used'
- scenario | dataspaceName | moduleNames || expectedException | expectedMessageDetails | messageDoesNotContain
- 'unknown dataspace' | 'db-does-not-exist' | ['does-not-matter'] || DataspaceNotFoundException | 'db-does-not-exist' | 'does-not-matter'
- 'unknown module and known module' | 'dataspace-1' | ['module-name-1', 'module-does-not-exist'] || ModuleNamesNotFoundException | 'module-does-not-exist' | 'module-name-1'
+ scenario | inputDataspaceName | inputModuleNames || expectedAnchors
+ 'one module' | 'dataspace-1' | ['module-name-1'] || [buildAnchor('anchor-2', 'dataspace-1', 'schema-set-2'), buildAnchor('anchor-1', 'dataspace-1', 'schema-set-1')]
+ 'two modules' | 'dataspace-1' | ['module-name-1', 'module-name-2'] || [buildAnchor('anchor-2', 'dataspace-1', 'schema-set-2'), buildAnchor('anchor-1', 'dataspace-1', 'schema-set-1')]
+ 'no anchors for all three modules' | 'dataspace-1' | ['module-name-1', 'module-name-2', 'module-name-3'] || []
+ 'unknown dataspace' | 'db-does-not-exist' | ['does-not-matter'] || []
+ 'unknown module and known module' | 'dataspace-1' | ['module-name-1', 'module-does-not-exist'] || []
}
def buildAnchor(def anchorName, def dataspaceName, def SchemaSetName) {
'dataspace contains an anchor' | 'DATASPACE-001' || DataspaceInUseException | 'contains 2 anchor(s)'
'dataspace contains schemasets' | 'DATASPACE-003' || DataspaceInUseException | 'contains 1 schemaset(s)'
}
-
- @Sql([CLEAR_DATA, SET_FRAGMENT_DATA])
- def 'Retrieve cm handle ids when #scenario.'() {
- when: 'the service is invoked'
- def cmHandleQueryParameters = new CmHandleQueryParameters()
- cmHandleQueryParameters.setPublicProperties(publicProperties)
- def returnedCmHandles = objectUnderTest.queryCmHandles(cmHandleQueryParameters)
- then: 'the correct expected cm handles are returned'
- returnedCmHandles == expectedCmHandleIds
- where: 'the following data is used'
- scenario | publicProperties || expectedCmHandleIds
- 'single matching property' | ['Contact' : 'newemailforstore@bookstore.com'] || ['PNFDemo2', 'PNFDemo', 'PNFDemo4'] as Set
- 'public property dont match' | ['wont_match' : 'wont_match'] || [] as Set
- '2 properties, only one match (and)' | ['Contact' : 'newemailforstore@bookstore.com', 'Contact2': 'newemailforstore2@bookstore.com'] || ['PNFDemo4'] as Set
- '2 properties, no match (and)' | ['Contact' : 'newemailforstore@bookstore.com', 'Contact2': ''] || [] as Set
- 'No public properties - return all cm handles' | [ : ] || ['PNFDemo3', 'PNFDemo', 'PNFDemo2', 'PNFDemo4'] as Set
- }
}