mirror of
https://github.com/corda/corda.git
synced 2025-06-18 15:18:16 +00:00
CORDA-2694: Prevent Node Explorer from crashing should it receive unknown transaction objects. (#4842)
* CORDA-2694: Prevent Node Explorer from crashing should it receive unknown transaction objects. Also ensure that LazyMappedList can only handle TransactionDeserialisationExceptions. * CORDA-2694: Add unit tests for eager LazyMappedList behaviour. * CORDA-2694: Hide LazyMappedList from the client:jfx module. * CORDA-2694: Create an unknown transaction state that has the correct notary.
This commit is contained in:
committed by
Tommy Lillehagen
parent
cfccfd075e
commit
fae74eecde
@ -1,11 +1,20 @@
|
||||
package net.corda.core.utilities
|
||||
|
||||
import net.corda.core.contracts.ComponentGroupEnum.*
|
||||
import net.corda.core.internal.lazyMapped
|
||||
import net.corda.core.internal.TransactionDeserialisationException
|
||||
import net.corda.core.internal.eagerDeserialise
|
||||
import net.corda.core.serialization.MissingAttachmentsException
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.ExpectedException
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class LazyMappedListTest {
|
||||
|
||||
@get:Rule
|
||||
val exception: ExpectedException = ExpectedException.none()
|
||||
|
||||
@Test
|
||||
fun `LazyMappedList works`() {
|
||||
val originalList = (1 until 10).toList()
|
||||
@ -33,4 +42,29 @@ class LazyMappedListTest {
|
||||
assertEquals(1, callCounter)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMissingAttachments() {
|
||||
exception.expect(MissingAttachmentsException::class.java)
|
||||
exception.expectMessage("Uncatchable!")
|
||||
|
||||
val lazyList = (0 until 5).toList().lazyMapped<Int, Int> { _, _ ->
|
||||
throw MissingAttachmentsException(emptyList(), "Uncatchable!")
|
||||
}
|
||||
|
||||
lazyList.eagerDeserialise { _, _ -> -999 }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDeserialisationExceptions() {
|
||||
val lazyList = (0 until 5).toList().lazyMapped<Int, Int> { _, index ->
|
||||
throw TransactionDeserialisationException(
|
||||
OUTPUTS_GROUP, index, IllegalStateException("Catch this!"))
|
||||
}
|
||||
|
||||
lazyList.eagerDeserialise { _, _ -> -999 }
|
||||
assertEquals(5, lazyList.size)
|
||||
lazyList.forEachIndexed { idx, item ->
|
||||
assertEquals(-999, item, "Item[$idx] mismatch")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user