Skip to content
This repository was archived by the owner on Jan 26, 2022. It is now read-only.

introduce the invitation to connection #16

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.google.gson.annotations.SerializedName;

import java.util.Optional;
import java.util.UUID;

import static java.util.Optional.ofNullable;

Expand All @@ -14,7 +15,12 @@ public class AgentMessage {
@SerializedName("@id")
private String id;

AgentMessage(String type, String id) {
public AgentMessage(String type) {
this.type = type;
this.id = UUID.randomUUID().toString();
}

public AgentMessage(String type, String id) {
this.type = type;
this.id = id;
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.hyperledger.aries.protocols.connections;

import com.google.gson.Gson;
import com.hyperledger.aries.messaging.AgentMessage;

import java.util.List;
import java.util.Optional;

public class ConnectionInvitation extends AgentMessage {
String did;
List<String> recipientKeys;
List<String> routingKeys;
String serviceEndpoint;

ConnectionInvitation(String did) {
super(MessageType.CONNECTION_INVITATION.getMessageType());
this.did = did;
}

ConnectionInvitation(String did, String id) {
super(MessageType.CONNECTION_INVITATION.getMessageType(), id);
this.did = did;
}

ConnectionInvitation(List<String> recipientKeys, String serviceEndpoint, List<String> routingKeys) {
super(MessageType.CONNECTION_INVITATION.getMessageType());
this.recipientKeys = recipientKeys;
this.serviceEndpoint = serviceEndpoint;
this.routingKeys = routingKeys;
}

ConnectionInvitation(List<String> recipientKeys, String serviceEndpoint, List<String> routingKeys, String id) {
super(MessageType.CONNECTION_INVITATION.getMessageType(), id);
this.recipientKeys = recipientKeys;
this.serviceEndpoint = serviceEndpoint;
this.routingKeys = routingKeys;
}

public static Optional<AgentMessage> from(String rawJson) {
try {
ConnectionInvitation message = new Gson().fromJson(rawJson, ConnectionInvitation.class);
return Optional.of(message);

} catch (Exception e) {
// TODO: msg to log
String msg = String.format("failed to parse message. rawJson: %s, err: %s", rawJson, e.getMessage());
}
return Optional.empty();
}

public String getDid() {
return this.did;
}

public List<String> getRecipientKeys() {
return this.recipientKeys;
}

public String getServiceEndpoint() {
return this.serviceEndpoint;
}

public List<String> getRoutingKeys() {
return this.routingKeys;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.hyperledger.aries.protocols.connections;

public enum MessageType {
CONNECTION_INVITATION("https://didcomm.org/connections/1.0/invitation"),
CONNECTION_REQUEST("https://didcomm.org/connections/1.0/request"),
CONNECTION_RESPONSE("https://didcomm.org/connections/1.0/response"),
PROBLEM_REPORT("https://didcomm.org/connections/1.0/problem_report");

String connectionMessageType;

MessageType(String connectionMessageType) {
this.connectionMessageType = connectionMessageType;
}

public String getMessageType() {
return connectionMessageType;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import java.util.Optional;

import static com.hyperledger.aries.messaging.connections.messages.MessageType.CONNECTION_INVITATION;
import static com.hyperledger.aries.protocols.connections.MessageType.CONNECTION_INVITATION;
import static org.junit.Assert.*;

public class AgentMessageTest {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package com.hyperledger.aries.protocols.connections;

import com.hyperledger.aries.messaging.AgentMessage;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

public class ConnectionInvitationTest {
@Test
public void testCreateInvitationWithDid() {
// GIVEN
String expectedDid = "did:sov:QmWbsNYhMrjHiqZDTUTEJs";

// WHEN
ConnectionInvitation actual = new ConnectionInvitation(expectedDid);

// THEN
assertEquals(MessageType.CONNECTION_INVITATION.getMessageType(), actual.getType());
assertEquals(expectedDid, actual.getDid());
}

@Test
public void testCreateInvitationWithDidAndId() {
// GIVEN
String expectedDid = "did:sov:QmWbsNYhMrjHiqZDTUTEJs";
String expectedId = "12345678900987654321";

// WHEN
ConnectionInvitation actual = new ConnectionInvitation(expectedDid, expectedId);

// THEN
assertEquals(MessageType.CONNECTION_INVITATION.getMessageType(), actual.getType());
assertEquals(expectedId, actual.getId());
assertEquals(expectedDid, actual.getDid());
}

@Test
public void testCreateInvitationWithKeys() {
// GIVEN
List<String> recipientKeys = Arrays.asList("8HH5gYEeNc3z7PYXmd54d4x6qAfCNrqQqEB3nS7Zfu7K");
String serviceEndpoint = "https://example.com/endpoint";
List<String> routingKeys = Arrays.asList("8HH5gYEeNc3z7PYXmd54d4x6qAfCNrqQqEB3nS7Zfu7K");

// WHEN
ConnectionInvitation actual = new ConnectionInvitation(recipientKeys, serviceEndpoint, routingKeys);

// THEN
assertEquals(MessageType.CONNECTION_INVITATION.getMessageType(), actual.getType());
assertEquals(recipientKeys, actual.getRecipientKeys());
assertEquals(serviceEndpoint, actual.getServiceEndpoint());
assertEquals(routingKeys, actual.getRoutingKeys());
}

@Test
public void testParseInvitationWithDid() {
// GIVEN
String rawJson = "{\n" +
"\"@type\": \"https://didcomm.org/connections/1.0/invitation\",\n" +
"\"@id\":\"21d4f8b3-2028-4d7e-8fe4-7618c9e9471c\",\n" +
"\"did\": \"did:sov:QmWbsNYhMrjHiqZDTUTEJs\"\n" +
"}";

// WHEN
Optional<AgentMessage> actual = ConnectionInvitation.from(rawJson);

// THEN
assertTrue(actual.isPresent());
assertTrue(actual.get() instanceof ConnectionInvitation);
ConnectionInvitation message = (ConnectionInvitation) actual.get();
assertEquals("https://didcomm.org/connections/1.0/invitation", message.getType());
assertEquals("21d4f8b3-2028-4d7e-8fe4-7618c9e9471c", message.getId());
assertEquals("did:sov:QmWbsNYhMrjHiqZDTUTEJs", message.getDid());
}

@Test
public void testParseInvitationWithKeys() {
// GIVEN
String rawJson = "{\n" +
"\"@type\": \"https://didcomm.org/connections/1.0/invitation\",\n" +
"\"@id\":\"21d4f8b3-2028-4d7e-8fe4-7618c9e9471c\",\n" +
"\"recipientKeys\": [\"8HH5gYEeNc3z7PYXmd54d4x6qAfCNrqQqEB3nS7Zfu7K\"],\n" +
"\"serviceEndpoint\":\"https://example.com/endpoint\",\n" +
"\"routingKeys\": [\"8HH5gYEeNc3z7PYXmd54d4x6qAfCNrqQqEB3nS7Zfu7K\"]\n" +
"}";

// WHEN
Optional<AgentMessage> actual = ConnectionInvitation.from(rawJson);

// THEN
assertTrue(actual.isPresent());
assertTrue(actual.get() instanceof ConnectionInvitation);
ConnectionInvitation message = (ConnectionInvitation) actual.get();
assertEquals("https://didcomm.org/connections/1.0/invitation", message.getType());
assertEquals("21d4f8b3-2028-4d7e-8fe4-7618c9e9471c", message.getId());
assertEquals("8HH5gYEeNc3z7PYXmd54d4x6qAfCNrqQqEB3nS7Zfu7K", message.getRecipientKeys().get(0));
assertEquals("https://example.com/endpoint", message.getServiceEndpoint());
assertEquals("8HH5gYEeNc3z7PYXmd54d4x6qAfCNrqQqEB3nS7Zfu7K", message.getRoutingKeys().get(0));
}
}