diff --git a/src/main/java/org/prebid/server/bidder/mobkoi/MobkoiBidder.java b/src/main/java/org/prebid/server/bidder/mobkoi/MobkoiBidder.java index dbf82da1b4f..699f9dca4c6 100644 --- a/src/main/java/org/prebid/server/bidder/mobkoi/MobkoiBidder.java +++ b/src/main/java/org/prebid/server/bidder/mobkoi/MobkoiBidder.java @@ -75,14 +75,14 @@ private ExtImpMobkoi parseExtImp(Imp imp) { } private Imp modifyImp(Imp firstImp, ExtImpMobkoi extImpMobkoi) { - if (StringUtils.isNotBlank(firstImp.getTagid())) { - return firstImp; - } - if (StringUtils.isNotBlank(extImpMobkoi.getPlacementId())) { return firstImp.toBuilder().tagid(extImpMobkoi.getPlacementId()).build(); } + if (StringUtils.isNotBlank(firstImp.getTagid())) { + return firstImp; + } + throw new PreBidException("invalid because it comes with neither request.imp[0].tagId nor " + "req.imp[0].ext.Bidder.placementId"); } diff --git a/src/test/java/org/prebid/server/bidder/mobkoi/MobkoiBidderTest.java b/src/test/java/org/prebid/server/bidder/mobkoi/MobkoiBidderTest.java index 7d46ce2a0a8..1b559e579b7 100644 --- a/src/test/java/org/prebid/server/bidder/mobkoi/MobkoiBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/mobkoi/MobkoiBidderTest.java @@ -95,6 +95,38 @@ public void makeHttpRequestsShouldAddPlacementIdOnlyInFirstImpressionTagId() { .containsExactly("pid", null); } + @Test + public void makeHttpRequestsShouldOverrideExistingTagIdWithPlacementId() { + final ObjectNode mobkoiExt = impExt("placement-id-from-ext"); + final Imp givenImp1 = givenImp(impBuilder -> impBuilder.tagid("existing-tag-id").ext(mobkoiExt)); + final Imp givenImp2 = givenImp(identity()); + final BidRequest bidRequest = BidRequest.builder().imp(asList(givenImp1, givenImp2)).build(); + final Result>> result = target.makeHttpRequests(bidRequest); + + assertThat(result.getValue()) + .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) + .flatExtracting(BidRequest::getImp) + .extracting(imp -> imp.getTagid()) + .containsExactly("placement-id-from-ext", null); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void makeHttpRequestsShouldKeepExistingTagIdWhenPlacementIdIsMissing() { + final ObjectNode mobkoiExt = impExt(null); + final Imp givenImp1 = givenImp(impBuilder -> impBuilder.tagid("existing-tag-id").ext(mobkoiExt)); + final Imp givenImp2 = givenImp(identity()); + final BidRequest bidRequest = BidRequest.builder().imp(asList(givenImp1, givenImp2)).build(); + final Result>> result = target.makeHttpRequests(bidRequest); + + assertThat(result.getValue()) + .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) + .flatExtracting(BidRequest::getImp) + .extracting(imp -> imp.getTagid()) + .containsExactly("existing-tag-id", null); + assertThat(result.getErrors()).isEmpty(); + } + @Test public void makeHttpRequestsShouldOverrideUserExtAndSetConsent() { // given