2  * ============LICENSE_START=======================================================
 
   3  * dcaegen2-collectors-veshv
 
   4  * ================================================================================
 
   5  * Copyright (C) 2018 NOKIA
 
   6  * ================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ============LICENSE_END=========================================================
 
  20 package org.onap.dcae.collectors.veshv.ves.message.generator.impl
 
  22 import arrow.core.Option
 
  23 import arrow.core.identity
 
  24 import com.google.protobuf.util.JsonFormat
 
  25 import org.assertj.core.api.Assertions.assertThat
 
  26 import org.jetbrains.spek.api.Spek
 
  27 import org.jetbrains.spek.api.dsl.describe
 
  28 import org.jetbrains.spek.api.dsl.given
 
  29 import org.jetbrains.spek.api.dsl.it
 
  30 import org.onap.dcae.collectors.veshv.tests.utils.commonHeader
 
  31 import org.onap.ves.VesEventV5
 
  32 import java.io.ByteArrayInputStream
 
  33 import javax.json.Json
 
  34 import kotlin.test.fail
 
  36 class CommonEventHeaderParserTest : Spek({
 
  38     describe("Common event header parser") {
 
  39         val parser = CommonEventHeaderParser()
 
  41         given("valid header in JSON format") {
 
  42             val commonEventHeader = commonHeader(
 
  43                     domain = VesEventV5.VesEvent.CommonEventHeader.Domain.STATE_CHANGE,
 
  44                     id = "sample-event-id")
 
  45             val json = JsonFormat.printer().print(commonEventHeader).byteInputStream()
 
  47             it("should parse common event header") {
 
  49                         parser.parse(jsonObject(json))
 
  50                                 .fold({ fail() }, ::identity)
 
  52                 assertThat(result).describedAs("common event header").isEqualTo(commonEventHeader)
 
  56         given("invalid header in JSON format") {
 
  57             val json = "{}".byteInputStream()
 
  59             it("should throw exception") {
 
  60                 val result = parser.parse(jsonObject(json))
 
  66         given("invalid JSON") {
 
  67             val json = "{}}}}".byteInputStream()
 
  69             it("should throw exception") {
 
  70                 val result = parser.parse(jsonObject(json))
 
  78 fun assertFailed(result: Option<VesEventV5.VesEvent.CommonEventHeader>) =
 
  79         result.fold({}, { fail() })
 
  81 fun jsonObject(json: ByteArrayInputStream) = Json.createReader(json).readObject()