diff --git a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java index 4a7a5cc5f0e..238a9259c09 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java @@ -74,6 +74,7 @@ import org.prebid.server.floors.PriceFloorResolver; import org.prebid.server.floors.model.PriceFloorResult; import org.prebid.server.floors.model.PriceFloorRules; +import org.prebid.server.identity.IdGenerator; import org.prebid.server.json.DecodeException; import org.prebid.server.json.JacksonMapper; import org.prebid.server.log.ConditionalLogger; @@ -127,7 +128,6 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; -import java.util.UUID; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.StreamSupport; @@ -190,6 +190,7 @@ public class RubiconBidder implements Bidder { private final CurrencyConversionService currencyConversionService; private final PriceFloorResolver floorResolver; private final PrebidVersionProvider versionProvider; + private final IdGenerator idGenerator; private final JacksonMapper mapper; private final MultiMap headers; @@ -205,6 +206,7 @@ public RubiconBidder(String bidderName, CurrencyConversionService currencyConversionService, PriceFloorResolver floorResolver, PrebidVersionProvider versionProvider, + IdGenerator idGenerator, JacksonMapper mapper) { this.bidderName = Objects.requireNonNull(bidderName); @@ -217,6 +219,7 @@ public RubiconBidder(String bidderName, this.currencyConversionService = Objects.requireNonNull(currencyConversionService); this.floorResolver = Objects.requireNonNull(floorResolver); this.versionProvider = Objects.requireNonNull(versionProvider); + this.idGenerator = Objects.requireNonNull(idGenerator); this.mapper = Objects.requireNonNull(mapper); headers = headers(Objects.requireNonNull(xapiUsername), Objects.requireNonNull(xapiPassword)); @@ -241,9 +244,10 @@ public Result>> makeHttpRequests(BidRequest bidRequ try { final Imp imp = impToExt.getKey(); final ExtImpRubicon impExt = impToExt.getValue(); + final String pbBidId = generateBidId ? idGenerator.generateId() : null; final List impBidRequests = isMultiformatEnabled(impExt) - ? createMultiFormatRequests(bidRequest, imp, impExt, language, errors) - : List.of(createSingleRequest(bidRequest, imp, impExt, null, language, errors)); + ? createMultiFormatRequests(bidRequest, imp, impExt, pbBidId, language, errors) + : List.of(createSingleRequest(bidRequest, imp, impExt, pbBidId, null, language, errors)); httpRequests.addAll(createImpHttpRequests(imp, impBidRequests, uri)); } catch (PreBidException e) { @@ -257,6 +261,7 @@ public Result>> makeHttpRequests(BidRequest bidRequ private List createMultiFormatRequests(BidRequest bidRequest, Imp imp, ExtImpRubicon impExt, + String pbBidId, String language, List errors) { @@ -264,13 +269,14 @@ private List createMultiFormatRequests(BidRequest bidRequest, final Set formats = impByType.keySet(); if (formats.size() == 1) { return Collections.singletonList( - createSingleRequest(bidRequest, imp, impExt, null, language, errors)); + createSingleRequest(bidRequest, imp, impExt, pbBidId, null, language, errors)); } final List bidRequests = new ArrayList<>(); for (Imp singleFormatImp : impByType.values()) { try { - bidRequests.add(createSingleRequest(bidRequest, singleFormatImp, impExt, formats, language, errors)); + bidRequests.add( + createSingleRequest(bidRequest, singleFormatImp, impExt, pbBidId, formats, language, errors)); } catch (PreBidException e) { errors.add(BidderError.badInput(e.getMessage())); } @@ -426,12 +432,13 @@ private static String firstImpExtLanguage(Collection rubiconImpEx private BidRequest createSingleRequest(BidRequest bidRequest, Imp imp, ExtImpRubicon extImpRubicon, + String pbBidId, Set formats, String impLanguage, List errors) { return bidRequest.toBuilder() - .imp(Collections.singletonList(makeImp(imp, extImpRubicon, bidRequest, formats, errors))) + .imp(Collections.singletonList(makeImp(imp, extImpRubicon, bidRequest, pbBidId, formats, errors))) .user(downgradeUserConsent(makeUser(bidRequest.getUser(), extImpRubicon))) .device(makeDevice(bidRequest.getDevice())) .site(makeSite(bidRequest.getSite(), impLanguage, extImpRubicon)) @@ -483,6 +490,7 @@ private RubiconExtPrebidBiddersBidder extPrebidBiddersRubicon(ExtRequest extRequ private Imp makeImp(Imp imp, ExtImpRubicon extImpRubicon, BidRequest bidRequest, + String pbImpId, Set formats, List errors) { @@ -507,7 +515,7 @@ private Imp makeImp(Imp imp, final Imp.ImpBuilder builder = imp.toBuilder() .metric(makeMetrics(imp)) .ext(mapper.mapper().valueToTree( - makeImpExt(imp, extImpRubicon, resolvedFormats, site, app, extRequest))); + makeImpExt(imp, extImpRubicon, resolvedFormats, site, app, extRequest, pbImpId))); final BigDecimal resolvedBidFloor = ipfFloor != null ? convertToXAPICurrency(ipfFloor, ipfCurrency, imp, bidRequest) @@ -667,7 +675,8 @@ private RubiconImpExt makeImpExt(Imp imp, Set formats, Site site, App app, - ExtRequest extRequest) { + ExtRequest extRequest, + String pbBidId) { final RubiconImpExtRpRtb rubiconImpExtRpRtb = CollectionUtils.isNotEmpty(formats) ? RubiconImpExtRpRtb.of(formats) @@ -677,7 +686,8 @@ private RubiconImpExt makeImpExt(Imp imp, rubiconImpExt.getZoneId(), makeTarget(imp, rubiconImpExt, site, app), RubiconImpExtRpTrack.of("", ""), - rubiconImpExtRpRtb); + rubiconImpExtRpRtb, + pbBidId); return RubiconImpExt.builder() .rp(rubiconImpExtRp) @@ -1540,8 +1550,12 @@ private ObjectNode modifyRubiconImpExt(ObjectNode impExtNode, ExtRequest extRequ ? mapper.mapper().createObjectNode() : (ObjectNode) impExtRp.getTarget(); final ObjectNode modifiedTargetNode = targetNode.put("line_item", extLineItemId); - final RubiconImpExtRp modifiedImpExtRp = RubiconImpExtRp.of(impExtRp.getZoneId(), modifiedTargetNode, - impExtRp.getTrack(), impExtRp.getRtb()); + final RubiconImpExtRp modifiedImpExtRp = RubiconImpExtRp.of( + impExtRp.getZoneId(), + modifiedTargetNode, + impExtRp.getTrack(), + impExtRp.getRtb(), + impExtRp.getPbBidId()); return mapper.mapper().valueToTree(rubiconImpExt.toBuilder() .rp(modifiedImpExtRp) @@ -1564,6 +1578,7 @@ private List bidsFromResponse(BidRequest prebidRequest, BidRequest bidRequest, RubiconBidResponse bidResponse, List errors) { + final Map idToImp = prebidRequest.getImp().stream() .collect(Collectors.toMap(Imp::getId, Function.identity())); final Map idToRubiconImp = bidRequest.getImp().stream() @@ -1581,10 +1596,10 @@ private List bidsFromResponse(BidRequest prebidRequest, bid, seatBid, idToImp.get(bid.getImpid()), + idToRubiconImp.get(bid.getImpid()), bidType, cpmOverrideFromRequest, hasApexRenderer, - bidResponse, errors)) .filter(Objects::nonNull) .map(bid -> createBidderBid( @@ -1600,10 +1615,10 @@ private List bidsFromResponse(BidRequest prebidRequest, private Bid updateBid(RubiconBid bid, RubiconSeatBid seatBid, Imp imp, + Imp rubiconImp, BidType bidType, Float cpmOverrideFromRequest, boolean hasApexRenderer, - RubiconBidResponse bidResponse, List errors) { final ObjectNode updateBidExt; @@ -1614,17 +1629,6 @@ private Bid updateBid(RubiconBid bid, return null; } - String bidId = bid.getId(); - if (generateBidId) { - // Since Rubicon XAPI returns openrtb_response.seatbid.bid.id not unique enough - // generate new value for it - bidId = UUID.randomUUID().toString(); - } else if (Objects.equals(bid.getId(), "0")) { - // Since Rubicon XAPI returns only one bid per response - // copy bidResponse.bidid to openrtb_response.seatbid.bid.id - bidId = bidResponse.getBidid(); - } - // Unconditionally set price if coming from CPM override final Float cpmOverride = ObjectUtils.defaultIfNull(cpmOverrideFromImp(imp), cpmOverrideFromRequest); final BigDecimal bidPrice = cpmOverride != null @@ -1632,7 +1636,7 @@ private Bid updateBid(RubiconBid bid, : bid.getPrice(); final RubiconBid updatedRubiconBid = bid.toBuilder() - .id(bidId) + .id(resolveBidId(rubiconImp, bid)) .adm(resolveAdm(bid.getAdm(), bid.getAdmNative())) .price(bidPrice) .ext(updateBidExt) @@ -1712,6 +1716,17 @@ private static Boolean isVideoMetaMediaType(ExtBidPrebidMeta meta) { .orElse(false); } + private String resolveBidId(Imp rubiconImp, RubiconBid bid) { + return generateBidId + ? Optional.ofNullable(rubiconImp) + .map(Imp::getExt) + .map(ext -> ext.get("rp")) + .map(rp -> rp.get("pb_bid_id")) + .map(JsonNode::asText) + .orElse(bid.getId()) + : bid.getId(); + } + private String resolveAdm(String bidAdm, ObjectNode admobject) { if (StringUtils.isNotBlank(bidAdm)) { return bidAdm; diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRp.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRp.java index 103ee937c1c..fae19232ebe 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRp.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRp.java @@ -13,4 +13,6 @@ public class RubiconImpExtRp { RubiconImpExtRpTrack track; RubiconImpExtRpRtb rtb; + + String pbBidId; } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java index 0bfc14c84b7..7089abb6d78 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java @@ -7,6 +7,7 @@ import org.prebid.server.bidder.rubicon.RubiconBidder; import org.prebid.server.currency.CurrencyConversionService; import org.prebid.server.floors.PriceFloorResolver; +import org.prebid.server.identity.UUIDIdGenerator; import org.prebid.server.json.JacksonMapper; import org.prebid.server.spring.config.bidder.model.BidderConfigurationProperties; import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler; @@ -55,11 +56,12 @@ BidderDeps rubiconBidderDeps(RubiconConfigurationProperties rubiconConfiguration config.getXapi().getUsername(), config.getXapi().getPassword(), config.getMetaInfo().getSupportedVendors(), - config.getGenerateBidId(), + config.getGenerateBidId() == null || config.getGenerateBidId(), config.getApexRendererUrl(), currencyConversionService, floorResolver, versionProvider, + new UUIDIdGenerator(), mapper)) .assemble(); } @@ -74,7 +76,6 @@ private static class RubiconConfigurationProperties extends BidderConfigurationP @NotNull private XAPI xapi = new XAPI(); - @NotNull private Boolean generateBidId; @NotNull diff --git a/src/main/resources/bidder-config/rubicon.yaml b/src/main/resources/bidder-config/rubicon.yaml index 080ed16c415..8092766796c 100644 --- a/src/main/resources/bidder-config/rubicon.yaml +++ b/src/main/resources/bidder-config/rubicon.yaml @@ -37,7 +37,6 @@ adapters: redirect: url: GET_FROM_globalsupport@magnite.com support-cors: false - generate-bid-id: false apex-renderer-url: "https://video-outstream.rubiconproject.com/apex-2.2.1.js" XAPI: Username: GET_FROM_globalsupport@magnite.com diff --git a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java index fce71c31997..3228748264f 100644 --- a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java @@ -82,6 +82,7 @@ import org.prebid.server.floors.model.PriceFloorResult; import org.prebid.server.floors.model.PriceFloorRules; import org.prebid.server.floors.model.PriceFloorSchema; +import org.prebid.server.identity.IdGenerator; import org.prebid.server.proto.openrtb.ext.ExtPrebid; import org.prebid.server.proto.openrtb.ext.ExtPrebidBidders; import org.prebid.server.proto.openrtb.ext.FlexibleExtension; @@ -164,6 +165,9 @@ public class RubiconBidderTest extends VertxTest { @Mock(strictness = LENIENT) private PrebidVersionProvider versionProvider; + @Mock(strictness = LENIENT) + private IdGenerator idGenerator; + private RubiconBidder target; @BeforeEach @@ -175,14 +179,16 @@ public void setUp() { USERNAME, PASSWORD, SUPPORTED_VENDORS, - false, + true, APEX_RENDERER_URL, currencyConversionService, priceFloorResolver, versionProvider, + idGenerator, jacksonMapper); given(versionProvider.getNameVersionRecord()).willReturn("pbs_version"); + given(idGenerator.generateId()).willReturn("uuid_bid_id"); } @Test @@ -199,6 +205,7 @@ public void creationShouldFailOnInvalidEndpointUrl() { currencyConversionService, priceFloorResolver, versionProvider, + idGenerator, jacksonMapper)); } @@ -646,7 +653,12 @@ public void makeHttpRequestsShouldFillImpExt() { .extracting(Imp::getExt).doesNotContainNull() .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) .containsExactly(RubiconImpExt.builder() - .rp(RubiconImpExtRp.of(4001, expectedTarget, RubiconImpExtRpTrack.of("", ""), null)) + .rp(RubiconImpExtRp.of( + 4001, + expectedTarget, + RubiconImpExtRpTrack.of("", ""), + null, + "uuid_bid_id")) .skadn(givenSkadn) .maxbids(1) .build()); @@ -879,6 +891,7 @@ public void shouldNotSetSizeIfBidderParamsIsMissingSizeId() { currencyConversionService, priceFloorResolver, versionProvider, + idGenerator, jacksonMapper); final BidRequest bidRequest = givenBidRequest( builder -> builder.instl(1).video(Video.builder().placement(1).build()), @@ -2460,7 +2473,7 @@ public void makeHttpRequestsShouldCreateRequestPerImp() { // then final RubiconImpExtRp expectedImpExtRp = RubiconImpExtRp.of( - null, givenImpExtRpTarget(), RubiconImpExtRpTrack.of("", ""), null); + null, givenImpExtRpTarget(), RubiconImpExtRpTrack.of("", ""), null, "uuid_bid_id"); final BidRequest expectedBidRequest1 = BidRequest.builder() .imp(singletonList(Imp.builder() @@ -3712,7 +3725,12 @@ public void makeBidsShouldNotReduceBidderAmountForBidsWithSameImpId() throws Jso .build()); final BidderCall httpCall = givenHttpCall( - givenBidRequest(builder -> builder.video(Video.builder().build())), + givenBidRequest(builder -> builder + .id("impId") + .video(Video.builder().build()) + .ext(mapper.valueToTree(RubiconImpExt.builder() + .rp(RubiconImpExtRp.of(null, null, null, null, "pbBidId")) + .build()))), bidResponse); final BidRequest bidRequest = givenBidRequest( impBuilder -> impBuilder.id("impId").video(Video.builder().build())); @@ -3725,7 +3743,7 @@ public void makeBidsShouldNotReduceBidderAmountForBidsWithSameImpId() throws Jso assertThat(result.getValue()) .extracting(BidderBid::getBid) .extracting(Bid::getId) - .containsExactlyInAnyOrder("firstBidId", "secondBidId"); + .containsExactlyInAnyOrder("pbBidId", "pbBidId"); } @Test @@ -3787,13 +3805,17 @@ public void makeBidsShouldReturnBidWithOverriddenCpmFromImp() throws JsonProcess } @Test - public void makeBidsShouldReturnBidWithBidIdFieldFromBidResponseIfZero() throws JsonProcessingException { + public void makeBidsShouldReturnBidWithBidIdFieldFromImpExtRpPbBidId() throws JsonProcessingException { // given - final BidderCall httpCall = givenHttpCall(givenBidRequest(identity()), + final BidderCall httpCall = givenHttpCall(givenBidRequest(imp -> imp + .id("impId") + .ext(mapper.valueToTree(RubiconImpExt.builder() + .rp(RubiconImpExtRp.of(null, null, null, null, "pbBidId")) + .build()))), mapper.writeValueAsString(RubiconBidResponse.builder() .bidid("bidid1") // returned bidid from XAPI .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(RubiconBid.builder().id("0").price(ONE).build())) + .bid(singletonList(RubiconBid.builder().id("0").impid("impId").price(ONE).build())) .build())) .build())); @@ -3804,17 +3826,23 @@ public void makeBidsShouldReturnBidWithBidIdFieldFromBidResponseIfZero() throws assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()) .extracting(BidderBid::getBid, BidderBid::getType) - .containsOnly(Tuple.tuple(Bid.builder().id("bidid1").price(ONE).build(), banner)); + .containsOnly(Tuple.tuple(Bid.builder().id("pbBidId").impid("impId").price(ONE).build(), banner)); } @Test - public void makeBidsShouldReturnBidWithOriginalBidIdFieldFromBidResponseIfNotZero() throws JsonProcessingException { + public void makeBidsShouldReturnBidWithBidIdReturnedFromXAPIWhenImpCanNotBeMatched() + throws JsonProcessingException { + // given - final BidderCall httpCall = givenHttpCall(givenBidRequest(identity()), + final BidderCall httpCall = givenHttpCall(givenBidRequest(imp -> imp + .id("impId") + .ext(mapper.valueToTree(RubiconImpExt.builder() + .rp(RubiconImpExtRp.of(null, null, null, null, "pbBidId")) + .build()))), mapper.writeValueAsString(RubiconBidResponse.builder() - .bidid("bidid1") // returned bidid from XAPI + .bidid("bid_response_bidId") // returned bidid from XAPI .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(RubiconBid.builder().id("non-zero").price(ONE).build())) + .bid(singletonList(RubiconBid.builder().id("bidId").impid("impId2").price(ONE).build())) .build())) .build())); @@ -3824,8 +3852,9 @@ public void makeBidsShouldReturnBidWithOriginalBidIdFieldFromBidResponseIfNotZer // then assertThat(result.getErrors()).isEmpty(); assertThat(result.getValue()) - .extracting(BidderBid::getBid, BidderBid::getType) - .containsOnly(Tuple.tuple(Bid.builder().id("non-zero").price(ONE).build(), banner)); + .extracting(BidderBid::getBid) + .extracting(Bid::getId) + .containsOnly("bidId"); } @Test @@ -3850,38 +3879,12 @@ public void makeBidsShouldReturnNativeBidIfNativeIsPresent() throws JsonProcessi .containsOnly(xNative); } - @Test - public void makeBidsShouldReturnBidWithRandomlyGeneratedId() throws JsonProcessingException { - // given - target = new RubiconBidder( - BIDDER_NAME, ENDPOINT_URL, ENDPOINT_URL, USERNAME, PASSWORD, SUPPORTED_VENDORS, true, - APEX_RENDERER_URL, currencyConversionService, priceFloorResolver, versionProvider, jacksonMapper); - - final BidderCall httpCall = givenHttpCall(givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(RubiconBid.builder().id("bidid1").price(ONE).build())) - .build())) - .build())); - - // when - final Result> result = target.makeBids(httpCall, givenBidRequest(identity())); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .extracting(BidderBid::getBid) - .extracting(Bid::getId) - .doesNotContainNull() - .doesNotContain("bidid1"); - } - @Test public void makeBidsShouldReturnBidWithCurrencyFromBidResponse() throws JsonProcessingException { // given target = new RubiconBidder( - BIDDER_NAME, ENDPOINT_URL, EXTERNAL_URL, USERNAME, PASSWORD, SUPPORTED_VENDORS, true, - APEX_RENDERER_URL, currencyConversionService, priceFloorResolver, versionProvider, jacksonMapper); + BIDDER_NAME, ENDPOINT_URL, EXTERNAL_URL, USERNAME, PASSWORD, SUPPORTED_VENDORS, true, APEX_RENDERER_URL, + currencyConversionService, priceFloorResolver, versionProvider, idGenerator, jacksonMapper); final BidderCall httpCall = givenHttpCall(givenBidRequest(identity()), mapper.writeValueAsString(RubiconBidResponse.builder() diff --git a/src/test/java/org/prebid/server/it/MagniteTest.java b/src/test/java/org/prebid/server/it/MagniteTest.java index c02387d55dc..bd40e1a9289 100644 --- a/src/test/java/org/prebid/server/it/MagniteTest.java +++ b/src/test/java/org/prebid/server/it/MagniteTest.java @@ -5,6 +5,7 @@ import org.junit.jupiter.api.Test; import org.prebid.server.model.Endpoint; import org.prebid.server.version.PrebidVersionProvider; +import org.skyscreamer.jsonassert.Customization; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; @@ -33,6 +34,10 @@ public void testOpenrtb2AuctionCoreFunctionality() throws IOException, JSONExcep Endpoint.openrtb2_auction); // then - assertJsonEquals("openrtb2/magnite/test-auction-magnite-response.json", response, singletonList("magnite")); + assertJsonEquals( + "openrtb2/magnite/test-auction-magnite-response.json", + response, + singletonList("magnite"), + new Customization("seatbid[*].bid[*].id", (o1, o2) -> true)); } } diff --git a/src/test/java/org/prebid/server/it/RubiconTest.java b/src/test/java/org/prebid/server/it/RubiconTest.java index d7799bc50eb..b695d827572 100644 --- a/src/test/java/org/prebid/server/it/RubiconTest.java +++ b/src/test/java/org/prebid/server/it/RubiconTest.java @@ -5,6 +5,7 @@ import org.junit.jupiter.api.Test; import org.prebid.server.model.Endpoint; import org.prebid.server.version.PrebidVersionProvider; +import org.skyscreamer.jsonassert.Customization; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; @@ -33,6 +34,10 @@ public void testOpenrtb2AuctionCoreFunctionality() throws IOException, JSONExcep Endpoint.openrtb2_auction); // then - assertJsonEquals("openrtb2/rubicon/test-auction-rubicon-response.json", response, singletonList("rubicon")); + assertJsonEquals( + "openrtb2/rubicon/test-auction-rubicon-response.json", + response, + singletonList("rubicon"), + new Customization("seatbid[*].bid[*].id", (o1, o2) -> true)); } } diff --git a/src/test/java/org/prebid/server/it/hooks/HooksTest.java b/src/test/java/org/prebid/server/it/hooks/HooksTest.java index 902f12c6589..b42cd5e3d28 100644 --- a/src/test/java/org/prebid/server/it/hooks/HooksTest.java +++ b/src/test/java/org/prebid/server/it/hooks/HooksTest.java @@ -17,7 +17,6 @@ import org.prebid.server.hooks.execution.v1.analytics.ResultImpl; import org.prebid.server.hooks.execution.v1.analytics.TagsImpl; import org.prebid.server.it.IntegrationTest; -import org.prebid.server.version.PrebidVersionProvider; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; import org.springframework.beans.factory.annotation.Autowired; @@ -38,10 +37,7 @@ public class HooksTest extends IntegrationTest { - private static final String RUBICON = "rubicon"; - - @Autowired - private PrebidVersionProvider versionProvider; + private static final String GENERIC = "generic"; @Autowired private AnalyticsReporterDelegator analyticsReporterDelegator; @@ -51,21 +47,20 @@ public void openrtb2AuctionShouldRunHooksAtEachStage() throws IOException, JSONE Mockito.reset(analyticsReporterDelegator); // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/rubicon-exchange")) - .withRequestBody(equalToJson( - jsonFrom("hooks/sample-module/test-rubicon-bid-request-1.json", versionProvider))) - .willReturn(aResponse().withBody(jsonFrom("hooks/sample-module/test-rubicon-bid-response-1.json")))); + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/generic-exchange")) + .withRequestBody(equalToJson(jsonFrom("hooks/sample-module/test-generic-bid-request.json"))) + .willReturn(aResponse().withBody(jsonFrom("hooks/sample-module/test-generic-bid-response.json")))); // when final Response response = given(SPEC) .queryParam("sample-it-module-update", "headers,body") .header("User-Agent", "userAgent") - .body(jsonFrom("hooks/sample-module/test-auction-sample-module-request.json")) + .body(jsonFrom("hooks/sample-module/test-auction-generic-request.json")) .post("/openrtb2/auction"); // then final String expectedAuctionResponse = openrtbAuctionResponseFrom( - "hooks/sample-module/test-auction-sample-module-response.json", response, singletonList(RUBICON)); + "hooks/sample-module/test-auction-generic-response.json", response, singletonList(GENERIC)); JSONAssert.assertEquals(expectedAuctionResponse, response.asString(), JSONCompareMode.LENIENT); @@ -108,7 +103,7 @@ public void openrtb2AuctionShouldBeRejectedByEntrypointHook() throws IOException given(SPEC) .queryParam("sample-it-module-reject", "true") .header("User-Agent", "userAgent") - .body(jsonFrom("hooks/sample-module/test-auction-sample-module-request.json")) + .body(jsonFrom("hooks/sample-module/test-auction-generic-request.json")) .post("/openrtb2/auction") .then() .statusCode(200) @@ -138,7 +133,7 @@ public void openrtb2AuctionShouldBeRejectedByProcessedAuctionRequestHook() throw } @Test - public void openrtb2AuctionShouldRejectRubiconBidderByBidderRequestHook() throws IOException, JSONException { + public void openrtb2AuctionShouldRejectGenericBidderByBidderRequestHook() throws IOException, JSONException { // when final Response response = given(SPEC) .header("User-Agent", "userAgent") @@ -147,18 +142,18 @@ public void openrtb2AuctionShouldRejectRubiconBidderByBidderRequestHook() throws // then final String expectedAuctionResponse = openrtbAuctionResponseFrom( - "hooks/reject/test-auction-bidder-request-reject-response.json", response, singletonList(RUBICON)); + "hooks/reject/test-auction-bidder-request-reject-response.json", response, singletonList(GENERIC)); JSONAssert.assertEquals(expectedAuctionResponse, response.asString(), JSONCompareMode.LENIENT); - WIRE_MOCK_RULE.verify(0, postRequestedFor(urlPathEqualTo("/rubicon-exchange"))); + WIRE_MOCK_RULE.verify(0, postRequestedFor(urlPathEqualTo("/generic-exchange"))); } @Test - public void openrtb2AuctionShouldRejectRubiconBidderByRawBidderResponseHook() throws IOException, JSONException { + public void openrtb2AuctionShouldRejectGenericBidderByRawBidderResponseHook() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/rubicon-exchange")) - .willReturn(aResponse().withBody(jsonFrom("hooks/reject/test-rubicon-bid-response-1.json")))); + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/generic-exchange")) + .willReturn(aResponse().withBody(jsonFrom("hooks/reject/test-generic-bid-response.json")))); // when final Response response = given(SPEC) @@ -168,22 +163,21 @@ public void openrtb2AuctionShouldRejectRubiconBidderByRawBidderResponseHook() th // then final String expectedAuctionResponse = openrtbAuctionResponseFrom( - "hooks/reject/test-auction-raw-bidder-response-reject-response.json", response, singletonList(RUBICON)); + "hooks/reject/test-auction-raw-bidder-response-reject-response.json", response, singletonList(GENERIC)); JSONAssert.assertEquals(expectedAuctionResponse, response.asString(), JSONCompareMode.LENIENT); - WIRE_MOCK_RULE.verify(1, postRequestedFor(urlPathEqualTo("/rubicon-exchange")) - .withRequestBody(equalToJson( - jsonFrom("hooks/reject/test-rubicon-bid-request-1.json", versionProvider)))); + WIRE_MOCK_RULE.verify(1, postRequestedFor(urlPathEqualTo("/generic-exchange")) + .withRequestBody(equalToJson(jsonFrom("hooks/reject/test-generic-bid-request.json")))); } @Test - public void openrtb2AuctionShouldRejectRubiconBidderByProcessedBidderResponseHook() + public void openrtb2AuctionShouldRejectGenericBidderByProcessedBidderResponseHook() throws IOException, JSONException { // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/rubicon-exchange")) - .willReturn(aResponse().withBody(jsonFrom("hooks/reject/test-rubicon-bid-response-1.json")))); + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/generic-exchange")) + .willReturn(aResponse().withBody(jsonFrom("hooks/reject/test-generic-bid-response.json")))); // when final Response response = given(SPEC) @@ -195,12 +189,11 @@ public void openrtb2AuctionShouldRejectRubiconBidderByProcessedBidderResponseHoo final String expectedAuctionResponse = openrtbAuctionResponseFrom( "hooks/reject/test-auction-processed-bidder-response-reject-response.json", response, - singletonList(RUBICON)); + singletonList(GENERIC)); JSONAssert.assertEquals(expectedAuctionResponse, response.asString(), JSONCompareMode.LENIENT); - WIRE_MOCK_RULE.verify(1, postRequestedFor(urlPathEqualTo("/rubicon-exchange")) - .withRequestBody(equalToJson( - jsonFrom("hooks/reject/test-rubicon-bid-request-1.json", versionProvider)))); + WIRE_MOCK_RULE.verify(1, postRequestedFor(urlPathEqualTo("/generic-exchange")) + .withRequestBody(equalToJson(jsonFrom("hooks/reject/test-generic-bid-request.json")))); } } diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-request.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-request.json index 1b87b4bdf1b..8cd58ab222b 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-request.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-request.json @@ -16,14 +16,7 @@ ] }, "ext": { - "prebid": { - "bidder": { - "rubicon": { - "accountId": 2001, - "siteId": 3001, - "zoneId": 4001 - } - } + "generic": { } } } @@ -42,14 +35,9 @@ "cur": [ "USD" ], - "user": { + "regs": { "ext": { - "consent": "CPBCa-mPBCa-mAAAAAENA0CAAEAAAAAAACiQAaQAwAAgAgABoAAAAAA" - }, - "regs": { - "ext": { - "us_privacy": "1YNN" - } + "gdpr": 0 } }, "ext": { diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-response.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-response.json index c9ce8ef7e40..0a2c3a92669 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-response.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-bidder-request-reject-response.json @@ -4,7 +4,7 @@ "cur": "USD", "ext": { "responsetimemillis": { - "rubicon": 0 + "generic": 0 }, "tmaxrequest": 5000, "prebid": { diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-auction-request-reject-request.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-auction-request-reject-request.json index 48c0f472517..7bcae1a7b7a 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-auction-request-reject-request.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-auction-request-reject-request.json @@ -16,14 +16,7 @@ ] }, "ext": { - "prebid": { - "bidder": { - "rubicon": { - "accountId": 2001, - "siteId": 3001, - "zoneId": 4001 - } - } + "generic": { } } } @@ -34,5 +27,14 @@ "id": "8001" } }, + "at": 1, + "cur": [ + "USD" + ], + "regs": { + "ext": { + "gdpr": 0 + } + }, "tmax": 5000 } diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-request.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-request.json index c078d047114..9ceab61cc2f 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-request.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-request.json @@ -16,14 +16,7 @@ ] }, "ext": { - "prebid": { - "bidder": { - "rubicon": { - "accountId": 2001, - "siteId": 3001, - "zoneId": 4001 - } - } + "generic": { } } } @@ -42,14 +35,9 @@ "cur": [ "USD" ], - "user": { + "regs": { "ext": { - "consent": "CPBCa-mPBCa-mAAAAAENA0CAAEAAAAAAACiQAaQAwAAgAgABoAAAAAA" - }, - "regs": { - "ext": { - "us_privacy": "1YNN" - } + "gdpr": 0 } }, "ext": { diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-response.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-response.json index 15184653ff7..d5ad840f619 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-response.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-processed-bidder-response-reject-response.json @@ -4,7 +4,7 @@ "cur": "USD", "ext": { "responsetimemillis": { - "rubicon": "{{ rubicon.response_time_ms }}" + "generic": "{{ generic.response_time_ms }}" }, "tmaxrequest": 5000, "prebid": { diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-auction-request-reject-request.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-auction-request-reject-request.json index 80922d5800b..113fd08f2b1 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-auction-request-reject-request.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-auction-request-reject-request.json @@ -16,14 +16,7 @@ ] }, "ext": { - "prebid": { - "bidder": { - "rubicon": { - "accountId": 2001, - "siteId": 3001, - "zoneId": 4001 - } - } + "generic": { } } } @@ -34,5 +27,14 @@ "id": "7001" } }, + "at": 1, + "cur": [ + "USD" + ], + "regs": { + "ext": { + "gdpr": 0 + } + }, "tmax": 5000 } diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-request.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-request.json index ce836c1e145..8fe6fcb5adf 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-request.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-request.json @@ -16,14 +16,7 @@ ] }, "ext": { - "prebid": { - "bidder": { - "rubicon": { - "accountId": 2001, - "siteId": 3001, - "zoneId": 4001 - } - } + "generic": { } } } @@ -42,14 +35,9 @@ "cur": [ "USD" ], - "user": { + "regs": { "ext": { - "consent": "CPBCa-mPBCa-mAAAAAENA0CAAEAAAAAAACiQAaQAwAAgAgABoAAAAAA" - }, - "regs": { - "ext": { - "us_privacy": "1YNN" - } + "gdpr": 0 } }, "ext": { diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-response.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-response.json index 15184653ff7..d5ad840f619 100644 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-response.json +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-auction-raw-bidder-response-reject-response.json @@ -4,7 +4,7 @@ "cur": "USD", "ext": { "responsetimemillis": { - "rubicon": "{{ rubicon.response_time_ms }}" + "generic": "{{ generic.response_time_ms }}" }, "tmaxrequest": 5000, "prebid": { diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-generic-bid-request.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-generic-bid-request.json new file mode 100644 index 00000000000..0072376e351 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/hooks/reject/test-generic-bid-request.json @@ -0,0 +1,66 @@ +{ + "id": "tid", + "imp": [ + { + "id": "impId1", + "secure": 1, + "banner": { + "format": [ + { + "w": 300, + "h": 250 + }, + { + "w": 300, + "h": 600 + } + ] + }, + "ext": { + "tid": "${json-unit.any-string}", + "bidder": { + } + } + } + ], + "site": { + "page": "http://www.example.com", + "domain": "www.example.com", + "publisher": { + "id": "${json-unit.any-string}", + "domain": "example.com" + }, + "ext": { + "amp": 0 + } + }, + "device": { + "ua": "userAgent", + "language": "en" + }, + "regs": { + "ext": { + "gdpr": 0 + } + }, + "at" : 1, + "tmax" : "${json-unit.any-number}", + "cur" : [ "USD" ], + "source" : { + "tid" : "${json-unit.any-string}" + }, + "ext": { + "prebid": { + "auctiontimestamp": 0, + "channel": { + "name": "web" + }, + "server": { + "externalurl": "http://localhost:8080", + "gvlid": 1, + "datacenter": "local", + "endpoint": "/openrtb2/auction" + } + } + } +} diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-rubicon-bid-response-1.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-generic-bid-response.json similarity index 100% rename from src/test/resources/org/prebid/server/it/hooks/reject/test-rubicon-bid-response-1.json rename to src/test/resources/org/prebid/server/it/hooks/reject/test-generic-bid-response.json diff --git a/src/test/resources/org/prebid/server/it/hooks/reject/test-rubicon-bid-request-1.json b/src/test/resources/org/prebid/server/it/hooks/reject/test-rubicon-bid-request-1.json deleted file mode 100644 index 3743bed491b..00000000000 --- a/src/test/resources/org/prebid/server/it/hooks/reject/test-rubicon-bid-request-1.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "id": "tid", - "imp": [ - { - "id": "impId1", - "secure": 1, - "banner": { - "format": [ - { - "w": 300, - "h": 250 - }, - { - "w": 300, - "h": 600 - } - ], - "ext": { - "rp": { - "mime": "text/html" - } - } - }, - "ext": { - "rp": { - "zone_id": 4001, - "target": { - "page": [ - "http://www.example.com" - ], - "pbs_version": "{{ pbs.java.version }}", - "pbs_login": "rubicon_user", - "pbs_url": "http://localhost:8080" - }, - "track": { - "mint": "", - "mint_version": "" - } - }, - "maxbids": 1, - "tid": "${json-unit.any-string}" - } - } - ], - "source": { - "tid": "${json-unit.any-string}" - }, - "site": { - "domain": "www.example.com", - "page": "http://www.example.com", - "publisher": { - "ext": { - "rp": { - "account_id": 2001 - } - } - }, - "ext": { - "rp": { - "site_id": 3001 - }, - "amp": 0 - } - }, - "device": { - "ua": "userAgent", - "language": "en", - "ext": { - "rp": { - } - } - }, - "user": { - "ext": { - "consent": "CPBCa-mPBCa-mAAAAAENA0CAAEAAAAAAACiQAaQAwAAgAgABoAAAAAA" - } - }, - "at": 1, - "tmax": "${json-unit.any-number}" -} diff --git a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-sample-module-request.json b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-generic-request.json similarity index 64% rename from src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-sample-module-request.json rename to src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-generic-request.json index de627bc01da..ceff2a828b3 100644 --- a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-sample-module-request.json +++ b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-generic-request.json @@ -16,14 +16,7 @@ ] }, "ext": { - "prebid": { - "bidder": { - "rubicon": { - "accountId": 2001, - "siteId": 3001, - "zoneId": 4001 - } - } + "generic": { } } } @@ -42,14 +35,9 @@ "cur": [ "USD" ], - "user": { + "regs": { "ext": { - "consent": "CPBCa-mPBCa-mAAAAAENA0CAAEAAAAAAACiQAaQAwAAgAgABoAAAAAA" - }, - "regs": { - "ext": { - "us_privacy": "1YNN" - } + "gdpr": 0 } }, "ext": { diff --git a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-sample-module-response.json b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-generic-response.json similarity index 92% rename from src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-sample-module-response.json rename to src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-generic-response.json index cc893e56246..1946b602eeb 100644 --- a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-sample-module-response.json +++ b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-auction-generic-response.json @@ -11,14 +11,16 @@ "crid": "crid1", "w": 300, "h": 250, + "exp": 300, "ext": { + "origbidcpm": 8.43, "prebid": { "type": "banner" } } } ], - "seat": "rubicon", + "seat": "generic", "group": 0 } ], @@ -42,14 +44,11 @@ } ] }, + "secure": 1, "ext": { "prebid": { "bidder": { - "rubicon": { - "accountId": 2001, - "siteId": 3001, - "zoneId": 4001 - } + "generic": {} } } } @@ -59,7 +58,8 @@ "domain": "www.example.com", "page": "http://www.example.com", "publisher": { - "id": "6001" + "id": "6001", + "domain": "example.com" }, "ext": { "amp": 0 @@ -67,17 +67,17 @@ }, "device": { "ua": "userAgent", - "ip": "222.111.222.0", + "ip": "222.111.222.111", "language": "fr" }, - "user": { - "consent": "CPBCa-mPBCa-mAAAAAENA0CAAEAAAAAAACiQAaQAwAAgAgABoAAAAAA" - }, "at": 1, "tmax": 5000, "cur": [ "USD" ], + "regs": { + "gdpr": 0 + }, "ext": { "prebid": { "debug": 1, @@ -85,6 +85,12 @@ "auctiontimestamp": 0, "channel": { "name": "web" + }, + "server": { + "externalurl": "http://localhost:8080", + "gvlid": 1, + "datacenter": "local", + "endpoint": "/openrtb2/auction" } }, "sample-it-module": { @@ -95,7 +101,7 @@ } }, "responsetimemillis": { - "rubicon": "{{ rubicon.response_time_ms }}" + "generic": "{{ generic.response_time_ms }}" }, "tmaxrequest": 5000, "prebid": { @@ -199,7 +205,7 @@ "stage": "bidder-request", "outcomes": [ { - "entity": "rubicon", + "entity": "generic", "groups": [ { "invocationresults": [ @@ -221,7 +227,7 @@ "stage": "raw-bidder-response", "outcomes": [ { - "entity": "rubicon", + "entity": "generic", "groups": [ { "invocationresults": [ @@ -243,7 +249,7 @@ "stage": "processed-bidder-response", "outcomes": [ { - "entity": "rubicon", + "entity": "generic", "groups": [ { "invocationresults": [ diff --git a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-generic-bid-request.json b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-generic-bid-request.json new file mode 100644 index 00000000000..c938b4029e0 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-generic-bid-request.json @@ -0,0 +1,76 @@ +{ + "id": "tid", + "imp": [ + { + "id": "impId1", + "secure": 1, + "banner": { + "format": [ + { + "w": 300, + "h": 250 + }, + { + "w": 300, + "h": 600 + } + ] + }, + "tagid": "tagid-from-bidder-request-hook", + "ext": { + "tid": "${json-unit.any-string}", + "bidder": { + } + } + } + ], + "cur": [ + "USD" + ], + "source": { + "tid": "${json-unit.any-string}" + }, + "site": { + "page": "http://www.example.com", + "domain": "www.example.com", + "publisher": { + "id": "6001", + "domain": "example.com" + }, + "ext": { + "amp": 0 + } + }, + "device": { + "ua": "userAgent", + "ip": "222.111.222.111", + "language": "fr" + }, + "regs": { + "ext": { + "gdpr": 0 + } + }, + "at": 1, + "tmax": "${json-unit.any-number}", + "ext": { + "prebid": { + "debug": 1, + "trace": "verbose", + "auctiontimestamp": 0, + "channel": { + "name": "web" + }, + "server": { + "externalurl": "http://localhost:8080", + "gvlid": 1, + "datacenter": "local", + "endpoint": "/openrtb2/auction" + } + }, + "sample-it-module": { + "raw-auction-request-trace": "I've been here", + "processed-auction-request-trace": "I've been here" + } + } +} diff --git a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-rubicon-bid-response-1.json b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-generic-bid-response.json similarity index 100% rename from src/test/resources/org/prebid/server/it/hooks/sample-module/test-rubicon-bid-response-1.json rename to src/test/resources/org/prebid/server/it/hooks/sample-module/test-generic-bid-response.json diff --git a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-rubicon-bid-request-1.json b/src/test/resources/org/prebid/server/it/hooks/sample-module/test-rubicon-bid-request-1.json deleted file mode 100644 index e9a871c9f77..00000000000 --- a/src/test/resources/org/prebid/server/it/hooks/sample-module/test-rubicon-bid-request-1.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "id": "tid", - "imp": [ - { - "id": "impId1", - "secure": 1, - "banner": { - "format": [ - { - "w": 300, - "h": 250 - }, - { - "w": 300, - "h": 600 - } - ], - "ext": { - "rp": { - "mime": "text/html" - } - } - }, - "tagid": "tagid-from-bidder-request-hook", - "ext": { - "rp": { - "zone_id": 4001, - "target": { - "page": [ - "http://www.example.com" - ], - "pbs_version": "{{ pbs.java.version }}", - "pbs_login": "rubicon_user", - "pbs_url": "http://localhost:8080" - }, - "track": { - "mint": "", - "mint_version": "" - } - }, - "maxbids": 1, - "tid": "${json-unit.any-string}" - } - } - ], - "source": { - "tid": "${json-unit.any-string}" - }, - "site": { - "domain": "www.example.com", - "page": "http://www.example.com", - "publisher": { - "ext": { - "rp": { - "account_id": 2001 - } - } - }, - "ext": { - "rp": { - "site_id": 3001 - }, - "amp": 0 - } - }, - "device": { - "ua": "userAgent", - "ip": "222.111.222.0", - "language": "fr", - "ext": { - "rp": { - } - } - }, - "user": { - "ext": { - "consent": "CPBCa-mPBCa-mAAAAAENA0CAAEAAAAAAACiQAaQAwAAgAgABoAAAAAA" - } - }, - "at": 1, - "tmax": "${json-unit.any-number}" -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-auction-magnite-response.json b/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-auction-magnite-response.json index 111e147d710..26ab91ce9d2 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-auction-magnite-response.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-auction-magnite-response.json @@ -4,7 +4,7 @@ { "bid": [ { - "id": "bid_id", + "id": "id", "impid": "imp_id", "exp": 1500, "price": 3.33, diff --git a/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json index 4b14180a370..ca4754d9440 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json @@ -13,6 +13,7 @@ }, "ext": { "rp": { + "pb_bid_id": "${json-unit.any-string}", "zone_id": 4001, "target": { "page": [ diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json index 4b14180a370..ca4754d9440 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json @@ -13,6 +13,7 @@ }, "ext": { "rp": { + "pb_bid_id": "${json-unit.any-string}", "zone_id": 4001, "target": { "page": [