CORE-15541: release ga builds prep (#61)

* CORE-15561: Use Beta versions of the CSDE gradle plugin (#58)

* CORE-15572: deleted stale todo comment (#59)

* CORE-15541: release ga-rc12 prep

* CORE:15541: update combined worker version to RC12

* CORE-15541: release ga build prep

---------

Co-authored-by: Tony Lawson <tony.lawson@r3.com>
This commit is contained in:
christian.n 2023-07-24 11:53:41 +01:00 committed by GitHub
parent bb380544d6
commit 15f1043a39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 34 additions and 423 deletions

View File

@ -32,7 +32,6 @@ allprojects {
cordaDbContainerName = "CSDEpostgresql"
cordaBinDir = "${System.getProperty("user.home")}/.corda/corda5"
cordaCliBinDir = "${System.getProperty("user.home")}/.corda/cli"
cpiUploadTimeout = cpiUploadDefault
}
// Declare the set of Java compiler options we need to build a CorDapp.
@ -47,22 +46,6 @@ allprojects {
// All dependencies are held in Maven Central
mavenLocal()
mavenCentral()
// R3 Internal repositories for dev
// Repository provides Corda 5 binaries that implement Corda-API.
// These will be made publicly available.
// Final location to be decided.
// Repository subject to change
maven {
url = "$artifactoryContextUrl/corda-os-maven"
authentication {
basic(BasicAuthentication)
}
credentials {
username = findProperty('cordaArtifactoryUsername') ?: System.getenv('CORDA_ARTIFACTORY_USERNAME')
password = findProperty('cordaArtifactoryPassword') ?: System.getenv('CORDA_ARTIFACTORY_PASSWORD')
}
}
}
tasks.withType(Test).configureEach {

View File

@ -1,38 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIGsDCCBJigAwIBAgIQCK1AsmDSnEyfXs2pvZOu2TANBgkqhkiG9w0BAQwFADBi
MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg
RzQwHhcNMjEwNDI5MDAwMDAwWhcNMzYwNDI4MjM1OTU5WjBpMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRy
dXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExMIIC
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1bQvQtAorXi3XdU5WRuxiEL1
M4zrPYGXcMW7xIUmMJ+kjmjYXPXrNCQH4UtP03hD9BfXHtr50tVnGlJPDqFX/IiZ
wZHMgQM+TXAkZLON4gh9NH1MgFcSa0OamfLFOx/y78tHWhOmTLMBICXzENOLsvsI
8IrgnQnAZaf6mIBJNYc9URnokCF4RS6hnyzhGMIazMXuk0lwQjKP+8bqHPNlaJGi
TUyCEUhSaN4QvRRXXegYE2XFf7JPhSxIpFaENdb5LpyqABXRN/4aBpTCfMjqGzLm
ysL0p6MDDnSlrzm2q2AS4+jWufcx4dyt5Big2MEjR0ezoQ9uo6ttmAaDG7dqZy3S
vUQakhCBj7A7CdfHmzJawv9qYFSLScGT7eG0XOBv6yb5jNWy+TgQ5urOkfW+0/tv
k2E0XLyTRSiDNipmKF+wc86LJiUGsoPUXPYVGUztYuBeM/Lo6OwKp7ADK5GyNnm+
960IHnWmZcy740hQ83eRGv7bUKJGyGFYmPV8AhY8gyitOYbs1LcNU9D4R+Z1MI3s
MJN2FKZbS110YU0/EpF23r9Yy3IQKUHw1cVtJnZoEUETWJrcJisB9IlNWdt4z4FK
PkBHX8mBUHOFECMhWWCKZFTBzCEa6DgZfGYczXg4RTCZT/9jT0y7qg0IU0F8WD1H
s/q27IwyCQLMbDwMVhECAwEAAaOCAVkwggFVMBIGA1UdEwEB/wQIMAYBAf8CAQAw
HQYDVR0OBBYEFGg34Ou2O/hfEYb7/mF7CIhl9E5CMB8GA1UdIwQYMBaAFOzX44LS
cV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEF
BQcDAzB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp
Z2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQu
Y29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYy
aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5j
cmwwHAYDVR0gBBUwEzAHBgVngQwBAzAIBgZngQwBBAEwDQYJKoZIhvcNAQEMBQAD
ggIBADojRD2NCHbuj7w6mdNW4AIapfhINPMstuZ0ZveUcrEAyq9sMCcTEp6QRJ9L
/Z6jfCbVN7w6XUhtldU/SfQnuxaBRVD9nL22heB2fjdxyyL3WqqQz/WTauPrINHV
UHmImoqKwba9oUgYftzYgBoRGRjNYZmBVvbJ43bnxOQbX0P4PpT/djk9ntSZz0rd
KOtfJqGVWEjVGv7XJz/9kNF2ht0csGBc8w2o7uCJob054ThO2m67Np375SFTWsPK
6Wrxoj7bQ7gzyE84FJKZ9d3OVG3ZXQIUH0AzfAPilbLCIXVzUstG2MQ0HKKlS43N
b3Y3LIU/Gs4m6Ri+kAewQ3+ViCCCcPDMyu/9KTVcH4k4Vfc3iosJocsL6TEa/y4Z
XDlx4b6cpwoG1iZnt5LmTl/eeqxJzy6kdJKt2zyknIYf48FWGysj/4+16oh7cGvm
oLr9Oj9FpsToFpFSi0HASIRLlk2rREDjjfAVKM7t8RhWByovEMQMCGQ8M4+uKIw8
y4+ICw2/O/TOHnuO77Xry7fwdxPm5yg/rBKupS8ibEH5glwVZsxsDsrFhsP2JjMM
B0ug0wcCampAMEhLNKhRILutG4UI4lkNbcoFUCvqShyepf2gpx8GdOfy1lKQ/a+F
SCH5Vzu0nAPthkX0tGFuv2jiJmCG6sivqf6UHedjGzqGVnhO
RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y
ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If
xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV
ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO
DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ
jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/
CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi
EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM
fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY
uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK
chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t
9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2
SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd
+SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc
fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa
sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N
cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N
0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie
4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI
r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1
/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm
gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
-----END CERTIFICATE-----

View File

@ -39,23 +39,16 @@ dependencies {
// The CorDapp uses the slf4j logging framework. Corda-API provides this so we need a 'cordaProvided' declaration.
cordaProvided 'org.slf4j:slf4j-api'
// This are shared so should be here.
// Dependencies Required By Test Tooling
// Todo: these are commented out as the simulator UTXO work has not been merged into Gecko yet.
// testImplementation "net.corda:corda-simulator-api:$simulatorVersion"
// testRuntimeOnly "net.corda:corda-simulator-runtime:$simulatorVersion"
// 3rd party libraries
// Required
testImplementation "org.slf4j:slf4j-simple:2.0.0"
testImplementation "org.junit.jupiter:junit-jupiter:$junitVersion"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitVersion"
// Optional but used by exmaple tests.
// Optional but used by example tests.
testImplementation "org.mockito:mockito-core:$mockitoVersion"
testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
testImplementation "org.hamcrest:hamcrest-library:$hamcrestVersion"
testImplementation "com.r3.corda.ledger.utxo:contract-testing:$contractTestingVersion"
}
// The CordApp section.

View File

@ -1,158 +0,0 @@
package com.r3.developers.csdetemplate.utxoexample.contracts;
import com.r3.corda.ledger.utxo.testing.ContractTest;
import com.r3.developers.csdetemplate.utxoexample.states.ChatState;
import net.corda.v5.ledger.utxo.Command;
import net.corda.v5.ledger.utxo.StateAndRef;
import net.corda.v5.ledger.utxo.transaction.UtxoSignedTransaction;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.UUID;
import static com.r3.developers.csdetemplate.utxoexample.contracts.ChatContract.*;
import static java.util.Collections.emptyList;
public class ChatContractCreateCommandTest extends ContractTest {
protected ChatState outputChatState = new ChatState(
UUID.randomUUID(),
"aliceChatName",
aliceName,
"aliceChatMessage",
List.of(aliceKey, bobKey)
);
@Test
public void happyPath() {
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(outputChatState)
.addCommand(new ChatContract.Create())
.addSignatories(outputChatState.participants)
.toSignedTransaction();
assertVerifies(transaction);
}
@Test
public void missingCommand() {
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(outputChatState)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + REQUIRE_SINGLE_COMMAND);
}
@Test
public void shouldNotAcceptUnknownCommand() {
class MyDummyCommand implements Command {
}
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(outputChatState)
.addCommand(new MyDummyCommand())
.addSignatories(outputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, UNKNOWN_COMMAND);
}
@Test
public void outputStateCannotHaveZeroParticipants() {
ChatState state = new ChatState(
UUID.randomUUID(),
"myChatName",
aliceName,
"myChatMessage",
emptyList()
);
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(state)
.addCommand(new ChatContract.Create())
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + OUTPUT_STATE_SHOULD_ONLY_HAVE_TWO_PARTICIPANTS);
}
@Test
public void outputStateCannotHaveOneParticipant() {
ChatState state = new ChatState(
UUID.randomUUID(),
"myChatName",
aliceName,
"myChatMessage",
List.of(aliceKey)
);
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(state)
.addCommand(new ChatContract.Create())
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + OUTPUT_STATE_SHOULD_ONLY_HAVE_TWO_PARTICIPANTS);
}
@Test
public void outputStateCannotHaveThreeParticipants() {
ChatState state = new ChatState(
UUID.randomUUID(),
"myChatName",
aliceName,
"myChatMessage",
List.of(aliceKey, bobKey, charlieKey)
);
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(state)
.addCommand(new ChatContract.Create())
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + OUTPUT_STATE_SHOULD_ONLY_HAVE_TWO_PARTICIPANTS);
}
@Test
public void outputStateMustBeSigned() {
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(outputChatState)
.addCommand(new ChatContract.Create())
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + TRANSACTION_SHOULD_BE_SIGNED_BY_ALL_PARTICIPANTS);
}
@Test
public void outputStateCannotBeSignedByOnlyOneParticipant() {
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(outputChatState)
.addCommand(new ChatContract.Create())
.addSignatories(outputChatState.participants.get(0))
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + TRANSACTION_SHOULD_BE_SIGNED_BY_ALL_PARTICIPANTS);
}
@Test
public void shouldNotIncludeInputState() {
happyPath(); // generate an existing state to search for
StateAndRef<ChatState> existingState = getLedgerService().findUnconsumedStatesByType(ChatState.class).get(0); // doesn't matter which as this will fail validation
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(outputChatState)
.addCommand(new ChatContract.Create())
.addSignatories(outputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + CREATE_COMMAND_SHOULD_HAVE_NO_INPUT_STATES);
}
@Test
public void shouldNotHaveTwoOutputStates() {
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(outputChatState)
.addOutputState(outputChatState)
.addCommand(new ChatContract.Create())
.addSignatories(outputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + CREATE_COMMAND_SHOULD_HAVE_ONLY_ONE_OUTPUT_STATE);
}
}

