From 8771dd898661f06d98b3564cab507d2de1852404 Mon Sep 17 00:00:00 2001 From: Andrii Braslavskyi Date: Tue, 8 Sep 2020 18:11:01 +0300 Subject: [PATCH 1/2] Add test for imp.ext.context own copy for each imp change --- .../server/auction/ExchangeServiceTest.java | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java b/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java index 97427d15cab..277e764a996 100644 --- a/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java +++ b/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java @@ -1192,13 +1192,47 @@ public void shouldCleanImpExtContextDataWhenFirstPartyDataNotPermittedForBidder( exchangeService.holdAuction(givenRequestContext(bidRequest)); // then - final BidRequest capturedRequestExt = captureBidRequest(); - assertThat(capturedRequestExt.getImp()) + final BidRequest capturedRequest = captureBidRequest(); + assertThat(capturedRequest.getImp()) .extracting(Imp::getExt) .extracting(impExtNode -> impExtNode.get("context")) .containsOnly(mapper.createObjectNode().put("otherField", "value")); } + @Test + public void shouldDeepCopyImpExtContextToEachImpressionAndNotRemoveDataForAllWhenDeprecatedOnlyOneBidder() throws InterruptedException { + // given + final ObjectNode impExt = mapper.createObjectNode().put("someBidder", 1).put("deprecatedBidder", 2) + .set("context", mapper.createObjectNode().put("data", "data").put("otherField", "value")); + final BidRequest bidRequest = givenBidRequest(singletonList(Imp.builder() + .id("impId") + .banner(Banner.builder() + .format(singletonList(Format.builder().w(400).h(300).build())) + .build()).ext(impExt).build()), + builder -> builder.ext(ExtRequest.of(ExtRequestPrebid.builder() + .data(ExtRequestPrebidData.of(singletonList("someBidder"))) + .build()))); + given(httpBidderRequester.requestBids(any(), any(), any(), anyBoolean())) + .willReturn(Future.succeededFuture(givenSeatBid(singletonList( + givenBid(Bid.builder().price(TEN).build()))))); + + // when + exchangeService.holdAuction(givenRequestContext(bidRequest)); + + // then + final ArgumentCaptor bidRequestCaptor = ArgumentCaptor.forClass(BidRequest.class); + verify(httpBidderRequester, times(2)).requestBids(any(), bidRequestCaptor.capture(), any(), anyBoolean()); + assertThat(bidRequestCaptor.getAllValues()) + .flatExtracting(BidRequest::getImp) + .extracting(Imp::getExt) + .extracting(impExtNode -> impExtNode.get("context")) + .containsOnly( + // data erased for deprecatedBidder + mapper.createObjectNode().put("otherField", "value"), + // data present for someBidder + mapper.createObjectNode().put("data", "data").put("otherField", "value")); + } + @Test public void shouldSetUserBuyerIdsFromUserExtPrebidAndClearPrebidBuyerIdsAfterwards() { // given @@ -1241,8 +1275,8 @@ public void shouldCleanRequestExtPrebidData() { exchangeService.holdAuction(givenRequestContext(bidRequest)); // then - final ExtRequest capturedRequestExt = captureBidRequest().getExt(); - assertThat(capturedRequestExt).isEqualTo(ExtRequest.of(ExtRequestPrebid.builder() + final ExtRequest capturedRequest = captureBidRequest().getExt(); + assertThat(capturedRequest).isEqualTo(ExtRequest.of(ExtRequestPrebid.builder() .aliases(singletonMap("someBidder", "alias_should_stay")) .auctiontimestamp(1000L) .build())); From c577ac4c3f59060175210b5dabee2508e06074c6 Mon Sep 17 00:00:00 2001 From: Andrii Braslavskyi Date: Wed, 9 Sep 2020 10:42:21 +0300 Subject: [PATCH 2/2] Remove redundant throws exception from test method --- .../java/org/prebid/server/auction/ExchangeServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java b/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java index 277e764a996..90453e5d872 100644 --- a/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java +++ b/src/test/java/org/prebid/server/auction/ExchangeServiceTest.java @@ -1200,7 +1200,7 @@ public void shouldCleanImpExtContextDataWhenFirstPartyDataNotPermittedForBidder( } @Test - public void shouldDeepCopyImpExtContextToEachImpressionAndNotRemoveDataForAllWhenDeprecatedOnlyOneBidder() throws InterruptedException { + public void shouldDeepCopyImpExtContextToEachImpressionAndNotRemoveDataForAllWhenDeprecatedOnlyOneBidder() { // given final ObjectNode impExt = mapper.createObjectNode().put("someBidder", 1).put("deprecatedBidder", 2) .set("context", mapper.createObjectNode().put("data", "data").put("otherField", "value"));