Merge "Upgrade to Java 17"
[cps.git] / cps-ncmp-service / src / test / groovy / org / onap / cps / ncmp / api / impl / async / RecordFilterStrategiesSpec.groovy
1 package org.onap.cps.ncmp.api.impl.async
2
3 import spock.lang.Specification
4 import org.apache.kafka.common.header.Header
5 import org.apache.kafka.common.header.Headers
6
7 import java.nio.charset.Charset
8
9 class RecordFilterStrategiesSpec extends Specification {
10
11     def objectUnderTest = new RecordFilterStrategies()
12
13     def headers = Mock(Headers)
14     def header = Mock(Header)
15
16     def 'Determining cloud event using ce_type header for a #scenario.'() {
17         given: 'headers contain a header for key: #key'
18             headers.lastHeader(key) >> header
19         expect: 'the check for cloud events returns #expectedResult'
20             assert objectUnderTest.isCloudEvent(headers) == expectedResult
21         where: 'the following headers (keys) are defined'
22             scenario          | key       || expectedResult
23             'cloud event'     | 'ce_type' || true
24             'non-cloud event' | 'other'   || false
25     }
26
27     def 'Excluding cloud event of given type only with  #scenario.'() {
28         given: 'headers contain a header for key: #key and value: #value'
29             header.value() >> value.getBytes(Charset.defaultCharset())
30             headers.lastHeader(key) >> header
31         expect: 'the event would (not) be excluded: #expectedToBeExcluded'
32             assert objectUnderTest.isNotCloudEventOfType(headers,'requiredType') == expectedToBeExcluded
33         where: 'the following headers are defined'
34             scenario                | key       | value                            || expectedToBeExcluded
35             'required type'         | 'ce_type' | 'requiredType'                   || false
36             'contains requiredType' | 'ce_type' | 'Contains requiredType and more' || false
37             'other type'            | 'ce_type' | 'other'                          || true
38             'no ce_type header'     | 'other'   | 'irrelevant'                     || true
39     }
40
41 }