View File

@ -1,175 +0,0 @@
package com.r3.developers.csdetemplate.utxoexample.contracts;
import com.r3.corda.ledger.utxo.testing.ContractTest;
import com.r3.developers.csdetemplate.utxoexample.states.ChatState;
import net.corda.v5.ledger.utxo.StateAndRef;
import net.corda.v5.ledger.utxo.transaction.UtxoSignedTransaction;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.UUID;
import static com.r3.developers.csdetemplate.utxoexample.contracts.ChatContract.*;
public class ChatContractUpdateCommandTest extends ContractTest {
@SuppressWarnings("unchecked")
private StateAndRef<ChatState> createInitialChatState() {
ChatState outputChatState = new ChatContractCreateCommandTest().outputChatState;
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(outputChatState)
.addCommand(new ChatContract.Create())
.addSignatories(outputChatState.participants)
.toSignedTransaction();
transaction.toLedgerTransaction();
return (StateAndRef<ChatState>) transaction.getOutputStateAndRefs().get(0);
}
@Test
public void happyPath() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState updatedOutputChatState = existingState.getState().getContractState().updateMessage(bobName, "bobResponse");
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants)
.toSignedTransaction();
assertVerifies(transaction);
}
@Test
public void shouldNotHaveNoInputState() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState updatedOutputChatState = existingState.getState().getContractState().updateMessage(bobName, "bobResponse");
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + UPDATE_COMMAND_SHOULD_HAVE_ONLY_ONE_INPUT_STATE);
}
@Test
public void shouldNotHaveTwoInputStates() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState updatedOutputChatState = existingState.getState().getContractState().updateMessage(bobName, "bobResponse");
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + UPDATE_COMMAND_SHOULD_HAVE_ONLY_ONE_INPUT_STATE);
}
@Test
public void shouldNotHaveTwoOutputStates() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState updatedOutputChatState = existingState.getState().getContractState().updateMessage(bobName, "bobResponse");
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + UPDATE_COMMAND_SHOULD_HAVE_ONLY_ONE_OUTPUT_STATE);
}
@Test
public void idShouldNotChange() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState esDetails = existingState.getState().getContractState();
ChatState updatedOutputChatState = new ChatState(
UUID.randomUUID(),
esDetails.getChatName(),
bobName,
"bobResponse",
esDetails.getParticipants()
);
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + UPDATE_COMMAND_ID_SHOULD_NOT_CHANGE);
}
@Test
public void chatNameShouldNotChange() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState esDetails = existingState.getState().getContractState();
ChatState updatedOutputChatState = new ChatState(
esDetails.getId(),
"newName",
bobName,
"bobResponse",
esDetails.getParticipants()
);
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + UPDATE_COMMAND_CHATNAME_SHOULD_NOT_CHANGE);
}
@Test
public void participantsShouldNotChange() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState esDetails = existingState.getState().getContractState();
ChatState updatedOutputChatState = new ChatState(
esDetails.getId(),
esDetails.getChatName(),
bobName,
"bobResponse",
List.of(bobKey, charlieKey)
);
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants)
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + UPDATE_COMMAND_PARTICIPANTS_SHOULD_NOT_CHANGE);
}
@Test
public void outputStateMustBeSigned() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState updatedOutputChatState = existingState.getState().getContractState().updateMessage(bobName, "bobResponse");
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + TRANSACTION_SHOULD_BE_SIGNED_BY_ALL_PARTICIPANTS);
}
@Test
public void outputStateCannotBeSignedByOnlyOneParticipant() {
StateAndRef<ChatState> existingState = createInitialChatState();
ChatState updatedOutputChatState = existingState.getState().getContractState().updateMessage(bobName, "bobResponse");
UtxoSignedTransaction transaction = getLedgerService()
.createTransactionBuilder()
.addInputState(existingState.getRef())
.addOutputState(updatedOutputChatState)
.addCommand(new ChatContract.Update())
.addSignatories(updatedOutputChatState.participants.get(0))
.toSignedTransaction();
assertFailsWith(transaction, "Failed requirement: " + TRANSACTION_SHOULD_BE_SIGNED_BY_ALL_PARTICIPANTS);
}
}

