Search in sources :

Example 36 with SendResponse

use of com.quorum.tessera.api.SendResponse in project tessera by ConsenSys.

the class ReceiveRawIT method beforeTest.

// Persist a single transaction that can be used later
@Before
public void beforeTest() {
    this.partyOne = partyHelper.findByAlias(NodeAlias.A);
    this.partyTwo = partyHelper.findByAlias(NodeAlias.B);
    SendRequest sendRequest = new SendRequest();
    sendRequest.setPayload(PAYLOAD);
    sendRequest.setTo(partyTwo.getPublicKey());
    sendRequest.setFrom(partyOne.getPublicKey());
    final Response response = partyOne.getRestClient().target(partyOne.getQ2TUri()).path("/send").request().post(Entity.entity(sendRequest, MediaType.APPLICATION_JSON));
    final SendResponse result = response.readEntity(SendResponse.class);
    this.hash = result.getKey();
}
Also used : Response(jakarta.ws.rs.core.Response) SendResponse(com.quorum.tessera.api.SendResponse) SendRequest(com.quorum.tessera.api.SendRequest) SendResponse(com.quorum.tessera.api.SendResponse) Before(org.junit.Before)

Example 37 with SendResponse

use of com.quorum.tessera.api.SendResponse in project tessera by ConsenSys.

the class SendIT method partyAlwaysSendsToPartyOne.

/**
 * config3.json has party 1's key in always send to list
 */
@Test
public void partyAlwaysSendsToPartyOne() {
    Party sender = partyHelper.findByAlias("C");
    Party recipient = partyHelper.findByAlias("D");
    byte[] transactionData = utils.createTransactionData();
    final SendRequest sendRequest = new SendRequest();
    sendRequest.setFrom(sender.getPublicKey());
    sendRequest.setTo(recipient.getPublicKey());
    sendRequest.setPayload(transactionData);
    final Response response = sender.getRestClient().target(sender.getQ2TUri()).path(SEND_PATH).request().post(Entity.entity(sendRequest, MediaType.APPLICATION_JSON));
    final SendResponse result = response.readEntity(SendResponse.class);
    assertThat(result.getKey()).isNotNull().isNotBlank();
    // Party one recieved by always send to
    utils.findTransaction(result.getKey(), sender, recipient, partyHelper.findByAlias("A")).forEach(r -> {
        assertThat(r.getStatus()).isEqualTo(200);
    });
    // Party 2 is out of the loop
    utils.findTransaction(result.getKey(), partyHelper.findByAlias("B")).forEach(r -> {
        assertThat(r.getStatus()).isEqualTo(404);
    });
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) SendResponse(com.quorum.tessera.api.SendResponse) Test(org.junit.Test)

Example 38 with SendResponse

use of com.quorum.tessera.api.SendResponse in project tessera by ConsenSys.

the class SendIT method firstPartyForwardsToTwoOtherParties.

/**
 * Quorum sends transaction with multiple public recipient keys
 */
@Test
public void firstPartyForwardsToTwoOtherParties() {
    final Party sendingParty = partyHelper.findByAlias("A");
    final Party secondParty = partyHelper.findByAlias("B");
    final Party thirdParty = partyHelper.findByAlias("D");
    final Party excludedParty = partyHelper.findByAlias("C");
    final byte[] transactionData = utils.createTransactionData();
    final SendRequest sendRequest = new SendRequest();
    sendRequest.setFrom(sendingParty.getPublicKey());
    sendRequest.setTo(secondParty.getPublicKey(), thirdParty.getPublicKey());
    sendRequest.setPayload(transactionData);
    final Response response = sendingParty.getRestClient().target(sendingParty.getQ2TUri()).path(SEND_PATH).request().post(Entity.entity(sendRequest, MediaType.APPLICATION_JSON));
    // 
    final SendResponse result = response.readEntity(SendResponse.class);
    assertThat(result.getKey()).isNotNull().isNotBlank();
    assertThat(response).isNotNull();
    assertThat(response.getStatus()).isEqualTo(201);
    URI location = response.getLocation();
    final Response checkPersistedTxnResponse = secondParty.getRestClient().target(location).request().get();
    assertThat(checkPersistedTxnResponse.getStatus()).isEqualTo(200);
    ReceiveResponse receiveResponse = checkPersistedTxnResponse.readEntity(ReceiveResponse.class);
    assertThat(receiveResponse.getPayload()).isEqualTo(transactionData);
    utils.findTransaction(result.getKey(), sendingParty, secondParty, thirdParty).forEach(r -> {
        assertThat(r.getStatus()).isEqualTo(200);
    });
    utils.findTransaction(result.getKey(), excludedParty).forEach(r -> {
        assertThat(r.getStatus()).isEqualTo(404);
    });
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) SendResponse(com.quorum.tessera.api.SendResponse) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) URI(java.net.URI) Test(org.junit.Test)

