use of com.quorum.tessera.enclave.EncodedPayload in project tessera by ConsenSys.
the class PartyInfoResourceTest method validateReturns400IfMessageIsNotUUID.
@Test
public void validateReturns400IfMessageIsNotUUID() {
String message = "I love sparrows";
byte[] payload = message.getBytes();
PublicKey myKey = PublicKey.from("myKey".getBytes());
EncodedPayload encodedPayload = mock(EncodedPayload.class);
when(encodedPayload.getRecipientKeys()).thenReturn(Collections.singletonList(myKey));
when(payloadEncoder.decode(payload)).thenReturn(encodedPayload);
when(enclave.unencryptTransaction(encodedPayload, myKey)).thenReturn(message.getBytes());
Response result = partyInfoResource.validate(payload);
assertThat(result.getStatus()).isEqualTo(400);
assertThat(result.getEntity()).isNull();
verify(payloadEncoder).decode(payload);
verify(enclave).unencryptTransaction(encodedPayload, myKey);
}
use of com.quorum.tessera.enclave.EncodedPayload in project tessera by ConsenSys.
the class RecoveryResourceTest method pushAllowedForStandardPrivate.
@Test
public void pushAllowedForStandardPrivate() {
final byte[] someData = "SomeData".getBytes();
final EncodedPayload payload = mock(EncodedPayload.class);
when(payload.getPrivacyMode()).thenReturn(PrivacyMode.STANDARD_PRIVATE);
when(payloadEncoder.decode(someData)).thenReturn(payload);
final Response result = recoveryResource.push(someData, null);
assertThat(result.getStatus()).isEqualTo(201);
assertThat(result.hasEntity()).isTrue();
verify(transactionManager).storePayload(payload);
verify(payloadEncoder).decode(someData);
payloadEncoderFactoryFunction.verify(() -> PayloadEncoder.create(any(EncodedPayloadCodec.class)));
}
use of com.quorum.tessera.enclave.EncodedPayload in project tessera by ConsenSys.
the class TransactionResourceTest method push.
@Test
public void push() {
final byte[] someData = "SomeData".getBytes();
final EncodedPayload payload = mock(EncodedPayload.class);
when(payloadEncoder.decode(someData)).thenReturn(payload);
final Response result = transactionResource.push(someData, List.of("4.0,5.0"));
assertThat(result.getStatus()).isEqualTo(201);
assertThat(result.hasEntity()).isTrue();
verify(transactionManager).storePayload(payload);
verify(payloadEncoder).decode(someData);
payloadEncoderFactoryFunction.verify(() -> PayloadEncoder.create(any(EncodedPayloadCodec.class)));
}
use of com.quorum.tessera.enclave.EncodedPayload in project tessera by ConsenSys.
the class TransactionResourceTest method resend.
@Test
public void resend() {
ResendRequest resendRequest = new ResendRequest();
resendRequest.setType("ALL");
resendRequest.setPublicKey(Base64.getEncoder().encodeToString("JUNIT".getBytes()));
EncodedPayload payload = mock(EncodedPayload.class);
com.quorum.tessera.recovery.resend.ResendResponse resendResponse = mock(com.quorum.tessera.recovery.resend.ResendResponse.class);
when(resendResponse.getPayload()).thenReturn(payload);
when(legacyResendManager.resend(any(com.quorum.tessera.recovery.resend.ResendRequest.class))).thenReturn(resendResponse);
when(payloadEncoder.encode(payload)).thenReturn("SUCCESS".getBytes());
Response result = transactionResource.resend(resendRequest);
assertThat(result.getStatus()).isEqualTo(200);
assertThat(result.getEntity()).isEqualTo("SUCCESS".getBytes());
verify(payloadEncoder).encode(payload);
verify(legacyResendManager).resend(any(com.quorum.tessera.recovery.resend.ResendRequest.class));
payloadEncoderFactoryFunction.verify(() -> PayloadEncoder.create(any(EncodedPayloadCodec.class)));
}
use of com.quorum.tessera.enclave.EncodedPayload 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);
}
}
}
Aggregations