use of com.quorum.tessera.p2p.resend.ResendRequest in project tessera by ConsenSys.
the class ResendAllIT method transactionFromSenderDoesNotContainDataOfOtherParties.
@Test
public void transactionFromSenderDoesNotContainDataOfOtherParties() throws UnsupportedEncodingException, SQLException {
// setup (sending in a tx)
Response sendRawResponse = partyOne.getRestClient().target(partyOne.getQ2TUri()).path("/sendraw").request().header("c11n-from", partyOne.getPublicKey()).header("c11n-to", partyTwo.getPublicKey() + "," + partyThree.getPublicKey()).post(Entity.entity(transactionData, MediaType.APPLICATION_OCTET_STREAM));
URI location = sendRawResponse.getLocation();
String hash = sendRawResponse.readEntity(String.class);
final String encodedHash = URLEncoder.encode(hash, UTF_8.toString());
// delete it from a recipient node
final Response deleteReq = partyTwo.getRestClient().target(partyTwo.getQ2TUri()).path("transaction").path(encodedHash).request().delete();
assertThat(deleteReq).isNotNull();
assertThat(deleteReq.getStatus()).isEqualTo(204);
// check it is deleted
final Response deleteCheck = partyTwo.getRestClient().target(partyTwo.getQ2TUri()).path("transaction").path(encodedHash).request().get();
assertThat(deleteCheck).isNotNull();
assertThat(deleteCheck.getStatus()).isEqualTo(404);
// request resend from sender
final ResendRequest req = new ResendRequest();
req.setType(RESEND_ALL_VALUE);
req.setPublicKey(partyTwo.getPublicKey());
final Response resendRequest = vanillaHttpOnlyClient.target(partyOne.getP2PUri()).path(RESEND_PATH).request().buildPost(Entity.entity(req, MediaType.APPLICATION_JSON_TYPE)).invoke();
assertThat(resendRequest).isNotNull();
assertThat(resendRequest.getStatus()).isEqualTo(200);
final String fetch = "SELECT ENCODED_PAYLOAD, PAYLOAD_CODEC FROM ENCRYPTED_TRANSACTION WHERE HASH = ?";
final Connection databaseConnection = PartyHelper.create().findByPublicKey(partyTwo.getPublicKey()).getDatabaseConnection();
try (PreparedStatement statement = databaseConnection.prepareStatement(fetch)) {
statement.setBytes(1, Base64.getDecoder().decode(hash));
try (ResultSet rs = statement.executeQuery()) {
assertThat(rs.next()).isTrue();
final byte[] output = rs.getBytes(1);
final EncodedPayloadCodec codec = EncodedPayloadCodec.valueOf(rs.getString(2));
final PayloadEncoder encoderToUse = PayloadEncoder.create(codec);
final EncodedPayload payload = encoderToUse.decode(output);
assertThat(payload.getRecipientKeys()).hasSize(1);
assertThat(payload.getRecipientKeys().get(0).encodeToBase64()).isEqualTo(partyTwo.getPublicKey());
assertThat(payload.getSenderKey().encodeToBase64()).isEqualTo(partyOne.getPublicKey());
assertThat(payload.getRecipientBoxes()).hasSize(1);
}
}
}
use of com.quorum.tessera.p2p.resend.ResendRequest in project tessera by ConsenSys.
the class ResendIndividualIT method resendTransactionForIncorrectKey.
@Test
public void resendTransactionForIncorrectKey() {
final ResendRequest request = new ResendRequest();
request.setType(RESEND_INDIVIDUAL_VALUE);
request.setKey(this.hash);
Party anyOtherParty = partyHelper.getParties().filter(p -> !p.equals(sender)).filter(p -> !p.equals(recipient)).findAny().get();
request.setPublicKey(anyOtherParty.getPublicKey());
final Response response = vanillaHttpOnlyClient.target(recipient.getP2PUri()).path(RESEND_PATH).request().post(Entity.entity(request, MediaType.APPLICATION_JSON_TYPE));
assertThat(response).isNotNull();
assertThat(response.getStatus()).isEqualTo(500);
assertThat(response.readEntity(String.class)).contains("Recipient " + anyOtherParty.getPublicKey() + " is not a recipient of transaction");
}
use of com.quorum.tessera.p2p.resend.ResendRequest in project tessera by ConsenSys.
the class ResendIndividualIT method resendTransactionWhereKeyIsSender.
@Test
public void resendTransactionWhereKeyIsSender() {
final ResendRequest request = new ResendRequest();
request.setType(RESEND_INDIVIDUAL_VALUE);
request.setKey(this.hash);
request.setPublicKey(sender.getPublicKey());
final Response response = vanillaHttpOnlyClient.target(recipient.getP2PUri()).path(RESEND_PATH).request().post(Entity.entity(request, MediaType.APPLICATION_JSON_TYPE));
assertThat(response).isNotNull();
assertThat(response.getStatus()).isEqualTo(200);
final byte[] returnValue = response.readEntity(byte[].class);
final EncodedPayload payload = ENCODER.decode(returnValue);
assertThat(payload).isNotNull();
assertThat(payload.getRecipientKeys().get(0).encodeToBase64()).isEqualTo(recipient.getPublicKey());
assertThat(payload.getSenderKey().encodeToBase64()).isEqualTo(sender.getPublicKey());
}
Aggregations