mirror of
https://github.com/corda/corda.git
synced 2025-02-20 17:33:15 +00:00
Check the tx type in NotaryChangeProtocol and add a TODO to write a test for this once the protocol framework propagates exceptions.
This commit is contained in:
parent
423aff477a
commit
1d272f89c2
@ -37,7 +37,7 @@ abstract class BaseTransaction(
|
||||
val timestamp: Timestamp?
|
||||
) : NamedByHash {
|
||||
|
||||
fun checkInvariants() {
|
||||
protected fun checkInvariants() {
|
||||
if (notary == null) check(inputs.isEmpty()) { "The notary must be specified explicitly for any transaction that has inputs." }
|
||||
if (timestamp != null) check(notary != null) { "If a timestamp is provided, there must be a notary." }
|
||||
}
|
||||
|
@ -76,13 +76,15 @@ object NotaryChangeProtocol: AbstractStateReplacementProtocol<Party>() {
|
||||
|
||||
val state = proposal.stateRef
|
||||
val proposedTx = proposal.stx.tx
|
||||
require(proposedTx.inputs.contains(state)) { "The proposed state $state is not in the proposed transaction inputs" }
|
||||
require(state in proposedTx.inputs) { "The proposed state $state is not in the proposed transaction inputs" }
|
||||
require(proposedTx.type.javaClass == TransactionType.NotaryChange::class.java) {
|
||||
"The proposed transaction is not a notary change transaction."
|
||||
}
|
||||
|
||||
// An example requirement
|
||||
val blacklist = listOf("Evil Notary")
|
||||
require(!blacklist.contains(newNotary.name)) { "The proposed new notary $newNotary is not trusted by the party" }
|
||||
|
||||
// TODO: Verify the type!
|
||||
|
||||
proposal
|
||||
}
|
||||
|
@ -7,13 +7,13 @@ import com.r3corda.core.seconds
|
||||
import com.r3corda.core.utilities.DUMMY_NOTARY
|
||||
import com.r3corda.core.utilities.DUMMY_NOTARY_KEY
|
||||
import com.r3corda.node.internal.AbstractNode
|
||||
import com.r3corda.testing.node.MockNetwork
|
||||
import com.r3corda.node.services.network.NetworkMapService
|
||||
import com.r3corda.node.services.transactions.SimpleNotaryService
|
||||
import com.r3corda.protocols.NotaryChangeProtocol
|
||||
import com.r3corda.protocols.NotaryChangeProtocol.Instigator
|
||||
import com.r3corda.protocols.StateReplacementException
|
||||
import com.r3corda.protocols.StateReplacementRefused
|
||||
import com.r3corda.testing.node.MockNetwork
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import java.time.Instant
|
||||
@ -93,6 +93,7 @@ class NotaryChangeTests {
|
||||
// - The requesting party wants to change additional state fields
|
||||
// - Multiple states in a single "notary change" transaction
|
||||
// - Transaction contains additional states and commands with business logic
|
||||
// - The transaction type is not a notary change transaction at all.
|
||||
}
|
||||
|
||||
fun issueState(node: AbstractNode): StateAndRef<*> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user