* if an FCP error occurs
*/
public CalculatedTrust getIdentityTrust(OwnIdentity ownIdentity, String identifier) throws IOException, FcpException {
- Map<String, String> replies = fcpClient.sendPluginMessage(webOfTrustPluginName, createParameters("Message", "GetIdentity", "TreeOwner", ownIdentity.getIdentifier(), "Identity", identifier));
+ Map<String, String> replies = fcpClient.sendPluginMessage(webOfTrustPluginName, createParameters("Message", "GetIdentity", "Truster", ownIdentity.getIdentifier(), "Identity", identifier));
if (!replies.get("Message").equals("Identity")) {
throw new FcpException("WebOfTrust Plugin did not reply with “Identity” message!");
}
Byte trust = null;
try {
- trust = Byte.valueOf(replies.get("Trust"));
+ trust = Byte.valueOf(replies.get("Trusts.0.Value"));
} catch (NumberFormatException nfe1) {
/* ignore. */
}
Integer score = null;
try {
- score = Integer.valueOf(replies.get("Score"));
+ score = Integer.valueOf(replies.get("Scores.0.Value"));
} catch (NumberFormatException nfe1) {
/* ignore. */
}
Integer rank = null;
try {
- rank = Integer.valueOf(replies.get("Rank"));
+ rank = Integer.valueOf(replies.get("Scores.0.Rank"));
} catch (NumberFormatException nfe1) {
/* ignore. */
}
import java.util.function.BiConsumer;
import java.util.function.Function;
+import static java.util.Collections.emptyMap;
+import static java.util.Collections.emptySet;
import static net.pterodactylus.fcp.test.IdentityMatchers.hasContexts;
import static net.pterodactylus.fcp.test.IdentityMatchers.hasProperties;
import static net.pterodactylus.fcp.test.IdentityMatchers.isOwnIdentity;
assertThrows(FcpException.class, webOfTrustPlugin::getOwnIdentites);
}
+ @Test
+ public void getIdentityTrustSendsCorrectMessage() throws Exception {
+ TestFcpConnection fcpConnection = createConnectionThatDeliversIdentityTrustAndScore();
+ WebOfTrustPlugin webOfTrustPlugin = createWebOfTrustPlugin(fcpConnection);
+ OwnIdentity ownIdentity = new OwnIdentity("own-id", "Own ID", "own-pub", "own-priv", emptySet(), emptyMap());
+ webOfTrustPlugin.getIdentityTrust(ownIdentity, "other-id");
+ assertThat(fcpConnection.sentMessages.get(0), allOf(
+ isNamed(equalTo("FCPPluginMessage")),
+ hasField("Identifier", not(nullValue())),
+ hasField("PluginName", equalTo("plugins.WebOfTrust.WebOfTrust")),
+ hasField("Param.Message", equalTo("GetIdentity")),
+ hasField("Param.Truster", equalTo("own-id")),
+ hasField("Param.Identity", equalTo("other-id"))
+ ));
+ }
+
+ @Test
+ public void getIdentityTrustParsesTrustCorrectly() throws Exception {
+ TestFcpConnection fcpConnection = createConnectionThatDeliversIdentityTrustAndScore();
+ WebOfTrustPlugin webOfTrustPlugin = createWebOfTrustPlugin(fcpConnection);
+ OwnIdentity ownIdentity = new OwnIdentity("own-id", "Own ID", "own-pub", "own-priv", emptySet(), emptyMap());
+ CalculatedTrust calculatedTrust = webOfTrustPlugin.getIdentityTrust(ownIdentity, "other-id");
+ assertThat(calculatedTrust.getTrust(), equalTo((byte) 56));
+ assertThat(calculatedTrust.getScore(), equalTo(56));
+ assertThat(calculatedTrust.getRank(), equalTo(1));
+ }
+
+ private TestFcpConnection createConnectionThatDeliversIdentityTrustAndScore() {
+ return createFcpConnection(message -> (listener, connection) -> {
+ Map<String, String> fields = createWebOfTrustReplyFields("Identity", true,
+ "Identities.Amount", "1",
+ "Identities.0.Type", "Identity", "Identities.0.Nickname", "Nick Name", "Identities.0.ReqestURI", "nick-pub", "Identities.0.ID", "nick-id", "Identities.0.VersionID", "0-0", "Identities.0.PublishesTrustList", "true", "Identities.0.CurrentEditionFetchState", "Fetched",
+ "Identities.0.Contexts.0.Name", "context-1", "Identities.0.Contexts.1.Name", "context-2", "Identities.0.Contexts.Amount", "2",
+ "Identities.0.Properties.0.Name", "prop1", "Identities.0.Properties.0.Value", "value1", "Identities.0.Properties.1.Name", "prop2", "Identities.0.Properties.1.Value", "value2", "Identities.0.Properties.Amount", "2",
+ "Trusts.Amount", "1", "Trusts.0.Truster", "own-id", "Trusts.0.Trustee", "nick-id", "Trusts.0.Value", "56", "Trusts.0.Comment", "some trust", "Trusts.0.TrusterEdition", "123", "Trusts.0.VersionID", "1-1",
+ "Scores.Amount", "1", "Scores.0.Truster", "own-id", "Scores.0.Trustee", "nick-id", "Scores.0.Capacity", "40", "Scores.0.Rank", "1", "Scores.0.Value", "56", "Scores.0.VersionID", "2-2"
+ );
+ FcpMessage replyMessage = createPluginReply(message, fields);
+ listener.receivedFCPPluginReply(connection, new FCPPluginReply(replyMessage, null));
+ });
+ }
+
+ @Test
+ public void getIdentityTrustFailsWhenDifferentReplyIsSentByPlugin() {
+ FcpConnection fcpConnection = createConnectionThatSendsOtherMessage();
+ WebOfTrustPlugin webOfTrustPlugin = createWebOfTrustPlugin(fcpConnection);
+ OwnIdentity ownIdentity = new OwnIdentity("own-id", "Own ID", "own-pub", "own-priv", emptySet(), emptyMap());
+ assertThrows(FcpException.class, () -> webOfTrustPlugin.getIdentityTrust(ownIdentity, "other-id"));
+ }
+
private FcpConnection createConnectionThatSendsOtherMessage() {
return createFcpConnection(message -> (listener, connection) -> {
Map<String, String> fields = createWebOfTrustReplyFields("OtherMessage", true);