View File

@ -2,20 +2,20 @@ kotlin.code.style=official
# Specify the version of the Corda-API to use.
# This needs to match the version supported by the Corda Cluster the CorDapp will run on.
cordaApiVersion=5.0.0.763-Iguana1.0
cordaApiVersion=5.0.0.765
# Specify the version of the notary plugins to use.
# Currently packaged as part of corda-runtime-os, so should be set to a corda-runtime-os version.
cordaNotaryPluginsVersion=5.0.0.0-Iguana1.0
cordaNotaryPluginsVersion=5.0.0.0
# Specify the version of the Combined Worker to use
combinedWorkerJarVersion=5.0.0.0-Iguana1.0
combinedWorkerJarVersion=5.0.0.0
# Specify the version of the cordapp-cpb and cordapp-cpk plugins
cordaPluginsVersion=7.0.3
# Specify the version of the CSDE gradle plugin to use
csdePluginVersion=1.2.0-alpha-+
csdePluginVersion=1.1.0
# Specify the name of the workflows module
workflowsModule=workflows
@ -34,14 +34,4 @@ kotlin.stdlib.default.dependency=false
junitVersion = 5.8.2
mockitoKotlinVersion=4.0.0
mockitoVersion=4.6.1
hamcrestVersion=2.2
contractTestingVersion=0.9.0-beta-+
# Specify the maximum amount of time allowed for the CPI upload
# As your CorDapp grows you might need to increase this
# Value is in milliseconds
cpiUploadDefault=10000
# R3 internal repository
# Use this version when pointing to artefacts in artifactory that have not been published to S3
artifactoryContextUrl=https://software.r3.com/artifactory
hamcrestVersion=2.2

