diff --git a/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/ListsSerializationTest.kt b/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/ListsSerializationTest.kt index 23b931f651..a5e83e0c01 100644 --- a/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/ListsSerializationTest.kt +++ b/node-api/src/test/kotlin/net/corda/nodeapi/internal/serialization/ListsSerializationTest.kt @@ -1,11 +1,15 @@ package net.corda.nodeapi.internal.serialization +import net.corda.core.serialization.CordaSerializable import net.corda.core.serialization.SerializedBytes import net.corda.core.serialization.deserialize import net.corda.core.serialization.serialize import net.corda.node.services.statemachine.SessionData import net.corda.testing.TestDependencyInjectionBase +import net.corda.testing.amqpSpecific +import org.assertj.core.api.Assertions import org.junit.Test +import java.io.NotSerializableException import kotlin.test.assertEquals class ListsSerializationTest : TestDependencyInjectionBase() { @@ -30,6 +34,19 @@ class ListsSerializationTest : TestDependencyInjectionBase() { } } + @CordaSerializable + data class WrongPayloadType(val payload: ArrayList<Int>) + + @Test + fun `check throws for forbidden declared type`() = amqpSpecific<ListsSerializationTest>("Such exceptions are not expected in Kryo mode.") { + val payload = ArrayList<Int>() + payload.add(1) + payload.add(2) + val wrongPayloadType = WrongPayloadType(payload) + Assertions.assertThatThrownBy { wrongPayloadType.serialize() } + .isInstanceOf(NotSerializableException::class.java).hasMessageContaining("Cannot derive collection type for declaredType") + } + private inline fun<reified T : Any> assertEqualAfterRoundTripSerialization(obj: T) { val serializedForm: SerializedBytes<T> = obj.serialize() diff --git a/test-utils/src/main/kotlin/net/corda/testing/CoreTestUtils.kt b/test-utils/src/main/kotlin/net/corda/testing/CoreTestUtils.kt index 87eb8dd992..73a406d3cf 100644 --- a/test-utils/src/main/kotlin/net/corda/testing/CoreTestUtils.kt +++ b/test-utils/src/main/kotlin/net/corda/testing/CoreTestUtils.kt @@ -162,4 +162,10 @@ inline fun <reified T : Any> kryoSpecific(reason: String, function: () -> Unit) function() } else { loggerFor<T>().info("Ignoring Kryo specific test, reason: $reason" ) +} + +inline fun <reified T : Any> amqpSpecific(reason: String, function: () -> Unit) = if(AMQP_ENABLED) { + function() +} else { + loggerFor<T>().info("Ignoring AMQP specific test, reason: $reason" ) } \ No newline at end of file