1 package org.onap.cps.ncmp.api.impl.async
3 import spock.lang.Specification
4 import org.apache.kafka.common.header.Header
5 import org.apache.kafka.common.header.Headers
7 import java.nio.charset.Charset
9 class RecordFilterStrategiesSpec extends Specification {
11 def objectUnderTest = new RecordFilterStrategies()
13 def headers = Mock(Headers)
14 def header = Mock(Header)
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
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