7676import static org .mockito .Mock .Strictness .LENIENT ;
7777import static org .mockito .Mockito .eq ;
7878import static org .mockito .Mockito .never ;
79+ import static org .mockito .Mockito .times ;
7980import static org .mockito .Mockito .verify ;
8081import static org .mockito .Mockito .verifyNoInteractions ;
8182
@@ -916,6 +917,22 @@ public void cachePutObjectsShouldCacheObjectsWithTtlDefinedAsMinBetweenRequestAn
916917 .value (new TextNode ("VAST" ))
917918 .ttlseconds (101 )
918919 .build ();
920+ final BidPutObject fourthBidPutObject = BidPutObject .builder ()
921+ .type ("json" )
922+ .bidid ("bidId4" )
923+ .bidder ("bidder4" )
924+ .timestamp (1L )
925+ .value (new TextNode ("VAST" ))
926+ .ttlseconds (-100 )
927+ .build ();
928+ final BidPutObject fifthBidPutObject = BidPutObject .builder ()
929+ .type ("xml" )
930+ .bidid ("bidId4" )
931+ .bidder ("bidder4" )
932+ .timestamp (1L )
933+ .value (new TextNode ("VAST" ))
934+ .ttlseconds (0 )
935+ .build ();
919936
920937 given (vastModifier .modifyVastXml (any (), any (), any (), any (), anyString ()))
921938 .willReturn (new TextNode ("modifiedVast" ))
@@ -924,11 +941,16 @@ public void cachePutObjectsShouldCacheObjectsWithTtlDefinedAsMinBetweenRequestAn
924941
925942 given (httpClient .post (anyString (), any (), any (), anyLong ())).willReturn (Future .succeededFuture (
926943 HttpClientResponse .of (200 , null , mapper .writeValueAsString (BidCacheResponse .of (
927- List .of (CacheObject .of ("uuid1" ), CacheObject .of ("uuid2" ), CacheObject .of ("uuid3" )))))));
944+ List .of (
945+ CacheObject .of ("uuid1" ),
946+ CacheObject .of ("uuid2" ),
947+ CacheObject .of ("uuid3" ),
948+ CacheObject .of ("uuid4" ),
949+ CacheObject .of ("uuid5" )))))));
928950
929951 // when
930952 target .cachePutObjects (
931- asList (firstBidPutObject , secondBidPutObject , thirdBidPutObject ),
953+ asList (firstBidPutObject , secondBidPutObject , thirdBidPutObject , fourthBidPutObject , fifthBidPutObject ),
932954 true ,
933955 singleton ("bidder1" ),
934956 "account" ,
@@ -942,15 +964,21 @@ public void cachePutObjectsShouldCacheObjectsWithTtlDefinedAsMinBetweenRequestAn
942964 verify (metrics ).updateCacheCreativeSize (eq ("account" ), eq (12 ), eq (MetricName .json ));
943965 verify (metrics ).updateCacheCreativeSize (eq ("account" ), eq (4 ), eq (MetricName .xml ));
944966 verify (metrics ).updateCacheCreativeSize (eq ("account" ), eq (11 ), eq (MetricName .unknown ));
967+ verify (metrics ).updateCacheCreativeSize (eq ("account" ), eq (12 ), eq (MetricName .json ));
968+ verify (metrics ).updateCacheCreativeSize (eq ("account" ), eq (4 ), eq (MetricName .xml ));
945969
946970 verify (metrics ).updateCacheCreativeTtl (eq ("account" ), eq (99 ), eq (MetricName .json ));
947- verify (metrics ).updateCacheCreativeTtl (eq ("account" ), eq (100 ), eq (MetricName .xml ));
971+ verify (metrics , times ( 2 ) ).updateCacheCreativeTtl (eq ("account" ), eq (100 ), eq (MetricName .xml ));
948972 verify (metrics ).updateCacheCreativeTtl (eq ("account" ), eq (100 ), eq (MetricName .unknown ));
973+ verify (metrics ).updateCacheCreativeTtl (eq ("account" ), eq (100 ), eq (MetricName .json ));
949974
950975 verify (metrics ).updateVtrackCacheWriteRequestTime (eq ("account" ), anyLong (), eq (MetricName .ok ));
951976
952977 verify (vastModifier ).modifyVastXml (true , singleton ("bidder1" ), firstBidPutObject , "account" , "pbjs" );
953978 verify (vastModifier ).modifyVastXml (true , singleton ("bidder1" ), secondBidPutObject , "account" , "pbjs" );
979+ verify (vastModifier ).modifyVastXml (true , singleton ("bidder1" ), thirdBidPutObject , "account" , "pbjs" );
980+ verify (vastModifier ).modifyVastXml (true , singleton ("bidder1" ), fourthBidPutObject , "account" , "pbjs" );
981+ verify (vastModifier ).modifyVastXml (true , singleton ("bidder1" ), fifthBidPutObject , "account" , "pbjs" );
954982
955983 final BidPutObject modifiedFirstBidPutObject = firstBidPutObject .toBuilder ()
956984 .bidid (null )
@@ -972,9 +1000,156 @@ public void cachePutObjectsShouldCacheObjectsWithTtlDefinedAsMinBetweenRequestAn
9721000 .value (new TextNode ("updatedVast" ))
9731001 .ttlseconds (100 )
9741002 .build ();
1003+ final BidPutObject modifiedFourthBidPutObject = fourthBidPutObject .toBuilder ()
1004+ .bidid (null )
1005+ .bidder (null )
1006+ .timestamp (null )
1007+ .value (new TextNode ("updatedVast" ))
1008+ .ttlseconds (100 )
1009+ .build ();
1010+ final BidPutObject modifiedFifthBidPutObject = fifthBidPutObject .toBuilder ()
1011+ .bidid (null )
1012+ .bidder (null )
1013+ .timestamp (null )
1014+ .value (new TextNode ("updatedVast" ))
1015+ .ttlseconds (100 )
1016+ .build ();
9751017
976- assertThat (captureBidCacheRequest ().getPuts ())
977- .containsExactly (modifiedFirstBidPutObject , modifiedSecondBidPutObject , modifiedThirdBidPutObject );
1018+ assertThat (captureBidCacheRequest ().getPuts ()).containsExactly (
1019+ modifiedFirstBidPutObject ,
1020+ modifiedSecondBidPutObject ,
1021+ modifiedThirdBidPutObject ,
1022+ modifiedFourthBidPutObject ,
1023+ modifiedFifthBidPutObject );
1024+ }
1025+
1026+ @ Test
1027+ public void cachePutObjectsShouldCacheObjectsWithTtlDefinedAsPutObjectTtlWhenAccountTtlIsNegative ()
1028+ throws IOException {
1029+
1030+ // given
1031+ final BidPutObject bidObject = BidPutObject .builder ()
1032+ .type ("json" )
1033+ .bidid ("bidId1" )
1034+ .bidder ("bidder1" )
1035+ .timestamp (1L )
1036+ .value (new TextNode ("vast" ))
1037+ .ttlseconds (100 )
1038+ .build ();
1039+
1040+ given (vastModifier .modifyVastXml (any (), any (), any (), any (), anyString ()))
1041+ .willReturn (new TextNode ("modifiedVast" ));
1042+
1043+ given (httpClient .post (anyString (), any (), any (), anyLong ())).willReturn (Future .succeededFuture (
1044+ HttpClientResponse .of (200 , null , mapper .writeValueAsString (BidCacheResponse .of (
1045+ List .of (CacheObject .of ("uuid1" )))))));
1046+
1047+ // when
1048+ target .cachePutObjects (
1049+ singletonList (bidObject ),
1050+ true ,
1051+ singleton ("bidder1" ),
1052+ "account" ,
1053+ -20 ,
1054+ "pbjs" ,
1055+ timeout );
1056+
1057+ // then
1058+ final BidPutObject expectedBidObject = bidObject .toBuilder ()
1059+ .bidid (null )
1060+ .bidder (null )
1061+ .timestamp (null )
1062+ .value (new TextNode ("modifiedVast" ))
1063+ .ttlseconds (100 )
1064+ .build ();
1065+
1066+ assertThat (captureBidCacheRequest ().getPuts ()).containsExactly (expectedBidObject );
1067+ }
1068+
1069+ @ Test
1070+ public void cachePutObjectsShouldCacheObjectsWithTtlDefinedAsPutObjectTtlWhenAccountTtlIsZero ()
1071+ throws IOException {
1072+
1073+ // given
1074+ final BidPutObject bidObject = BidPutObject .builder ()
1075+ .type ("json" )
1076+ .bidid ("bidId1" )
1077+ .bidder ("bidder1" )
1078+ .timestamp (1L )
1079+ .value (new TextNode ("vast" ))
1080+ .ttlseconds (100 )
1081+ .build ();
1082+
1083+ given (vastModifier .modifyVastXml (any (), any (), any (), any (), anyString ()))
1084+ .willReturn (new TextNode ("modifiedVast" ));
1085+
1086+ given (httpClient .post (anyString (), any (), any (), anyLong ())).willReturn (Future .succeededFuture (
1087+ HttpClientResponse .of (200 , null , mapper .writeValueAsString (BidCacheResponse .of (
1088+ List .of (CacheObject .of ("uuid1" )))))));
1089+
1090+ // when
1091+ target .cachePutObjects (
1092+ singletonList (bidObject ),
1093+ true ,
1094+ singleton ("bidder1" ),
1095+ "account" ,
1096+ 0 ,
1097+ "pbjs" ,
1098+ timeout );
1099+
1100+ // then
1101+ final BidPutObject expectedBidObject = bidObject .toBuilder ()
1102+ .bidid (null )
1103+ .bidder (null )
1104+ .timestamp (null )
1105+ .value (new TextNode ("modifiedVast" ))
1106+ .ttlseconds (100 )
1107+ .build ();
1108+
1109+ assertThat (captureBidCacheRequest ().getPuts ()).containsExactly (expectedBidObject );
1110+ }
1111+
1112+ @ Test
1113+ public void cachePutObjectsShouldNotProvideTtlWhenAccountTtlIsNegativeAndPutObjectTtlIsZero ()
1114+ throws IOException {
1115+
1116+ // given
1117+ final BidPutObject bidObject = BidPutObject .builder ()
1118+ .type ("json" )
1119+ .bidid ("bidId1" )
1120+ .bidder ("bidder1" )
1121+ .timestamp (1L )
1122+ .value (new TextNode ("vast" ))
1123+ .ttlseconds (0 )
1124+ .build ();
1125+
1126+ given (vastModifier .modifyVastXml (any (), any (), any (), any (), anyString ()))
1127+ .willReturn (new TextNode ("modifiedVast" ));
1128+
1129+ given (httpClient .post (anyString (), any (), any (), anyLong ())).willReturn (Future .succeededFuture (
1130+ HttpClientResponse .of (200 , null , mapper .writeValueAsString (BidCacheResponse .of (
1131+ List .of (CacheObject .of ("uuid1" )))))));
1132+
1133+ // when
1134+ target .cachePutObjects (
1135+ singletonList (bidObject ),
1136+ true ,
1137+ singleton ("bidder1" ),
1138+ "account" ,
1139+ -10 ,
1140+ "pbjs" ,
1141+ timeout );
1142+
1143+ // then
1144+ final BidPutObject expectedBidObject = bidObject .toBuilder ()
1145+ .bidid (null )
1146+ .bidder (null )
1147+ .timestamp (null )
1148+ .value (new TextNode ("modifiedVast" ))
1149+ .ttlseconds (null )
1150+ .build ();
1151+
1152+ assertThat (captureBidCacheRequest ().getPuts ()).containsExactly (expectedBidObject );
9781153 }
9791154
9801155 @ Test
0 commit comments