Skip to content

Commit a778d07

Browse files
author
Lloyd Watkin
committed
Prevent 'liking a like'
1 parent 538c5a4 commit a778d07

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/main/java/org/buddycloud/channelserver/channel/ValidateEntry.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class ValidateEntry {
6363
private String node;
6464
private ChannelManager channelManager;
6565
private NodeItem replyingToItem;
66+
private NodeItem targetItem;
6667

6768
Map<String, String> params = new HashMap<String, String>();
6869

@@ -247,7 +248,6 @@ public Element getPayload() {
247248
Element activityObject = entry.addElement("activity:object");
248249
activityObject.addElement("activity:object-type").setText(postType);
249250

250-
251251
return entry;
252252
}
253253

@@ -305,7 +305,6 @@ private boolean validateTargetElement(Element target)
305305
if (true == GlobalItemIDImpl.isGlobalId(targetId)) {
306306
targetId = GlobalItemIDImpl.toLocalId(targetId);
307307
}
308-
NodeItem targetItem;
309308
if (true == targetId.equals(replyingToItem.getId())) {
310309
targetItem = replyingToItem;
311310
} else {
@@ -338,6 +337,10 @@ private boolean validateRatingElement(Element rating) {
338337
this.errorMessage = TARGET_ELEMENT_MISSING;
339338
return false;
340339
}
340+
if (targetItem.getPayload().indexOf(NS_REVIEW) > -1) {
341+
this.errorMessage = CAN_ONLY_RATE_A_POST;
342+
return false;
343+
}
341344
try {
342345
double itemRatingFloat = Double.parseDouble(rating.getTextTrim());
343346
if (itemRatingFloat != Math.floor(itemRatingFloat)) {

src/test/java/org/buddycloud/channelserver/channel/ValidateEntryTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,5 +613,23 @@ public void postContentGetsReplacedWithRating() throws Exception {
613613

614614
Assert.assertEquals(expectedContent, payload.elementText("content"));
615615
}
616+
617+
@Test
618+
public void canNotRateARating() throws Exception {
619+
String testPayload = "<entry xmlns=\"http://www.w3.org/2005/Atom\" " +
620+
"xmlns:review=\"http://activitystrea.ms/schema/1.0/review\">" +
621+
"<review:rating>5.0</review:rating></entry>";
622+
NodeItem item = new NodeItemImpl(node, "1", new Date(), testPayload);
623+
Mockito.when(
624+
channelManager.getNodeItem(Mockito.eq(node),
625+
Mockito.anyString())).thenReturn(item);
626+
627+
Element entry = (Element) this.ratingEntry.clone();
628+
entry.element("target").element("id").setText("1");
629+
validateEntry = getEntryObject(entry);
630+
631+
Assert.assertFalse(validateEntry.isValid());
632+
Assert.assertEquals(ValidateEntry.CAN_ONLY_RATE_A_POST, validateEntry.getErrorMessage());
633+
}
616634

617635
}

0 commit comments

Comments
 (0)