1212import org .buddycloud .channelserver .packetHandler .iq .TestHandler ;
1313import org .buddycloud .channelserver .packetprocessor .iq .namespace .pubsub .get .RepliesGet ;
1414import org .buddycloud .channelserver .pubsub .model .NodeItem ;
15+ import org .buddycloud .channelserver .pubsub .model .impl .GlobalItemIDImpl ;
1516import org .buddycloud .channelserver .pubsub .model .impl .NodeItemImpl ;
1617import org .dom4j .Element ;
1718
3132public class ValidateEntryTest extends TestHandler {
3233
3334 private ValidateEntry validateEntry ;
34-
35+
3536 private IQ publishRequest ;
3637 private Element publishEntry ;
3738 private IQ replyRequest ;
3839 private Element replyEntry ;
3940 private IQ targetRequest ;
4041 private Element targetEntry ;
41-
42+
4243 private ChannelManager channelManager ;
4344
4445 JID jid = new JID ("juliet@shakespeare.lit/balcony" );
@@ -56,7 +57,7 @@ public void setUp() throws Exception {
5657 targetRequest = readStanzaAsIq ("/iq/pubsub/publish/target.stanza" );
5758 targetEntry = targetRequest .getChildElement ().element ("publish" )
5859 .element ("item" ).element ("entry" );
59-
60+
6061 channelManager = Mockito .mock (ChannelManager .class );
6162
6263 NodeItem item = new NodeItemImpl (node , "1" , new Date (), "<entry/>" );
@@ -306,7 +307,7 @@ public void replyParentItemNotFoundResultsInError() throws Exception {
306307
307308 Element entry = (Element ) this .replyEntry .clone ();
308309 validateEntry = getEntryObject (entry );
309-
310+
310311 Assert .assertFalse (validateEntry .isValid ());
311312 Assert .assertEquals (ValidateEntry .PARENT_ITEM_NOT_FOUND ,
312313 validateEntry .getErrorMessage ());
@@ -322,86 +323,86 @@ public void canNotReplyToAReply() throws Exception {
322323
323324 Element entry = (Element ) this .replyEntry .clone ();
324325 validateEntry = getEntryObject (entry );
325-
326+
326327 Assert .assertFalse (validateEntry .isValid ());
327328 Assert .assertEquals (ValidateEntry .MAX_THREAD_DEPTH_EXCEEDED ,
328329 validateEntry .getErrorMessage ());
329330 }
330-
331+
331332 @ Test
332333 public void targetElementWithoutInReplyToReturnsError () throws Exception {
333-
334+
334335 NodeItem item = new NodeItemImpl (node , "2" , new Date (), "<entry/>" , "1" );
335336 Mockito .when (
336- channelManager .getNodeItem (Mockito .eq (node ),
337- Mockito . eq ( "1" ))) .thenReturn (item );
337+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "1" )))
338+ .thenReturn (item );
338339 Mockito .when (
339- channelManager .getNodeItem (Mockito .eq (node ),
340- Mockito . eq ( "2" ))) .thenReturn (null );
340+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "2" )))
341+ .thenReturn (null );
341342
342343 Element entry = (Element ) this .targetEntry .clone ();
343344
344345 entry .element ("in-reply-to" ).detach ();
345346 validateEntry = getEntryObject (entry );
346-
347+
347348 Assert .assertFalse (validateEntry .isValid ());
348349 Assert .assertEquals (ValidateEntry .IN_REPLY_TO_MISSING ,
349350 validateEntry .getErrorMessage ());
350351 }
351-
352+
352353 @ Test
353354 public void missingTargetIdElementReturnsError () throws Exception {
354-
355+
355356 NodeItem item = new NodeItemImpl (node , "2" , new Date (), "<entry/>" );
356357 Mockito .when (
357- channelManager .getNodeItem (Mockito .eq (node ),
358- Mockito . eq ( "1" ))) .thenReturn (item );
358+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "1" )))
359+ .thenReturn (item );
359360 Mockito .when (
360- channelManager .getNodeItem (Mockito .eq (node ),
361- Mockito . eq ( "2" ))) .thenReturn (null );
361+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "2" )))
362+ .thenReturn (null );
362363
363364 Element entry = (Element ) this .targetEntry .clone ();
364365
365366 entry .element ("target" ).element ("id" ).detach ();
366367 validateEntry = getEntryObject (entry );
367-
368+
368369 Assert .assertFalse (validateEntry .isValid ());
369370 Assert .assertEquals (ValidateEntry .MISSING_TARGET_ID ,
370371 validateEntry .getErrorMessage ());
371372 }
372-
373+
373374 @ Test
374375 public void emptyTargetIdElementReturnsError () throws Exception {
375-
376+
376377 NodeItem item = new NodeItemImpl (node , "2" , new Date (), "<entry/>" );
377378 Mockito .when (
378- channelManager .getNodeItem (Mockito .eq (node ),
379- Mockito . eq ( "1" ))) .thenReturn (item );
379+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "1" )))
380+ .thenReturn (item );
380381 Mockito .when (
381- channelManager .getNodeItem (Mockito .eq (node ),
382- Mockito . eq ( "2" ))) .thenReturn (null );
382+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "2" )))
383+ .thenReturn (null );
383384
384385 Element entry = (Element ) this .targetEntry .clone ();
385386
386387 entry .element ("target" ).element ("id" ).detach ();
387388 entry .element ("target" ).addElement ("id" );
388389 validateEntry = getEntryObject (entry );
389-
390+
390391 Assert .assertFalse (validateEntry .isValid ());
391392 Assert .assertEquals (ValidateEntry .MISSING_TARGET_ID ,
392393 validateEntry .getErrorMessage ());
393394 }
394-
395+
395396 @ Test
396397 public void ifTargetedPostDoesntExistErrorIsReturned () throws Exception {
397-
398+
398399 NodeItem item = new NodeItemImpl (node , "1" , new Date (), "<entry/>" );
399400 Mockito .when (
400- channelManager .getNodeItem (Mockito .eq (node ),
401- Mockito . eq ( "1" ))) .thenReturn (item );
401+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "1" )))
402+ .thenReturn (item );
402403 Mockito .when (
403- channelManager .getNodeItem (Mockito .eq (node ),
404- Mockito . eq ( "2" ))) .thenReturn (null );
404+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "2" )))
405+ .thenReturn (null );
405406
406407 Element entry = (Element ) this .targetEntry .clone ();
407408 validateEntry = getEntryObject (entry );
@@ -410,63 +411,87 @@ public void ifTargetedPostDoesntExistErrorIsReturned() throws Exception {
410411 Assert .assertEquals (ValidateEntry .TARGETED_ITEM_NOT_FOUND ,
411412 validateEntry .getErrorMessage ());
412413 }
413-
414+
414415 @ Test
415- public void ifTargetedPostIsntInSameThreadErrorIsReturnedParentCheck () throws Exception {
416+ public void ifTargetedPostIsntInSameThreadErrorIsReturnedParentCheck ()
417+ throws Exception {
416418 NodeItem item = new NodeItemImpl (node , "1" , new Date (), "<entry/>" );
417419 Mockito .when (
418- channelManager .getNodeItem (Mockito .eq (node ),
419- Mockito . eq ( "1" ))) .thenReturn (item );
420+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "1" )))
421+ .thenReturn (item );
420422 Mockito .when (
421- channelManager .getNodeItem (Mockito .eq (node ),
422- Mockito . eq ( "2" ))) .thenReturn (item );
423+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "2" )))
424+ .thenReturn (item );
423425
424426 Element entry = (Element ) this .targetEntry .clone ();
425427 validateEntry = getEntryObject (entry );
426-
428+
427429 Assert .assertFalse (validateEntry .isValid ());
428430 Assert .assertEquals (ValidateEntry .TARGET_MUST_BE_IN_SAME_THREAD ,
429431 validateEntry .getErrorMessage ());
430432 }
431-
433+
432434 @ Test
433- public void ifTargetedPostIsntInSameThreadErrorIsReturnedThreadCheck () throws Exception {
435+ public void ifTargetedPostIsntInSameThreadErrorIsReturnedThreadCheck ()
436+ throws Exception {
434437
435438 NodeItem item1 = new NodeItemImpl (node , "1" , new Date (), "<entry/>" );
436- NodeItem item2 = new NodeItemImpl (node , "B" , new Date (), "<entry/>" , "A" );
439+ NodeItem item2 = new NodeItemImpl (node , "B" , new Date (), "<entry/>" ,
440+ "A" );
437441 Mockito .when (
438- channelManager .getNodeItem (Mockito .eq (node ),
439- Mockito . eq ( "1" ))) .thenReturn (item1 );
442+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "1" )))
443+ .thenReturn (item1 );
440444 Mockito .when (
441- channelManager .getNodeItem (Mockito .eq (node ),
442- Mockito . eq ( "2" ))) .thenReturn (item2 );
445+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "2" )))
446+ .thenReturn (item2 );
443447
444448 Element entry = (Element ) this .targetEntry .clone ();
445449 entry .element ("target" ).element ("id" ).setText ("B" );
446450 validateEntry = getEntryObject (entry );
447-
451+
448452 Assert .assertFalse (validateEntry .isValid ());
449453 Assert .assertEquals (ValidateEntry .TARGET_MUST_BE_IN_SAME_THREAD ,
450454 validateEntry .getErrorMessage ());
451455 }
452-
453-
456+
454457 @ Test
455- public void ifTargetedIdIsSameAsReplyToIdOnlyOneDatabaseLookupPerformed () throws Exception {
458+ public void ifTargetedIdIsSameAsReplyToIdOnlyOneDatabaseLookupPerformed ()
459+ throws Exception {
456460 NodeItem item = new NodeItemImpl (node , "1" , new Date (), "<entry/>" );
457461 Mockito .when (
458- channelManager .getNodeItem (Mockito .eq (node ),
459- Mockito . eq ( "1" ))) .thenReturn (item );
462+ channelManager .getNodeItem (Mockito .eq (node ), Mockito . eq ( "1" )))
463+ .thenReturn (item );
460464
461465 Element entry = (Element ) this .targetEntry .clone ();
462466 entry .element ("target" ).element ("id" ).setText ("1" );
463-
467+
464468 validateEntry = getEntryObject (entry );
465-
469+
466470 validateEntry .isValid ();
467-
468- Mockito .verify (channelManager , Mockito .times (1 )).getNodeItem (Mockito .eq (node ),
469- Mockito .eq ("1" ));
471+
472+ Mockito .verify (channelManager , Mockito .times (1 )).getNodeItem (
473+ Mockito .eq (node ), Mockito .eq ("1" ));
474+ }
475+
476+ @ Test
477+ public void targetElementGetsAddedAsExpected () throws Exception {
478+
479+ NodeItem item = new NodeItemImpl (node , "1" , new Date (), "<entry/>" );
480+ Mockito .when (
481+ channelManager .getNodeItem (Mockito .eq (node ), Mockito .eq ("1" )))
482+ .thenReturn (item );
483+
484+ Element entry = (Element ) this .targetEntry .clone ();
485+ entry .element ("target" ).element ("id" ).setText ("1" );
486+
487+ validateEntry = getEntryObject (entry );
488+
489+ Assert .assertTrue (validateEntry .isValid ());
490+
491+ Element payload = validateEntry .getPayload ();
492+
493+ String expectedId = "tag:channels.shakespeare.lit,/users/romeo@shakespeare.lit/posts,1" ;
494+ Assert .assertEquals (expectedId ,
495+ payload .element ("target" ).elementText ("id" ));
470496 }
471-
472497}
0 commit comments