use of com.quorum.tessera.api.SendRequest in project tessera by ConsenSys.
the class PrivacyIT method sendContractCreationTransaction.
private String sendContractCreationTransaction(PrivacyMode privacyMode) {
Party sender = partyHelper.findByAlias(NodeAlias.A);
SendRequest sendRequest = new SendRequest();
sendRequest.setPayload(new RestUtils().createTransactionData());
sendRequest.setFrom(sender.getPublicKey());
List<String> recipientList = List.of(partyHelper.findByAlias(NodeAlias.B).getPublicKey());
sendRequest.setTo(recipientList.toArray(new String[recipientList.size()]));
sendRequest.setPrivacyFlag(privacyMode.getPrivacyFlag());
sendRequest.setAffectedContractTransactions(new String[0]);
if (privacyMode == PrivacyMode.PRIVATE_STATE_VALIDATION) {
sendRequest.setExecHash("execHash");
}
Response response = sender.getRestClientWebTarget().path("send").request().post(Entity.entity(sendRequest, MIME_TYPE_JSON_2_1));
assertThat(response.getStatus()).isEqualTo(201);
final SendResponse result = response.readEntity(SendResponse.class);
return result.getKey();
}
use of com.quorum.tessera.api.SendRequest in project tessera by ConsenSys.
the class ReceiveIT method beforeTest.
// Persist a single transaction that can be used later
@Before
public void beforeTest() throws UnsupportedEncodingException {
final PartyHelper partyHelper = PartyHelper.create();
partyOne = partyHelper.findByAlias("A");
partyTwo = partyHelper.findByAlias("B");
SendRequest sendRequest = new SendRequest();
sendRequest.setFrom(partyOne.getPublicKey());
sendRequest.setTo(partyTwo.getPublicKey());
sendRequest.setPayload(transactionData);
final Response response = partyOne.getRestClient().target(partyOne.getQ2TUri()).path("/send").request().post(Entity.entity(sendRequest, MIME_TYPE_JSON_2_1));
assertThat(response.getStatus()).isEqualTo(201);
final SendResponse result = response.readEntity(SendResponse.class);
final String hash = result.getKey();
this.encodedHash = URLEncoder.encode(hash, UTF_8.toString());
this.encodedSender = URLEncoder.encode(partyOne.getPublicKey(), UTF_8.toString());
this.encodedRecipient = URLEncoder.encode(partyTwo.getPublicKey(), UTF_8.toString());
}
use of com.quorum.tessera.api.SendRequest in project tessera by ConsenSys.
the class SendIT method sendToUnknownPublicKey.
/**
* Quorum sends transaction to unknown public key
*/
@Test
public void sendToUnknownPublicKey() {
Party sendingParty = partyHelper.getParties().findAny().get();
byte[] transactionData = utils.createTransactionData();
final SendRequest sendRequest = new SendRequest();
sendRequest.setFrom(sendingParty.getPublicKey());
ExecutionContext executionContext = ExecutionContext.currentContext();
final String unknownkey = generateValidButUnknownPublicKey(executionContext.getEncryptorType()).encodeToBase64();
sendRequest.setTo(unknownkey);
sendRequest.setPayload(transactionData);
final Response response = sendingParty.getRestClient().target(sendingParty.getQ2TUri()).path(SEND_PATH).request().post(Entity.entity(sendRequest, MIME_TYPE_JSON_2_1));
assertThat(response).isNotNull();
assertThat(response.getStatus()).isEqualTo(404);
}
use of com.quorum.tessera.api.SendRequest in project tessera by ConsenSys.
the class SendIT method sendTransactionWithMissingRecipients.
@Test
public void sendTransactionWithMissingRecipients() {
final Party sendingParty = partyHelper.getParties().findAny().get();
final byte[] transactionData = utils.createTransactionData();
final SendRequest sendRequest = new SendRequest();
sendRequest.setFrom(sendingParty.getPublicKey());
sendRequest.setPayload(transactionData);
final Response response = sendingParty.getRestClient().target(sendingParty.getQ2TUri()).path(SEND_PATH).request().post(Entity.entity(sendRequest, MIME_TYPE_JSON_2_1));
final SendResponse result = response.readEntity(SendResponse.class);
assertThat(result.getKey()).isNotNull().isNotBlank();
assertThat(result.getManagedParties()).containsExactlyInAnyOrder(sendingParty.getPublicKey());
assertThat(result.getSenderKey()).isEqualTo(sendingParty.getPublicKey());
assertThat(response).isNotNull();
assertThat(response.getStatus()).isEqualTo(201);
URI location = response.getLocation();
final Response checkPersistedTxnResponse = sendingParty.getRestClient().target(location).request().get();
assertThat(checkPersistedTxnResponse.getStatus()).isEqualTo(200);
ReceiveResponse receiveResponse = checkPersistedTxnResponse.readEntity(ReceiveResponse.class);
assertThat(receiveResponse.getPayload()).isEqualTo(transactionData);
if (!sendingParty.getConfig().getServerConfigs().stream().anyMatch(ServerConfig::isUnixSocket)) {
assertThat(location.getHost()).isEqualTo(sendingParty.getQ2TUri().getHost());
assertThat(location.getPort()).isEqualTo(sendingParty.getQ2TUri().getPort());
}
}
use of com.quorum.tessera.api.SendRequest in project tessera by ConsenSys.
the class SendIT method senderAndRecipientOnSameNode.
@Test
public void senderAndRecipientOnSameNode() throws UnsupportedEncodingException {
// Node C has 2 keys, use them both
final String[] recipientPublicKeys = ExecutionContext.currentContext().getConfigs().stream().filter(c -> c.getAlias() == NodeAlias.C).findFirst().map(ConfigDescriptor::getAllKeys).get().stream().map(ConfigKeyPair::getPublicKey).toArray(String[]::new);
final Party party = partyHelper.findByAlias(NodeAlias.C);
final byte[] transactionData = utils.createTransactionData();
final SendRequest sendRequest = new SendRequest();
sendRequest.setFrom(recipientPublicKeys[0]);
sendRequest.setTo(recipientPublicKeys[1]);
sendRequest.setPayload(transactionData);
final Response response = party.getRestClient().target(party.getQ2TUri()).path(SEND_PATH).request().post(Entity.entity(sendRequest, MIME_TYPE_JSON_2_1));
final SendResponse result = response.readEntity(SendResponse.class);
assertThat(result.getKey()).isNotNull().isNotBlank();
assertThat(result.getManagedParties()).containsExactlyInAnyOrder(recipientPublicKeys);
assertThat(result.getSenderKey()).isEqualTo(recipientPublicKeys[0]);
assertThat(response).isNotNull();
assertThat(response.getStatus()).isEqualTo(201);
URI location = response.getLocation();
{
final Response checkPersistedTxnResponse = party.getRestClient().target(location).request().accept(MIME_TYPE_JSON_2_1).get();
assertThat(checkPersistedTxnResponse.getStatus()).isEqualTo(200);
ReceiveResponse receiveResponse = checkPersistedTxnResponse.readEntity(ReceiveResponse.class);
assertThat(receiveResponse.getPayload()).isEqualTo(transactionData);
assertThat(receiveResponse.getManagedParties()).containsExactlyInAnyOrder(recipientPublicKeys);
}
{
String encodedId = URLEncoder.encode(result.getKey(), StandardCharsets.UTF_8.toString());
Stream.of(party).map(Party::getRestClientWebTarget).map(target -> target.path("transaction")).map(target -> target.path(encodedId)).map(target -> target.request().accept(MIME_TYPE_JSON_2_1).get()).forEach(r -> {
assertThat(r.getStatus()).isEqualTo(200);
ReceiveResponse receiveResponse = r.readEntity(ReceiveResponse.class);
assertThat(receiveResponse.getManagedParties()).containsExactlyInAnyOrder(recipientPublicKeys);
assertThat(receiveResponse.getSenderKey()).isEqualTo(recipientPublicKeys[0]);
});
}
}
Aggregations