Example 39 with SendResponse

use of com.quorum.tessera.api.SendResponse in project tessera by ConsenSys.

the class SendIT method sendTransactionWithoutASender.

@Test
public void sendTransactionWithoutASender() {
    Party recipient = partyHelper.getParties().findAny().get();
    byte[] transactionData = utils.createTransactionData();
    final SendRequest sendRequest = new SendRequest();
    sendRequest.setTo(recipient.getPublicKey());
    sendRequest.setPayload(transactionData);
    final Response response = recipient.getRestClient().target(recipient.getQ2TUri()).path(SEND_PATH).request().post(Entity.entity(sendRequest, MediaType.APPLICATION_JSON));
    final SendResponse result = response.readEntity(SendResponse.class);
    assertThat(result.getKey()).isNotNull().isNotBlank();
    assertThat(response).isNotNull();
    assertThat(response.getStatus()).isEqualTo(201);
    URI location = response.getLocation();
    final Response checkPersistedTxnResponse = recipient.getRestClient().target(location).request().get();
    assertThat(checkPersistedTxnResponse.getStatus()).isEqualTo(200);
    ReceiveResponse receiveResponse = checkPersistedTxnResponse.readEntity(ReceiveResponse.class);
    assertThat(receiveResponse.getPayload()).isEqualTo(transactionData);
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) SendResponse(com.quorum.tessera.api.SendResponse) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) URI(java.net.URI) Test(org.junit.Test)

Example 40 with SendResponse

use of com.quorum.tessera.api.SendResponse in project tessera by ConsenSys.

the class SendReceiveBesuIT method sendAndReceivePrivacyFor.