View File

@ -4,16 +4,6 @@ pluginManagement {
gradlePluginPortal()
mavenCentral()
mavenLocal()
maven {
url = "$artifactoryContextUrl/corda-os-maven"
authentication {
basic(BasicAuthentication)
}
credentials {
username = settings.ext.find('cordaArtifactoryUsername') ?: System.getenv('CORDA_ARTIFACTORY_USERNAME')
password = settings.ext.find('cordaArtifactoryPassword') ?: System.getenv('CORDA_ARTIFACTORY_PASSWORD')
}
}
}
// The plugin dependencies with versions of the plugins congruent with the specified CorDapp plugin version,

View File

@ -40,12 +40,6 @@ dependencies {
// The CorDapp uses the slf4j logging framework. Corda-API provides this so we need a 'cordaProvided' declaration.
cordaProvided 'org.slf4j:slf4j-api'
// This are shared so should be here.
// Dependencies Required By Test Tooling
// Todo: these are commented out as the simulator UTXO work has not been merged into Gecko yet.
// testImplementation "net.corda:corda-simulator-api:$simulatorVersion"
// testRuntimeOnly "net.corda:corda-simulator-runtime:$simulatorVersion"
// 3rd party libraries
// Required
testImplementation "org.slf4j:slf4j-simple:2.0.0"