@@ -582,11 +582,20 @@ public void testGetStronglyTypedItemByRegisteringType() throws Exception {
582582
583583 this .serverBootstrap .registerHandler (
584584 String .format ("/%s/%s" , projectId , "items/on_roasts" ),
585- (request , response , context ) -> response .setEntity (
586- new InputStreamEntity (
587- this .getClass ().getResourceAsStream ("SampleContentItem.json" )
588- )
589- ));
585+ (request , response , context ) -> {
586+ String uri = String .format ("http://testserver%s" , request .getRequestLine ().getUri ());
587+
588+ List <NameValuePair > nameValuePairs =
589+ URLEncodedUtils .parse (URI .create (uri ), Charset .defaultCharset ());
590+ Assert .assertFalse (nameValuePairs .stream ()
591+ .anyMatch (nameValuePair -> nameValuePair .getName ().equals ("system.type" )));
592+
593+ response .setEntity (
594+ new InputStreamEntity (
595+ this .getClass ().getResourceAsStream ("SampleContentItem.json" )
596+ )
597+ );
598+ });
590599 HttpHost httpHost = this .start ();
591600 DeliveryClient client = new DeliveryClient (projectId );
592601 client .registerType ("article" , ArticleItem .class );
@@ -602,6 +611,90 @@ public void testGetStronglyTypedItemByRegisteringType() throws Exception {
602611 Assert .assertTrue (itemObj instanceof ArticleItem );
603612 }
604613
614+ @ Test
615+ public void testGetStronglyTypedItemAutomaticallyAddsSystemType () throws Exception {
616+ String projectId = "02a70003-e864-464e-b62c-e0ede97deb8c" ;
617+
618+ this .serverBootstrap .registerHandler (
619+ String .format ("/%s/%s" , projectId , "items/on_roasts" ),
620+ (request , response , context ) -> {
621+ String uri = String .format ("http://testserver%s" , request .getRequestLine ().getUri ());
622+
623+ List <NameValuePair > nameValuePairs =
624+ URLEncodedUtils .parse (URI .create (uri ), Charset .defaultCharset ());
625+ Assert .assertEquals (1 , nameValuePairs .stream ()
626+ .filter (nameValuePair -> nameValuePair .getName ().equals ("system.type" ))
627+ .count ());
628+
629+ Map <String , String > params = convertNameValuePairsToMap (nameValuePairs );
630+
631+ Assert .assertTrue (params .containsKey ("system.type" ));
632+ Assert .assertEquals ("article" , params .get ("system.type" ));
633+
634+ response .setEntity (
635+ new InputStreamEntity (
636+ this .getClass ().getResourceAsStream ("SampleContentItem.json" )
637+ )
638+ );
639+ });
640+ HttpHost httpHost = this .start ();
641+ DeliveryClient client = new DeliveryClient (projectId );
642+ client .registerType ("article" , ArticleItem .class );
643+
644+ //modify default baseurl to point to test server, this is private so using reflection
645+ String testServerUri = httpHost .toURI () + "/%s" ;
646+ Field deliveryOptionsField = client .getClass ().getDeclaredField ("deliveryOptions" );
647+ deliveryOptionsField .setAccessible (true );
648+ ((DeliveryOptions ) deliveryOptionsField .get (client )).setProductionEndpoint (testServerUri );
649+
650+ ArticleItem itemObj = client .getItem ("on_roasts" , ArticleItem .class );
651+ Assert .assertNotNull (itemObj );
652+ }
653+
654+ @ Test
655+ public void testGetStronglyTypedItemAutomaticallyDoesNotSentSystemTypeWhenAdded () throws Exception {
656+ String projectId = "02a70003-e864-464e-b62c-e0ede97deb8c" ;
657+
658+ this .serverBootstrap .registerHandler (
659+ String .format ("/%s/%s" , projectId , "items/on_roasts" ),
660+ (request , response , context ) -> {
661+ String uri = String .format ("http://testserver%s" , request .getRequestLine ().getUri ());
662+
663+ List <NameValuePair > nameValuePairs =
664+ URLEncodedUtils .parse (URI .create (uri ), Charset .defaultCharset ());
665+ Assert .assertEquals (1 , nameValuePairs .stream ()
666+ .filter (nameValuePair -> nameValuePair .getName ().equals ("system.type" ))
667+ .count ());
668+ Map <String , String > params = convertNameValuePairsToMap (nameValuePairs );
669+
670+ Assert .assertTrue (params .containsKey ("system.type" ));
671+ Assert .assertEquals ("customVal" , params .get ("system.type" ));
672+
673+ response .setEntity (
674+ new InputStreamEntity (
675+ this .getClass ().getResourceAsStream ("SampleContentItem.json" )
676+ )
677+ );
678+ });
679+ HttpHost httpHost = this .start ();
680+ DeliveryClient client = new DeliveryClient (projectId );
681+ client .registerType ("article" , ArticleItem .class );
682+
683+ //modify default baseurl to point to test server, this is private so using reflection
684+ String testServerUri = httpHost .toURI () + "/%s" ;
685+ Field deliveryOptionsField = client .getClass ().getDeclaredField ("deliveryOptions" );
686+ deliveryOptionsField .setAccessible (true );
687+ ((DeliveryOptions ) deliveryOptionsField .get (client )).setProductionEndpoint (testServerUri );
688+
689+ ArticleItem itemObj = client .getItem (
690+ "on_roasts" ,
691+ ArticleItem .class ,
692+ DeliveryParameterBuilder .params ()
693+ .filterEquals ("system.type" , "customVal" )
694+ .build ());
695+ Assert .assertNotNull (itemObj );
696+ }
697+
605698 @ Test
606699 public void testGetStronglyTypedItemByRegisteringMapping () throws Exception {
607700 String projectId = "02a70003-e864-464e-b62c-e0ede97deb8c" ;
@@ -752,11 +845,22 @@ public void testGetStronglyTypedItems() throws Exception {
752845
753846 this .serverBootstrap .registerHandler (
754847 String .format ("/%s/%s" , projectId , "items" ),
755- (request , response , context ) -> response .setEntity (
756- new InputStreamEntity (
757- this .getClass ().getResourceAsStream ("SampleContentItemList.json" )
758- )
759- ));
848+ (request , response , context ) -> {
849+ String uri = String .format ("http://testserver%s" , request .getRequestLine ().getUri ());
850+
851+ List <NameValuePair > nameValuePairs =
852+ URLEncodedUtils .parse (URI .create (uri ), Charset .defaultCharset ());
853+ Map <String , String > params = convertNameValuePairsToMap (nameValuePairs );
854+
855+ Assert .assertTrue (params .containsKey ("system.type" ));
856+ Assert .assertEquals ("article" , params .get ("system.type" ));
857+
858+ response .setEntity (
859+ new InputStreamEntity (
860+ this .getClass ().getResourceAsStream ("SampleContentItemList.json" )
861+ )
862+ );
863+ });
760864 HttpHost httpHost = this .start ();
761865 DeliveryClient client = new DeliveryClient (projectId );
762866
0 commit comments