@Test
public void sendAndReceivePrivacyFor() throws InterruptedException {
    final Party a = partyHelper.findByAlias("A");
    final Party d = partyHelper.findByAlias("D");
    byte[] transactionData = utils.createTransactionData();
    final SendRequest sendRequest = new SendRequest();
    sendRequest.setPayload(transactionData);
    sendRequest.setTo(d.getPublicKey());
    final Response response = client.target(a.getQ2TUri()).path("/send").request().post(Entity.entity(sendRequest, MediaType.APPLICATION_JSON));
    assertThat(response).isNotNull();
    assertThat(response.getStatus()).isEqualTo(200);
    final SendResponse result = response.readEntity(SendResponse.class);
    final String hash = result.getKey();
    // Hash length = 32 bytes
    assertThat(Base64.getDecoder().decode(hash)).hasSize(32);
    String findOutput = privacyGroupTestUtil.find("A", "A", "D");
    final JsonArray json = Json.createReader(new StringReader(findOutput)).readArray();
    Optional<JsonObject> legacyGroup = json.getValuesAs(JsonObject.class).stream().filter(v -> v.getString("type").equals("LEGACY")).findAny();
    // Legacy privacy group was created
    assertThat(legacyGroup).isPresent();
    final String groupId = legacyGroup.get().getString("privacyGroupId");
    ReceiveRequest receiveRequest = new ReceiveRequest();
    receiveRequest.setKey(hash);
    final Response receiveResponse = client.target(a.getQ2TUri()).path("/receive").request().post(Entity.entity(receiveRequest, MediaType.APPLICATION_JSON));
    // validate result
    assertThat(receiveResponse).isNotNull();
    assertThat(receiveResponse.getStatus()).isEqualTo(200);
    final ReceiveResponse receiveResult = receiveResponse.readEntity(ReceiveResponse.class);
    assertThat(receiveResult.getPayload()).isEqualTo(transactionData);
    assertThat(receiveResult.getSenderKey()).isEqualTo(a.getPublicKey());
    assertThat(receiveResult.getPrivacyGroupId()).isEqualTo(groupId);
    final Response receiveResponseOnB = client.target(d.getQ2TUri()).path("/receive").request().post(Entity.entity(receiveRequest, MediaType.APPLICATION_JSON));
    // validate result
    assertThat(receiveResponseOnB).isNotNull();
    assertThat(receiveResponseOnB.getStatus()).isEqualTo(200);
    final ReceiveResponse receiveResultOnB = receiveResponseOnB.readEntity(ReceiveResponse.class);
    assertThat(receiveResultOnB.getPayload()).isEqualTo(transactionData);
    assertThat(receiveResultOnB.getSenderKey()).isEqualTo(a.getPublicKey());
    assertThat(receiveResultOnB.getPrivacyGroupId()).isEqualTo(groupId);
}
Also used : Client(jakarta.ws.rs.client.Client) SendResponse(com.quorum.tessera.api.SendResponse) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Test(org.junit.Test) PartyHelper(com.quorum.tessera.test.PartyHelper) Json(jakarta.json.Json) Entity(jakarta.ws.rs.client.Entity) ReceiveRequest(com.quorum.tessera.api.ReceiveRequest) Response(jakarta.ws.rs.core.Response) Base64(java.util.Base64) SendRequest(com.quorum.tessera.api.SendRequest) MediaType(jakarta.ws.rs.core.MediaType) StringReader(java.io.StringReader) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) JsonObject(jakarta.json.JsonObject) Optional(java.util.Optional) Party(com.quorum.tessera.test.Party) JsonArray(jakarta.json.JsonArray) ClientBuilder(jakarta.ws.rs.client.ClientBuilder) SendRequest(com.quorum.tessera.api.SendRequest) SendResponse(com.quorum.tessera.api.SendResponse) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) JsonObject(jakarta.json.JsonObject) SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) JsonArray(jakarta.json.JsonArray) Party(com.quorum.tessera.test.Party) StringReader(java.io.StringReader) ReceiveRequest(com.quorum.tessera.api.ReceiveRequest) Test(org.junit.Test)

Aggregations

SendResponse (com.quorum.tessera.api.SendResponse)41 Response (jakarta.ws.rs.core.Response)38 SendRequest (com.quorum.tessera.api.SendRequest)32 Test (org.junit.Test)29 Party (com.quorum.tessera.test.Party)20 ReceiveResponse (com.quorum.tessera.api.ReceiveResponse)19 MessageHash (com.quorum.tessera.data.MessageHash)16 PublicKey (com.quorum.tessera.encryption.PublicKey)16 URI (java.net.URI)15 ReceiveResponse (com.quorum.tessera.transaction.ReceiveResponse)10 SendSignedRequest (com.quorum.tessera.api.SendSignedRequest)9 PrivacyGroup (com.quorum.tessera.enclave.PrivacyGroup)6 PrivacyMode (com.quorum.tessera.enclave.PrivacyMode)4 PartyHelper (com.quorum.tessera.test.PartyHelper)4 URLEncoder (java.net.URLEncoder)4 StandardCharsets (java.nio.charset.StandardCharsets)4 Stream (java.util.stream.Stream)4 RestUtils (com.quorum.tessera.test.rest.RestUtils)3 MIME_TYPE_JSON_2_1 (com.quorum.tessera.version.MultiTenancyVersion.MIME_TYPE_JSON_2_1)3 Operation (io.swagger.v3.oas.annotations.Operation)3