diff --git a/docs/config-app.md b/docs/config-app.md index 36a0026515f..dec2ce563b7 100644 --- a/docs/config-app.md +++ b/docs/config-app.md @@ -154,7 +154,6 @@ There are several typical keys: - `adapters..usersync.redirect-url` - the redirect part of url for synchronizing UIDs cookie. - `adapters..usersync.cookie-family-name` - the family name by which user ids within adapter's realm are stored in uidsCookie. - `adapters..usersync.type` - usersync type (i.e. redirect, iframe). -- `adapters..usersync.support-cors` - flag signals if CORS supported by usersync. - `adapters..debug.allow` - enables debug output in the auction response for the given bidder. Default `true`. - `adapters..tmax-deduction-ms` - adjusts the tmax sent to the bidder by deducting the provided value (ms). Default `0 ms` - no deduction. diff --git a/src/main/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleaner.java b/src/main/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleaner.java index e470fcbbdd0..6b311f878d1 100644 --- a/src/main/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleaner.java +++ b/src/main/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleaner.java @@ -1,13 +1,27 @@ package org.prebid.server.auction.bidderrequestpostprocessor; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.iab.openrtb.request.BidRequest; import io.vertx.core.Future; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.prebid.server.auction.aliases.BidderAliases; import org.prebid.server.auction.model.AuctionContext; import org.prebid.server.auction.model.BidderRequest; +import org.prebid.server.model.UpdateResult; import org.prebid.server.proto.openrtb.ext.request.ExtRequest; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestBidAdjustmentFactors; import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidAlternateBidderCodes; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidAlternateBidderCodesBidder; +import org.prebid.server.proto.openrtb.ext.request.ImpMediaType; + +import java.math.BigDecimal; +import java.util.Collections; +import java.util.EnumMap; +import java.util.Iterator; +import java.util.Map; public class BidderRequestCleaner implements BidderRequestPostProcessor { @@ -17,21 +31,168 @@ public Future process(BidderRequest bidderReq AuctionContext auctionContext) { final BidRequest bidRequest = bidderRequest.getBidRequest(); - final ExtRequest ext = bidRequest.getExt(); + final UpdateResult cleanedExt = cleanExt(bidRequest.getExt(), bidderRequest.getBidder()); + + final BidderRequest cleanedBidderRequest = cleanedExt.isUpdated() + ? bidderRequest.with(bidRequest.toBuilder().ext(cleanedExt.getValue()).build()) + : bidderRequest; + + return Future.succeededFuture(BidderRequestPostProcessingResult.withValue(cleanedBidderRequest)); + } + + private UpdateResult cleanExt(ExtRequest ext, String bidder) { final ExtRequestPrebid extPrebid = ext != null ? ext.getPrebid() : null; - final ObjectNode bidderControls = extPrebid != null ? extPrebid.getBiddercontrols() : null; + if (extPrebid == null) { + return UpdateResult.unaltered(ext); + } - if (bidderControls == null) { - return resultOf(bidderRequest); + final UpdateResult cleanedBidAdjustmentFactors = + cleanBidAdjustmentFactors(extPrebid.getBidadjustmentfactors(), bidder); + final UpdateResult cleanedBidAdjustments = + cleanBidAdjustments(extPrebid.getBidadjustments(), bidder); + final UpdateResult cleanedAlternateCodes = + cleanAlternateCodes(extPrebid.getAlternateBidderCodes(), bidder); + + if (!cleanedBidAdjustmentFactors.isUpdated() + && !cleanedBidAdjustments.isUpdated() + && !cleanedAlternateCodes.isUpdated() + && ObjectUtils.allNull( + extPrebid.getReturnallbidstatus(), + extPrebid.getAliasgvlids(), + extPrebid.getAdservertargeting(), + extPrebid.getCache(), + extPrebid.getEvents(), + extPrebid.getNosale(), + extPrebid.getBiddercontrols(), + extPrebid.getAnalytics(), + extPrebid.getPassthrough(), + extPrebid.getKvps())) { + + return UpdateResult.unaltered(ext); } - final ExtRequest cleanedExt = ExtRequest.of(extPrebid.toBuilder().biddercontrols(null).build()); + final ExtRequest cleanedExt = ExtRequest.of(extPrebid.toBuilder() + .returnallbidstatus(null) + .aliasgvlids(null) + .bidadjustmentfactors(cleanedBidAdjustmentFactors.getValue()) + .bidadjustments(cleanedBidAdjustments.getValue()) + .adservertargeting(null) + .cache(null) + .events(null) + .nosale(null) + .biddercontrols(null) + .analytics(null) + .passthrough(null) + .kvps(null) + .alternateBidderCodes(cleanedAlternateCodes.getValue()) + .build()); cleanedExt.addProperties(ext.getProperties()); - return resultOf(bidderRequest.with(bidRequest.toBuilder().ext(cleanedExt).build())); + return UpdateResult.updated(cleanedExt); + } + + private static UpdateResult cleanBidAdjustmentFactors( + ExtRequestBidAdjustmentFactors bidAdjustmentFactors, + String bidder) { + + if (bidAdjustmentFactors == null) { + return UpdateResult.unaltered(null); + } + + final Map cleanedAdjustments = + cleanBidderMap(bidAdjustmentFactors.getAdjustments(), bidder); + final EnumMap> cleanedMediaTypes = + cleanMediaTypes(bidAdjustmentFactors.getMediatypes(), bidder); + + if (cleanedAdjustments == null && cleanedMediaTypes == null) { + return UpdateResult.updated(null); + } + + final ExtRequestBidAdjustmentFactors cleanedBidAdjustmentFactors = ExtRequestBidAdjustmentFactors.builder() + .mediatypes(cleanedMediaTypes) + .build(); + if (cleanedAdjustments != null) { + cleanedAdjustments.forEach(cleanedBidAdjustmentFactors::addFactor); + } + + return UpdateResult.updated(cleanedBidAdjustmentFactors); + } + + private static Map cleanBidderMap(Map map, String bidder) { + if (map == null) { + return null; + } + + for (Map.Entry entry : map.entrySet()) { + if (StringUtils.equalsIgnoreCase(entry.getKey(), bidder)) { + return Collections.singletonMap(entry.getKey(), entry.getValue()); + } + } + + return null; } - private static Future resultOf(BidderRequest bidderRequest) { - return Future.succeededFuture(BidderRequestPostProcessingResult.withValue(bidderRequest)); + private static EnumMap> cleanMediaTypes( + EnumMap> mediaTypes, + String bidder) { + + if (mediaTypes == null) { + return null; + } + + final EnumMap> cleanedMediaTypes = new EnumMap<>(ImpMediaType.class); + for (Map.Entry> entry : mediaTypes.entrySet()) { + final Map cleanedMap = cleanBidderMap(entry.getValue(), bidder); + if (cleanedMap != null) { + cleanedMediaTypes.put(entry.getKey(), cleanedMap); + } + } + + return !cleanedMediaTypes.isEmpty() ? cleanedMediaTypes : null; + } + + private static UpdateResult cleanBidAdjustments(ObjectNode bidAdjustments, String bidder) { + if (bidAdjustments == null) { + return UpdateResult.unaltered(null); + } + + final ObjectNode cleanedBidAdjustments = bidAdjustments.deepCopy(); + final JsonNode mediaTypeToBidAdjustments = cleanedBidAdjustments.path("mediatype"); + for (Iterator maps = mediaTypeToBidAdjustments.elements(); maps.hasNext(); ) { + final JsonNode bidderMap = maps.next(); + if (!bidderMap.isObject()) { + continue; + } + + for (Iterator bidders = bidderMap.fieldNames(); bidders.hasNext(); ) { + if (!StringUtils.equalsIgnoreCase(bidders.next(), bidder)) { + bidders.remove(); + } + } + + if (bidderMap.isEmpty()) { + maps.remove(); + } + } + + return !mediaTypeToBidAdjustments.isEmpty() + ? UpdateResult.updated(cleanedBidAdjustments) + : UpdateResult.updated(null); + } + + private static UpdateResult cleanAlternateCodes( + ExtRequestPrebidAlternateBidderCodes alternateBidderCodes, + String bidder) { + + final Map bidders = alternateBidderCodes != null + ? alternateBidderCodes.getBidders() + : null; + if (bidders == null) { + return UpdateResult.unaltered(alternateBidderCodes); + } + + return UpdateResult.updated(ExtRequestPrebidAlternateBidderCodes.of( + alternateBidderCodes.getEnabled(), + cleanBidderMap(bidders, bidder))); } } diff --git a/src/main/java/org/prebid/server/auction/requestfactory/Ortb2RequestFactory.java b/src/main/java/org/prebid/server/auction/requestfactory/Ortb2RequestFactory.java index 1604783c3b8..2eaa340509c 100644 --- a/src/main/java/org/prebid/server/auction/requestfactory/Ortb2RequestFactory.java +++ b/src/main/java/org/prebid/server/auction/requestfactory/Ortb2RequestFactory.java @@ -558,7 +558,7 @@ private Future wrapFailure(Throwable exception, String accountId, HttpR if (exception instanceof UnauthorizedAccountException) { return Future.failedFuture(exception); } else if (exception instanceof PreBidException) { - unknownAccountLogger.warn(accountErrorMessage(exception.getMessage(), httpRequest), 100); + unknownAccountLogger.warn(accountErrorMessage(exception.getMessage(), httpRequest), logSamplingRate); } else { metrics.updateAccountRequestRejectedByFailedFetch(accountId); logger.warn("Error occurred while fetching account: {}", exception.getMessage()); diff --git a/src/main/java/org/prebid/server/bidder/UsersyncInfoFactory.java b/src/main/java/org/prebid/server/bidder/UsersyncInfoFactory.java index 360b2d4a3a7..cccc0082991 100644 --- a/src/main/java/org/prebid/server/bidder/UsersyncInfoFactory.java +++ b/src/main/java/org/prebid/server/bidder/UsersyncInfoFactory.java @@ -48,8 +48,7 @@ public UsersyncInfo build(String bidder, hostCookieUid == null ? buildSyncUrl(bidder, usersyncMethod, privacy) : buildSetUidUrl(bidder, HttpUtil.encodeUrl(hostCookieUid), usersyncMethod, privacy), - usersyncMethod.getType(), - usersyncMethod.isSupportCORS()); + usersyncMethod.getType()); } private String buildSyncUrl(String bidder, UsersyncMethod usersyncMethod, Privacy privacy) { diff --git a/src/main/java/org/prebid/server/bidder/UsersyncMethod.java b/src/main/java/org/prebid/server/bidder/UsersyncMethod.java index c835b93ccc9..7e20ef3a281 100644 --- a/src/main/java/org/prebid/server/bidder/UsersyncMethod.java +++ b/src/main/java/org/prebid/server/bidder/UsersyncMethod.java @@ -14,7 +14,5 @@ public class UsersyncMethod { String uidMacro; - boolean supportCORS; - UsersyncFormat formatOverride; } diff --git a/src/main/java/org/prebid/server/bidder/dxkulture/DxKultureBidder.java b/src/main/java/org/prebid/server/bidder/dxkulture/DxKultureBidder.java deleted file mode 100644 index 304f5e9eaec..00000000000 --- a/src/main/java/org/prebid/server/bidder/dxkulture/DxKultureBidder.java +++ /dev/null @@ -1,160 +0,0 @@ -package org.prebid.server.bidder.dxkulture; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.iab.openrtb.request.BidRequest; -import com.iab.openrtb.request.Device; -import com.iab.openrtb.request.Imp; -import com.iab.openrtb.request.Site; -import com.iab.openrtb.response.Bid; -import com.iab.openrtb.response.BidResponse; -import com.iab.openrtb.response.SeatBid; -import io.vertx.core.MultiMap; -import org.apache.commons.collections4.CollectionUtils; -import org.prebid.server.bidder.Bidder; -import org.prebid.server.bidder.model.BidderBid; -import org.prebid.server.bidder.model.BidderCall; -import org.prebid.server.bidder.model.BidderError; -import org.prebid.server.bidder.model.HttpRequest; -import org.prebid.server.bidder.model.Result; -import org.prebid.server.exception.PreBidException; -import org.prebid.server.json.DecodeException; -import org.prebid.server.json.JacksonMapper; -import org.prebid.server.proto.openrtb.ext.ExtPrebid; -import org.prebid.server.proto.openrtb.ext.request.dxkulture.ExtImpDxKulture; -import org.prebid.server.proto.openrtb.ext.response.BidType; -import org.prebid.server.util.BidderUtil; -import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.ObjectUtil; -import org.prebid.server.util.Uri; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -public class DxKultureBidder implements Bidder { - - private static final TypeReference> DXKULTURE_EXT_TYPE_REFERENCE = - new TypeReference<>() { - }; - private static final String X_OPENRTB_VERSION = "2.5"; - - private final Uri endpoint; - private final JacksonMapper mapper; - - public DxKultureBidder(String endpointUrl, JacksonMapper mapper) { - this.endpoint = Uri.of(endpointUrl); - this.mapper = Objects.requireNonNull(mapper); - } - - @Override - public Result>> makeHttpRequests(BidRequest request) { - final List errors = new ArrayList<>(); - final List> result = new ArrayList<>(); - - for (Imp imp : request.getImp()) { - final String uri; - try { - uri = getUri(parseImpExt(imp)); - } catch (PreBidException e) { - errors.add(BidderError.badInput(e.getMessage())); - continue; - } - - result.add(BidderUtil.defaultRequest(request, resolveHeaders(request), uri, mapper)); - } - - return Result.of(result, errors); - } - - private ExtImpDxKulture parseImpExt(Imp imp) { - try { - return mapper.mapper().convertValue(imp.getExt(), DXKULTURE_EXT_TYPE_REFERENCE).getBidder(); - } catch (IllegalArgumentException e) { - throw new PreBidException(e.getMessage(), e); - } - } - - private String getUri(ExtImpDxKulture extImpDxKulture) { - return endpoint - .addQueryParam("publisher_id", extImpDxKulture.getPublisherId()) - .addQueryParam("placement_id", extImpDxKulture.getPlacementId()) - .expand(); - } - - private static MultiMap resolveHeaders(BidRequest bidRequest) { - final Device device = bidRequest.getDevice(); - final Site site = bidRequest.getSite(); - final MultiMap headers = HttpUtil.headers(); - - headers.set(HttpUtil.X_OPENRTB_VERSION_HEADER, X_OPENRTB_VERSION); - - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.USER_AGENT_HEADER, - ObjectUtil.getIfNotNull(device, Device::getUa)); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, - ObjectUtil.getIfNotNull(device, Device::getIpv6)); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, - ObjectUtil.getIfNotNull(device, Device::getIp)); - - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.REFERER_HEADER, - ObjectUtil.getIfNotNull(site, Site::getRef)); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.ORIGIN_HEADER, - ObjectUtil.getIfNotNull(site, Site::getDomain)); - - return headers; - } - - @Override - public Result> makeBids(BidderCall httpCall, BidRequest bidRequest) { - final BidResponse bidResponse; - try { - bidResponse = mapper.decodeValue(httpCall.getResponse().getBody(), BidResponse.class); - } catch (DecodeException e) { - return Result.withError(BidderError.badServerResponse(e.getMessage())); - } - - final List errors = new ArrayList<>(); - final List bids = extractBids(bidResponse, errors); - - return Result.of(bids, errors); - } - - private static List extractBids(BidResponse bidResponse, List errors) { - if (bidResponse == null || CollectionUtils.isEmpty(bidResponse.getSeatbid())) { - return Collections.emptyList(); - } - - return bidResponse.getSeatbid().stream() - .filter(Objects::nonNull) - .map(SeatBid::getBid) - .filter(Objects::nonNull) - .flatMap(Collection::stream) - .filter(Objects::nonNull) - .map(bid -> makeBidderBid(bid, bidResponse.getCur(), errors)) - .filter(Objects::nonNull) - .toList(); - } - - private static BidderBid makeBidderBid(Bid bid, String currency, List errors) { - try { - return BidderBid.of(bid, resolveBidType(bid), currency); - } catch (PreBidException e) { - errors.add(BidderError.badServerResponse(e.getMessage())); - return null; - } - } - - private static BidType resolveBidType(Bid bid) throws PreBidException { - final Integer markupType = bid.getMtype(); - if (markupType == null) { - throw new PreBidException("Missing MType for bid: " + bid.getId()); - } - return switch (markupType) { - case 1 -> BidType.banner; - case 2 -> BidType.video; - default -> - throw new PreBidException("Unsupported MType: %s, for bid: %s".formatted(markupType, bid.getId())); - }; - } -} diff --git a/src/main/java/org/prebid/server/bidder/intertech/IntertechBidder.java b/src/main/java/org/prebid/server/bidder/intertech/IntertechBidder.java deleted file mode 100644 index 59c11e84d95..00000000000 --- a/src/main/java/org/prebid/server/bidder/intertech/IntertechBidder.java +++ /dev/null @@ -1,226 +0,0 @@ -package org.prebid.server.bidder.intertech; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.iab.openrtb.request.Banner; -import com.iab.openrtb.request.BidRequest; -import com.iab.openrtb.request.Device; -import com.iab.openrtb.request.Format; -import com.iab.openrtb.request.Imp; -import com.iab.openrtb.request.Site; -import com.iab.openrtb.response.BidResponse; -import com.iab.openrtb.response.SeatBid; -import io.vertx.core.MultiMap; -import io.vertx.core.http.HttpMethod; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.prebid.server.bidder.Bidder; -import org.prebid.server.bidder.model.BidderBid; -import org.prebid.server.bidder.model.BidderCall; -import org.prebid.server.bidder.model.BidderError; -import org.prebid.server.bidder.model.HttpRequest; -import org.prebid.server.bidder.model.Result; -import org.prebid.server.exception.PreBidException; -import org.prebid.server.json.DecodeException; -import org.prebid.server.json.JacksonMapper; -import org.prebid.server.proto.openrtb.ext.ExtPrebid; -import org.prebid.server.proto.openrtb.ext.request.intertech.ExtImpIntertech; -import org.prebid.server.proto.openrtb.ext.response.BidType; -import org.prebid.server.util.HttpUtil; -import org.prebid.server.util.Uri; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -public class IntertechBidder implements Bidder { - - private static final TypeReference> INTERTECH_EXT_TYPE_REFERENCE = - new TypeReference<>() { - }; - - private static final String PAGE_ID_MACRO = "page_id"; - private static final String IMP_ID_MACRO = "imp_id"; - - private final Uri endpointUrl; - private final JacksonMapper mapper; - - public IntertechBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = Uri.of(endpointUrl); - this.mapper = Objects.requireNonNull(mapper); - } - - @Override - public Result>> makeHttpRequests(BidRequest request) { - final List> bidRequests = new ArrayList<>(); - final List errors = new ArrayList<>(); - - final String referer = getReferer(request); - final String cur = getCur(request); - - final List impList = request.getImp(); - for (Imp imp : impList) { - try { - final ExtImpIntertech extImpIntertech = parseAndValidateImpExt(imp.getExt(), imp.getId()); - final Imp modifiedImp = modifyImp(imp); - final String modifiedUrl = modifyUrl(extImpIntertech, referer, cur); - final BidRequest modifiedRequest = - request.toBuilder().imp(Collections.singletonList(modifiedImp)).build(); - bidRequests.add(buildHttpRequest(modifiedRequest, modifiedUrl)); - } catch (PreBidException e) { - errors.add(BidderError.badInput(e.getMessage())); - } - } - return Result.of(bidRequests, errors); - } - - private String getReferer(BidRequest request) { - final Site site = request.getSite(); - return site != null ? site.getPage() : null; - } - - private String getCur(BidRequest request) { - final List curs = request.getCur(); - return curs != null && !curs.isEmpty() ? curs.getFirst() : ""; - } - - private ExtImpIntertech parseAndValidateImpExt(ObjectNode impExtNode, final String impId) { - final ExtImpIntertech extImpIntertech; - try { - extImpIntertech = mapper.mapper().convertValue(impExtNode, INTERTECH_EXT_TYPE_REFERENCE).getBidder(); - } catch (IllegalArgumentException e) { - throw new PreBidException("imp #%s: %s".formatted(impId, e.getMessage())); - } - final Integer pageId = extImpIntertech.getPageId(); - if (pageId == null || pageId == 0) { - throw new PreBidException("imp #%s: missing param page_id".formatted(impId)); - } - final Integer intertechImpId = extImpIntertech.getImpId(); - if (intertechImpId == null || intertechImpId == 0) { - throw new PreBidException("imp #%s: missing param imp_id".formatted(impId)); - } - return extImpIntertech; - } - - private static Imp modifyImp(Imp imp) { - if (imp.getBanner() != null) { - return imp.toBuilder().banner(updateBanner(imp.getBanner())).build(); - } - if (imp.getXNative() != null) { - return imp; - } - throw new PreBidException("Intertech only supports banner and native types. Ignoring imp id=%s" - .formatted(imp.getId())); - } - - private static Banner updateBanner(Banner banner) { - if (banner == null) { - return null; - } - final Integer w = banner.getW(); - final Integer h = banner.getH(); - final List format = banner.getFormat(); - if (w == null || h == null || w == 0 || h == 0) { - if (CollectionUtils.isNotEmpty(format)) { - final Format firstFormat = format.getFirst(); - return banner.toBuilder().w(firstFormat.getW()).h(firstFormat.getH()).build(); - } - throw new PreBidException("Invalid sizes provided for Banner %sx%s".formatted(w, h)); - } - return banner; - } - - private String modifyUrl(ExtImpIntertech extImpIntertech, String referer, String cur) { - return endpointUrl - .replaceMacro(PAGE_ID_MACRO, extImpIntertech.getPageId().toString()) - .replaceMacro(IMP_ID_MACRO, extImpIntertech.getImpId().toString()) - .addQueryParam("target-ref", StringUtils.isNotBlank(referer) ? referer : null) - .addQueryParam("ssp-cur", StringUtils.isNotBlank(cur) ? cur : null) - .expand(); - } - - private HttpRequest buildHttpRequest(BidRequest outgoingRequest, String url) { - return HttpRequest.builder() - .method(HttpMethod.POST) - .uri(url) - .headers(headers(outgoingRequest)) - .body(mapper.encodeToBytes(outgoingRequest)) - .payload(outgoingRequest) - .build(); - } - - private static MultiMap headers(BidRequest bidRequest) { - final MultiMap headers = HttpUtil.headers(); - - final Device device = bidRequest.getDevice(); - if (device != null) { - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.USER_AGENT_HEADER, device.getUa()); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIp()); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, "X-Real-Ip", device.getIp()); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.ACCEPT_LANGUAGE_HEADER, device.getLanguage()); - } - - return headers; - } - - @Override - public Result> makeBids(BidderCall bidderCall, BidRequest bidRequest) { - try { - final BidResponse bidResponse = mapper.decodeValue(bidderCall.getResponse().getBody(), BidResponse.class); - return Result.withValues(extractBids(bidResponse, bidderCall.getRequest().getPayload())); - } catch (DecodeException | PreBidException e) { - return Result.withError(BidderError.badServerResponse(e.getMessage())); - } - } - - private static List extractBids(BidResponse bidResponse, BidRequest bidRequest) { - final List seatBids = bidResponse != null ? bidResponse.getSeatbid() : null; - if (seatBids == null) { - return Collections.emptyList(); - } - - if (seatBids.isEmpty()) { - throw new PreBidException("SeatBids is empty"); - } - return bidsFromResponse(bidResponse, bidRequest.getImp()); - } - - private static List bidsFromResponse(BidResponse bidResponse, List imps) { - return bidResponse.getSeatbid().stream() - .filter(Objects::nonNull) - .map(SeatBid::getBid) - .filter(Objects::nonNull) - .flatMap(Collection::stream) - .map(bid -> BidderBid.of(bid, getBidType(bid.getImpid(), imps), bidResponse.getCur())) - .collect(Collectors.toList()); - } - - private static BidType getBidType(String bidImpId, List imps) { - for (Imp imp : imps) { - if (bidImpId.equals(imp.getId())) { - return resolveImpType(imp); - } - } - throw new PreBidException(("Invalid bid imp ID %s does not match any imp IDs from the original " - + "bid request").formatted(bidImpId)); - } - - private static BidType resolveImpType(Imp imp) { - if (imp.getXNative() != null) { - return BidType.xNative; - } - if (imp.getBanner() != null) { - return BidType.banner; - } - if (imp.getVideo() != null) { - return BidType.video; - } - if (imp.getAudio() != null) { - return BidType.audio; - } - throw new PreBidException("Processing an invalid impression; cannot resolve impression type"); - } -} diff --git a/src/main/java/org/prebid/server/bidder/telaria/TelariaBidder.java b/src/main/java/org/prebid/server/bidder/telaria/TelariaBidder.java deleted file mode 100644 index b65f4f45982..00000000000 --- a/src/main/java/org/prebid/server/bidder/telaria/TelariaBidder.java +++ /dev/null @@ -1,215 +0,0 @@ -package org.prebid.server.bidder.telaria; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.iab.openrtb.request.App; -import com.iab.openrtb.request.BidRequest; -import com.iab.openrtb.request.Device; -import com.iab.openrtb.request.Imp; -import com.iab.openrtb.request.Publisher; -import com.iab.openrtb.request.Site; -import com.iab.openrtb.response.Bid; -import com.iab.openrtb.response.BidResponse; -import com.iab.openrtb.response.SeatBid; -import io.vertx.core.MultiMap; -import io.vertx.core.http.HttpMethod; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.prebid.server.bidder.Bidder; -import org.prebid.server.bidder.model.BidderBid; -import org.prebid.server.bidder.model.BidderCall; -import org.prebid.server.bidder.model.BidderError; -import org.prebid.server.bidder.model.HttpRequest; -import org.prebid.server.bidder.model.Result; -import org.prebid.server.bidder.telaria.model.TelariaRequestExt; -import org.prebid.server.exception.PreBidException; -import org.prebid.server.json.DecodeException; -import org.prebid.server.json.JacksonMapper; -import org.prebid.server.proto.openrtb.ext.ExtPrebid; -import org.prebid.server.proto.openrtb.ext.request.ExtRequest; -import org.prebid.server.proto.openrtb.ext.request.telaria.ExtImpOutTelaria; -import org.prebid.server.proto.openrtb.ext.request.telaria.ExtImpTelaria; -import org.prebid.server.proto.openrtb.ext.response.BidType; -import org.prebid.server.util.HttpUtil; - -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.stream.IntStream; - -public class TelariaBidder implements Bidder { - - private static final TypeReference> TELARIA_EXT_TYPE_REFERENCE = - new TypeReference<>() { - }; - - private final String endpointUrl; - private final JacksonMapper mapper; - - public TelariaBidder(String endpointUrl, JacksonMapper mapper) { - this.endpointUrl = HttpUtil.validateUrl(Objects.requireNonNull(endpointUrl)); - this.mapper = Objects.requireNonNull(mapper); - } - - @Override - public Result>> makeHttpRequests(BidRequest bidRequest) { - try { - validateImp(bidRequest.getImp()); - } catch (PreBidException e) { - return Result.withError(BidderError.badInput(e.getMessage())); - } - - final String publisherId = getPublisherId(bidRequest); - final String seatCode; - final ExtImpTelaria extImp; - Imp modifyImp = bidRequest.getImp().getFirst(); - - try { - extImp = parseImpExt(modifyImp); - seatCode = extImp.getSeatCode(); - modifyImp = updateImp(modifyImp, extImp, publisherId); - } catch (PreBidException e) { - return Result.withError(BidderError.badInput(e.getMessage())); - } - final BidRequest outgoingRequest = updateBidRequest(bidRequest, extImp, seatCode, modifyImp); - return Result.withValue(makeHttpRequest(outgoingRequest)); - } - - private HttpRequest makeHttpRequest(BidRequest bidRequest) { - return HttpRequest.builder() - .method(HttpMethod.POST) - .uri(endpointUrl) - .headers(headers(bidRequest)) - .payload(bidRequest) - .body(mapper.encodeToBytes(bidRequest)) - .build(); - } - - private BidRequest updateBidRequest(BidRequest bidRequest, ExtImpTelaria extImp, String seatCode, Imp modifyImp) { - final BidRequest.BidRequestBuilder bidRequestBuilder = bidRequest.toBuilder(); - - if (bidRequest.getSite() != null) { - bidRequestBuilder.site(modifySite(bidRequest.getSite(), seatCode)); - } else if (bidRequest.getApp() != null) { - bidRequestBuilder.app(modifyApp(bidRequest.getApp(), seatCode)); - } - - return bidRequestBuilder - .ext(modifyExt(extImp)) - .imp(Collections.singletonList(modifyImp)) - .build(); - } - - private static void validateImp(List imps) { - boolean hasVideoObject = false; - for (Imp imp : imps) { - if (imp.getBanner() != null) { - throw new PreBidException("Telaria: Banner not supported"); - } - hasVideoObject = hasVideoObject || imp.getVideo() != null; - } - - if (!hasVideoObject) { - throw new PreBidException("Telaria: Only Supports Video"); - } - } - - private static String getPublisherId(BidRequest bidRequest) { - if (bidRequest.getSite() != null && bidRequest.getSite().getPublisher() != null) { - return bidRequest.getSite().getPublisher().getId(); - } else if (bidRequest.getApp() != null && bidRequest.getApp().getPublisher() != null) { - return bidRequest.getApp().getPublisher().getId(); - } - return ""; - } - - private ExtImpTelaria parseImpExt(Imp imp) { - try { - return mapper.mapper().convertValue(imp.getExt(), TELARIA_EXT_TYPE_REFERENCE).getBidder(); - } catch (IllegalArgumentException e) { - throw new PreBidException(e.getMessage(), e); - } - } - - private Imp updateImp(Imp imp, ExtImpTelaria extImp, String publisherId) { - if (StringUtils.isBlank(extImp.getSeatCode())) { - throw new PreBidException("Telaria: Seat Code required"); - } - return imp.toBuilder() - .tagid(extImp.getAdCode()) - .ext(mapper.mapper().valueToTree(ExtImpOutTelaria.of(imp.getTagid(), publisherId))) - .build(); - } - - private ExtRequest modifyExt(ExtImpTelaria extImp) { - return extImp != null - ? mapper.fillExtension(ExtRequest.empty(), TelariaRequestExt.of(extImp.getExtra())) - : null; - } - - private static Site modifySite(Site site, String seatCode) { - return site.toBuilder().publisher(createPublisher(site.getPublisher(), seatCode)).build(); - } - - private static App modifyApp(App app, String seatCode) { - return app.toBuilder().publisher(createPublisher(app.getPublisher(), seatCode)).build(); - } - - private static Publisher createPublisher(Publisher publisher, String seatCode) { - return publisher != null - ? publisher.toBuilder().id(seatCode).build() - : Publisher.builder().id(seatCode).build(); - } - - private static MultiMap headers(BidRequest bidRequest) { - final MultiMap headers = HttpUtil.headers() - .add(HttpUtil.X_OPENRTB_VERSION_HEADER, "2.5"); - - final Device device = bidRequest.getDevice(); - if (device != null) { - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.USER_AGENT_HEADER, device.getUa()); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.X_FORWARDED_FOR_HEADER, device.getIp()); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.ACCEPT_LANGUAGE_HEADER, device.getLanguage()); - HttpUtil.addHeaderIfValueIsNotEmpty(headers, HttpUtil.DNT_HEADER, Objects.toString(device.getDnt(), null)); - } - - return headers; - } - - @Override - public Result> makeBids(BidderCall httpCall, BidRequest bidRequest) { - try { - final BidResponse bidResponse = mapper.decodeValue(httpCall.getResponse().getBody(), BidResponse.class); - return Result.withValues(extractBids(bidResponse, bidRequest)); - } catch (PreBidException | DecodeException e) { - return Result.withError(BidderError.badServerResponse(e.getMessage())); - } - } - - private List extractBids(BidResponse bidResponse, BidRequest bidRequest) { - if (bidResponse == null || CollectionUtils.isEmpty(bidResponse.getSeatbid())) { - return Collections.emptyList(); - } - return bidsFromResponse(bidResponse, bidRequest); - } - - private static List bidsFromResponse(BidResponse bidResponse, BidRequest bidRequest) { - final SeatBid firstSeatBid = bidResponse.getSeatbid().getFirst(); - final List bids = firstSeatBid.getBid(); - final List imps = bidRequest.getImp(); - - if (CollectionUtils.isEmpty(bids)) { - return Collections.emptyList(); - } - - return IntStream.range(0, bids.size()) - .filter(i -> bids.get(i) != null) - .filter(i -> i < imps.size()) - .mapToObj(i -> makeBidderBid(bids.get(i), bidResponse, imps.get(i))) - .toList(); - } - - private static BidderBid makeBidderBid(Bid bid, BidResponse bidResponse, Imp imp) { - final Bid modifyBid = bid.toBuilder().impid(imp.getId()).build(); - return BidderBid.of(modifyBid, BidType.video, bidResponse.getCur()); - } -} diff --git a/src/main/java/org/prebid/server/bidder/telaria/model/TelariaRequestExt.java b/src/main/java/org/prebid/server/bidder/telaria/model/TelariaRequestExt.java deleted file mode 100644 index dec3c36c5f7..00000000000 --- a/src/main/java/org/prebid/server/bidder/telaria/model/TelariaRequestExt.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.prebid.server.bidder.telaria.model; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import lombok.Value; - -@Value(staticConstructor = "of") -public class TelariaRequestExt { - - ObjectNode extra; -} diff --git a/src/main/java/org/prebid/server/cookie/PrioritizedCoopSyncProvider.java b/src/main/java/org/prebid/server/cookie/PrioritizedCoopSyncProvider.java index 7ee18499527..cd8e33295aa 100644 --- a/src/main/java/org/prebid/server/cookie/PrioritizedCoopSyncProvider.java +++ b/src/main/java/org/prebid/server/cookie/PrioritizedCoopSyncProvider.java @@ -11,11 +11,9 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; -import java.util.function.Function; import java.util.stream.Collectors; public class PrioritizedCoopSyncProvider { @@ -23,14 +21,13 @@ public class PrioritizedCoopSyncProvider { private static final Logger logger = LoggerFactory.getLogger(PrioritizedCoopSyncProvider.class); private final Set prioritizedBidders; - private final Map prioritizedCookieFamilyNameToBidderName; + private final Set prioritizedCookieFamilies; public PrioritizedCoopSyncProvider(Set bidders, BidderCatalog bidderCatalog) { this.prioritizedBidders = validCoopSyncBidders(Objects.requireNonNull(bidders), bidderCatalog); - this.prioritizedCookieFamilyNameToBidderName = prioritizedBidders.stream() - .collect(Collectors.toMap( - bidder -> bidderCatalog.cookieFamilyName(bidder).orElseThrow(), - Function.identity())); + this.prioritizedCookieFamilies = prioritizedBidders.stream() + .map(bidder -> bidderCatalog.cookieFamilyName(bidder).orElseThrow()) + .collect(Collectors.toSet()); } private static Set validCoopSyncBidders(Set bidders, BidderCatalog bidderCatalog) { @@ -71,7 +68,6 @@ public Set prioritizedBidders(Account account) { } public boolean isPrioritizedFamily(String cookieFamilyName) { - final String bidder = prioritizedCookieFamilyNameToBidderName.get(cookieFamilyName); - return prioritizedBidders.contains(bidder); + return prioritizedCookieFamilies.contains(cookieFamilyName); } } diff --git a/src/main/java/org/prebid/server/handler/openrtb2/AmpHandler.java b/src/main/java/org/prebid/server/handler/openrtb2/AmpHandler.java index a7b39dce659..1ee95db2813 100644 --- a/src/main/java/org/prebid/server/handler/openrtb2/AmpHandler.java +++ b/src/main/java/org/prebid/server/handler/openrtb2/AmpHandler.java @@ -370,14 +370,14 @@ private void handleResult(AsyncResult responseResult, conditionalLogger.info( "%s, Referer: %s" .formatted(message, routingContext.request().headers().get(HttpUtil.REFERER_HEADER)), - 100); + logSamplingRate); status = HttpResponseStatus.BAD_REQUEST; body = message; } else if (exception instanceof UnauthorizedAccountException) { metricRequestStatus = MetricName.badinput; final String message = exception.getMessage(); - conditionalLogger.info(message, 100); + conditionalLogger.info(message, logSamplingRate); errorMessages = Collections.singletonList(message); diff --git a/src/main/java/org/prebid/server/log/ConditionalLogger.java b/src/main/java/org/prebid/server/log/ConditionalLogger.java index f3e17bb9ed0..90d642d57fa 100644 --- a/src/main/java/org/prebid/server/log/ConditionalLogger.java +++ b/src/main/java/org/prebid/server/log/ConditionalLogger.java @@ -8,7 +8,6 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; public class ConditionalLogger { @@ -19,23 +18,16 @@ public class ConditionalLogger { private final String key; private final Logger logger; - private final ConcurrentMap messageToCount; - private final ConcurrentMap messageToWait; + private final ConcurrentMap messageToWaitEndTime; public ConditionalLogger(String key, Logger logger) { this.key = key; // can be null this.logger = Objects.requireNonNull(logger); - messageToCount = Caffeine.newBuilder() + messageToWaitEndTime = Caffeine.newBuilder() .maximumSize(CACHE_MAXIMUM_SIZE) .expireAfterWrite(EXPIRE_CACHE_DURATION, TimeUnit.HOURS) - .build() - .asMap(); - - messageToWait = Caffeine.newBuilder() - .maximumSize(CACHE_MAXIMUM_SIZE) - .expireAfterWrite(EXPIRE_CACHE_DURATION, TimeUnit.HOURS) - .build() + .build() .asMap(); } @@ -43,101 +35,56 @@ public ConditionalLogger(Logger logger) { this(null, logger); } - public void infoWithKey(String key, String message, int limit) { - log(key, limit, logger -> logger.info(message)); + public void debug(String message, long duration, TimeUnit unit) { + log(message, duration, unit, logger::debug); } - public void info(String message, int limit) { - log(message, limit, logger -> logger.info(message)); + public void debug(String message, double samplingRate) { + log(message, samplingRate, logger::debug); } public void info(String message, long duration, TimeUnit unit) { - log(message, duration, unit, logger -> logger.info(message)); + log(message, duration, unit, logger::info); } public void info(String message, double samplingRate) { - if (samplingRate >= 1.0d || ThreadLocalRandom.current().nextDouble() < samplingRate) { - logger.warn(message); - } + log(message, samplingRate, logger::info); } - public void errorWithKey(String key, String message, int limit) { - log(key, limit, logger -> logger.error(message)); + public void warn(String message, long duration, TimeUnit unit) { + log(message, duration, unit, logger::warn); } - public void error(String message, int limit) { - log(message, limit, logger -> logger.error(message)); + public void warn(String message, double samplingRate) { + log(message, samplingRate, logger::warn); } public void error(String message, long duration, TimeUnit unit) { - log(message, duration, unit, logger -> logger.error(message)); + log(message, duration, unit, logger::error); } public void error(String message, double samplingRate) { - if (samplingRate >= 1.0d || ThreadLocalRandom.current().nextDouble() < samplingRate) { - logger.error(message); - } - } - - public void debug(String message, int limit) { - log(message, limit, logger -> logger.debug(message)); - } - - public void debug(String message, long duration, TimeUnit unit) { - log(message, duration, unit, logger -> logger.debug(message)); + log(message, samplingRate, logger::error); } - public void debug(String message, double samplingRate) { + private static void log(String message, double samplingRate, Consumer logger) { if (samplingRate >= 1.0d || ThreadLocalRandom.current().nextDouble() < samplingRate) { - logger.debug(message); + logger.accept(message); } } - public void warn(String message, int limit) { - log(message, limit, logger -> logger.warn(message)); - } - - public void warn(String message, long duration, TimeUnit unit) { - log(message, duration, unit, logger -> logger.warn(message)); - } - - public void warn(String message, double samplingRate) { - if (samplingRate >= 1.0d || ThreadLocalRandom.current().nextDouble() < samplingRate) { - logger.warn(message); - } - } - - /** - * Calls {@link Consumer} if the given limit for specified key is not exceeded. - */ - private void log(String key, int limit, Consumer consumer) { - final String resolvedKey = ObjectUtils.defaultIfNull(this.key, key); - final AtomicInteger count = messageToCount.computeIfAbsent(resolvedKey, ignored -> new AtomicInteger()); - if (count.incrementAndGet() >= limit) { - count.set(0); - consumer.accept(logger); - } - } + private void log(String message, long duration, TimeUnit unit, Consumer logger) { + final String key = ObjectUtils.defaultIfNull(this.key, message); + final Instant currentTime = Instant.now(); + final Instant endTime = messageToWaitEndTime.get(key); - /** - * Calls {@link Consumer} if the given time for specified key is not exceeded. - */ - private void log(String key, long duration, TimeUnit unit, Consumer consumer) { - final long currentTime = Instant.now().toEpochMilli(); - final String resolvedKey = ObjectUtils.defaultIfNull(this.key, key); - final long endTime = messageToWait.computeIfAbsent(resolvedKey, ignored -> calculateEndTime(duration, unit)); - - if (currentTime >= endTime) { - messageToWait.replace(resolvedKey, endTime, calculateEndTime(duration, unit)); - consumer.accept(logger); + if (endTime == null || endTime.isBefore(currentTime)) { + messageToWaitEndTime.put(key, calculateEndTime(currentTime, duration, unit)); + logger.accept(message); } } - /** - * Returns time in millis as current time incremented by specified duration. - */ - private static long calculateEndTime(long duration, TimeUnit unit) { - final long durationInMillis = unit.toMillis(duration); - return Instant.now().plusMillis(durationInMillis).toEpochMilli(); + private static Instant calculateEndTime(Instant currentTime, long duration, TimeUnit unit) { + return currentTime.plus(duration, unit.toChronoUnit()); } } diff --git a/src/main/java/org/prebid/server/privacy/gdpr/TcfDefinerService.java b/src/main/java/org/prebid/server/privacy/gdpr/TcfDefinerService.java index 2fa6d20b837..26b9431e1b1 100644 --- a/src/main/java/org/prebid/server/privacy/gdpr/TcfDefinerService.java +++ b/src/main/java/org/prebid/server/privacy/gdpr/TcfDefinerService.java @@ -398,25 +398,25 @@ private TCString decodeTcString(String consentString, RequestLogInfo requestLogI } } - private static void logWarn(String consent, String message, RequestLogInfo requestLogInfo) { + private void logWarn(String consent, String message, RequestLogInfo requestLogInfo) { if (requestLogInfo == null || requestLogInfo.getRequestType() == null) { final String exceptionMessage = "Parsing consent string:\"%s\" failed for undefined type with exception %s" .formatted(consent, message); - undefinedCorruptConsentLogger.info(exceptionMessage, 100); + undefinedCorruptConsentLogger.info(exceptionMessage, samplingRate); return; } switch (requestLogInfo.getRequestType()) { case amp -> ampCorruptConsentLogger.info( - logMessage(consent, MetricName.amp.toString(), requestLogInfo, message), 100); + logMessage(consent, MetricName.amp.toString(), requestLogInfo, message), samplingRate); case openrtb2app -> appCorruptConsentLogger.info( - logMessage(consent, MetricName.openrtb2app.toString(), requestLogInfo, message), 100); + logMessage(consent, MetricName.openrtb2app.toString(), requestLogInfo, message), samplingRate); case openrtb2dooh -> doohCorruptConsentLogger.info( - logMessage(consent, MetricName.openrtb2dooh.toString(), requestLogInfo, message), 100); + logMessage(consent, MetricName.openrtb2dooh.toString(), requestLogInfo, message), samplingRate); case openrtb2web -> siteCorruptConsentLogger.info( - logMessage(consent, MetricName.openrtb2web.toString(), requestLogInfo, message), 100); + logMessage(consent, MetricName.openrtb2web.toString(), requestLogInfo, message), samplingRate); default -> undefinedCorruptConsentLogger.info( - logMessage(consent, "video or sync or setuid", requestLogInfo, message), 100); + logMessage(consent, "video or sync or setuid", requestLogInfo, message), samplingRate); } } diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/ExtDeviceVendor.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/ExtDeviceVendor.java deleted file mode 100644 index 5fd48b458a0..00000000000 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/ExtDeviceVendor.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.prebid.server.proto.openrtb.ext.request; - -import lombok.Builder; -import lombok.Value; - -/** - * Defines the contract for bidrequest.device.ext.<vendor> - */ -@Builder -@Value -public class ExtDeviceVendor { - - public static final ExtDeviceVendor EMPTY = ExtDeviceVendor.builder().build(); - - String connspeed; - - String type; - - String osfamily; - - String os; - - String osver; - - String browser; - - String browserver; - - String make; - - String model; - - String language; - - String carrier; -} diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/ExtGeoVendor.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/ExtGeoVendor.java deleted file mode 100644 index 5da589b71a9..00000000000 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/ExtGeoVendor.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.prebid.server.proto.openrtb.ext.request; - -import lombok.Builder; -import lombok.Value; - -/** - * Defines the contract for bidrequest.device.geo.ext.<vendor> or bidrequest.user.geo.ext.<vendor> - */ -@Builder(toBuilder = true) -@Value -public class ExtGeoVendor { - - public static final ExtGeoVendor EMPTY = ExtGeoVendor.builder().build(); - - /** - * Continent code in two-letter format: - *

- * af - Africa, an - Antarctica, as - Asia, eu - Europe, na - North America, oc - Australia, sa - South America. - */ - String continent; - - /** - * Country code in ISO-3166-1-alpha-2 format. - */ - String country; - - Integer region; - - /** - * Nielson DMA code (not Google). - */ - Integer metro; - - String city; - - String zip; -} diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/dxkulture/ExtImpDxKulture.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/dxkulture/ExtImpDxKulture.java deleted file mode 100644 index 98a20befa9a..00000000000 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/dxkulture/ExtImpDxKulture.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.prebid.server.proto.openrtb.ext.request.dxkulture; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Value; - -@Value(staticConstructor = "of") -public class ExtImpDxKulture { - - @JsonProperty("publisherId") - String publisherId; - - @JsonProperty("placementId") - String placementId; -} diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/intertech/ExtImpIntertech.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/intertech/ExtImpIntertech.java deleted file mode 100644 index c6c750cad44..00000000000 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/intertech/ExtImpIntertech.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.prebid.server.proto.openrtb.ext.request.intertech; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class ExtImpIntertech { - - Integer pageId; - - Integer impId; -} diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/telaria/ExtImpOutTelaria.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/telaria/ExtImpOutTelaria.java deleted file mode 100644 index 34fe9a82d26..00000000000 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/telaria/ExtImpOutTelaria.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.prebid.server.proto.openrtb.ext.request.telaria; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Value; - -@Value(staticConstructor = "of") -public class ExtImpOutTelaria { - - @JsonProperty("originalTagid") - String originalTagid; - - @JsonProperty("originalPublisherid") - String originalPublisherid; -} diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/telaria/ExtImpTelaria.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/telaria/ExtImpTelaria.java deleted file mode 100644 index c4b21399849..00000000000 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/telaria/ExtImpTelaria.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.prebid.server.proto.openrtb.ext.request.telaria; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.node.ObjectNode; -import lombok.Value; - -@Value(staticConstructor = "of") -public class ExtImpTelaria { - - @JsonProperty("adCode") - String adCode; - - @JsonProperty("seatCode") - String seatCode; - - ObjectNode extra; -} diff --git a/src/main/java/org/prebid/server/proto/response/UsersyncInfo.java b/src/main/java/org/prebid/server/proto/response/UsersyncInfo.java index 67f4aa78868..76a912b0bcf 100644 --- a/src/main/java/org/prebid/server/proto/response/UsersyncInfo.java +++ b/src/main/java/org/prebid/server/proto/response/UsersyncInfo.java @@ -1,6 +1,5 @@ package org.prebid.server.proto.response; -import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Value; import org.prebid.server.bidder.UsersyncMethodType; @@ -15,7 +14,4 @@ public class UsersyncInfo { String url; UsersyncMethodType type; - - @JsonProperty("supportCORS") - Boolean supportCORS; } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/DxKultureBidderConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/DxKultureBidderConfiguration.java deleted file mode 100644 index 6aa63ef7eb0..00000000000 --- a/src/main/java/org/prebid/server/spring/config/bidder/DxKultureBidderConfiguration.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.prebid.server.spring.config.bidder; - -import org.prebid.server.bidder.BidderDeps; -import org.prebid.server.bidder.dxkulture.DxKultureBidder; -import org.prebid.server.json.JacksonMapper; -import org.prebid.server.spring.config.bidder.model.BidderConfigurationProperties; -import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler; -import org.prebid.server.spring.env.YamlPropertySourceFactory; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -@Configuration -@PropertySource(value = "classpath:/bidder-config/dxkulture.yaml", factory = YamlPropertySourceFactory.class) -public class DxKultureBidderConfiguration { - - private static final String BIDDER_NAME = "dxkulture"; - - @Bean("dxkultureConfigurationProperties") - @ConfigurationProperties("adapters.dxkulture") - BidderConfigurationProperties configurationProperties() { - return new BidderConfigurationProperties(); - } - - @Bean - BidderDeps dxkultureBidderDeps(BidderConfigurationProperties dxkultureConfigurationProperties, - JacksonMapper mapper) { - - return BidderDepsAssembler.forBidder(BIDDER_NAME) - .withConfig(dxkultureConfigurationProperties) - .bidderCreator(config -> new DxKultureBidder(config.getEndpoint(), mapper)) - .assemble(); - } -} diff --git a/src/main/java/org/prebid/server/spring/config/bidder/IntertechConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/IntertechConfiguration.java deleted file mode 100644 index 01c474c94e4..00000000000 --- a/src/main/java/org/prebid/server/spring/config/bidder/IntertechConfiguration.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.prebid.server.spring.config.bidder; - -import org.prebid.server.bidder.BidderDeps; -import org.prebid.server.bidder.intertech.IntertechBidder; -import org.prebid.server.json.JacksonMapper; -import org.prebid.server.spring.config.bidder.model.BidderConfigurationProperties; -import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler; -import org.prebid.server.spring.env.YamlPropertySourceFactory; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -@Configuration -@PropertySource(value = "classpath:/bidder-config/intertech.yaml", factory = YamlPropertySourceFactory.class) -public class IntertechConfiguration { - - private static final String BIDDER_NAME = "intertech"; - - @Bean("intertechConfigurationProperties") - @ConfigurationProperties("adapters.intertech") - BidderConfigurationProperties configurationProperties() { - return new BidderConfigurationProperties(); - } - - @Bean - BidderDeps intertechBidderDeps(BidderConfigurationProperties intertechConfigurationProperties, - JacksonMapper mapper) { - - return BidderDepsAssembler.forBidder(BIDDER_NAME) - .withConfig(intertechConfigurationProperties) - .bidderCreator(config -> new IntertechBidder(config.getEndpoint(), mapper)) - .assemble(); - } -} diff --git a/src/main/java/org/prebid/server/spring/config/bidder/TelariaConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/TelariaConfiguration.java deleted file mode 100644 index b07ef6afcf8..00000000000 --- a/src/main/java/org/prebid/server/spring/config/bidder/TelariaConfiguration.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.prebid.server.spring.config.bidder; - -import org.prebid.server.bidder.BidderDeps; -import org.prebid.server.bidder.telaria.TelariaBidder; -import org.prebid.server.json.JacksonMapper; -import org.prebid.server.spring.config.bidder.model.BidderConfigurationProperties; -import org.prebid.server.spring.config.bidder.util.BidderDepsAssembler; -import org.prebid.server.spring.env.YamlPropertySourceFactory; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -@Configuration -@PropertySource(value = "classpath:/bidder-config/telaria.yaml", factory = YamlPropertySourceFactory.class) -public class TelariaConfiguration { - - private static final String BIDDER_NAME = "telaria"; - - @Bean("telariaConfigurationProperties") - @ConfigurationProperties("adapters.telaria") - BidderConfigurationProperties configurationProperties() { - return new BidderConfigurationProperties(); - } - - @Bean - BidderDeps telariaBidderDeps(BidderConfigurationProperties telariaConfigurationProperties, - JacksonMapper mapper) { - - return BidderDepsAssembler.forBidder(BIDDER_NAME) - .withConfig(telariaConfigurationProperties) - .bidderCreator(config -> new TelariaBidder(config.getEndpoint(), mapper)) - .assemble(); - } -} diff --git a/src/main/java/org/prebid/server/spring/config/bidder/model/usersync/UsersyncMethodConfigurationProperties.java b/src/main/java/org/prebid/server/spring/config/bidder/model/usersync/UsersyncMethodConfigurationProperties.java index fc9b685b339..2c05299c178 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/model/usersync/UsersyncMethodConfigurationProperties.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/model/usersync/UsersyncMethodConfigurationProperties.java @@ -6,7 +6,6 @@ import org.springframework.validation.annotation.Validated; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; @Data @Validated @@ -18,8 +17,5 @@ public class UsersyncMethodConfigurationProperties { String uidMacro; - @NotNull - Boolean supportCors; - UsersyncFormat formatOverride; } diff --git a/src/main/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtil.java b/src/main/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtil.java index 2a669b58cdb..1f18daaae09 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtil.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtil.java @@ -38,7 +38,6 @@ private static UsersyncMethod toMethod(UsersyncMethodType type, .type(type) .usersyncUrl(Uri.of(properties.getUrl())) .uidMacro(properties.getUidMacro()) - .supportCORS(properties.getSupportCors()) .formatOverride(properties.getFormatOverride()) .build(); } diff --git a/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java b/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java index a6b56622c42..b16d1397cab 100644 --- a/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/server/application/ApplicationServerConfiguration.java @@ -39,9 +39,9 @@ import org.prebid.server.handler.NoCacheHandler; import org.prebid.server.handler.NotificationEventHandler; import org.prebid.server.handler.OptoutHandler; +import org.prebid.server.handler.PostVtrackHandler; import org.prebid.server.handler.SetuidHandler; import org.prebid.server.handler.StatusHandler; -import org.prebid.server.handler.PostVtrackHandler; import org.prebid.server.handler.info.BidderDetailsHandler; import org.prebid.server.handler.info.BiddersHandler; import org.prebid.server.handler.info.filters.BaseOnlyBidderInfoFilterStrategy; @@ -56,6 +56,7 @@ import org.prebid.server.json.JacksonMapper; import org.prebid.server.log.HttpInteractionLogger; import org.prebid.server.metric.Metrics; +import org.prebid.server.model.Endpoint; import org.prebid.server.optout.GoogleRecaptchaVerifier; import org.prebid.server.privacy.HostVendorTcfDefinerService; import org.prebid.server.settings.ApplicationSettings; @@ -64,8 +65,10 @@ import org.prebid.server.validation.BidderParamValidator; import org.prebid.server.version.PrebidVersionProvider; import org.prebid.server.vertx.verticles.VerticleDefinition; +import org.prebid.server.vertx.verticles.server.HttpEndpoint; import org.prebid.server.vertx.verticles.server.ServerVerticle; import org.prebid.server.vertx.verticles.server.application.ApplicationResource; +import org.prebid.server.vertx.verticles.server.application.DeprecatedResource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -271,6 +274,7 @@ AmpHandler openrtbAmpHandler( } @Bean + @ConditionalOnProperty(value = "video.enable-deprecated-endpoint", havingValue = "true") VideoHandler openrtbVideoHandler( VideoRequestFactory videoRequestFactory, VideoResponseFactory videoResponseFactory, @@ -297,6 +301,15 @@ VideoHandler openrtbVideoHandler( mapper); } + @Bean + @ConditionalOnProperty(value = "video.enable-deprecated-endpoint", havingValue = "false", matchIfMissing = true) + ApplicationResource deprecatedOpenrtbVideoHandler() { + return new DeprecatedResource( + "The video endpoint is deprecated and will be removed in 5.0." + + " You may re-enable it via [video.enable-deprecated-endpoint]", + HttpEndpoint.of(HttpMethod.POST, Endpoint.openrtb2_video.value())); + } + @Bean StatusHandler statusHandler(List healthCheckers, JacksonMapper mapper) { healthCheckers.stream() diff --git a/src/main/java/org/prebid/server/vertx/verticles/server/application/DeprecatedResource.java b/src/main/java/org/prebid/server/vertx/verticles/server/application/DeprecatedResource.java new file mode 100644 index 00000000000..f87c53c9944 --- /dev/null +++ b/src/main/java/org/prebid/server/vertx/verticles/server/application/DeprecatedResource.java @@ -0,0 +1,33 @@ +package org.prebid.server.vertx.verticles.server.application; + +import io.netty.handler.codec.http.HttpResponseStatus; +import io.vertx.ext.web.RoutingContext; +import org.apache.commons.lang3.StringUtils; +import org.prebid.server.vertx.verticles.server.HttpEndpoint; + +import java.util.Arrays; +import java.util.List; + +public class DeprecatedResource implements ApplicationResource { + + private final String message; + + private final List endpoints; + + public DeprecatedResource(String message, HttpEndpoint... endpoints) { + this.message = message; + this.endpoints = Arrays.asList(endpoints); + } + + @Override + public List endpoints() { + return endpoints; + } + + @Override + public void handle(RoutingContext event) { + event.response() + .setStatusCode(HttpResponseStatus.GONE.code()) + .end(StringUtils.defaultString(message)); + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 9494abfeb5c..86526b803b2 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -131,6 +131,7 @@ auction: category-mapping-enabled: false strict-app-site-dooh: true video: + enable-deprecated-endpoint: false stored-request-required: false stored-requests-timeout-ms: 90 event: diff --git a/src/main/resources/bidder-config/aax.yaml b/src/main/resources/bidder-config/aax.yaml index 3b648cd62dc..9e53c6b739d 100644 --- a/src/main/resources/bidder-config/aax.yaml +++ b/src/main/resources/bidder-config/aax.yaml @@ -18,5 +18,4 @@ adapters: cookie-family-name: aax redirect: url: https://c.aaxads.com/aacxc.php?fv=1&wbsh=psa&ryvlg=setstatuscode&redirect={redirect_url} - support-cors: false uid-macro: '' diff --git a/src/main/resources/bidder-config/acuityads.yaml b/src/main/resources/bidder-config/acuityads.yaml index e8c06c0885e..c9cfb9f037a 100644 --- a/src/main/resources/bidder-config/acuityads.yaml +++ b/src/main/resources/bidder-config/acuityads.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: acuityads redirect: url: https://cs.admanmedia.com/sync/prebid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/adagio.yaml b/src/main/resources/bidder-config/adagio.yaml index 33870fbd9de..9848b3135f2 100644 --- a/src/main/resources/bidder-config/adagio.yaml +++ b/src/main/resources/bidder-config/adagio.yaml @@ -24,5 +24,4 @@ adapters: cookie-family-name: adagio iframe: url: https://u-REGION.4dex.io/pbserver/usync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '{UID}' diff --git a/src/main/resources/bidder-config/adf.yaml b/src/main/resources/bidder-config/adf.yaml index f063341e4f0..7aa57c8ecae 100644 --- a/src/main/resources/bidder-config/adf.yaml +++ b/src/main/resources/bidder-config/adf.yaml @@ -19,5 +19,4 @@ adapters: cookie-family-name: adf redirect: url: https://c1.adform.net/cookie?redirect_url={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/adkernel.yaml b/src/main/resources/bidder-config/adkernel.yaml index 264f1f3d1db..1f594cf7275 100644 --- a/src/main/resources/bidder-config/adkernel.yaml +++ b/src/main/resources/bidder-config/adkernel.yaml @@ -14,11 +14,9 @@ adapters: cookie-family-name: xapads redirect: url: https://sync.adkernel.com/user-sync?t=image&zone=284803&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '{UID}' iframe: url: https://sync.adkernel.com/user-sync?t=iframe&zone=284803&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '{UID}' meta-info: maintainer-email: prebid-dev@adkernel.com @@ -38,5 +36,4 @@ adapters: cookie-family-name: adkernel redirect: url: https://sync.adkernel.com/user-sync?t=image&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '{UID}' diff --git a/src/main/resources/bidder-config/adkerneladn.yaml b/src/main/resources/bidder-config/adkerneladn.yaml index 46441555693..13161d5b321 100644 --- a/src/main/resources/bidder-config/adkerneladn.yaml +++ b/src/main/resources/bidder-config/adkerneladn.yaml @@ -14,5 +14,4 @@ adapters: cookie-family-name: adkernelAdn redirect: url: https://tag.adkernel.com/syncr?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false uid-macro: '${UID}' diff --git a/src/main/resources/bidder-config/adman.yaml b/src/main/resources/bidder-config/adman.yaml index c9e4b454ba8..3266ac736b0 100644 --- a/src/main/resources/bidder-config/adman.yaml +++ b/src/main/resources/bidder-config/adman.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: adman redirect: url: https://sync.admanmedia.com/pbs.gif?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/admixer.yaml b/src/main/resources/bidder-config/admixer.yaml index fd50d5df401..9947521e567 100644 --- a/src/main/resources/bidder-config/admixer.yaml +++ b/src/main/resources/bidder-config/admixer.yaml @@ -19,5 +19,4 @@ adapters: cookie-family-name: admixer redirect: url: https://inv-nets.admixer.net/adxcm.aspx?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir=1&rurl={redirect_url} - support-cors: false uid-macro: '$$visitor_cookie$$' diff --git a/src/main/resources/bidder-config/adot.yaml b/src/main/resources/bidder-config/adot.yaml index ecd12c821b7..a0beb762e37 100644 --- a/src/main/resources/bidder-config/adot.yaml +++ b/src/main/resources/bidder-config/adot.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: adot redirect: url: https://sync.adotmob.com/cookie/pbs?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false uid-macro: '{amob_user_id}' diff --git a/src/main/resources/bidder-config/adpone.yaml b/src/main/resources/bidder-config/adpone.yaml index 69826d62be9..36681e02ec1 100644 --- a/src/main/resources/bidder-config/adpone.yaml +++ b/src/main/resources/bidder-config/adpone.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: adpone redirect: url: https://usersync.adpone.com/csync?redir={redirect_url} - support-cors: false uid-macro: '{uid}' diff --git a/src/main/resources/bidder-config/adprime.yaml b/src/main/resources/bidder-config/adprime.yaml index f706037fe76..0e08e4214b7 100644 --- a/src/main/resources/bidder-config/adprime.yaml +++ b/src/main/resources/bidder-config/adprime.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: adprime iframe: url: https://sync.adprime.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} - support-cors: false uid-macro: '[UID]' redirect: url: https://sync.adprime.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/adquery.yaml b/src/main/resources/bidder-config/adquery.yaml index b9c70ecf0c9..84efd3bfc7b 100644 --- a/src/main/resources/bidder-config/adquery.yaml +++ b/src/main/resources/bidder-config/adquery.yaml @@ -12,5 +12,4 @@ adapters: cookie-family-name: adquery iframe: url: https://api.adquery.io/storage?gdpr={gdpr}&consent={gdpr_consent}&ccpa_consent={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/adtonos.yaml b/src/main/resources/bidder-config/adtonos.yaml index 0810edec009..582046939c7 100644 --- a/src/main/resources/bidder-config/adtonos.yaml +++ b/src/main/resources/bidder-config/adtonos.yaml @@ -18,5 +18,4 @@ adapters: cookie-family-name: adtonos redirect: url: https://play.adtonos.com/redir?to={redirect_url} - support-cors: false uid-macro: '@UUID@' diff --git a/src/main/resources/bidder-config/aduptech.yaml b/src/main/resources/bidder-config/aduptech.yaml index e60c9f69804..52cb518140d 100644 --- a/src/main/resources/bidder-config/aduptech.yaml +++ b/src/main/resources/bidder-config/aduptech.yaml @@ -16,10 +16,8 @@ adapters: cookie-family-name: aduptech iframe: url: https://rtb.d.adup-tech.com/service/sync?iframe=1&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[UID]' redirect: url: https://rtb.d.adup-tech.com/service/sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[UID]' target-currency: "EUR" diff --git a/src/main/resources/bidder-config/advangelists.yaml b/src/main/resources/bidder-config/advangelists.yaml index 5c6c7113782..9b146bca755 100644 --- a/src/main/resources/bidder-config/advangelists.yaml +++ b/src/main/resources/bidder-config/advangelists.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: advangelists iframe: url: https://nep.advangelists.com/xp/user-sync?acctid=%7Baid%7D&&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/adverxo.yaml b/src/main/resources/bidder-config/adverxo.yaml index c29792ca49f..469aec0ce59 100644 --- a/src/main/resources/bidder-config/adverxo.yaml +++ b/src/main/resources/bidder-config/adverxo.yaml @@ -12,11 +12,9 @@ adapters: iframe: url: https://cittamatra.com/usync?type=iframe&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} uid-macro: '$UID' - support-cors: false redirect: url: https://cittamatra.com/usync?type=image&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} uid-macro: '$UID' - support-cors: false bidsmind: enabled: false endpoint: https://bidsmind.pbsadverxo.com/auction?id={adUnitId}&auth={auth} @@ -26,11 +24,9 @@ adapters: iframe: url: https://taetee.com/usync?type=iframe&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} uid-macro: '$UID' - support-cors: false redirect: url: https://taetee.com/usync?type=image&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} uid-macro: '$UID' - support-cors: false harrenmedia: enabled: false endpoint: https://harrenmedia.pbsadverxo.com/auction?id={adUnitId}&auth={auth} @@ -40,11 +36,9 @@ adapters: iframe: url: https://hmidssp.com/usync?type=iframe&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} uid-macro: '$UID' - support-cors: false redirect: url: https://hmidssp.com/usync?type=image&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} uid-macro: '$UID' - support-cors: false meta-info: maintainer-email: developer@adverxo.com app-media-types: @@ -61,10 +55,8 @@ adapters: cookie-family-name: adverxo iframe: url: https://pbsadverxo.com/usync?type=iframe&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://pbsadverxo.com/usync?type=image&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/adyoulike.yaml b/src/main/resources/bidder-config/adyoulike.yaml index cf695cd71e3..40db9504891 100644 --- a/src/main/resources/bidder-config/adyoulike.yaml +++ b/src/main/resources/bidder-config/adyoulike.yaml @@ -14,9 +14,7 @@ adapters: cookie-family-name: adyoulike iframe: url: https://visitor.omnitagjs.com/visitor/isync?uid=19340f4f097d16f41f34fc0274981ca4&name=PrebidServer&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&url={redirect_url} - support-cors: false uid-macro: '[BUYER_USERID]' redirect: url: https://visitor.omnitagjs.com/visitor/bsync?uid=19340f4f097d16f41f34fc0274981ca4&name=PrebidServer&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&url={redirect_url} - support-cors: false uid-macro: '[BUYER_USERID]' diff --git a/src/main/resources/bidder-config/aidem.yaml b/src/main/resources/bidder-config/aidem.yaml index 00cde37b560..cd177677b2a 100644 --- a/src/main/resources/bidder-config/aidem.yaml +++ b/src/main/resources/bidder-config/aidem.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: aidem redirect: url: https://gum.aidemsrv.com/prebid_sync?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/aja.yaml b/src/main/resources/bidder-config/aja.yaml index bbba7c9428a..3af5ce23645 100644 --- a/src/main/resources/bidder-config/aja.yaml +++ b/src/main/resources/bidder-config/aja.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: aja redirect: url: https://ad.as.amanad.adtdp.com/v1/sync/ssp?ssp=4&gdpr={gdpr}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '%s' diff --git a/src/main/resources/bidder-config/alkimi.yaml b/src/main/resources/bidder-config/alkimi.yaml index ff744550762..106db4e6f5e 100644 --- a/src/main/resources/bidder-config/alkimi.yaml +++ b/src/main/resources/bidder-config/alkimi.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: alkimi redirect: url: https://user-sync.alkimi-onboarding.com/ssp-sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '${UID}' diff --git a/src/main/resources/bidder-config/alliancegravity.yaml b/src/main/resources/bidder-config/alliancegravity.yaml index 60be1468baa..2284e3ea813 100644 --- a/src/main/resources/bidder-config/alliancegravity.yaml +++ b/src/main/resources/bidder-config/alliancegravity.yaml @@ -21,5 +21,4 @@ adapters: cookie-family-name: alliancegravity iframe: url: https://pbs.production.agrvt.com/static/cookie_sync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/amx.yaml b/src/main/resources/bidder-config/amx.yaml index f9f3e7a1920..0c357e32ba7 100644 --- a/src/main/resources/bidder-config/amx.yaml +++ b/src/main/resources/bidder-config/amx.yaml @@ -18,9 +18,7 @@ adapters: cookie-family-name: amx redirect: url: https://prebid.a-mo.net/cchain/0?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&cb={redirect_url} - support-cors: false uid-macro: "$UID" iframe: url: https://prebid.a-mo.net/isyn?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&s=pbs&cb={redirect_url} uid-macro: "$UID" - support-cors: false diff --git a/src/main/resources/bidder-config/apacdex.yaml b/src/main/resources/bidder-config/apacdex.yaml index 10413148204..1fb97e98e34 100644 --- a/src/main/resources/bidder-config/apacdex.yaml +++ b/src/main/resources/bidder-config/apacdex.yaml @@ -19,9 +19,7 @@ adapters: cookie-family-name: apacdex iframe: url: https://sync.quantumdex.io/usersync/pbs?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false uid-macro: '[UID]' redirect: url: https://sync.quantumdex.io/getuid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/appnexus.yaml b/src/main/resources/bidder-config/appnexus.yaml index 84bbd0950e5..68ea6ec9658 100644 --- a/src/main/resources/bidder-config/appnexus.yaml +++ b/src/main/resources/bidder-config/appnexus.yaml @@ -21,7 +21,6 @@ adapters: cookie-family-name: adnxs redirect: url: https://ib.adnxs.com/getuid?{redirect_url} - support-cors: false uid-macro: '$UID' platform-id: 5 iab-categories: diff --git a/src/main/resources/bidder-config/aso.yaml b/src/main/resources/bidder-config/aso.yaml index 936d8bded8a..14ba5ff60e9 100644 --- a/src/main/resources/bidder-config/aso.yaml +++ b/src/main/resources/bidder-config/aso.yaml @@ -11,7 +11,6 @@ adapters: cookie-family-name: bcmint redirect: url: https://track.datacygnal.io/sync/v2?gdpr={gdpr}&gdpr_consent={gdpr_consent}&usp={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '{uid}' bidagency: enabled: false @@ -22,7 +21,6 @@ adapters: cookie-family-name: bidagency redirect: url: https://track.bidgx.com/sync/v2?gdpr={gdpr}&gdpr_consent={gdpr_consent}&usp={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '{uid}' kuantyx: enabled: false @@ -33,7 +31,6 @@ adapters: cookie-family-name: kuantyx redirect: url: https://track.kntxy.com/sync/v2?gdpr={gdpr}&gdpr_consent={gdpr_consent}&usp={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '{uid}' meta-info: maintainer-email: support@adsrv.org @@ -50,5 +47,4 @@ adapters: cookie-family-name: aso redirect: url: https://track.aso1.net/sync/v2?gdpr={gdpr}&gdpr_consent={gdpr_consent}&usp={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '{uid}' diff --git a/src/main/resources/bidder-config/avocet.yaml b/src/main/resources/bidder-config/avocet.yaml index 77add0f7eea..77c8e86a457 100644 --- a/src/main/resources/bidder-config/avocet.yaml +++ b/src/main/resources/bidder-config/avocet.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: avocet redirect: url: https://ads.avct.cloud/getuid?&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&url={redirect_url} - support-cors: false uid-macro: '{{UUID}}' diff --git a/src/main/resources/bidder-config/axis.yaml b/src/main/resources/bidder-config/axis.yaml index bf6e1ff8246..f9cbabdabab 100644 --- a/src/main/resources/bidder-config/axis.yaml +++ b/src/main/resources/bidder-config/axis.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: axis redirect: url: https://cs.axis-marketplace.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/axonix.yaml b/src/main/resources/bidder-config/axonix.yaml index fcb668ccb26..2dff4857e6e 100644 --- a/src/main/resources/bidder-config/axonix.yaml +++ b/src/main/resources/bidder-config/axonix.yaml @@ -16,6 +16,5 @@ adapters: usersync: cookie-family-name: axonix redirect: - support-cors: false url: https://openrtb-us-east-1.axonix.com/syn?redirect={redirect_url} uid-macro: 'xxEMODO_IDxx' diff --git a/src/main/resources/bidder-config/beachfront.yaml b/src/main/resources/bidder-config/beachfront.yaml index 8706f356af3..add3fdadb5f 100644 --- a/src/main/resources/bidder-config/beachfront.yaml +++ b/src/main/resources/bidder-config/beachfront.yaml @@ -15,6 +15,5 @@ adapters: cookie-family-name: beachfront iframe: url: https://sync.bfmio.com/sync_s2s?gdpr={gdpr}&url={redirect_url} - support-cors: false uid-macro: '[io_cid]' video-endpoint: https://reachms.bfmio.com/bid.json diff --git a/src/main/resources/bidder-config/beintoo.yaml b/src/main/resources/bidder-config/beintoo.yaml index 0db048989f7..cd4bf9454bf 100644 --- a/src/main/resources/bidder-config/beintoo.yaml +++ b/src/main/resources/bidder-config/beintoo.yaml @@ -12,5 +12,4 @@ adapters: cookie-family-name: beintoo iframe: url: https://ib.beintoo.com/um?ssp=pbs&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/between.yaml b/src/main/resources/bidder-config/between.yaml index 68e9bf0800f..5047e56f9f7 100644 --- a/src/main/resources/bidder-config/between.yaml +++ b/src/main/resources/bidder-config/between.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: between redirect: url: https://ads.betweendigital.com/match?bidder_id=pbs&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&callback_url={redirect_url} - support-cors: false uid-macro: '${USER_ID}' diff --git a/src/main/resources/bidder-config/bidmyadz.yaml b/src/main/resources/bidder-config/bidmyadz.yaml index d2d5c9f89ce..5db04d85764 100644 --- a/src/main/resources/bidder-config/bidmyadz.yaml +++ b/src/main/resources/bidder-config/bidmyadz.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: bidmyadz redirect: url: https://cookie-sync.bidmyadz.com/c0f68227d14ed938c6c49f3967cbe9bc?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&red={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/bidtheatre.yaml b/src/main/resources/bidder-config/bidtheatre.yaml index 58439303e69..da50135f5ea 100644 --- a/src/main/resources/bidder-config/bidtheatre.yaml +++ b/src/main/resources/bidder-config/bidtheatre.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: bidtheatre redirect: url: https://match.adsby.bidtheatre.com/prebidmatch?gdpr={gdpr}&gdpr_consent={gdpr_consent}&redir={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/bliink.yaml b/src/main/resources/bidder-config/bliink.yaml index b3a16b397d2..a4a096dcc62 100644 --- a/src/main/resources/bidder-config/bliink.yaml +++ b/src/main/resources/bidder-config/bliink.yaml @@ -18,9 +18,7 @@ adapters: cookie-family-name: bliink redirect: url: https://cookiesync.api.bliink.io/getuid?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&url={redirect_url} - support-cors: false uid-macro: '$UID' iframe: url: https://tag.bliink.io/usersync.html?gdpr={gdpr}&gdprConsent={gdpr_consent}&uspConsent={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/blis.yaml b/src/main/resources/bidder-config/blis.yaml index f0367800c64..94ab9e2774c 100644 --- a/src/main/resources/bidder-config/blis.yaml +++ b/src/main/resources/bidder-config/blis.yaml @@ -20,5 +20,4 @@ adapters: cookie-family-name: blis redirect: url: https://tr.blismedia.com/v1/api/sync/prebid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false uid-macro: '%%BLIS_USER_TOKEN%%' diff --git a/src/main/resources/bidder-config/boldwin.yaml b/src/main/resources/bidder-config/boldwin.yaml index d4f3e1a6b2f..05b080c7ee3 100644 --- a/src/main/resources/bidder-config/boldwin.yaml +++ b/src/main/resources/bidder-config/boldwin.yaml @@ -16,6 +16,5 @@ adapters: usersync: cookie-family-name: boldwin redirect: - support-cors: false url: https://sync.videowalldirect.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redir={redirect_url} uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/colossus.yaml b/src/main/resources/bidder-config/colossus.yaml index 6b5b05f6425..b03b7dcb72a 100644 --- a/src/main/resources/bidder-config/colossus.yaml +++ b/src/main/resources/bidder-config/colossus.yaml @@ -19,5 +19,4 @@ adapters: cookie-family-name: colossus redirect: url: https://sync.colossusssp.com/pbs.gif?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/compass.yaml b/src/main/resources/bidder-config/compass.yaml index 33e6165532b..85eae2c9a44 100644 --- a/src/main/resources/bidder-config/compass.yaml +++ b/src/main/resources/bidder-config/compass.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: compass redirect: url: https://sa-cs.deliverimp.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: - support-cors: false url: https://sa-cs.deliverimp.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/connatix.yaml b/src/main/resources/bidder-config/connatix.yaml index 10f55e844b9..2e6fd6c3077 100644 --- a/src/main/resources/bidder-config/connatix.yaml +++ b/src/main/resources/bidder-config/connatix.yaml @@ -16,9 +16,7 @@ adapters: iframe: url: "https://capi.connatix.com/us/pixel?pId=53&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&callback={redirect_url}" uid-macro: '[UID]' - support-cors: false redirect: url: "https://capi.connatix.com/us/pixel?pId=52&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&callback={redirect_url}" uid-macro: '[UID]' - support-cors: false diff --git a/src/main/resources/bidder-config/connectad.yaml b/src/main/resources/bidder-config/connectad.yaml index 779d1cb5b55..d6f9db7301a 100644 --- a/src/main/resources/bidder-config/connectad.yaml +++ b/src/main/resources/bidder-config/connectad.yaml @@ -20,7 +20,5 @@ adapters: cookie-family-name: connectad redirect: url: https://sync.connectad.io/ImageSyncer?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&cb={redirect_url} - support-cors: false iframe: url: https://sync.connectad.io/iFrameSyncer?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&cb={redirect_url} - support-cors: false diff --git a/src/main/resources/bidder-config/consumable.yaml b/src/main/resources/bidder-config/consumable.yaml index 3697d2db89c..bf0b557fe72 100644 --- a/src/main/resources/bidder-config/consumable.yaml +++ b/src/main/resources/bidder-config/consumable.yaml @@ -20,4 +20,3 @@ adapters: cookie-family-name: consumable redirect: url: https://e.serverbid.com/udb/9969/match?gdpr={gdpr}&euconsent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false diff --git a/src/main/resources/bidder-config/contxtful.yaml b/src/main/resources/bidder-config/contxtful.yaml index 5255f098431..58a8abb3d41 100644 --- a/src/main/resources/bidder-config/contxtful.yaml +++ b/src/main/resources/bidder-config/contxtful.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: contxtful iframe: url: https://sync.receptivity.io/pbs/iframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/copper6ssp.yaml b/src/main/resources/bidder-config/copper6ssp.yaml index 489a4e427aa..e87488eabce 100644 --- a/src/main/resources/bidder-config/copper6ssp.yaml +++ b/src/main/resources/bidder-config/copper6ssp.yaml @@ -16,10 +16,8 @@ adapters: usersync: cookie-family-name: copper6ssp redirect: - support-cors: false url: https://csync.copper6.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} uid-macro: '[UID]' iframe: - support-cors: false url: https://csync.copper6.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/cpmstar.yaml b/src/main/resources/bidder-config/cpmstar.yaml index 54b25a2dd95..f5fc117ed3d 100644 --- a/src/main/resources/bidder-config/cpmstar.yaml +++ b/src/main/resources/bidder-config/cpmstar.yaml @@ -15,9 +15,7 @@ adapters: cookie-family-name: cpmstar iframe: url: https://server.cpmstar.com/usersync.aspx?ifr=1&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://server.cpmstar.com/usersync.aspx?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/criteo.yaml b/src/main/resources/bidder-config/criteo.yaml index a33a29e9fb0..e516e713679 100644 --- a/src/main/resources/bidder-config/criteo.yaml +++ b/src/main/resources/bidder-config/criteo.yaml @@ -23,9 +23,7 @@ adapters: cookie-family-name: criteo redirect: url: https://ssp-sync.criteo.com/user-sync/redirect?gdprapplies={gdpr}&gdpr={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url}&profile=230 - support-cors: false uid-macro: '${CRITEO_USER_ID}' iframe: url: https://ssp-sync.criteo.com/user-sync/iframe?gdprapplies={gdpr}&gdpr={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url}&profile=230 - support-cors: false uid-macro: '${CRITEO_USER_ID}' diff --git a/src/main/resources/bidder-config/datablocks.yaml b/src/main/resources/bidder-config/datablocks.yaml index 12e9efe2dd1..7441345b460 100644 --- a/src/main/resources/bidder-config/datablocks.yaml +++ b/src/main/resources/bidder-config/datablocks.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: datablocks redirect: url: https://sync.v5prebid.datablocks.net/s2ssync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false uid-macro: '${uid}' diff --git a/src/main/resources/bidder-config/deepintent.yaml b/src/main/resources/bidder-config/deepintent.yaml index 26a04450f3f..4a27b86695d 100644 --- a/src/main/resources/bidder-config/deepintent.yaml +++ b/src/main/resources/bidder-config/deepintent.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: deepintent iframe: url: https://match.deepintent.com/usersync/136?id=unk&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '${DI_USER_ID}' diff --git a/src/main/resources/bidder-config/dianomi.yaml b/src/main/resources/bidder-config/dianomi.yaml index 94a9537a177..b0c6eb25976 100644 --- a/src/main/resources/bidder-config/dianomi.yaml +++ b/src/main/resources/bidder-config/dianomi.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: dianomi iframe: url: https://www-prebid.dianomi.com/prebid/usersync/index.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://data.dianomi.com/frontend/usync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/driftpixel.yaml b/src/main/resources/bidder-config/driftpixel.yaml index d2d76afc092..583b58d31fe 100644 --- a/src/main/resources/bidder-config/driftpixel.yaml +++ b/src/main/resources/bidder-config/driftpixel.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: driftpixel redirect: url: "https://sync.driftpixel.live/psync?t=s&e=0&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&cb={redirect_url}" - support-cors: false uid-macro: "%USER_ID%" diff --git a/src/main/resources/bidder-config/dxkulture.yaml b/src/main/resources/bidder-config/dxkulture.yaml deleted file mode 100644 index c0bf8273ead..00000000000 --- a/src/main/resources/bidder-config/dxkulture.yaml +++ /dev/null @@ -1,19 +0,0 @@ -adapters: - dxkulture: - endpoint: https://ads.dxkulture.com/pbs - meta-info: - maintainer-email: devops@dxkulture.com - app-media-types: - - banner - - video - site-media-types: - - banner - - video - supported-vendors: - vendor-id: 0 - usersync: - cookie-family-name: dxkulture - redirect: - url: https://ads.dxkulture.com/usync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&cb={redirect_url} - support-cors: false - uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/emtv.yaml b/src/main/resources/bidder-config/emtv.yaml index a6e7b064aa5..c17f93c2108 100644 --- a/src/main/resources/bidder-config/emtv.yaml +++ b/src/main/resources/bidder-config/emtv.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: emtv redirect: url: https://cs.engagemedia.tv/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/emxdigital.yaml b/src/main/resources/bidder-config/emxdigital.yaml index 84d822aa328..f89c489dc51 100644 --- a/src/main/resources/bidder-config/emxdigital.yaml +++ b/src/main/resources/bidder-config/emxdigital.yaml @@ -22,5 +22,4 @@ adapters: cookie-family-name: emx_digital iframe: url: https://cs.emxdgt.com/um?ssp=pbs&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/eplanning.yaml b/src/main/resources/bidder-config/eplanning.yaml index 03e9f6c17c1..baeb1b476ae 100644 --- a/src/main/resources/bidder-config/eplanning.yaml +++ b/src/main/resources/bidder-config/eplanning.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: eplanning iframe: url: https://ads.us.e-planning.net/uspd/1/?du={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/epsilon.yaml b/src/main/resources/bidder-config/epsilon.yaml index 9b0162d7b92..b93929ad431 100644 --- a/src/main/resources/bidder-config/epsilon.yaml +++ b/src/main/resources/bidder-config/epsilon.yaml @@ -24,5 +24,4 @@ adapters: cookie-family-name: epsilon redirect: url: https://prebid-match.dotomi.com/match/bounce/current?version=1&networkId=72582&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&rurl={redirect_url} - support-cors: false generate-bid-id: true diff --git a/src/main/resources/bidder-config/evolution.yaml b/src/main/resources/bidder-config/evolution.yaml index 72216850b38..93971cdbdd6 100644 --- a/src/main/resources/bidder-config/evolution.yaml +++ b/src/main/resources/bidder-config/evolution.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: e_volution redirect: url: https://sync.e-volution.ai/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: url: https://sync.e-volution.ai/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/exco.yaml b/src/main/resources/bidder-config/exco.yaml index 0c329cf9148..f180f12aa95 100644 --- a/src/main/resources/bidder-config/exco.yaml +++ b/src/main/resources/bidder-config/exco.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: exco redirect: url: https://sync.ex.co/v1/user_sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/feedad.yaml b/src/main/resources/bidder-config/feedad.yaml index 5d3a0574a49..c9db7094825 100644 --- a/src/main/resources/bidder-config/feedad.yaml +++ b/src/main/resources/bidder-config/feedad.yaml @@ -14,5 +14,4 @@ adapters: cookie-family-name: feedad iframe: url: https://ortb.feedad.com/1/usersyncs/supply?gdpr={gdpr}&gdpr_consent={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: $UID diff --git a/src/main/resources/bidder-config/freewheelssp.yaml b/src/main/resources/bidder-config/freewheelssp.yaml index fb7e491855d..cb0cb6d04cb 100644 --- a/src/main/resources/bidder-config/freewheelssp.yaml +++ b/src/main/resources/bidder-config/freewheelssp.yaml @@ -13,7 +13,6 @@ adapters: cookie-family-name: fwssp iframe: url: https://user-sync.fwmrm.net/ad/u?mode=pbs-user-sync&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&pbs_redirect={redirect_url} - support-cors: false uid-macro: '#{user.id}' meta-info: maintainer-email: prebid-maintainer@freewheel.com @@ -27,5 +26,4 @@ adapters: cookie-family-name: freewheelssp iframe: url: https://ads.stickyadstv.com/pbs-user-sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '{viewerid}' diff --git a/src/main/resources/bidder-config/frvradn.yaml b/src/main/resources/bidder-config/frvradn.yaml index 28b65bb6ec0..93141d9bcb4 100644 --- a/src/main/resources/bidder-config/frvradn.yaml +++ b/src/main/resources/bidder-config/frvradn.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: frvradn iframe: url: https://fran.frvr.com/api/v1/sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect_uri={redirect_url} - support-cors: false uid-macro: '{{UID}}' diff --git a/src/main/resources/bidder-config/gamoshi.yaml b/src/main/resources/bidder-config/gamoshi.yaml index 77c2a5792b9..60d48484c9a 100644 --- a/src/main/resources/bidder-config/gamoshi.yaml +++ b/src/main/resources/bidder-config/gamoshi.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: gamoshi redirect: url: https://rtb.gamoshi.io/user_sync_prebid?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&rurl={redirect_url} - support-cors: false uid-macro: '[gusr]' diff --git a/src/main/resources/bidder-config/generic.yaml b/src/main/resources/bidder-config/generic.yaml index ef6e5f3fe56..80f5af96d1c 100644 --- a/src/main/resources/bidder-config/generic.yaml +++ b/src/main/resources/bidder-config/generic.yaml @@ -28,7 +28,6 @@ adapters: cookie-family-name: ccx redirect: url: https://sync.clickonometrics.pl/prebid/set-cookie?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&cb={redirect_url} - support-cors: false uid-macro: '${USER_ID}' infytv: enabled: false @@ -61,7 +60,6 @@ adapters: redirect: url: https://ssp.disqus.com/redirectuser?sid=GET_SID_FROM_ZETA&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} uid-macro: 'BUYERUID' - support-cors: false blue: enabled: false endpoint: https://prebid-us-east-1.getblue.io/?src=prebid @@ -91,11 +89,9 @@ adapters: cookie-family-name: cwire redirect: url: https://prebid.cwi.re/v1/usersync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&rd={redirect_url} - support-cors: false uid-macro: '$UID' iframe: url: https://prebid.cwi.re/v1/usersync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&rd={redirect_url} - support-cors: false uid-macro: '$UID' meta-info: maintainer-email: maintainer@example.com diff --git a/src/main/resources/bidder-config/globalsun.yaml b/src/main/resources/bidder-config/globalsun.yaml index f0d56ae941b..e7d046fe8e3 100644 --- a/src/main/resources/bidder-config/globalsun.yaml +++ b/src/main/resources/bidder-config/globalsun.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: globalsun redirect: url: "https://cs.globalsun.io/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url}" - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/grid.yaml b/src/main/resources/bidder-config/grid.yaml index 0341d7b1253..b58b1679316 100644 --- a/src/main/resources/bidder-config/grid.yaml +++ b/src/main/resources/bidder-config/grid.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: grid redirect: url: https://x.bidswitch.net/check_uuid/{redirect_url}?gdpr={gdpr}&gdpr_consent={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&us_privacy={us_privacy} - support-cors: false uid-macro: '${BSW_UUID}' diff --git a/src/main/resources/bidder-config/gumgum.yaml b/src/main/resources/bidder-config/gumgum.yaml index fb6b39aa27f..980a9035697 100644 --- a/src/main/resources/bidder-config/gumgum.yaml +++ b/src/main/resources/bidder-config/gumgum.yaml @@ -14,4 +14,3 @@ adapters: cookie-family-name: gumgum iframe: url: https://rtb.gumgum.com/usync/prbds2s?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false diff --git a/src/main/resources/bidder-config/imds.yaml b/src/main/resources/bidder-config/imds.yaml index 351243b2c70..b617fb99d39 100644 --- a/src/main/resources/bidder-config/imds.yaml +++ b/src/main/resources/bidder-config/imds.yaml @@ -25,9 +25,7 @@ adapters: cookie-family-name: "imds" iframe: url: "https://ad-cdn.technoratimedia.com/html/usersync.html?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gppsid={gpp_sid}&cb={redirect_url}" - support-cors: true uid-macro: '[USER_ID]' redirect: url: "https://sync.technoratimedia.com/services?srv=cs&gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gppsid={gpp_sid}&cb={redirect_url}" - support-cors: true uid-macro: '[USER_ID]' diff --git a/src/main/resources/bidder-config/impactify.yaml b/src/main/resources/bidder-config/impactify.yaml index e97f1ad7e58..c6af2eb6a98 100644 --- a/src/main/resources/bidder-config/impactify.yaml +++ b/src/main/resources/bidder-config/impactify.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: impactify iframe: url: https://sonic.impactify.media/static/cookie_sync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect_url={redirect_url} - support-cors: false uid-macro: '{IMPACTIFY_UID}' diff --git a/src/main/resources/bidder-config/improvedigital.yaml b/src/main/resources/bidder-config/improvedigital.yaml index d530bfca2f2..b0a4ddf11ce 100644 --- a/src/main/resources/bidder-config/improvedigital.yaml +++ b/src/main/resources/bidder-config/improvedigital.yaml @@ -20,9 +20,7 @@ adapters: cookie-family-name: improvedigital iframe: url: https://ad.360yield.com/user_sync?rt=html&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '{PUB_USER_ID}' redirect: url: https://ad.360yield.com/server_match?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '{PUB_USER_ID}' diff --git a/src/main/resources/bidder-config/inmobi.yaml b/src/main/resources/bidder-config/inmobi.yaml index cab92c2ba9c..d0888e542f7 100644 --- a/src/main/resources/bidder-config/inmobi.yaml +++ b/src/main/resources/bidder-config/inmobi.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: inmobi iframe: url: https://sync.inmobi.com/prebid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '{ID5UID}' redirect: url: https://sync.inmobi.com/prebid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '{ID5UID}' diff --git a/src/main/resources/bidder-config/insticator.yaml b/src/main/resources/bidder-config/insticator.yaml index 3d267e8adc8..a975381b51d 100644 --- a/src/main/resources/bidder-config/insticator.yaml +++ b/src/main/resources/bidder-config/insticator.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: insticator iframe: url: https://usync.ingage.tech?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/intertech.yaml b/src/main/resources/bidder-config/intertech.yaml deleted file mode 100644 index 3b194618db5..00000000000 --- a/src/main/resources/bidder-config/intertech.yaml +++ /dev/null @@ -1,16 +0,0 @@ -adapters: - intertech: - endpoint: https://prebid.intertechsrvcs.com/prebid/{page_id}?imp-id={imp_id}&ssp-id=10500 - endpoint-compression: gzip - meta-info: - maintainer-email: prebid@intertechsrvcs.com - site-media-types: - - banner - - native - vendor-id: 0 - usersync: - cookie-family-name: intertech - redirect: - url: https://prebid.intertechsrvcs.com/mapuid/intertech/?ssp-id=10500&gdpr={gdpr}&gdpr_consent={gdpr_consent}&location= - support-cors: false - uid-macro: '{UID}' diff --git a/src/main/resources/bidder-config/iqzone.yaml b/src/main/resources/bidder-config/iqzone.yaml index 8aa8f74d87e..03064dea5ee 100644 --- a/src/main/resources/bidder-config/iqzone.yaml +++ b/src/main/resources/bidder-config/iqzone.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: iqzone redirect: url: https://cs.iqzone.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: url: https://cs.iqzone.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/ix.yaml b/src/main/resources/bidder-config/ix.yaml index d82a675a3f5..764c35b8026 100644 --- a/src/main/resources/bidder-config/ix.yaml +++ b/src/main/resources/bidder-config/ix.yaml @@ -21,7 +21,5 @@ adapters: cookie-family-name: ix redirect: url: https://ssum.casalemedia.com/usermatchredir?s=189517&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&cb={redirect_url} - support-cors: false iframe: url: https://ssum-sec.casalemedia.com/usermatch?s=184674&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&cb={redirect_url} - support-cors: false diff --git a/src/main/resources/bidder-config/jixie.yaml b/src/main/resources/bidder-config/jixie.yaml index 088b68a005d..2cbd515ed2e 100644 --- a/src/main/resources/bidder-config/jixie.yaml +++ b/src/main/resources/bidder-config/jixie.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: jixie redirect: url: https://id.jixie.io/api/sync?pid=&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '%%JXUID%%' diff --git a/src/main/resources/bidder-config/kargo.yaml b/src/main/resources/bidder-config/kargo.yaml index 6c06658018b..f46d616d58d 100644 --- a/src/main/resources/bidder-config/kargo.yaml +++ b/src/main/resources/bidder-config/kargo.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: kargo redirect: url: https://crb.kargo.com/api/v1/dsync/PrebidServer?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/kiviads.yaml b/src/main/resources/bidder-config/kiviads.yaml index 67c041a184b..ed9176087b9 100644 --- a/src/main/resources/bidder-config/kiviads.yaml +++ b/src/main/resources/bidder-config/kiviads.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: kiviads iframe: url: https://sync.kiviads.com/pserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/krushmedia.yaml b/src/main/resources/bidder-config/krushmedia.yaml index 156dc6d5d3d..3cc52a91284 100644 --- a/src/main/resources/bidder-config/krushmedia.yaml +++ b/src/main/resources/bidder-config/krushmedia.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: krushmedia redirect: url: https://cs.krushmedia.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: url: https://cs.krushmedia.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/kueezrtb.yaml b/src/main/resources/bidder-config/kueezrtb.yaml index 16f0709cf26..adfd3eeca06 100644 --- a/src/main/resources/bidder-config/kueezrtb.yaml +++ b/src/main/resources/bidder-config/kueezrtb.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: kueezrtb iframe: url: https://sync.kueezrtb.com/api/user/html/62ce79e7dd15099534ae5e04?pbs=true&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url}&gpp={gpp}&gpp_sid={gpp_sid} - support-cors: false uid-macro: '${userId}' diff --git a/src/main/resources/bidder-config/lemmadigital.yaml b/src/main/resources/bidder-config/lemmadigital.yaml index a5b04b60455..d5000731362 100644 --- a/src/main/resources/bidder-config/lemmadigital.yaml +++ b/src/main/resources/bidder-config/lemmadigital.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: lemmadigital redirect: url: https://sync.lemmadigital.com/setuid?publisher=850&redirect={redirect_url} - support-cors: false uid-macro: '${UUID}' diff --git a/src/main/resources/bidder-config/limelightDigital.yaml b/src/main/resources/bidder-config/limelightDigital.yaml index 249279d48a9..4ce130419ef 100644 --- a/src/main/resources/bidder-config/limelightDigital.yaml +++ b/src/main/resources/bidder-config/limelightDigital.yaml @@ -17,11 +17,9 @@ adapters: cookie-family-name: evtech iframe: url: https://tracker.direct.e-volution.ai/sync.html?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '{PLL_USER_ID}' redirect: url: https://tracker.direct.e-volution.ai/sync?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '{PLL_USER_ID}' adsyield: enabled: false diff --git a/src/main/resources/bidder-config/lockerdome.yaml b/src/main/resources/bidder-config/lockerdome.yaml index 9fe93791809..0c890fbba64 100644 --- a/src/main/resources/bidder-config/lockerdome.yaml +++ b/src/main/resources/bidder-config/lockerdome.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: lockerdome redirect: url: https://lockerdome.com/usync/prebidserver?redirect={redirect_url} - support-cors: false uid-macro: '{{uid}}' diff --git a/src/main/resources/bidder-config/logan.yaml b/src/main/resources/bidder-config/logan.yaml index 0ae74d2e1ed..fca9bf1b30d 100644 --- a/src/main/resources/bidder-config/logan.yaml +++ b/src/main/resources/bidder-config/logan.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: logan redirect: url: https://ssp-cookie.logan.ai/pserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/logicad.yaml b/src/main/resources/bidder-config/logicad.yaml index c972de8b628..b15ef971509 100644 --- a/src/main/resources/bidder-config/logicad.yaml +++ b/src/main/resources/bidder-config/logicad.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: logicad redirect: url: https://cr-p31.ladsp.jp/cookiesender/31?r=true&gdpr={gdpr}&gdpr_consent={gdpr_consent}&ru={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/loopme.yaml b/src/main/resources/bidder-config/loopme.yaml index cf1b68c4389..6bbd35547bb 100644 --- a/src/main/resources/bidder-config/loopme.yaml +++ b/src/main/resources/bidder-config/loopme.yaml @@ -19,5 +19,4 @@ adapters: cookie-family-name: loopme redirect: url: https://csync.loopme.me/?pubid=11393&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '{udid}' diff --git a/src/main/resources/bidder-config/lunamedia.yaml b/src/main/resources/bidder-config/lunamedia.yaml index 71c05faf6a2..758c737cf78 100644 --- a/src/main/resources/bidder-config/lunamedia.yaml +++ b/src/main/resources/bidder-config/lunamedia.yaml @@ -18,5 +18,4 @@ adapters: cookie-family-name: lunamedia iframe: url: https://sync.lunamedia.live/psync?t=s&e=0&cb={redirect_url} - support-cors: false uid-macro: '%USER_ID%' diff --git a/src/main/resources/bidder-config/marsmedia.yaml b/src/main/resources/bidder-config/marsmedia.yaml index 2e1fc8206b7..fc2e2afa814 100644 --- a/src/main/resources/bidder-config/marsmedia.yaml +++ b/src/main/resources/bidder-config/marsmedia.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: marsmedia redirect: url: https://dmp.rtbsrv.com/dmp/profiles/cm?p_id=179&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '${UUID}' diff --git a/src/main/resources/bidder-config/mediago.yaml b/src/main/resources/bidder-config/mediago.yaml index a4f3419003d..cb6d414e3d2 100644 --- a/src/main/resources/bidder-config/mediago.yaml +++ b/src/main/resources/bidder-config/mediago.yaml @@ -25,5 +25,4 @@ adapters: cookie-family-name: mediago redirect: url: https://trace.mediago.io/ju/cs/prebid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/medianet.yaml b/src/main/resources/bidder-config/medianet.yaml index 921442b1c38..fb3110ea8be 100644 --- a/src/main/resources/bidder-config/medianet.yaml +++ b/src/main/resources/bidder-config/medianet.yaml @@ -19,9 +19,7 @@ adapters: cookie-family-name: medianet iframe: url: https://hbx.media.net/checksync.php?cid=8CUEHS6F9&cs=87&type=mpbc&cv=37&vsSync=1&uspstring={us_privacy}&gdpr={gdpr}&gdprstring={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '' redirect: url: https://cs.media.net/cksync.php?cs=1&type=pbs&ovsid=setstatuscode&bidder=medianet&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '' diff --git a/src/main/resources/bidder-config/metax.yaml b/src/main/resources/bidder-config/metax.yaml index 15c8ccce750..3de6f4d4f50 100644 --- a/src/main/resources/bidder-config/metax.yaml +++ b/src/main/resources/bidder-config/metax.yaml @@ -20,5 +20,4 @@ adapters: cookie-family-name: metax redirect: url: https://cm.metaxads.com/pixel?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/mgid.yaml b/src/main/resources/bidder-config/mgid.yaml index 355eb0539e5..38f9c1d8786 100644 --- a/src/main/resources/bidder-config/mgid.yaml +++ b/src/main/resources/bidder-config/mgid.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: mgid redirect: url: https://cm.mgid.com/m?cdsp=363893&adu={redirect_url} - support-cors: false uid-macro: '{muidn}' diff --git a/src/main/resources/bidder-config/mgidx.yaml b/src/main/resources/bidder-config/mgidx.yaml index 078ecaf93dd..61ee1fcf8e8 100644 --- a/src/main/resources/bidder-config/mgidx.yaml +++ b/src/main/resources/bidder-config/mgidx.yaml @@ -19,9 +19,7 @@ adapters: cookie-family-name: mgidX iframe: url: https://cm.mgid.com/i.gif?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&adu={redirect_url} - support-cors: false uid-macro: '{muidn}' redirect: url: https://cm.mgid.com/i.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&adu={redirect_url} - support-cors: false uid-macro: '{muidn}' diff --git a/src/main/resources/bidder-config/minutemedia.yaml b/src/main/resources/bidder-config/minutemedia.yaml index c3160298935..6ae40499219 100644 --- a/src/main/resources/bidder-config/minutemedia.yaml +++ b/src/main/resources/bidder-config/minutemedia.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: minutemedia iframe: url: https://pbs-cs.minutemedia-prebid.com/pbs-iframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '[PBS_UID]' diff --git a/src/main/resources/bidder-config/missena.yaml b/src/main/resources/bidder-config/missena.yaml index d61941aa016..27484ad7b7b 100644 --- a/src/main/resources/bidder-config/missena.yaml +++ b/src/main/resources/bidder-config/missena.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: missena iframe: url: https://sync.missena.io/iframe?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/mobilefuse.yaml b/src/main/resources/bidder-config/mobilefuse.yaml index 1938b4b5f9b..ef9deeac80d 100644 --- a/src/main/resources/bidder-config/mobilefuse.yaml +++ b/src/main/resources/bidder-config/mobilefuse.yaml @@ -23,9 +23,7 @@ adapters: cookie-family-name: mobilefuse iframe: url: https://mfx.mobilefuse.com/usync?us_privacy={us_privacy}&pxurl={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://mfx.mobilefuse.com/getuid?us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/msft.yaml b/src/main/resources/bidder-config/msft.yaml index ea5f07c2673..b53494fc034 100644 --- a/src/main/resources/bidder-config/msft.yaml +++ b/src/main/resources/bidder-config/msft.yaml @@ -18,7 +18,6 @@ adapters: cookie-family-name: adnxs redirect: url: https://ib.adnxs.com/getuid?{redirect_url} - support-cors: false uid-macro: '$UID' platform-id: 5 iab-categories: diff --git a/src/main/resources/bidder-config/nativo.yaml b/src/main/resources/bidder-config/nativo.yaml index fbd961574d2..919633b9c0a 100644 --- a/src/main/resources/bidder-config/nativo.yaml +++ b/src/main/resources/bidder-config/nativo.yaml @@ -19,5 +19,4 @@ adapters: cookie-family-name: nativo redirect: url: https://jadserve.postrelease.com/suid/101787?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&ntv_gpp_consent={gpp}&ntv_r={redirect_url} - support-cors: false uid-macro: 'NTV_USER_ID' diff --git a/src/main/resources/bidder-config/nextmillennium.yaml b/src/main/resources/bidder-config/nextmillennium.yaml index e9c9be1c9ff..27c2fc0697e 100644 --- a/src/main/resources/bidder-config/nextmillennium.yaml +++ b/src/main/resources/bidder-config/nextmillennium.yaml @@ -16,9 +16,7 @@ adapters: cookie-family-name: nextmillennium iframe: url: https://cookies.nextmillmedia.com/sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[NMUID]' redirect: url: https://cookies.nextmillmedia.com/sync?type=image&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[NMUID]' diff --git a/src/main/resources/bidder-config/nexx360.yaml b/src/main/resources/bidder-config/nexx360.yaml index 234cbe35552..129fcaaf95e 100644 --- a/src/main/resources/bidder-config/nexx360.yaml +++ b/src/main/resources/bidder-config/nexx360.yaml @@ -29,9 +29,7 @@ adapters: cookie-family-name: nexx360 redirect: url: https://fast.nexx360.io/usermatchredir/redirect?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gppsid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '$UID' iframe: url: https://fast.nexx360.io/usermatchredir/iframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/nobid.yaml b/src/main/resources/bidder-config/nobid.yaml index 6a8e4a9de6d..690d7267229 100644 --- a/src/main/resources/bidder-config/nobid.yaml +++ b/src/main/resources/bidder-config/nobid.yaml @@ -15,9 +15,7 @@ adapters: cookie-family-name: nobid redirect: url: https://ads.servenobid.com/getsync?tek=pbs&ver=1&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' iframe: url: https://public.servenobid.com/sync.html?tek=pbs&ver=1&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/ogury.yaml b/src/main/resources/bidder-config/ogury.yaml index 14682e11eae..99f970b841f 100644 --- a/src/main/resources/bidder-config/ogury.yaml +++ b/src/main/resources/bidder-config/ogury.yaml @@ -16,8 +16,6 @@ adapters: iframe: url: https://ms-cookie-sync.presage.io/user-sync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url}&gpp={gpp}&gpp_sid={gpp_sid}&source=prebids2s uid-macro: "{{OGURY_UID}}" - support-cors: false redirect: url: https://ms-cookie-sync.presage.io/user-sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url}&gpp={gpp}&gpp_sid={gpp_sid}&partner=prebids2s uid-macro: "{{OGURY_UID}}" - support-cors: false diff --git a/src/main/resources/bidder-config/onetag.yaml b/src/main/resources/bidder-config/onetag.yaml index d3034369ce3..d815f99baf3 100644 --- a/src/main/resources/bidder-config/onetag.yaml +++ b/src/main/resources/bidder-config/onetag.yaml @@ -19,9 +19,7 @@ adapters: cookie-family-name: onetag iframe: url: https://onetag-sys.com/usync/?redir={redirect_url}&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy} - support-cors: false uid-macro: '${USER_TOKEN}' redirect: url: https://onetag-sys.com/usync/?tag=img&redir={redirect_url}&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy} - support-cors: false uid-macro: '${USER_TOKEN}' diff --git a/src/main/resources/bidder-config/openweb.yaml b/src/main/resources/bidder-config/openweb.yaml index c8c8ad7a719..67f82286c66 100644 --- a/src/main/resources/bidder-config/openweb.yaml +++ b/src/main/resources/bidder-config/openweb.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: openweb iframe: url: https://pbs-cs.openwebmp.com/pbs-iframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '[PBS_UID]' diff --git a/src/main/resources/bidder-config/openx.yaml b/src/main/resources/bidder-config/openx.yaml index 794d9a26b8a..a1c17022f09 100644 --- a/src/main/resources/bidder-config/openx.yaml +++ b/src/main/resources/bidder-config/openx.yaml @@ -19,8 +19,6 @@ adapters: cookie-family-name: openx iframe: url: https://u.openx.net/w/1.0/cm?id=891039ac-a916-42bb-a651-4be9e3b201da&ph=a3aece0c-9e80-4316-8deb-faf804779bd1&gdpr={gdpr}&gdpr_consent={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false redirect: url: https://rtb.openx.net/sync/prebid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '${UID}' diff --git a/src/main/resources/bidder-config/operaads.yaml b/src/main/resources/bidder-config/operaads.yaml index ec626e211b2..e4b2f76650c 100644 --- a/src/main/resources/bidder-config/operaads.yaml +++ b/src/main/resources/bidder-config/operaads.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: operaads redirect: url: https://t.adx.opera.com/pbs/sync?gdpr={gdpr}&us_privacy={us_privacy}&gdpr_consent={gdpr_consent}&r={redirect_url} - support-cors: false uid-macro: '${UID}' diff --git a/src/main/resources/bidder-config/optidigital.yaml b/src/main/resources/bidder-config/optidigital.yaml index ab70d8ffb28..bab2b5b2196 100644 --- a/src/main/resources/bidder-config/optidigital.yaml +++ b/src/main/resources/bidder-config/optidigital.yaml @@ -18,5 +18,4 @@ adapters: cookie-family-name: optidigital iframe: url: https://scripts.opti-digital.com/js/presyncs2s.html?endpoint=optidigital&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/oraki.yaml b/src/main/resources/bidder-config/oraki.yaml index 0aef9ca7ca2..283f1a23b32 100644 --- a/src/main/resources/bidder-config/oraki.yaml +++ b/src/main/resources/bidder-config/oraki.yaml @@ -16,6 +16,5 @@ adapters: usersync: cookie-family-name: oraki redirect: - support-cors: false url: https://sync.oraki.io/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/orbidder.yaml b/src/main/resources/bidder-config/orbidder.yaml index 61f0e286bc5..7964743cbff 100644 --- a/src/main/resources/bidder-config/orbidder.yaml +++ b/src/main/resources/bidder-config/orbidder.yaml @@ -14,5 +14,4 @@ adapters: cookie-family-name: orbidder redirect: url: https://orbidder.otto.de/pbs-usersync?gdpr={gdpr}&consent={gdpr_consent}&redirect={redirect_url} - support-cors: true uid-macro: '[ODN_ID]' diff --git a/src/main/resources/bidder-config/outbrain.yaml b/src/main/resources/bidder-config/outbrain.yaml index c824a8fab1a..867d00338eb 100644 --- a/src/main/resources/bidder-config/outbrain.yaml +++ b/src/main/resources/bidder-config/outbrain.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: outbrain redirect: url: https://prebidtest.zemanta.com/usersync/prebidtest?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&cb={redirect_url} - support-cors: false uid-macro: '__ZUID__' diff --git a/src/main/resources/bidder-config/ownadx.yaml b/src/main/resources/bidder-config/ownadx.yaml index 620fab49c40..c7e59fb92db 100644 --- a/src/main/resources/bidder-config/ownadx.yaml +++ b/src/main/resources/bidder-config/ownadx.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: ownadx redirect: url: https://sync.spoutroserve.com/user-sync?t=image&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&s3={redirect_url} - support-cors: false uid-macro: '{USER_ID}' diff --git a/src/main/resources/bidder-config/pgamssp.yaml b/src/main/resources/bidder-config/pgamssp.yaml index 9abe8adca72..09c53d3e3c3 100644 --- a/src/main/resources/bidder-config/pgamssp.yaml +++ b/src/main/resources/bidder-config/pgamssp.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: pgamssp redirect: url: https://cs.pgammedia.com/pserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&r={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/playdigo.yaml b/src/main/resources/bidder-config/playdigo.yaml index 083f470522e..bef2db75588 100644 --- a/src/main/resources/bidder-config/playdigo.yaml +++ b/src/main/resources/bidder-config/playdigo.yaml @@ -19,9 +19,7 @@ adapters: cookie-family-name: playdigo redirect: url: https://cs.playdigo.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: url: https://cs.playdigo.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/preciso.yaml b/src/main/resources/bidder-config/preciso.yaml index 6bfd3014c54..1632792e391 100644 --- a/src/main/resources/bidder-config/preciso.yaml +++ b/src/main/resources/bidder-config/preciso.yaml @@ -18,9 +18,7 @@ adapters: cookie-family-name: preciso redirect: url: https://ck.2trk.info/rtb/user/usersync.aspx?id=preciso_srl&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&t=2&redir={redirect_url} - support-cors: false uid-macro: '${PRECISO_USER_ID}' iframe: url: https://ck.2trk.info/rtb/user/usersync.aspx?id=preciso_srl&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&t=4&redir={redirect_url} - support-cors: false uid-macro: '${PRECISO_USER_ID}' diff --git a/src/main/resources/bidder-config/pubmatic.yaml b/src/main/resources/bidder-config/pubmatic.yaml index c4a36d5a4d0..12d57c93ade 100644 --- a/src/main/resources/bidder-config/pubmatic.yaml +++ b/src/main/resources/bidder-config/pubmatic.yaml @@ -19,8 +19,6 @@ adapters: cookie-family-name: pubmatic iframe: url: https://ads.pubmatic.com/AdServer/js/user_sync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&predirect={redirect_url} - support-cors: false redirect: url: https://image8.pubmatic.com/AdServer/ImgSync?p=159706&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pu={redirect_url} - support-cors: false uid-macro: '#PMUID' diff --git a/src/main/resources/bidder-config/pubrise.yaml b/src/main/resources/bidder-config/pubrise.yaml index 60fbea6bcf2..aabad2fea55 100644 --- a/src/main/resources/bidder-config/pubrise.yaml +++ b/src/main/resources/bidder-config/pubrise.yaml @@ -16,10 +16,8 @@ adapters: usersync: cookie-family-name: pubrise redirect: - support-cors: false url: https://sync.pubrise.ai/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} uid-macro: '[UID]' iframe: - support-cors: false url: https://sync.pubrise.ai/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/pulsepoint.yaml b/src/main/resources/bidder-config/pulsepoint.yaml index 82212c00566..30f08c63394 100644 --- a/src/main/resources/bidder-config/pulsepoint.yaml +++ b/src/main/resources/bidder-config/pulsepoint.yaml @@ -20,5 +20,4 @@ adapters: cookie-family-name: pulsepoint redirect: url: https://bh.contextweb.com/rtset?pid=561205&ev=1&rurl={redirect_url} - support-cors: false uid-macro: '%%VGUID%%' diff --git a/src/main/resources/bidder-config/qt.yaml b/src/main/resources/bidder-config/qt.yaml index ee66f765263..0c9dc02f767 100644 --- a/src/main/resources/bidder-config/qt.yaml +++ b/src/main/resources/bidder-config/qt.yaml @@ -16,6 +16,5 @@ adapters: usersync: cookie-family-name: qt redirect: - support-cors: false url: https://cs.qt.io/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/resetdigital.yaml b/src/main/resources/bidder-config/resetdigital.yaml index 990ab532849..5efda8c5b3c 100644 --- a/src/main/resources/bidder-config/resetdigital.yaml +++ b/src/main/resources/bidder-config/resetdigital.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: resetdigital redirect: url: https://sync.resetdigital.co/csync?pid=rubicon&redir={redirect_url} - support-cors: false uid-macro: '$USER_ID' diff --git a/src/main/resources/bidder-config/richaudience.yaml b/src/main/resources/bidder-config/richaudience.yaml index 1147009970c..7a4bfdf66e6 100644 --- a/src/main/resources/bidder-config/richaudience.yaml +++ b/src/main/resources/bidder-config/richaudience.yaml @@ -15,9 +15,7 @@ adapters: cookie-family-name: richaudience iframe: url: https://sync.richaudience.com/74889303289e27f327ad0c6de7be7264/?consentString={gdpr_consent}&r={redirect_url} - support-cors: false uid-macro: '[PDID]' redirect: url: https://sync.richaudience.com/f7872c90c5d3791e2b51f7edce1a0a5d/?p=pbs&consentString={gdpr_consent}&r={redirect_url} - support-cors: false uid-macro: '[PDID]' diff --git a/src/main/resources/bidder-config/rise.yaml b/src/main/resources/bidder-config/rise.yaml index 8867849f2d1..617fc8a22a7 100644 --- a/src/main/resources/bidder-config/rise.yaml +++ b/src/main/resources/bidder-config/rise.yaml @@ -19,5 +19,4 @@ adapters: cookie-family-name: rise iframe: url: https://pbs-cs.yellowblue.io/pbs-iframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '[PBS_UID]' diff --git a/src/main/resources/bidder-config/rtbhouse.yaml b/src/main/resources/bidder-config/rtbhouse.yaml index ccf847f7816..cd61200a319 100644 --- a/src/main/resources/bidder-config/rtbhouse.yaml +++ b/src/main/resources/bidder-config/rtbhouse.yaml @@ -30,4 +30,3 @@ adapters: cookie-family-name: rtbhouse redirect: url: https://creativecdn.com/cm-notify?pi=ASK_FOR_INTEGRATION_ID&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy} - support-cors: false diff --git a/src/main/resources/bidder-config/rubicon.yaml b/src/main/resources/bidder-config/rubicon.yaml index 8084f6d8f1f..88d48fafd27 100644 --- a/src/main/resources/bidder-config/rubicon.yaml +++ b/src/main/resources/bidder-config/rubicon.yaml @@ -36,7 +36,6 @@ adapters: cookie-family-name: rubicon redirect: url: https://GET_FROM_globalsupport@magnite.com - support-cors: 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/main/resources/bidder-config/salunamedia.yaml b/src/main/resources/bidder-config/salunamedia.yaml index 407ca8c6bd4..6541daff171 100644 --- a/src/main/resources/bidder-config/salunamedia.yaml +++ b/src/main/resources/bidder-config/salunamedia.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: sa_lunamedia redirect: url: https://cookie.lmgssp.com/pserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/seedingAlliance.yaml b/src/main/resources/bidder-config/seedingAlliance.yaml index 4b85eb1b14f..212dab14afe 100644 --- a/src/main/resources/bidder-config/seedingAlliance.yaml +++ b/src/main/resources/bidder-config/seedingAlliance.yaml @@ -12,7 +12,6 @@ adapters: cookie-family-name: suntContent redirect: url: https://dmp.suntcontent.se/set-uuid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&redirect_url={redirect_url} - support-cors: false uid-macro: '$UID' finative: enabled: false @@ -29,5 +28,4 @@ adapters: cookie-family-name: seedingAlliance redirect: url: https://dmp.nativendo.de/set-uuid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&redirect_url={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/seedtag.yaml b/src/main/resources/bidder-config/seedtag.yaml index 3447cd59b38..b90ff16745c 100644 --- a/src/main/resources/bidder-config/seedtag.yaml +++ b/src/main/resources/bidder-config/seedtag.yaml @@ -13,5 +13,4 @@ adapters: cookie-family-name: seedtag iframe: url: https://s.seedtag.com/cs/cookiesync/prebid?gdpr={gdpr}&gdpr_consent={gdpr_consent}&usp_consent={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/sharethrough.yaml b/src/main/resources/bidder-config/sharethrough.yaml index aee106fa1fa..d658ef92458 100644 --- a/src/main/resources/bidder-config/sharethrough.yaml +++ b/src/main/resources/bidder-config/sharethrough.yaml @@ -20,5 +20,4 @@ adapters: cookie-family-name: sharethrough redirect: url: https://match.sharethrough.com/FGMrCMMc/v1?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirectUri={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/smaato.yaml b/src/main/resources/bidder-config/smaato.yaml index 1d8586e494f..ba6759e849e 100644 --- a/src/main/resources/bidder-config/smaato.yaml +++ b/src/main/resources/bidder-config/smaato.yaml @@ -22,9 +22,7 @@ adapters: cookie-family-name: smaato redirect: url: https://s.ad.smaato.net/c/?adExInit=p&redir={redirect_url}&gdpr={gdpr}&gdpr_consent={gdpr_consent} - support-cors: false uid-macro: '$UID' iframe: url: https://s.ad.smaato.net/i/?adExInit=p&redir={redirect_url}&gdpr={gdpr}&gdpr_consent={gdpr_consent} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/smartadserver.yaml b/src/main/resources/bidder-config/smartadserver.yaml index 8db161d6ff9..cfb95121f45 100644 --- a/src/main/resources/bidder-config/smartadserver.yaml +++ b/src/main/resources/bidder-config/smartadserver.yaml @@ -24,5 +24,4 @@ adapters: cookie-family-name: smartadserver redirect: url: https://ssbsync-global.smartadserver.com/api/sync?callerId=5&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirectUri={redirect_url} - support-cors: false uid-macro: '[ssb_sync_pid]' diff --git a/src/main/resources/bidder-config/smartrtb.yaml b/src/main/resources/bidder-config/smartrtb.yaml index 24e6257eeb7..63e29766464 100644 --- a/src/main/resources/bidder-config/smartrtb.yaml +++ b/src/main/resources/bidder-config/smartrtb.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: smartrtb redirect: url: https://market-global.smrtb.com/sync/all?nid=smartrtb&gdpr={gdpr}&gdpr_consent={gdpr_consent}&rr={redirect_url} - support-cors: false uid-macro: '{XID}' diff --git a/src/main/resources/bidder-config/smartyads.yaml b/src/main/resources/bidder-config/smartyads.yaml index cc44bcfcd5f..fd2fc6bc4f7 100644 --- a/src/main/resources/bidder-config/smartyads.yaml +++ b/src/main/resources/bidder-config/smartyads.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: smartyads redirect: url: https://us.ck-ie.com/yhsfle286.gif?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '{$PARTNER_UID}' diff --git a/src/main/resources/bidder-config/smilewanted.yaml b/src/main/resources/bidder-config/smilewanted.yaml index 69f485e4ce5..659d74f9b0c 100644 --- a/src/main/resources/bidder-config/smilewanted.yaml +++ b/src/main/resources/bidder-config/smilewanted.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: smilewanted redirect: url: https://csync.smilewanted.com/getuid?source=prebid-server&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/smoot.yaml b/src/main/resources/bidder-config/smoot.yaml index 3365ac2bb63..b040332fac2 100644 --- a/src/main/resources/bidder-config/smoot.yaml +++ b/src/main/resources/bidder-config/smoot.yaml @@ -16,6 +16,5 @@ adapters: usersync: cookie-family-name: smoot redirect: - support-cors: false url: 'https://usync.smxconv.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url}' uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/sonobi.yaml b/src/main/resources/bidder-config/sonobi.yaml index 55f840f14eb..578b4e2d467 100644 --- a/src/main/resources/bidder-config/sonobi.yaml +++ b/src/main/resources/bidder-config/sonobi.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: sonobi iframe: url: https://sync.go.sonobi.com/uc.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&loc={redirect_url} - support-cors: false uid-macro: '[UID]' redirect: url: https://sync.go.sonobi.com/us.gif?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&loc={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/sovrn.yaml b/src/main/resources/bidder-config/sovrn.yaml index 8029b658626..a4acbcb06b2 100644 --- a/src/main/resources/bidder-config/sovrn.yaml +++ b/src/main/resources/bidder-config/sovrn.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: sovrn redirect: url: https://ap.lijit.com/pixel?redir={redirect_url} - support-cors: false uid-macro: '$UID' iframe: url: https://ap.lijit.com/beacon/prebid-server/?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&url={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/sparteo.yaml b/src/main/resources/bidder-config/sparteo.yaml index 9a4bb2baf92..5ae06817ba8 100644 --- a/src/main/resources/bidder-config/sparteo.yaml +++ b/src/main/resources/bidder-config/sparteo.yaml @@ -17,4 +17,3 @@ adapters: cookie-family-name: sparteo iframe: url: "https://sync.sparteo.com/s2s_sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&&gpp_sid={gpp_sid}&redirect_url={redirect_url}" - support-cors: true diff --git a/src/main/resources/bidder-config/sspbc.yaml b/src/main/resources/bidder-config/sspbc.yaml index 06772cb5c3c..7b3258e1667 100644 --- a/src/main/resources/bidder-config/sspbc.yaml +++ b/src/main/resources/bidder-config/sspbc.yaml @@ -12,9 +12,7 @@ adapters: cookie-family-name: sspbc iframe: url: https://ssp.wp.pl/bidder/usersync?tcf=2&redirect={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://ssp.wp.pl/v1/sync/prebid-server/pixel?gdpr={gdpr}&gdpr_consent={gdpr_consent}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/stroeercore.yaml b/src/main/resources/bidder-config/stroeercore.yaml index 2169fa19cde..d9ab58656be 100644 --- a/src/main/resources/bidder-config/stroeercore.yaml +++ b/src/main/resources/bidder-config/stroeercore.yaml @@ -15,7 +15,5 @@ adapters: cookie-family-name: stroeerCore iframe: url: https://js.adscale.de/pbsync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&redirect={redirect_url} - support-cors: false redirect: url: https://ih.adscale.de/uu?gdpr={gdpr}&gdpr_consent={gdpr_consent}&cburl={redirect_url} - support-cors: false diff --git a/src/main/resources/bidder-config/taboola.yaml b/src/main/resources/bidder-config/taboola.yaml index 4ea05d13882..23c836850a5 100644 --- a/src/main/resources/bidder-config/taboola.yaml +++ b/src/main/resources/bidder-config/taboola.yaml @@ -16,10 +16,8 @@ adapters: cookie-family-name: taboola redirect: url: https://trc.taboola.com/sg/ps/1/cm?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '' iframe: url: https://cdn.taboola.com/scripts/ps-sync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '' diff --git a/src/main/resources/bidder-config/tappx.yaml b/src/main/resources/bidder-config/tappx.yaml index 0dd1d31fb7d..27be1eb769f 100644 --- a/src/main/resources/bidder-config/tappx.yaml +++ b/src/main/resources/bidder-config/tappx.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: tappx iframe: url: https://ssp.api.tappx.com/cs/usersync.php?gdpr_optin={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&type=iframe&ruid={redirect_url} - support-cors: false uid-macro: '{{TPPXUID}}' diff --git a/src/main/resources/bidder-config/teal.yaml b/src/main/resources/bidder-config/teal.yaml index 3df79c3b9e8..38f06be0be3 100644 --- a/src/main/resources/bidder-config/teal.yaml +++ b/src/main/resources/bidder-config/teal.yaml @@ -27,4 +27,3 @@ adapters: cookie-family-name: teal iframe: url: https://bids.ws/load-pbs.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect_url={redirect_url} - support-cors: false diff --git a/src/main/resources/bidder-config/telaria.yaml b/src/main/resources/bidder-config/telaria.yaml deleted file mode 100644 index 876bedc3d40..00000000000 --- a/src/main/resources/bidder-config/telaria.yaml +++ /dev/null @@ -1,17 +0,0 @@ -adapters: - telaria: - endpoint: https://ads.tremorhub.com/ad/rtb/prebid - meta-info: - maintainer-email: github@telaria.com - app-media-types: - - video - site-media-types: - - video - supported-vendors: - vendor-id: 202 - usersync: - cookie-family-name: telaria - redirect: - url: https://pbs.publishers.tremorhub.com/pubsync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&redir={redirect_url} - support-cors: false - uid-macro: '[tvid]' diff --git a/src/main/resources/bidder-config/teqblaze.yaml b/src/main/resources/bidder-config/teqblaze.yaml index 9c94eb26955..094beaec09a 100644 --- a/src/main/resources/bidder-config/teqblaze.yaml +++ b/src/main/resources/bidder-config/teqblaze.yaml @@ -12,12 +12,10 @@ adapters: cookie-family-name: 360playvid redirect: url: https://cookie.360playvid.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&coppa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: url: https://cookie.360playvid.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} uid-macro: '[UID]' - support-cors: false pinkLion: enabled: false endpoint: https://us-east-ep.pinklion.io/pserver @@ -33,7 +31,6 @@ adapters: cookie-family-name: rocketlab redirect: url: https://usync.rocketlab.ai/pbserver?gdpr={gdpr}&consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '[UID]' appStockSSP: enabled: false @@ -47,11 +44,9 @@ adapters: cookie-family-name: appStockSSP redirect: url: https://csync.al-ad.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: url: "https://csync.al-ad.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url}" - support-cors: false uid-macro: '[UID]' gravite: enabled: false @@ -69,28 +64,9 @@ adapters: cookie-family-name: bidfuse redirect: url: https://syncbf.bidfuse.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' iframe: url: https://syncbf.bidfuse.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} - support-cors: false - uid-macro: '[UID]' - adsinteractive: - enabled: false - endpoint: https://bntb.adsinteractive.com/pserver - meta-info: - maintainer-email: it@adsinteractive.com - vendor-id: 1212 - usersync: - enabled: true - cookie-family-name: adsinteractive - redirect: - url: https://cstb.adsinteractive.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false - uid-macro: '[UID]' - iframe: - url: https://cstb.adsinteractive.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} - support-cors: false uid-macro: '[UID]' progx: enabled: false @@ -103,11 +79,9 @@ adapters: cookie-family-name: progx iframe: url: https://sync.progrtb.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={.RedirectURL} - support-cors: false uid-macro: '[UID]' redirect: url: https://sync.progrtb.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' harion: enabled: false @@ -125,11 +99,9 @@ adapters: cookie-family-name: mycodemedia iframe: url: https://usersync.mycodemedia.com/pbserverIframe?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&pbserverUrl={redirect_url} - support-cors: false uid-macro: '[UID]' redirect: url: https://usersync.mycodemedia.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' adsmovil: enabled: false diff --git a/src/main/resources/bidder-config/theadx.yaml b/src/main/resources/bidder-config/theadx.yaml index 2118ee34c08..5d79e2f19ea 100644 --- a/src/main/resources/bidder-config/theadx.yaml +++ b/src/main/resources/bidder-config/theadx.yaml @@ -18,5 +18,4 @@ adapters: cookie-family-name: theadx redirect: url: https://ssp.theadx.com/cookie?redirect_url={redirect_url}&?pbs=1 - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/thirtythreeacross.yaml b/src/main/resources/bidder-config/thirtythreeacross.yaml index 24dd7e5e6b3..990440ca78d 100644 --- a/src/main/resources/bidder-config/thirtythreeacross.yaml +++ b/src/main/resources/bidder-config/thirtythreeacross.yaml @@ -21,5 +21,4 @@ adapters: cookie-family-name: 33across iframe: url: https://ssc-cms.33across.com/ps/?m=xch&rt=html&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&id=zzz000000000002zzz&ru={redirect_url} - support-cors: false uid-macro: '33XUSERID33X' diff --git a/src/main/resources/bidder-config/tpmn.yaml b/src/main/resources/bidder-config/tpmn.yaml index 0f762d4b531..1e0ee172dfe 100644 --- a/src/main/resources/bidder-config/tpmn.yaml +++ b/src/main/resources/bidder-config/tpmn.yaml @@ -20,4 +20,3 @@ adapters: iframe: url: https://gat.tpmn.io/sync/redirect?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} uid-macro: $UID - support-cors: false diff --git a/src/main/resources/bidder-config/triplelift.yaml b/src/main/resources/bidder-config/triplelift.yaml index 56f0daf17f2..65e6fe6bfe6 100644 --- a/src/main/resources/bidder-config/triplelift.yaml +++ b/src/main/resources/bidder-config/triplelift.yaml @@ -17,9 +17,7 @@ adapters: cookie-family-name: triplelift iframe: url: https://eb2.3lift.com/sync?gdpr={gdpr}&cmp_cs={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://eb2.3lift.com/getuid?gdpr={gdpr}&cmp_cs={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/tripleliftnative.yaml b/src/main/resources/bidder-config/tripleliftnative.yaml index dd11c0f093e..16447e46f01 100644 --- a/src/main/resources/bidder-config/tripleliftnative.yaml +++ b/src/main/resources/bidder-config/tripleliftnative.yaml @@ -14,10 +14,8 @@ adapters: cookie-family-name: triplelift_native iframe: url: https://eb2.3lift.com/sync?gdpr={gdpr}&cmp_cs={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://eb2.3lift.com/getuid?gdpr={gdpr}&cmp_cs={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redir={redirect_url} - support-cors: false uid-macro: '$UID' whitelist: diff --git a/src/main/resources/bidder-config/trustedstack.yaml b/src/main/resources/bidder-config/trustedstack.yaml index 709c0b591b1..f9c0252ef84 100644 --- a/src/main/resources/bidder-config/trustedstack.yaml +++ b/src/main/resources/bidder-config/trustedstack.yaml @@ -19,9 +19,7 @@ adapters: cookie-family-name: trustedstack iframe: url: https://hb.trustedstack.com/checksync.php?cid=TS2Q14L8J&cs=87&type=mpbc&cv=37&vsSync=1&uspstring={us_privacy}&gdpr={gdpr}&gdprstring={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '' redirect: url: https://hb.trustedstack.com/cksync?cs=1&type=pbs&ovsid=setstatuscode&bidder=trustedstack&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '' diff --git a/src/main/resources/bidder-config/trustx.yaml b/src/main/resources/bidder-config/trustx.yaml index 2e81cafd8e6..42197b793cb 100644 --- a/src/main/resources/bidder-config/trustx.yaml +++ b/src/main/resources/bidder-config/trustx.yaml @@ -15,9 +15,7 @@ adapters: cookie-family-name: trustx iframe: url: https://static.cdn.trustx.org/x/user_sync.html?source=pbs&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' redirect: url: https://sync.trustx.org/usync-pbs?us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirect={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/ucfunnel.yaml b/src/main/resources/bidder-config/ucfunnel.yaml index 14c7306401c..3dd90565544 100644 --- a/src/main/resources/bidder-config/ucfunnel.yaml +++ b/src/main/resources/bidder-config/ucfunnel.yaml @@ -16,5 +16,4 @@ adapters: redirect: # for syncing to work, please register your Prebid Server domain with the contact email above url: https://sync.aralego.com/idsync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&usprivacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: 'SspCookieUserId' diff --git a/src/main/resources/bidder-config/undertone.yaml b/src/main/resources/bidder-config/undertone.yaml index 899e523cf43..1d82c72702f 100644 --- a/src/main/resources/bidder-config/undertone.yaml +++ b/src/main/resources/bidder-config/undertone.yaml @@ -18,4 +18,3 @@ adapters: iframe: url: https://cdn.undertone.com/js/usersync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} uid-macro: '$UID' - support-cors: false diff --git a/src/main/resources/bidder-config/unruly.yaml b/src/main/resources/bidder-config/unruly.yaml index f6d4bdbad80..d42f4a988d6 100644 --- a/src/main/resources/bidder-config/unruly.yaml +++ b/src/main/resources/bidder-config/unruly.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: unruly redirect: url: https://sync.1rx.io/usersync2/rmphb?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[RX_UUID]' diff --git a/src/main/resources/bidder-config/vidazoo.yaml b/src/main/resources/bidder-config/vidazoo.yaml index bc9ab022d63..b116a231baa 100644 --- a/src/main/resources/bidder-config/vidazoo.yaml +++ b/src/main/resources/bidder-config/vidazoo.yaml @@ -10,7 +10,6 @@ adapters: vendor-id: 1463 iframe: url: https://sync.omni-dex.io/api/user/html/6810d0c7f163277130f3d7a9?pbs=true&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url}&gpp={gpp}&gpp_sid={gpp_sid} - support-cors: false uid-macro: '${userId}' tagoras: endpoint: https://exchange.tagoras.io/openrtb/{ConnectionId} @@ -21,7 +20,6 @@ adapters: cookie-family-name: tagoras iframe: url: https://sync.tagoras.io/api/user/html/6819bdc3e6bb44545c55f843?pbs=true&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url}&gpp={gpp}&gpp_sid={gpp_sid} - support-cors: false uid-macro: '${userId}' endpoint-compression: gzip ortb-version: "2.6" @@ -39,5 +37,4 @@ adapters: cookie-family-name: vidazoo iframe: url: https://sync.cootlogix.com/api/user/html/pbs_sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url}&gpp={gpp}&gpp_sid={gpp_sid} - support-cors: false uid-macro: '${userId}' diff --git a/src/main/resources/bidder-config/videobyte.yaml b/src/main/resources/bidder-config/videobyte.yaml index e1c73fc9e3d..dc9ca6baf09 100644 --- a/src/main/resources/bidder-config/videobyte.yaml +++ b/src/main/resources/bidder-config/videobyte.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: videobyte redirect: url: https://x.videobyte.com/usync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&cb={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/vidoomy.yaml b/src/main/resources/bidder-config/vidoomy.yaml index f09ac2d4e31..d79ca3c4fde 100644 --- a/src/main/resources/bidder-config/vidoomy.yaml +++ b/src/main/resources/bidder-config/vidoomy.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: vidoomy iframe: url: https://vid.vidoomy.com/sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirect={redirect_url} - support-cors: false uid-macro: '{{VID}}' diff --git a/src/main/resources/bidder-config/visiblemeasures.yaml b/src/main/resources/bidder-config/visiblemeasures.yaml index e9cde5b32f6..e63c6451df5 100644 --- a/src/main/resources/bidder-config/visiblemeasures.yaml +++ b/src/main/resources/bidder-config/visiblemeasures.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: visiblemeasures redirect: url: https://cs.visiblemeasures.com/pbserver?gdpr={gdpr}&gdpr_consent={gdpr_consent}&ccpa={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '[UID]' diff --git a/src/main/resources/bidder-config/visx.yaml b/src/main/resources/bidder-config/visx.yaml index d2bf2041468..2094c100e0b 100644 --- a/src/main/resources/bidder-config/visx.yaml +++ b/src/main/resources/bidder-config/visx.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: visx redirect: url: https://t.visx.net/s2s_sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redir={redirect_url} - support-cors: false uid-macro: '${UUID}' diff --git a/src/main/resources/bidder-config/vox.yaml b/src/main/resources/bidder-config/vox.yaml index 140c29fbaf5..e0f33ac2b02 100644 --- a/src/main/resources/bidder-config/vox.yaml +++ b/src/main/resources/bidder-config/vox.yaml @@ -18,4 +18,3 @@ adapters: iframe: url: https://ssp.hybrid.ai/prebid/server/v1/userSync?consent={gdpr_consent}&redirect={redirect_url} uid-macro: $UID - support-cors: false diff --git a/src/main/resources/bidder-config/vrtcal.yaml b/src/main/resources/bidder-config/vrtcal.yaml index 4b56cd5f0f4..4b98470422b 100644 --- a/src/main/resources/bidder-config/vrtcal.yaml +++ b/src/main/resources/bidder-config/vrtcal.yaml @@ -18,9 +18,7 @@ adapters: cookie-family-name: vrtcal redirect: url: https://usync.vrtcal.com/i?ssp=1804&synctype=redirect&us_privacy={us_privacy}&gdpr={gdpr}&gdpr_consent={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&surl={redirect_url} - support-cors: false uid-macro: '$$VRTCALUSER$$' iframe: url: https://usync.vrtcal.com/i?ssp=1804&synctype=iframe&us_privacy={us_privacy}&gdpr={gdpr}&gdpr_consent={gdpr_consent}&gpp={gpp}&gpp_sid={gpp_sid}&surl={redirect_url} - support-cors: false uid-macro: '$$VRTCALUSER$$' diff --git a/src/main/resources/bidder-config/xeworks.yaml b/src/main/resources/bidder-config/xeworks.yaml index bcb76eaebd6..c37e5b098a0 100644 --- a/src/main/resources/bidder-config/xeworks.yaml +++ b/src/main/resources/bidder-config/xeworks.yaml @@ -18,11 +18,9 @@ adapters: cookie-family-name: adipolo redirect: url: https://sync.adipolo.live/psync?t=s&e=0&gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&cb={redirect_url} - support-cors: false uid-macro: '$UID' iframe: url: https://sync.adipolo.live/static/adisync.html?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&cb={redirect_url} - support-cors: false uid-macro: '$UID' meta-info: maintainer-email: team@xe.works @@ -40,4 +38,3 @@ adapters: cookie-family-name: xeworks redirect: url: https://GET_FROM_team@xe.works - support-cors: false diff --git a/src/main/resources/bidder-config/yahooAds.yaml b/src/main/resources/bidder-config/yahooAds.yaml index b3657144a21..c45be2e9377 100644 --- a/src/main/resources/bidder-config/yahooAds.yaml +++ b/src/main/resources/bidder-config/yahooAds.yaml @@ -20,4 +20,3 @@ adapters: cookie-family-name: yahooAds redirect: url: https://ups.analytics.yahoo.com/ups/58401/sync?redir=true&gdpr={gdpr}&gdpr_consent={gdpr_consent} - support-cors: false diff --git a/src/main/resources/bidder-config/yandex.yaml b/src/main/resources/bidder-config/yandex.yaml index 602aa18c1c6..e095ef69719 100644 --- a/src/main/resources/bidder-config/yandex.yaml +++ b/src/main/resources/bidder-config/yandex.yaml @@ -14,5 +14,4 @@ adapters: cookie-family-name: yandex redirect: url: https://yandex.ru/an/mapuid/yandex/?ssp-id=10500&gdpr={gdpr}&gdpr_consent={gdpr_consent}&location={redirect_url} - support-cors: false uid-macro: '{YANDEXUID}' diff --git a/src/main/resources/bidder-config/yieldlab.yaml b/src/main/resources/bidder-config/yieldlab.yaml index bee28fd34dd..b6065be4cd9 100644 --- a/src/main/resources/bidder-config/yieldlab.yaml +++ b/src/main/resources/bidder-config/yieldlab.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: yieldlab redirect: url: https://ad.yieldlab.net/mr?t=2&pid=9140838&gdpr={gdpr}&gdpr_consent={gdpr_consent}&r={redirect_url} - support-cors: false uid-macro: '%%YL_UID%%' diff --git a/src/main/resources/bidder-config/yieldmo.yaml b/src/main/resources/bidder-config/yieldmo.yaml index 9c553ad2429..d224826a893 100644 --- a/src/main/resources/bidder-config/yieldmo.yaml +++ b/src/main/resources/bidder-config/yieldmo.yaml @@ -16,5 +16,4 @@ adapters: cookie-family-name: yieldmo redirect: url: https://ads.yieldmo.com/pbsync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&gpp={gpp}&gpp_sid={gpp_sid}&redirectUri={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/yieldone.yaml b/src/main/resources/bidder-config/yieldone.yaml index 89cce87bd8a..0eb1cd7e8f4 100644 --- a/src/main/resources/bidder-config/yieldone.yaml +++ b/src/main/resources/bidder-config/yieldone.yaml @@ -15,5 +15,4 @@ adapters: cookie-family-name: yieldone redirect: url: https://y.one.impact-ad.jp/hbs_cs?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&redirectUri={redirect_url} - support-cors: false uid-macro: '$UID' diff --git a/src/main/resources/bidder-config/zeroclickfraud.yaml b/src/main/resources/bidder-config/zeroclickfraud.yaml index d78d330be09..1308e268329 100644 --- a/src/main/resources/bidder-config/zeroclickfraud.yaml +++ b/src/main/resources/bidder-config/zeroclickfraud.yaml @@ -17,5 +17,4 @@ adapters: cookie-family-name: zeroclickfraud iframe: url: https://s.0cf.io/sync?gdpr={gdpr}&gdpr_consent={gdpr_consent}&us_privacy={us_privacy}&r={redirect_url} - support-cors: false uid-macro: '${uid}' diff --git a/src/main/resources/static/bidder-params/dxkulture.json b/src/main/resources/static/bidder-params/dxkulture.json deleted file mode 100644 index 858eefd22e4..00000000000 --- a/src/main/resources/static/bidder-params/dxkulture.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "DXKulture Adapter Params", - "description": "A schema which validates params accepted by the DXKulture adapter", - "type": "object", - "properties": { - "publisherId": { - "type": "string", - "description": "The publisher id" - }, - "placementId": { - "type": "string", - "description": "The placement id" - } - }, - "required": [ - "publisherId", - "placementId" - ] -} diff --git a/src/main/resources/static/bidder-params/intertech.json b/src/main/resources/static/bidder-params/intertech.json deleted file mode 100644 index 935b9ba42ca..00000000000 --- a/src/main/resources/static/bidder-params/intertech.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Intertech Adapter Params", - "description": "A schema which validates params accepted by the Intertech adapter", - "type": "object", - "properties": { - "page_id": { - "type": "integer", - "minLength": 1, - "description": "Special Page Id provided by Intertech Manager" - }, - "imp_id": { - "type": "integer", - "minLength": 1, - "description": "Special identifier provided by Intertech Manager" - } - }, - "required": [ - "page_id", - "imp_id" - ] -} diff --git a/src/main/resources/static/bidder-params/telaria.json b/src/main/resources/static/bidder-params/telaria.json deleted file mode 100644 index b4121967351..00000000000 --- a/src/main/resources/static/bidder-params/telaria.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Telaria Adapter Params", - "description": "A schema which validates params accepted by the Telaria adapter", - - "type": "object", - "properties": { - "adCode": { - "type": "string", - "description": "The Ad Unit Code." - }, - "seatCode": { - "type": "string", - "description": "Your Seat Code." - }, - "originalPublisherid": { - "type": "string", - "description": "publisher ID from the original request" - } - }, - "required": ["seatCode"] -} diff --git a/src/test/groovy/org/prebid/server/functional/model/config/AlternateBidderCodes.groovy b/src/test/groovy/org/prebid/server/functional/model/config/AlternateBidderCodes.groovy index 465acaad2cc..17ecbfdfeb1 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/AlternateBidderCodes.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/AlternateBidderCodes.groovy @@ -12,5 +12,5 @@ import org.prebid.server.functional.model.bidder.BidderName class AlternateBidderCodes { Boolean enabled - Map bidders + Map bidders } diff --git a/src/test/groovy/org/prebid/server/functional/model/config/BidderConfig.groovy b/src/test/groovy/org/prebid/server/functional/model/config/CodesBidderConfig.groovy similarity index 96% rename from src/test/groovy/org/prebid/server/functional/model/config/BidderConfig.groovy rename to src/test/groovy/org/prebid/server/functional/model/config/CodesBidderConfig.groovy index e139419e4e3..a2a33590826 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/BidderConfig.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/CodesBidderConfig.groovy @@ -10,7 +10,7 @@ import org.prebid.server.functional.model.bidder.BidderName @EqualsAndHashCode @ToString(includeNames = true, ignoreNulls = true) @JsonNaming(PropertyNamingStrategies.KebabCaseStrategy) -class BidderConfig { +class CodesBidderConfig { Boolean enabled List allowedBidderCodes diff --git a/src/test/groovy/org/prebid/server/functional/model/request/Channel.groovy b/src/test/groovy/org/prebid/server/functional/model/request/Channel.groovy new file mode 100644 index 00000000000..0a21c56899f --- /dev/null +++ b/src/test/groovy/org/prebid/server/functional/model/request/Channel.groovy @@ -0,0 +1,13 @@ +package org.prebid.server.functional.model.request + +import groovy.transform.EqualsAndHashCode +import groovy.transform.ToString +import org.prebid.server.functional.model.ChannelType + +@ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode +class Channel { + + ChannelType name + String version +} diff --git a/src/test/groovy/org/prebid/server/functional/model/request/amp/AmpRequest.groovy b/src/test/groovy/org/prebid/server/functional/model/request/amp/AmpRequest.groovy index fffb2c86e05..d7a2d3ae3c6 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/amp/AmpRequest.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/amp/AmpRequest.groovy @@ -2,11 +2,13 @@ package org.prebid.server.functional.model.request.amp import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import org.prebid.server.functional.util.PBSUtils @ToString(includeNames = true, ignoreNulls = true) @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy) +@EqualsAndHashCode class AmpRequest { String tagId diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/AdjustmentRule.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/AdjustmentRule.groovy index 953f66fd988..f3d02d15e0f 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/AdjustmentRule.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/AdjustmentRule.groovy @@ -3,11 +3,13 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import org.prebid.server.functional.model.Currency @JsonNaming(PropertyNamingStrategies.LowerCaseStrategy) @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class AdjustmentRule { @JsonProperty('adjtype') diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/Amp.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/Amp.groovy index cbc381ce564..88638e60a34 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/Amp.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/Amp.groovy @@ -1,9 +1,11 @@ package org.prebid.server.functional.model.request.auction +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import org.prebid.server.functional.model.request.amp.AmpRequest @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class Amp { AmpRequest data diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExt.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExt.groovy index ee3c1c9a8f0..4a1d0d237a3 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExt.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExt.groovy @@ -1,8 +1,10 @@ package org.prebid.server.functional.model.request.auction +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class AppExt { AppExtData data diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExtData.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExtData.groovy index 3d12506410c..fbe97c6ba4b 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExtData.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/AppExtData.groovy @@ -1,8 +1,10 @@ package org.prebid.server.functional.model.request.auction +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class AppExtData { String language diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/AppPrebid.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/AppPrebid.groovy index edb365d4d6f..f201aad5da4 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/AppPrebid.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/AppPrebid.groovy @@ -1,8 +1,10 @@ package org.prebid.server.functional.model.request.auction +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class AppPrebid { String source diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustment.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustment.groovy index 7f7250a6a75..f10d985e801 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustment.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustment.groovy @@ -2,11 +2,13 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import org.prebid.server.functional.util.PBSUtils @JsonNaming(PropertyNamingStrategies.LowerCaseStrategy) @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class BidAdjustment { Map mediaType diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentFactors.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentFactors.groovy index 9cb90edb27b..3c6360faa81 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentFactors.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentFactors.groovy @@ -4,11 +4,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import org.prebid.server.functional.model.bidder.BidderName @JsonNaming(PropertyNamingStrategies.LowerCaseStrategy) @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class BidAdjustmentFactors { @JsonAnySetter diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentRule.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentRule.groovy index 92af741601f..67f23edcf99 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentRule.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/BidAdjustmentRule.groovy @@ -1,9 +1,11 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.annotation.JsonProperty +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class BidAdjustmentRule { @JsonProperty('*') diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/ConsentedProvidersSettings.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/ConsentedProvidersSettings.groovy index aa7bd511cb2..720ddb40541 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/ConsentedProvidersSettings.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/ConsentedProvidersSettings.groovy @@ -2,10 +2,12 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @ToString(includeNames = true, ignoreNulls = true) @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy) +@EqualsAndHashCode class ConsentedProvidersSettings { String consentedProviders diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/DeviceExt.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/DeviceExt.groovy index 6f4b6e2f8c1..e257535f086 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/DeviceExt.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/DeviceExt.groovy @@ -1,13 +1,16 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.annotation.JsonValue +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @ToString +@EqualsAndHashCode class DeviceExt { Atts atts String cdep + DevicePrebid prebid enum Atts { diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/DevicePrebid.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/DevicePrebid.groovy new file mode 100644 index 00000000000..f6cc123133f --- /dev/null +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/DevicePrebid.groovy @@ -0,0 +1,11 @@ +package org.prebid.server.functional.model.request.auction + +import groovy.transform.EqualsAndHashCode +import groovy.transform.ToString + +@EqualsAndHashCode +@ToString(includeNames = true, ignoreNulls = true) +class DevicePrebid { + + Interstitial interstitial +} diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExtContextDataAdServer.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExtContextDataAdServer.groovy index 775fa3d8c76..528bc6e8a7c 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExtContextDataAdServer.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExtContextDataAdServer.groovy @@ -2,8 +2,10 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString +@EqualsAndHashCode @JsonNaming(PropertyNamingStrategies.LowerCaseStrategy) @ToString(includeNames = true, ignoreNulls = true) class ImpExtContextDataAdServer { diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/Interstitial.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/Interstitial.groovy new file mode 100644 index 00000000000..7a56ca6899d --- /dev/null +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/Interstitial.groovy @@ -0,0 +1,15 @@ +package org.prebid.server.functional.model.request.auction + +import com.fasterxml.jackson.annotation.JsonProperty +import groovy.transform.EqualsAndHashCode +import groovy.transform.ToString + +@EqualsAndHashCode +@ToString(includeNames = true, ignoreNulls = true) +class Interstitial { + + @JsonProperty("minwidthperc") + Integer minWidthPercentage + @JsonProperty("minheightperc") + Integer minHeightPercentage +} diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/MultiBid.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/MultiBid.groovy index 5349fd495ad..83cafd74d45 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/MultiBid.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/MultiBid.groovy @@ -2,11 +2,13 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import org.prebid.server.functional.model.bidder.BidderName @ToString(includeNames = true, ignoreNulls = false) @JsonNaming(PropertyNamingStrategies.LowerCaseStrategy) +@EqualsAndHashCode class MultiBid { BidderName bidder diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/Prebid.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/Prebid.groovy index b3d414ad3fb..80256327d0d 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/Prebid.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/Prebid.groovy @@ -4,9 +4,9 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming import groovy.transform.ToString -import org.prebid.server.functional.model.ChannelType import org.prebid.server.functional.model.bidder.BidderName import org.prebid.server.functional.model.config.AlternateBidderCodes +import org.prebid.server.functional.model.request.Channel @JsonNaming(PropertyNamingStrategies.LowerCaseStrategy) @ToString(includeNames = true, ignoreNulls = true) @@ -26,6 +26,8 @@ class Prebid { ExtRequestPrebidData data List bidderConfig List schains + List noSale + Long auctionTimestamp Amp amp Channel channel List multibid @@ -50,10 +52,7 @@ class Prebid { @JsonProperty("kvps") Map keyValuePairs List secondaryBidders - - static class Channel { - - ChannelType name - String version - } + Boolean supportDeals + String integration + Map bidders } diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/PrebidCurrency.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/PrebidCurrency.groovy index 98488883cb7..f54f92634dc 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/PrebidCurrency.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/PrebidCurrency.groovy @@ -2,11 +2,13 @@ package org.prebid.server.functional.model.request.auction import com.fasterxml.jackson.databind.PropertyNamingStrategies import com.fasterxml.jackson.databind.annotation.JsonNaming +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import org.prebid.server.functional.model.Currency @JsonNaming(PropertyNamingStrategies.LowerCaseStrategy) @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class PrebidCurrency { Map> rates diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/SiteExt.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/SiteExt.groovy index cc7f25f8335..7139801df94 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/SiteExt.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/SiteExt.groovy @@ -1,14 +1,27 @@ package org.prebid.server.functional.model.request.auction +import com.fasterxml.jackson.annotation.JsonIgnore +import com.fasterxml.jackson.annotation.JsonProperty import groovy.transform.ToString @ToString(includeNames = true, ignoreNulls = true) class SiteExt { - Integer amp + @JsonIgnore + Boolean isAmp SiteExtData data static SiteExt getFPDSiteExt() { new SiteExt(data: SiteExtData.FPDSiteExtData) } + + @JsonProperty("amp") + Integer getGetAmp() { + this.isAmp ? 1 : 0 + } + + @JsonProperty("amp") + void setGetAmp(Integer amp) { + this.isAmp = (amp == 1) + } } diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/UserTime.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/UserTime.groovy index bc81ab3fc6f..f509d46aa68 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/UserTime.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/UserTime.groovy @@ -1,8 +1,10 @@ package org.prebid.server.functional.model.request.auction +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @ToString(includeNames = true, ignoreNulls = true) +@EqualsAndHashCode class UserTime { Integer userdow diff --git a/src/test/groovy/org/prebid/server/functional/model/response/cookiesync/UserSyncInfo.groovy b/src/test/groovy/org/prebid/server/functional/model/response/cookiesync/UserSyncInfo.groovy index 0ddb8dd7d10..a13646f01c4 100644 --- a/src/test/groovy/org/prebid/server/functional/model/response/cookiesync/UserSyncInfo.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/response/cookiesync/UserSyncInfo.groovy @@ -8,7 +8,6 @@ class UserSyncInfo { String url Type type - Boolean supportCORS enum Type { diff --git a/src/test/groovy/org/prebid/server/functional/tests/AccountSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/AccountSpec.groovy index 6bfb51536cc..e2730e46e52 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/AccountSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/AccountSpec.groovy @@ -10,14 +10,19 @@ import org.prebid.server.functional.model.request.auction.Site import org.prebid.server.functional.service.PrebidServerException import org.prebid.server.functional.util.PBSUtils +import java.time.Instant + import static io.netty.handler.codec.http.HttpResponseStatus.UNAUTHORIZED class AccountSpec extends BaseSpec { def "PBS should reject request with inactive account"() { - given: "Pbs config with enforce-valid-account and default-account-config" - def pbsService = pbsServiceFactory.getService( - ["settings.enforce-valid-account": enforceValidAccount as String]) + given: "Start up time" + def start = Instant.now() + + and: "Pbs config with enforce-valid-account" + def pbsConfig = ["settings.enforce-valid-account": enforceValidAccount as String] + def pbsService = pbsServiceFactory.getService(pbsConfig) and: "Inactive account id" def accountId = PBSUtils.randomNumber @@ -34,13 +39,56 @@ class AccountSpec extends BaseSpec { then: "PBS should reject the entire auction" def exception = thrown(PrebidServerException) + def warningMessage = "Account $accountId is inactive" assert exception.statusCode == UNAUTHORIZED.code() - assert exception.responseBody == "Account $accountId is inactive" + assert exception.responseBody == warningMessage + + and: "PBs should emit warning logs" + def logsByTime = pbsService.getLogsByTime(start) + assert getLogsByText(logsByTime, warningMessage).size() == 1 + + cleanup: "Stop and remove pbs container" + pbsServiceFactory.removeContainer(pbsConfig) where: enforceValidAccount << [true, false] } + def "PBS shouldn't emit warning in logs when reject request with inactive account amd sampling-rate is disabled"() { + given: "Start up time" + def start = Instant.now() + + and: "Pbs config with logging.sampling-rate" + def pbsConfig = ["logging.sampling-rate": "0"] + def pbsService = pbsServiceFactory.getService(pbsConfig) + + and: "Inactive account id" + def accountId = PBSUtils.randomNumber + def account = new Account(uuid: accountId, config: new AccountConfig(status: AccountStatus.INACTIVE)) + accountDao.save(account) + + and: "Default basic BidRequest with inactive account id" + def bidRequest = BidRequest.defaultBidRequest.tap { + site.publisher.id = accountId + } + + when: "PBS processes auction request" + pbsService.sendAuctionRequest(bidRequest) + + then: "PBS should reject the entire auction" + def exception = thrown(PrebidServerException) + def warningMessage = "Account $accountId is inactive" + assert exception.statusCode == UNAUTHORIZED.code() + assert exception.responseBody == warningMessage + + and: "PBs shouldn't emit warning logs" + def logsByTime = pbsService.getLogsByTime(start) + assert !getLogsByText(logsByTime, warningMessage) + + cleanup: "Stop and remove pbs container" + pbsServiceFactory.removeContainer(pbsConfig) + } + def "PBS should reject request with unknown account when settings.enforce-valid-account = true"() { given: "Pbs config with enforce-valid-account and default-account-config" def pbsService = pbsServiceFactory.getService( diff --git a/src/test/groovy/org/prebid/server/functional/tests/AlternateBidderCodeSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/AlternateBidderCodeSpec.groovy index 1e2c67fad6f..aabdc832c72 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/AlternateBidderCodeSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/AlternateBidderCodeSpec.groovy @@ -3,7 +3,7 @@ package org.prebid.server.functional.tests import org.prebid.server.functional.model.bidder.Generic import org.prebid.server.functional.model.config.AccountConfig import org.prebid.server.functional.model.config.AlternateBidderCodes -import org.prebid.server.functional.model.config.BidderConfig +import org.prebid.server.functional.model.config.CodesBidderConfig import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.db.StoredImp import org.prebid.server.functional.model.db.StoredResponse @@ -417,8 +417,8 @@ class AlternateBidderCodeSpec extends BaseSpec { where: requestAlternateBidderCode | accountAlternateBidderCodes - new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) | null - null | new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) + new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) | null + null | new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) } def "PBS shouldn't discard bid amx alias requested when imp[].bidder is same as in bid.ext.bidderCode"() { @@ -534,18 +534,18 @@ class AlternateBidderCodeSpec extends BaseSpec { new AlternateBidderCodes(), new AlternateBidderCodes(enabled: true), new AlternateBidderCodes(enabled: false), - new AlternateBidderCodes(bidders: [(AMX): new BidderConfig()]), - new AlternateBidderCodes(bidders: [(UNKNOWN): new BidderConfig()]), - new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig()]), - new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new BidderConfig()]), - new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new BidderConfig()]), - new AlternateBidderCodes(enabled: false, bidders: [(AMX): new BidderConfig()]), - new AlternateBidderCodes(bidders: [(AMX): new BidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), - new AlternateBidderCodes(bidders: [(UNKNOWN): new BidderConfig(enabled: false, allowedBidderCodes: [AMX])]), - new AlternateBidderCodes(enabled: false, bidders: [(AMX): new BidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), - new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new BidderConfig(enabled: false, allowedBidderCodes: [AMX])]), - new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), - new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new BidderConfig(enabled: false, allowedBidderCodes: [AMX])])] + new AlternateBidderCodes(bidders: [(AMX): new CodesBidderConfig()]), + new AlternateBidderCodes(bidders: [(UNKNOWN): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: false, bidders: [(AMX): new CodesBidderConfig()]), + new AlternateBidderCodes(bidders: [(AMX): new CodesBidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), + new AlternateBidderCodes(bidders: [(UNKNOWN): new CodesBidderConfig(enabled: false, allowedBidderCodes: [AMX])]), + new AlternateBidderCodes(enabled: false, bidders: [(AMX): new CodesBidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), + new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new CodesBidderConfig(enabled: false, allowedBidderCodes: [AMX])]), + new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), + new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new CodesBidderConfig(enabled: false, allowedBidderCodes: [AMX])])] } def "PBS shouldn't discard the bid or emit a response warning when request alternate bidder codes not fully configured"() { @@ -602,12 +602,12 @@ class AlternateBidderCodeSpec extends BaseSpec { new AlternateBidderCodes(), new AlternateBidderCodes(enabled: true), new AlternateBidderCodes(enabled: false), - new AlternateBidderCodes(bidders: [(AMX): new BidderConfig()]), - new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig()]), - new AlternateBidderCodes(enabled: false, bidders: [(AMX): new BidderConfig()]), - new AlternateBidderCodes(bidders: [(AMX): new BidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), - new AlternateBidderCodes(enabled: false, bidders: [(AMX): new BidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), - new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]),] + new AlternateBidderCodes(bidders: [(AMX): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: false, bidders: [(AMX): new CodesBidderConfig()]), + new AlternateBidderCodes(bidders: [(AMX): new CodesBidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), + new AlternateBidderCodes(enabled: false, bidders: [(AMX): new CodesBidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]), + new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig(enabled: false, allowedBidderCodes: [UNKNOWN])]),] } def "PBS should validate and throw error when request alternate bidder codes not fully configured"() { @@ -636,12 +636,12 @@ class AlternateBidderCodeSpec extends BaseSpec { where: - requestedAlternateBidderCodes << [new AlternateBidderCodes(bidders: [(UNKNOWN): new BidderConfig()]), - new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new BidderConfig()]), - new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new BidderConfig()]), - new AlternateBidderCodes(bidders: [(UNKNOWN): new BidderConfig(enabled: false, allowedBidderCodes: [AMX])]), - new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new BidderConfig(enabled: false, allowedBidderCodes: [AMX])]), - new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new BidderConfig(enabled: false, allowedBidderCodes: [AMX])])] + requestedAlternateBidderCodes << [new AlternateBidderCodes(bidders: [(UNKNOWN): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new CodesBidderConfig()]), + new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new CodesBidderConfig()]), + new AlternateBidderCodes(bidders: [(UNKNOWN): new CodesBidderConfig(enabled: false, allowedBidderCodes: [AMX])]), + new AlternateBidderCodes(enabled: false, bidders: [(UNKNOWN): new CodesBidderConfig(enabled: false, allowedBidderCodes: [AMX])]), + new AlternateBidderCodes(enabled: true, bidders: [(UNKNOWN): new CodesBidderConfig(enabled: false, allowedBidderCodes: [AMX])])] } def "PBS shouldn't discard bid when alternate bidder code allows bidder codes fully configured and bidder requested in uppercase"() { @@ -753,9 +753,9 @@ class AlternateBidderCodeSpec extends BaseSpec { where: configAccountAlternateBidderCodes << [ - new AccountConfig(alternateBidderCodesSnakeCase: new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig(enabled: true, allowedBidderCodesSnakeCase: [GENERIC])])), - new AccountConfig(alternateBidderCodes: new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig(enabled: true, allowedBidderCodesSnakeCase: [GENERIC])])), - new AccountConfig(alternateBidderCodesSnakeCase: new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]))] + new AccountConfig(alternateBidderCodesSnakeCase: new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodesSnakeCase: [GENERIC])])), + new AccountConfig(alternateBidderCodes: new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodesSnakeCase: [GENERIC])])), + new AccountConfig(alternateBidderCodesSnakeCase: new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]))] } def "PBS should take precede of request and discard the bid and emit a response error when alternate bidder codes enabled and bidder came with different bidder code"() { @@ -1035,10 +1035,10 @@ class AlternateBidderCodeSpec extends BaseSpec { assert !metrics[ADAPTER_RESPONSE_VALIDATION_METRICS.formatted(AMX)] where: - requestAlternateBidders << [[(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])], - [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], - [(AMX_CAMEL_CASE): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], - [(AMX_CAMEL_CASE): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]] + requestAlternateBidders << [[(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])], + [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], + [(AMX_CAMEL_CASE): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], + [(AMX_CAMEL_CASE): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]] } def "PBS shouldn't discard the bid or emit a response warning when account alternate bidder codes are enabled and the allowed bidder codes is same as bidder's request"() { @@ -1095,10 +1095,10 @@ class AlternateBidderCodeSpec extends BaseSpec { assert !metrics[ADAPTER_RESPONSE_VALIDATION_METRICS.formatted(AMX)] where: - accountAlternateBidders << [[(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])], - [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], - [(AMX_CAMEL_CASE): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], - [(AMX_CAMEL_CASE): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]] + accountAlternateBidders << [[(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])], + [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], + [(AMX_CAMEL_CASE): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC_CAMEL_CASE])], + [(AMX_CAMEL_CASE): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]] } def "PBS shouldn't discard the bid or emit a response warning when default account alternate bidder codes are enabled and the allowed bidder codes match the bidder's request"() { @@ -1106,7 +1106,7 @@ class AlternateBidderCodeSpec extends BaseSpec { def defaultAccountConfig = AccountConfig.defaultAccountConfig.tap { alternateBidderCodes = new AlternateBidderCodes().tap { it.enabled = true - it.bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + it.bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } def config = AMX_CONFIG + ["settings.default-account-config": encode(defaultAccountConfig)] @@ -1275,7 +1275,7 @@ class AlternateBidderCodeSpec extends BaseSpec { def defaultAccountConfig = AccountConfig.defaultAccountConfig.tap { alternateBidderCodes = new AlternateBidderCodes().tap { it.enabled = true - it.bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + it.bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } def pbsConfig = AMX_CONFIG + ["settings.default-account-config": encode(defaultAccountConfig)] @@ -1349,7 +1349,7 @@ class AlternateBidderCodeSpec extends BaseSpec { amx = null alias = new Generic() } - ext.prebid.alternateBidderCodes.bidders = [(ALIAS): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] + ext.prebid.alternateBidderCodes.bidders = [(ALIAS): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] } and: "Bid response with bidder code" @@ -1453,8 +1453,8 @@ class AlternateBidderCodeSpec extends BaseSpec { where: requestAlternateBidderCode | accountAlternateBidderCodes - new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) | null - null | new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) + new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) | null + null | new AlternateBidderCodes(enabled: true, bidders: [(ALIAS): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) } def "PBS shouldn't discard bid when alternate bidder code allow and soft alias with case with base bidder in alternate bidder code"() { @@ -1519,8 +1519,8 @@ class AlternateBidderCodeSpec extends BaseSpec { where: requestAlternateBidderCode | accountAlternateBidderCodes - new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) | null - null | new AlternateBidderCodes(enabled: true, bidders: [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) + new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) | null + null | new AlternateBidderCodes(enabled: true, bidders: [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) } def "PBS should populate adapter code with requested bidder when conflict soft and hard alias and alternate bidder code"() { @@ -1535,7 +1535,7 @@ class AlternateBidderCodeSpec extends BaseSpec { imp[0].ext.prebid.bidder.amx = null imp[0].ext.prebid.bidder.generic = null it.ext.prebid.aliases = [(ALIAS.value): GENERIC] - it.ext.prebid.alternateBidderCodes.bidders = [(ALIAS): new BidderConfig(enabled: true, allowedBidderCodesLowerCase: [GENERIC])] + it.ext.prebid.alternateBidderCodes.bidders = [(ALIAS): new CodesBidderConfig(enabled: true, allowedBidderCodesLowerCase: [GENERIC])] } and: "Bid response with bidder code" @@ -1581,7 +1581,7 @@ class AlternateBidderCodeSpec extends BaseSpec { given: "Default bid request with amx and generic bidder" def bidRequest = getBidRequestWithAmxBidderAndAlternateBidderCode().tap { imp[0].ext.prebid.bidder.generic = new Generic() - ext.prebid.alternateBidderCodes.bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] + ext.prebid.alternateBidderCodes.bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] } and: "Bid response with bidder code" @@ -1637,7 +1637,7 @@ class AlternateBidderCodeSpec extends BaseSpec { imp.add(Imp.getDefaultImpression()) imp[1].ext.prebid.bidder.amx = new Amx() imp[1].ext.prebid.bidder.generic = null - ext.prebid.alternateBidderCodes.bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC, AMX])] + ext.prebid.alternateBidderCodes.bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC, AMX])] } and: "Bid response with bidder code" @@ -1696,7 +1696,7 @@ class AlternateBidderCodeSpec extends BaseSpec { def storedResponseId = PBSUtils.randomNumber def bidRequest = getBidRequestWithAmxBidderAndAlternateBidderCode().tap { imp[0].ext.prebid.storedBidResponse = [new StoredBidResponse(id: storedResponseId, bidder: AMX)] - ext.prebid.alternateBidderCodes.bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] + ext.prebid.alternateBidderCodes.bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] } and: "Stored bid response in DB" @@ -1751,7 +1751,7 @@ class AlternateBidderCodeSpec extends BaseSpec { given: "Default bid request" def bidRequest = getBidRequestWithAmxBidderAndAlternateBidderCode().tap { imp[0].ext.prebid.storedRequest = new PrebidStoredRequest(id: PBSUtils.randomString) - ext.prebid.alternateBidderCodes.bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] + ext.prebid.alternateBidderCodes.bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] } and: "Save storedImp into DB" @@ -1804,7 +1804,7 @@ class AlternateBidderCodeSpec extends BaseSpec { it.uuid = bidRequest.accountId it.config = new AccountConfig(status: ACTIVE, alternateBidderCodes: new AlternateBidderCodes().tap { it.enabled = true - it.bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + it.bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] }) } } @@ -1813,7 +1813,7 @@ class AlternateBidderCodeSpec extends BaseSpec { getBidRequestWithAmxBidder().tap { it.ext.prebid.alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodesLowerCase: [AMX])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodesLowerCase: [AMX])] } } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/AmpFpdSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/AmpFpdSpec.groovy index e376f611e84..412f4776e69 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/AmpFpdSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/AmpFpdSpec.groovy @@ -233,9 +233,6 @@ class AmpFpdSpec extends BaseSpec { def bidderRequest = bidder.getBidderRequest(ampStoredRequest.id) assert ampStoredRequest.ext.prebid.bidderConfig[0].config.ortb2.site.domain == bidderRequest.site.domain assert ampStoredRequest.ext.prebid.bidderConfig[0].config.ortb2.user.keywords == bidderRequest.user.keywords - - and: "Bidder request shouldn't contain bidder config" - assert !bidderRequest.ext.prebid.bidderConfig } def "PBS should populate FPD from root when bidder was defined in prebid data"() { diff --git a/src/test/groovy/org/prebid/server/functional/tests/AnalyticsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/AnalyticsSpec.groovy index 9aa86da7e42..0201c20fa20 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/AnalyticsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/AnalyticsSpec.groovy @@ -186,7 +186,7 @@ class AnalyticsSpec extends BaseSpec { then: "Bidder request shouldn't contain additional field from logAnalytics" def bidderRequest = bidder.getBidderRequest(bidRequest.id) - assert !bidderRequest.ext.prebid.analytics.logAnalytics + assert !bidderRequest?.ext?.prebid?.analytics?.logAnalytics then: "Analytics bid request should be emitted in logs" PBSUtils.waitUntil({ pbsServiceWithLogAnalytics.isContainLogsByValue(bidRequest.id) }) diff --git a/src/test/groovy/org/prebid/server/functional/tests/AuctionSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/AuctionSpec.groovy index 1506e2e0a4d..6ca6bc42177 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/AuctionSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/AuctionSpec.groovy @@ -43,14 +43,12 @@ import static org.prebid.server.functional.util.SystemProperties.PBS_VERSION class AuctionSpec extends BaseSpec { private static final String USER_SYNC_URL = "$networkServiceContainer.rootUri/generic-usersync" - private static final Boolean CORS_SUPPORT = false private static final UserSyncInfo.Type USER_SYNC_TYPE = REDIRECT private static final Integer DEFAULT_TIMEOUT = getRandomTimeout() private static final Integer MIN_BID_ID_LENGTH = 17 private static final Integer DEFAULT_UUID_LENGTH = 36 private static final Map GENERIC_CONFIG = [ - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.support-cors": CORS_SUPPORT.toString()] + "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL] @Shared PrebidServerService prebidServerService = pbsServiceFactory.getService(PBS_CONFIG) @@ -125,37 +123,6 @@ class AuctionSpec extends BaseSpec { "invalid-stored-impr" | { bidReq, storedReq -> bidReq.imp[0].ext.prebid.storedRequest = storedReq } } - def "PBS should copy imp level passThrough to bidresponse.seatbid[].bid[].ext.prebid.passThrough when the passThrough is present"() { - given: "Default bid request with passThrough" - def randomString = PBSUtils.randomString - def passThrough = [(randomString): randomString] - def bidRequest = BidRequest.defaultBidRequest.tap { - imp[0].ext.prebid.passThrough = passThrough - } - - when: "Requesting PBS auction" - def response = defaultPbsService.sendAuctionRequest(bidRequest) - - then: "BidResponse should contain the same passThrough as on request" - assert response.seatbid.first().bid.first().ext.prebid.passThrough == passThrough - } - - def "PBS should copy global level passThrough object to bidresponse.ext.prebid.passThrough when passThrough is present"() { - given: "Default bid request with passThrough" - def randomString = PBSUtils.randomString - def passThrough = [(randomString): randomString] - def bidRequest = BidRequest.defaultBidRequest.tap { - ext.prebid.passThrough = passThrough - } - - when: "Requesting PBS auction" - defaultPbsService.sendAuctionRequest(bidRequest) - - then: "BidResponse should contain the same passThrough as on request" - def bidderRequest = bidder.getBidderRequest(bidRequest.id) - assert bidderRequest.ext.prebid.passThrough == passThrough - } - def "PBS should populate bidder request buyeruid from buyeruids when buyeruids with appropriate bidder present in request"() { given: "Bid request with buyeruids" def buyeruid = PBSUtils.randomString @@ -169,6 +136,9 @@ class AuctionSpec extends BaseSpec { then: "Bidder request should contain buyeruid from the user.ext.prebid.buyeruids" def bidderRequest = bidder.getBidderRequest(bidRequest.id) assert bidderRequest?.user?.buyeruid == buyeruid + + and: "Bidder request shouldn't contain user.ext.prebid.buyeruids" + assert !bidderRequest?.user?.ext?.prebid?.buyeruids } def "PBS shouldn't populate bidder request buyeruid from buyeruids when buyeruids without appropriate bidder present in request"() { @@ -189,8 +159,7 @@ class AuctionSpec extends BaseSpec { def "PBS should populate buyeruid from uids cookie when buyeruids with appropriate bidder but without value present in request"() { given: "PBS config" def prebidServerService = pbsServiceFactory.getService(PBS_CONFIG - + ["adapters.${GENERIC.value}.usersync.${REDIRECT.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.${REDIRECT.value}.support-cors": "false"]) + + ["adapters.${GENERIC.value}.usersync.${REDIRECT.value}.url" : USER_SYNC_URL]) and: "Bid request with buyeruids" def bidRequest = BidRequest.defaultBidRequest.tap { @@ -212,8 +181,7 @@ class AuctionSpec extends BaseSpec { def "PBS shouldn't populate buyeruid from uids cookie when buyeruids with appropriate bidder but without value present in request"() { given: "PBS config" def prebidServerService = pbsServiceFactory.getService(PBS_CONFIG - + ["adapters.${GENERIC.value}.usersync.${REDIRECT.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.${REDIRECT.value}.support-cors": "false"]) + + ["adapters.${GENERIC.value}.usersync.${REDIRECT.value}.url" : USER_SYNC_URL]) and: "Bid request with buyeruids" def bidRequest = BidRequest.defaultBidRequest.tap { @@ -336,25 +304,6 @@ class AuctionSpec extends BaseSpec { assert !bidderRequest.ext.prebid.aliases } - def "PBS auction should pass ext.prebid.sdk requested to bidder request when sdk specified"() { - given: "Default bid request with aliases" - def bidRequest = BidRequest.defaultBidRequest.tap { - ext.prebid.sdk = new Sdk(renderers: [new Renderer( - name: PBSUtils.randomString, - version: PBSUtils.randomString, - data: new RendererData(any: PBSUtils.randomString))]) - } - - when: "Requesting PBS auction" - defaultPbsService.sendAuctionRequest(bidRequest) - - then: "Bidder request should contain sdk value same in request" - def bidderRequest = bidder.getBidderRequest(bidRequest.id) - assert bidderRequest.ext.prebid.sdk.renderers.name == bidRequest.ext.prebid.sdk.renderers.name - assert bidderRequest.ext.prebid.sdk.renderers.version == bidRequest.ext.prebid.sdk.renderers.version - assert bidderRequest.ext.prebid.sdk.renderers.data.any == bidRequest.ext.prebid.sdk.renderers.data.any - } - def "PBS auction should pass meta object to bid response when meta specified "() { given: "Default bid request with aliases" def bidRequest = BidRequest.defaultBidRequest diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidAdjustmentSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidAdjustmentSpec.groovy index 7da1c89fffb..a2a9452971c 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidAdjustmentSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidAdjustmentSpec.groovy @@ -1,11 +1,10 @@ package org.prebid.server.functional.tests - import org.prebid.server.functional.model.bidder.Generic import org.prebid.server.functional.model.config.AccountAuctionConfig import org.prebid.server.functional.model.config.AccountConfig import org.prebid.server.functional.model.config.AlternateBidderCodes -import org.prebid.server.functional.model.config.BidderConfig +import org.prebid.server.functional.model.config.CodesBidderConfig import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.request.auction.AdjustmentRule import org.prebid.server.functional.model.request.auction.AdjustmentType @@ -96,14 +95,17 @@ class BidAdjustmentSpec extends BaseSpec { assert response?.seatbid?.first?.bid?.first?.price == bidResponse.seatbid.first.bid.first.price * bidAdjustmentFactor + and: "Bidder request shouldn't contain bid adjustment factors" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.bidAdjustmentFactors == bidRequest.ext.prebid.bidAdjustmentFactors + where: bidAdjustmentFactor << [0.9, 1.1] } def "PBS should prefer bid price adjustment based on media type when request has per-media-type bid adjustment factors"() { given: "Default bid request with bid adjustment" - def bidAdjustment = randomDecimal - def mediaTypeBidAdjustment = bidAdjustmentFactor + def bidAdjustment = getRandomDecimal() def bidRequest = BidRequest.getDefaultBidRequest(SITE).tap { ext.prebid.bidAdjustmentFactors = new BidAdjustmentFactors().tap { adjustments = [(GENERIC): bidAdjustment] @@ -122,8 +124,12 @@ class BidAdjustmentSpec extends BaseSpec { assert response?.seatbid?.first?.bid?.first?.price == bidResponse.seatbid.first.bid.first.price * mediaTypeBidAdjustment + and: "Bidder request should contain bid bid adjustment factors" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.bidAdjustmentFactors == bidRequest.ext.prebid.bidAdjustmentFactors + where: - bidAdjustmentFactor << [0.9, 1.1] + mediaTypeBidAdjustment << [0.9, 1.1] } def "PBS should adjust bid price for bidder only when request contains bid adjustment for corresponding bidder"() { @@ -235,6 +241,9 @@ class BidAdjustmentSpec extends BaseSpec { assert bidderRequest.imp.bidFloorCur == [currency] assert bidderRequest.imp.bidFloor == [impPrice] + and: "Bidder request should contain bid adjustments" + assert bidderRequest.ext.prebid.bidAdjustments == bidRequest.ext.prebid.bidAdjustments + where: adjustmentType | ruleValue | mediaType | bidRequest MULTIPLIER | getRandomDecimal(MIN_ADJUST_VALUE, MAX_MULTIPLIER_ADJUST_VALUE) | BANNER | BidRequest.defaultBidRequest @@ -1245,7 +1254,7 @@ class BidAdjustmentSpec extends BaseSpec { it.ext.prebid.tap { alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] } bidAdjustmentFactors = new BidAdjustmentFactors(adjustments: [(GENERIC): bidAdjustmentFactor]) } @@ -1283,7 +1292,7 @@ class BidAdjustmentSpec extends BaseSpec { } alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] } } } @@ -1322,7 +1331,7 @@ class BidAdjustmentSpec extends BaseSpec { } alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])] } } } @@ -1361,7 +1370,7 @@ class BidAdjustmentSpec extends BaseSpec { bidAdjustments = new BidAdjustment(mediaType: [(BANNER): bidAdjustmentRule]) alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } } @@ -1419,7 +1428,7 @@ class BidAdjustmentSpec extends BaseSpec { (ANY) : secondBidAdjustmentRule]) alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } } @@ -1472,7 +1481,7 @@ class BidAdjustmentSpec extends BaseSpec { bidAdjustments = new BidAdjustment(mediaType: [(BANNER): bidAdjustmentRule]) alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } } @@ -1526,7 +1535,7 @@ class BidAdjustmentSpec extends BaseSpec { bidAdjustments = new BidAdjustment(mediaType: [(BANNER): exactRule]) alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } } @@ -1577,7 +1586,7 @@ class BidAdjustmentSpec extends BaseSpec { bidAdjustments = new BidAdjustment(mediaType: [(BANNER): exactRule]) alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } } @@ -1628,7 +1637,7 @@ class BidAdjustmentSpec extends BaseSpec { bidAdjustments = new BidAdjustment(mediaType: [(BANNER): exactRule]) alternateBidderCodes = new AlternateBidderCodes().tap { enabled = true - bidders = [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [AMX])] + bidders = [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [AMX])] } } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderFieldDisplayBehaviorSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderFieldDisplayBehaviorSpec.groovy new file mode 100644 index 00000000000..bdf0f633626 --- /dev/null +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderFieldDisplayBehaviorSpec.groovy @@ -0,0 +1,588 @@ +package org.prebid.server.functional.tests + +import org.prebid.server.functional.model.ChannelType +import org.prebid.server.functional.model.bidder.Generic +import org.prebid.server.functional.model.config.AlternateBidderCodes +import org.prebid.server.functional.model.config.CodesBidderConfig +import org.prebid.server.functional.model.request.Channel +import org.prebid.server.functional.model.request.amp.AmpRequest +import org.prebid.server.functional.model.request.auction.AdServerTargeting +import org.prebid.server.functional.model.request.auction.AdjustmentRule +import org.prebid.server.functional.model.request.auction.Amp +import org.prebid.server.functional.model.request.auction.AppExt +import org.prebid.server.functional.model.request.auction.AppExtData +import org.prebid.server.functional.model.request.auction.AppPrebid +import org.prebid.server.functional.model.request.auction.BidAdjustment +import org.prebid.server.functional.model.request.auction.BidAdjustmentFactors +import org.prebid.server.functional.model.request.auction.BidAdjustmentRule +import org.prebid.server.functional.model.request.auction.BidRequest +import org.prebid.server.functional.model.request.auction.BidderConfig +import org.prebid.server.functional.model.request.auction.BidderConfigOrtb +import org.prebid.server.functional.model.request.auction.ConsentedProvidersSettings +import org.prebid.server.functional.model.request.auction.Device +import org.prebid.server.functional.model.request.auction.DeviceExt +import org.prebid.server.functional.model.request.auction.Dooh +import org.prebid.server.functional.model.request.auction.DoohExt +import org.prebid.server.functional.model.request.auction.EidPermission +import org.prebid.server.functional.model.request.auction.ExtPrebidBidderConfig +import org.prebid.server.functional.model.request.auction.ExtRequestPrebidData +import org.prebid.server.functional.model.request.auction.Interstitial +import org.prebid.server.functional.model.request.auction.MultiBid +import org.prebid.server.functional.model.request.auction.PaaFormat +import org.prebid.server.functional.model.request.auction.PrebidCache +import org.prebid.server.functional.model.request.auction.DevicePrebid +import org.prebid.server.functional.model.request.auction.PrebidCurrency +import org.prebid.server.functional.model.request.auction.Renderer +import org.prebid.server.functional.model.request.auction.RendererData +import org.prebid.server.functional.model.request.auction.Sdk +import org.prebid.server.functional.model.request.auction.Site +import org.prebid.server.functional.model.request.auction.SiteExt +import org.prebid.server.functional.model.request.auction.SiteExtData +import org.prebid.server.functional.model.request.auction.User +import org.prebid.server.functional.model.request.auction.UserExt +import org.prebid.server.functional.model.request.auction.UserExtPrebid +import org.prebid.server.functional.model.request.auction.UserTime +import org.prebid.server.functional.model.response.auction.BidResponse +import org.prebid.server.functional.util.PBSUtils + +import static org.prebid.server.functional.model.Currency.USD +import static org.prebid.server.functional.model.bidder.BidderName.ALIAS +import static org.prebid.server.functional.model.bidder.BidderName.OPENX +import static org.prebid.server.functional.model.bidder.BidderName.RUBICON +import static org.prebid.server.functional.model.bidder.BidderName.GENERIC +import static org.prebid.server.functional.model.mock.services.currencyconversion.CurrencyConversionRatesResponse.defaultConversionRates +import static org.prebid.server.functional.model.request.auction.AdjustmentType.MULTIPLIER +import static org.prebid.server.functional.model.request.auction.BidAdjustmentMediaType.BANNER +import static org.prebid.server.functional.model.request.auction.BidAdjustmentMediaType.VIDEO +import static org.prebid.server.functional.model.request.auction.DebugCondition.ENABLED +import static org.prebid.server.functional.model.request.auction.DistributionChannel.APP +import static org.prebid.server.functional.model.request.auction.DistributionChannel.DOOH +import static org.prebid.server.functional.model.request.auction.DistributionChannel.SITE +import static org.prebid.server.functional.model.request.auction.TraceLevel.BASIC + +class BidderFieldDisplayBehaviorSpec extends BaseSpec { + + private static final String WILDCARD = "*" + + def "PBS should pass ext.prebid.createTids to bidder request"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.createTids = PBSUtils.randomBoolean + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain createTids" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.createTids == bidRequest.ext.prebid.createTids + } + + def "PBS shouldn't pass ext.prebid.returnAllBidStatus to bidder request"() { + given: "Default basic bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.returnAllBidStatus = true + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain returnAllBidStatus" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.returnAllBidStatus + } + + def "PBS shouldn't pass aliasGvlIds to bidder request when aliasGvlIds or aliases specified"() { + given: "Default basic bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + imp[0].ext.prebid.bidder.alias = new Generic() + imp[0].ext.prebid.bidder.generic = null + ext.prebid.aliasgvlids = [(ALIAS.value): PBSUtils.randomNumber] + ext.prebid.aliases = [(ALIAS.value): GENERIC] + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain aliasgvlids and aliases" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.aliasgvlids + assert !bidderRequest.ext.prebid.aliases + } + + def "PBS shouldn't pass adServerTargeting to bidder request when adServerTargeting specified"() { + given: "Default bid request" + def customBidRequest = "custom_bid_request" + def sourceOfBidRequest = "bidrequest" + def impId = "imp.id" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.tap { + adServerTargeting = [ + new AdServerTargeting().tap { + key = customBidRequest + source = sourceOfBidRequest + value = impId + }] + } + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain adServerTargeting" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.adServerTargeting + } + + def "PBS should pass supportDeals to bidder request when supportDeals specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.supportDeals = PBSUtils.randomBoolean + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain requested supportDeals" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.supportDeals == bidRequest.ext.prebid.supportDeals + } + + def "PBS shouldn't pass ext.prebid.cache to bidder request when cache specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.cache = new PrebidCache(winningOnly: PBSUtils.randomBoolean) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain cache" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.cache + } + + def "PBS should pass ext.prebid.channel to bidder request when channel specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.channel = new Channel(name: channelType) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain ext.prebid.channel" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.channel == bidRequest.ext.prebid.channel + + where: + channelType << ChannelType.values() + } + + def "PBS should pass ext.prebid.currency.{usePbsRates/rates} to bidder request when usePbsRates or rates specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.currency = new PrebidCurrency( + usePbsRates: PBSUtils.randomBoolean, + rates: getDefaultConversionRates()) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain ext.prebid.currency" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.currency == bidRequest.ext.prebid.currency + } + + def "PBS shouldn't pass ext.prebid.data.{bidders,eidpermissions} to bidder request"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.data = new ExtRequestPrebidData(bidders: [GENERIC.value], + eidpermissions: [new EidPermission(source: PBSUtils.randomString, bidders: [GENERIC])]) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain ext.prebid.data.{bidders,eidpermissions}" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest?.ext?.prebid?.data?.bidders + assert !bidderRequest?.ext?.prebid?.data?.eidpermissions + } + + def "PBS should pass ext.prebid.{trace,debug,integration} to bidder request"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.trace = BASIC + ext.prebid.debug = ENABLED + ext.prebid.integration = PBSUtils.randomString + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain ext.prebid.{debug,trace,integration}" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + verifyAll(bidderRequest) { + bidderRequest.ext.prebid.trace == bidRequest.ext.prebid.trace + bidderRequest.ext.prebid.debug == bidRequest.ext.prebid.debug + bidderRequest.ext.prebid.integration == bidRequest.ext.prebid.integration + } + } + + def "PBS shouldn't pass ext.prebid.events to bidder request when events specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + enableEvents() + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain events" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.events + } + + def "PBS shouldn't pass ext.prebid.noSale to bidder request when noSale specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.noSale = [PBSUtils.randomString] + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain noSale" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.noSale + } + + def "PBS should pass ext.prebid.amp to bidder request when amp specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.amp = new Amp(data: AmpRequest.getDefaultAmpRequest()) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain requested amp" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.amp == bidRequest.ext.prebid.amp + } + + def "PBS should pass passThrough object to ext.prebid.passThrough when passThrough is present"() { + given: "Default bid request with passThrough" + def bidRequest = BidRequest.defaultBidRequest.tap { + it.ext.prebid.passThrough = requestPassThrough + it.imp[0].ext.prebid.passThrough = impPassThrough + } + + when: "PBS processes auction request" + def response = defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Response should contain the same passThrough as on request" + assert response.seatbid.first().bid.first().ext.prebid.passThrough == impPassThrough + + and: "Response should contain in ext.prebid.passThrough" + assert response.ext.prebid.passThrough == requestPassThrough + + and: "Bidder request shouldn't contain the same passThrough as on request" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.passThrough + + where: + impPassThrough | requestPassThrough + [(PBSUtils.randomString): PBSUtils.randomString] | [(PBSUtils.randomString): PBSUtils.randomString] + null | [(PBSUtils.randomString): PBSUtils.randomString] + [(PBSUtils.randomString): PBSUtils.randomString] | null + } + + def "PBS auction should pass ext.prebid.sdk requested to bidder request when sdk specified"() { + given: "Default bid request with ext.prebid.sdk" + def renderers = [new Renderer().tap { + it.name = PBSUtils.randomString + it.version = PBSUtils.randomString + it.data = new RendererData(any: PBSUtils.randomString) + }] + def bidRequest = BidRequest.defaultBidRequest.tap { + it.ext.prebid.sdk = new Sdk(renderers: renderers) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain sdk value same in request" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + verifyAll(bidderRequest.ext.prebid.sdk.renderers) { + it.name == renderers.name + it.version == renderers.version + it.data.any == renderers.data.any + } + } + + def "PBS auction should pass ext.prebid.paaformat to bidder request when paaformat specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.paaFormat = PaaFormat.ORIGINAL + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain paaFormat value same in request" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.paaFormat == bidRequest.ext.prebid.paaFormat + } + + def "PBS auction shouldn't pass ext.prebid.kvps to bidder request when kvps specified"() { + given: "Default bid request with kvps" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.keyValuePairs = [(PBSUtils.randomString): PBSUtils.randomString] + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain keyValuePairs" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.keyValuePairs + } + + def "PBS auction should pass ext.prebid.alternatebiddercodes to bidder request when alternate bidder codes specified"() { + given: "Default bid request with alternateBidderCodes" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.alternateBidderCodes = new AlternateBidderCodes().tap { + it.enabled = true + it.bidders = [(GENERIC): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC]), + (RUBICON): new CodesBidderConfig(enabled: true, allowedBidderCodes: [RUBICON])] + } + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain ext.prebid.alternateBidderCodes" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.alternateBidderCodes.enabled == bidRequest.ext.prebid.alternateBidderCodes.enabled + assert bidderRequest.ext.prebid.alternateBidderCodes.bidders == [(GENERIC): new CodesBidderConfig(enabled: true)] + } + + def "PBS should pass user.ext to bidder request when user.ext specified"() { + given: "Default basic BidRequest with generic bidder" + def userExt = new UserExt().tap { + fcapids = [PBSUtils.randomString] + time = new UserTime(userdow: PBSUtils.randomNumber, userhour: PBSUtils.randomNumber) + prebid = new UserExtPrebid(buyeruids: [(GENERIC): PBSUtils.randomString]) + consentedProvidersSettings = new ConsentedProvidersSettings(consentedProviders: PBSUtils.randomString) + } + def bidRequest = BidRequest.defaultBidRequest.tap { + user = new User(ext: userExt) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain user.ext.prebid.buyeruids" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest?.user?.ext?.prebid?.buyeruids + + and: "Bidder request should contain user.ext.{fcapid,time,consentedProvidersSettings}" + verifyAll(bidderRequest.user.ext) { + it.fcapids == userExt.fcapids + it.time == userExt.time + it.consentedProvidersSettings == userExt.consentedProvidersSettings + } + } + + def "PBS should pass site.ext to bidder request when site.ext specified"() { + given: "Default basic BidRequest with generic bidder" + def bidRequest = BidRequest.defaultBidRequest.tap { + site.ext = new SiteExt(isAmp: PBSUtils.getRandomNumber(0, 1), data: new SiteExtData(id: PBSUtils.randomString)) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain site.ext.{amp,data}" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.site.ext.data == bidRequest.site.ext.data + assert bidderRequest.site.ext.isAmp == bidRequest.site.ext.isAmp + } + + def "PBS should pass device.ext to bidder request when device.ext specified"() { + given: "Default basic bid request with generic bidder" + def bidRequest = BidRequest.defaultBidRequest.tap { + device = new Device( + ext: new DeviceExt( + atts: DeviceExt.Atts.UNKNOWN, + cdep: PBSUtils.randomString, + prebid: new DevicePrebid(interstitial: new Interstitial( + minHeightPercentage: PBSUtils.getRandomNumber(0, 100), + minWidthPercentage: PBSUtils.getRandomNumber(0, 100))))) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain requested device.ext" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.device.ext == bidRequest.device.ext + } + + def "PBS should pass ext.prebid.auctionTimestamp to bidder request when auctionTimestamp specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.auctionTimestamp = PBSUtils.randomNumber + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain auctionTimestamp" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.auctionTimestamp + } + + def "PBS shouldn't pass ext.prebid.bidderConfig to bidder request when bidderConfig specified"() { + given: "Default bid request" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.bidderConfig = [new ExtPrebidBidderConfig(bidders: [GENERIC], config: + new BidderConfig(ortb2: new BidderConfigOrtb(site: Site.configFPDSite, user: User.configFPDUser)))] + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request shouldn't contain bidderConfig" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert !bidderRequest.ext.prebid.bidderConfig + } + + def "PBS shouldn't pass bidder param and bidders to the bidder when bidder param and bidder not related to the bidder call"() { + given: "Default bid request with populated ext.prebid.bidderParams" + def bidRequest = BidRequest.defaultBidRequest.tap { + ext.prebid.bidderParams = [(OPENX.value): PBSUtils.randomString] + ext.prebid.bidders = [(OPENX.value): PBSUtils.randomString] + } + + when: "PBS processes auction request" + def response = defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Response shouldn't contain error" + assert !response.ext?.errors + + and: "Generic bidder request shouldn't contain bidder param" + def bidderRequest = bidder.getBidderRequests(bidRequest.id) + assert bidderRequest.ext.prebid.bidderParams == [null] + assert bidderRequest.ext.prebid.bidders == [null] + } + + def "PBS should pass bidder app.ext to the bidder request when app ext specified"() { + def bidRequest = BidRequest.getDefaultBidRequest(APP).tap { + app.ext = new AppExt(data: new AppExtData(language: PBSUtils.randomString), + prebid: new AppPrebid(source: PBSUtils.randomString, version: PBSUtils.randomString)) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain app.ext" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.app.ext == bidRequest.app.ext + } + + def "PBS should pass dooh.ext to bidder request when dooh.ext specified"() { + given: "Default bid request with bidRequest.dooh" + def bidRequest = BidRequest.getDefaultBidRequest(DOOH).tap { + dooh = new Dooh(id: PBSUtils.randomString, ext: DoohExt.defaultDoohExt) + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain dooh.ext" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.dooh.ext == bidRequest.dooh.ext + } + + def "PBS should pass ext.prebid.multiBid only bidder related entity for each bidder"() { + given: "Default basic BidRequest with generic bidder with includeBidderKeys = false" + def bidRequest = BidRequest.defaultBidRequest + + and: "Set maxbids = 2 for generic and rubicon bidder" + def maxBids = 2 + def genericMultiBid = new MultiBid(bidder: GENERIC, maxBids: maxBids, targetBidderCodePrefix: PBSUtils.randomString) + def rubiconMultiBid = new MultiBid(bidder: RUBICON, maxBids: maxBids, targetBidderCodePrefix: PBSUtils.randomString) + bidRequest.ext.prebid.multibid = [genericMultiBid, rubiconMultiBid] + + and: "Default basic bid" + def bidResponse = BidResponse.getDefaultBidResponse(bidRequest) + + and: "Set bidder response" + bidder.setResponse(bidRequest.id, bidResponse) + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bid request should contain requested ext.prebid.multiBid" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.multibid == [genericMultiBid] + } + + def "PBS should pass ext.prebid.bidAdjustment only bidder related entry for each bidder"() { + given: "Default BidRequest with ext.prebid.bidAdjustments" + def currency = USD + def rule = new BidAdjustmentRule().tap { + generic = [(WILDCARD): [new AdjustmentRule(adjustmentType: MULTIPLIER, value: PBSUtils.randomPrice, currency: currency)]] + openx = [(WILDCARD): [new AdjustmentRule(adjustmentType: MULTIPLIER, value: PBSUtils.randomPrice, currency: currency)]] + } + def bidRequest = BidRequest.getDefaultBidRequest().tap { + ext.prebid.bidAdjustments = BidAdjustment.getDefaultWithSingleMediaTypeRule(BANNER, rule) + cur = [currency] + imp.first.bidFloor = PBSUtils.randomPrice + imp.first.bidFloorCur = currency + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain generic bid adjustments" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.bidAdjustments.version == bidRequest.ext.prebid.bidAdjustments.version + assert bidderRequest.ext.prebid.bidAdjustments.mediaType[BANNER].generic == rule.generic + + and: "Bidder request shouldn't contain openx bid adjustments" + assert !bidderRequest.ext.prebid.bidAdjustments.mediaType[BANNER].openx + } + + def "PBS should pass ext.prebid.bidAdjustmentFactors only bidder related entry for each bidder"() { + given: "Default bid request with bid adjustment" + def genericBidAdjustment = PBSUtils.randomDecimal + def bidRequest = BidRequest.getDefaultBidRequest(SITE).tap { + ext.prebid.bidAdjustmentFactors = new BidAdjustmentFactors().tap { + adjustments = [(GENERIC): genericBidAdjustment, (OPENX): PBSUtils.randomDecimal] + mediaTypes = [(BANNER): [(GENERIC): mediaTypeBidAdjustment], + (VIDEO) : [(OPENX): mediaTypeBidAdjustment]] + } + } + + when: "PBS processes auction request" + defaultPbsService.sendAuctionRequest(bidRequest) + + then: "Bidder request should contain generic bid adjustment factors" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.bidAdjustmentFactors.adjustments[GENERIC] == genericBidAdjustment + assert bidderRequest.ext.prebid.bidAdjustmentFactors.mediaTypes[BANNER][GENERIC] == mediaTypeBidAdjustment + + and: "Bidder request shouldn't contain opneX bid adjustment factors for generic call" + assert !bidderRequest?.ext?.prebid?.bidAdjustmentFactors?.adjustments[OPENX] + assert !bidderRequest?.ext?.prebid?.bidAdjustmentFactors?.mediaTypes[BANNER][OPENX] + assert !bidderRequest?.ext?.prebid?.bidAdjustmentFactors?.mediaTypes[VIDEO] + + where: + mediaTypeBidAdjustment << [0.9, 1.1] + } +} diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderInsensitiveCaseSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderInsensitiveCaseSpec.groovy index f2fb2803f1f..ef74c3a9a06 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderInsensitiveCaseSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderInsensitiveCaseSpec.groovy @@ -201,25 +201,6 @@ class BidderInsensitiveCaseSpec extends BaseSpec { assert response.seatbid?.first()?.bid?.last()?.ext?.prebid?.targeting } - def "PBS should populate bidder request buyeruid from buyeruids when buyeruids with appropriate bidder present in request"() { - given: "Bid request with buyeruids" - def buyeruid = PBSUtils.randomString - def bidRequest = BidRequest.defaultBidRequest.tap { - imp[0].ext.prebid.bidder.tap { - genericCamelCase = new Generic() - generic = null - } - user = new User(ext: new UserExt(prebid: new UserExtPrebid(buyeruids: [(GENERIC_CAMEL_CASE): buyeruid]))) - } - - when: "PBS processes auction request" - defaultPbsService.sendAuctionRequest(bidRequest) - - then: "Bidder request should contain buyeruid from the user.ext.prebid.buyeruids" - def bidderRequest = bidder.getBidderRequest(bidRequest.id) - assert bidderRequest?.user?.buyeruid == buyeruid - } - def "PBS should be able to match requested bidder with original bidder name in ext.prebid.aliase"() { given: "Default bid request with alias" def bidRequest = BidRequest.defaultBidRequest.tap { diff --git a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy index 4f841c484d7..d030fe173d2 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -269,9 +269,12 @@ class BidderParamsSpec extends BaseSpec { when: "PBS processes auction request" defaultPbsService.sendAuctionRequest(bidRequest) - then: "Response should contain zoneId value from imp[*].ext.prebid.bidder.BIDDER" + then: "Bidder request should contain zoneId value from imp[*].ext.prebid.bidder.BIDDER" def bidderRequest = bidder.getBidderRequest(bidRequest.id) assert bidderRequest.imp[0]?.ext?.bidder?.firstParam == firstParam + + and: "Bidder request should contain requested bidder param for related itself bidder" + assert bidderRequest.ext.prebid.bidderParams[GENERIC] == bidRequest.ext.prebid.bidderParams[GENERIC] } def "PBS should send bidder params from imp[*].ext.prebid.bidder.BIDDER when ext.prebid.bidderparams.BIDDER isn't specified"() { @@ -767,7 +770,7 @@ class BidderParamsSpec extends BaseSpec { when: "Requesting PBS auction" defaultPbsService.sendAuctionRequest(bidRequest) - then: "Response should contain imp[0].secure same value as in request" + then: "Bidder request should contain imp[0].secure same value as in request" def bidderRequest = bidder.getBidderRequest(bidRequest.id) assert bidderRequest.imp[0].secure == secureBidderRequest @@ -1409,8 +1412,9 @@ class BidderParamsSpec extends BaseSpec { and: "Response should contain repose millis with corresponding bidder" assert response.ext.responsetimemillis.containsKey(ALIAS.value) - and: "Bidder request should be valid" - assert bidder.getBidderRequests(bidRequest.id) + and: "Bidder request should be valid and not contain aliases" + def bidderRequests = bidder.getBidderRequests(bidRequest.id).first + assert !bidderRequests.ext.prebid.aliases } def "PBS should populate same code for adapter code when make call for generic hard code alias"() { diff --git a/src/test/groovy/org/prebid/server/functional/tests/CookieSyncSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/CookieSyncSpec.groovy index b3f6adf3e64..a08ca0e6c2d 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/CookieSyncSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/CookieSyncSpec.groovy @@ -55,41 +55,33 @@ import static org.prebid.server.functional.util.privacy.TcfConsent.RUBICON_VENDO class CookieSyncSpec extends BaseSpec { private static final UserSyncInfo.Type USER_SYNC_TYPE = REDIRECT - private static final boolean CORS_SUPPORT = false private static final String USER_SYNC_URL = "$networkServiceContainer.rootUri/generic-usersync" private static final String ALL_BIDDERS = "*" private static final Integer DEFAULT_PBS_BIDDERS_SIZE = 8 private static final Map GENERIC_CONFIG = [ "adapters.${GENERIC.value}.usersync.redirect.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.redirect.support-cors": CORS_SUPPORT as String, "adapters.${GENERIC.value}.meta-info.vendor-id" : GENERIC_VENDOR_ID as String] private static final Map ACEEX_CONFIG = [ "adapters.${ACEEX.value}.enabled" : "true", "adapters.${ACEEX.value}.usersync.cookie-family-name" : ACEEX.value, - "adapters.${ACEEX.value}.usersync.redirect.url" : "https://test.redirect.endpoint.com={redirect_url}", - "adapters.${ACEEX.value}.usersync.redirect.support-cors": CORS_SUPPORT as String] + "adapters.${ACEEX.value}.usersync.redirect.url" : "https://test.redirect.endpoint.com={redirect_url}"] private static final Map RUBICON_CONFIG = [ "adapters.${RUBICON.value}.enabled" : "true", "adapters.${RUBICON.value}.meta-info.vendor-id" : RUBICON_VENDOR_ID as String, "adapters.${RUBICON.value}.usersync.cookie-family-name" : RUBICON.value, "adapters.${RUBICON.value}.usersync.redirect.url" : "https://test.redirect.endpoint.com", - "adapters.${RUBICON.value}.usersync.redirect.support-cors": CORS_SUPPORT as String, - "adapters.${RUBICON.value}.usersync.iframe.url" : "https://test.iframe.endpoint.com&redir={redirect_url}", - "adapters.${RUBICON.value}.usersync.iframe.support-cors" : CORS_SUPPORT as String] + "adapters.${RUBICON.value}.usersync.iframe.url" : "https://test.iframe.endpoint.com&redir={redirect_url}"] private static final Map OPENX_CONFIG = [ "adapters.${OPENX.value}.enabled" : "true", "adapters.${OPENX.value}.usersync.cookie-family-name" : OPENX.value, "adapters.${OPENX.value}.usersync.redirect.url" : USER_SYNC_URL, - "adapters.${OPENX.value}.usersync.redirect.support-cors": CORS_SUPPORT as String, - "adapters.${OPENX.value}.usersync.iframe.url" : USER_SYNC_URL, - "adapters.${OPENX.value}.usersync.iframe.support-cors" : CORS_SUPPORT as String] + "adapters.${OPENX.value}.usersync.iframe.url" : USER_SYNC_URL] private static final Map APPNEXUS_CONFIG = [ "adapters.${APPNEXUS.value}.enabled" : "true", "adapters.${APPNEXUS.value}.aliases.mediafuse.enabled" : "false", "adapters.${APPNEXUS.value}.usersync.cookie-family-name" : APPNEXUS.value, - "adapters.${APPNEXUS.value}.usersync.redirect.url" : "https://test.appnexus.redirect.com/getuid?{redirect_url}", - "adapters.${APPNEXUS.value}.usersync.redirect.support-cors": CORS_SUPPORT as String] + "adapters.${APPNEXUS.value}.usersync.redirect.url" : "https://test.appnexus.redirect.com/getuid?{redirect_url}"] private static final Map AAX_CONFIG = ["adapters.${AAX.value}.enabled": "true"] private static final Map ACUITYADS_CONFIG = ["adapters.${ACUITYADS.value}.enabled": "true"] private static final Map ADKERNEL_CONFIG = [ @@ -356,7 +348,6 @@ class CookieSyncSpec extends BaseSpec { verifyAll(bidderStatus?.userSync) { it.url == USER_SYNC_URL it.type == REDIRECT - it.supportCORS == false } } @@ -551,7 +542,6 @@ class CookieSyncSpec extends BaseSpec { def bidderStatus = response.getBidderUserSync(GENERIC) assert bidderStatus?.userSync?.url?.startsWith(USER_SYNC_URL) assert bidderStatus?.userSync?.type == USER_SYNC_TYPE - assert bidderStatus?.userSync?.supportCORS == CORS_SUPPORT assert bidderStatus?.noCookie == true } @@ -592,7 +582,6 @@ class CookieSyncSpec extends BaseSpec { def bidderStatus = response.getBidderUserSync(GENERIC) assert bidderStatus?.userSync?.url?.startsWith(USER_SYNC_URL) assert bidderStatus?.userSync?.type == USER_SYNC_TYPE - assert bidderStatus?.userSync?.supportCORS == CORS_SUPPORT assert bidderStatus?.noCookie == true } @@ -643,7 +632,6 @@ class CookieSyncSpec extends BaseSpec { def configuredBidderStatus = response.getBidderUserSync(GENERIC) assert configuredBidderStatus?.userSync?.url?.startsWith(USER_SYNC_URL) assert configuredBidderStatus?.userSync?.type == USER_SYNC_TYPE - assert configuredBidderStatus?.userSync?.supportCORS == CORS_SUPPORT assert configuredBidderStatus?.noCookie == true } @@ -725,7 +713,6 @@ class CookieSyncSpec extends BaseSpec { verifyAll(validBidderUserSyncs) { it.url == [USER_SYNC_URL] it.type == [USER_SYNC_TYPE] - it.supportCORS == [CORS_SUPPORT] } and: "Response should contain duplicate bidder error" @@ -753,7 +740,6 @@ class CookieSyncSpec extends BaseSpec { response.bidderStatus.each { assert it.userSync?.url?.startsWith(USER_SYNC_URL) assert it.userSync?.type == USER_SYNC_TYPE - assert it.userSync?.supportCORS == CORS_SUPPORT assert it.noCookie == true } } @@ -1681,7 +1667,6 @@ class CookieSyncSpec extends BaseSpec { def bidderStatus = response?.bidderStatus?.userSync assert bidderStatus?.url assert bidderStatus?.type - assert bidderStatus?.supportCORS?.every(it -> it == CORS_SUPPORT) } def "PBS cookie sync request shouldn't return sync url when active uids cookie is present for bidder"() { diff --git a/src/test/groovy/org/prebid/server/functional/tests/DebugSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/DebugSpec.groovy index ea169ad00ee..cb21fc92675 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/DebugSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/DebugSpec.groovy @@ -362,7 +362,7 @@ class DebugSpec extends BaseSpec { assert !response.ext?.warnings } - def "PBS should return STORED_BID_RESPONSE call type when call from stored bid response "() { + def "PBS should return STORED_BID_RESPONSE call type when call from stored bid response"() { given: "Default basic BidRequest with stored response" def bidRequest = BidRequest.defaultBidRequest def storedResponseId = PBSUtils.randomNumber diff --git a/src/test/groovy/org/prebid/server/functional/tests/FilterMultiFormatSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/FilterMultiFormatSpec.groovy index 1d36b8beadc..1ab45de4bec 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/FilterMultiFormatSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/FilterMultiFormatSpec.groovy @@ -65,6 +65,9 @@ class FilterMultiFormatSpec extends BaseSpec { assert bidderRequest.imp[0].banner assert bidderRequest.imp[0].audio + and: "Bidder request shouldn't contain biddercontrol" + assert !bidderRequest.ext.prebid.bidderControls + where: bidderControls << [ new BidderControls(generic: new GenericPreferredBidder(preferredMediaType: BANNER)), @@ -117,6 +120,9 @@ class FilterMultiFormatSpec extends BaseSpec { assert bidderRequest.imp[0].banner assert !bidderRequest.imp[0].audio + and: "Bidder request shouldn't contain biddercontrol" + assert !bidderRequest.ext.prebid.bidderControls + where: bidderControls << [ new BidderControls(generic: new GenericPreferredBidder(preferredMediaType: BANNER)), @@ -144,6 +150,9 @@ class FilterMultiFormatSpec extends BaseSpec { assert bidderRequest.imp.banner assert bidderRequest.imp.audio + and: "Bidder request shouldn't contain biddercontrol" + assert !bidderRequest.ext.prebid.bidderControls + where: bidderControls << [ new BidderControls(generic: new GenericPreferredBidder(preferredMediaType: BANNER)), @@ -221,6 +230,9 @@ class FilterMultiFormatSpec extends BaseSpec { assert bidderRequest.imp[0].banner assert !bidderRequest.imp[0].audio + and: "Bidder request shouldn't contain biddercontrol" + assert !bidderRequest.ext.prebid.bidderControls + where: bidderControls << [ new BidderControls(generic: new GenericPreferredBidder(preferredMediaType: BANNER)), diff --git a/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy index b1ee2b8ef57..682bb2fef8b 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy @@ -194,7 +194,6 @@ class HttpSettingsSpec extends BaseSpec { given: "Pbs config with adapters.generic.usersync.redirect.*" def pbsConfig = PbsConfig.httpSettingsConfig + ["adapters.generic.usersync.redirect.url" : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - "adapters.generic.usersync.redirect.support-cors" : "false", "adapters.generic.usersync.redirect.format-override": "blank"] def prebidServerService = pbsServiceFactory.getService(pbsConfig) @@ -230,7 +229,6 @@ class HttpSettingsSpec extends BaseSpec { ['settings.http.endpoint': "${networkServiceContainer.rootUri}${HttpSettings.rfcEndpoint}".toString(), 'settings.http.rfc3986-compatible': 'true', 'adapters.generic.usersync.redirect.url' : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - 'adapters.generic.usersync.redirect.support-cors' : 'false', 'adapters.generic.usersync.redirect.format-override': 'blank'] def prebidServerService = pbsServiceFactory.getService(pbsConfig) diff --git a/src/test/groovy/org/prebid/server/functional/tests/MultibidSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/MultibidSpec.groovy index 233c863cbf6..e200f3562ed 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/MultibidSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/MultibidSpec.groovy @@ -39,6 +39,10 @@ class MultibidSpec extends BaseSpec { then: "PBS should not return targeting for non-winning bid" assert !response.seatbid?.first()?.bid?.last()?.ext?.prebid?.targeting + + and: "Bid request should contain requested ext.prebid.multiBid" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.multibid == [multiBid] } def "PBS should return seatbid[].bid[].ext.prebid.targeting for non-winning bid in multi-bid response when includeBidderKeys = true"() { @@ -66,6 +70,10 @@ class MultibidSpec extends BaseSpec { then: "PBS should return targeting for non-winning bid" assert response.seatbid?.first()?.bid?.last()?.ext?.prebid?.targeting + + and: "Bidder request should contain multibid" + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + assert bidderRequest.ext.prebid.multibid == [multiBid] } def "PBS should prefer bidRequest over account level config"() { diff --git a/src/test/groovy/org/prebid/server/functional/tests/ProfileSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/ProfileSpec.groovy index c6d600d518c..dd3b49efcc1 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/ProfileSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/ProfileSpec.groovy @@ -1299,7 +1299,8 @@ class ProfileSpec extends BaseSpec { assert metrics[MISSING_ACCOUNT_PROFILE_METRIC.formatted(accountId)] == 1 and: "Bidder request should contain data from profile" - verifyAll(bidder.getBidderRequest(bidRequest.id)) { + def bidderRequest = bidder.getBidderRequest(bidRequest.id) + verifyAll(bidderRequest) { it.site.id == bidRequest.site.id it.site.name == bidRequest.site.name it.site.domain == bidRequest.site.domain @@ -1319,6 +1320,9 @@ class ProfileSpec extends BaseSpec { it.device.macmd5 == bidRequest.device.macmd5 it.device.dpidmd5 == bidRequest.device.dpidmd5 } + + and: "Bidder request should contain ext.prebid.profile" + assert bidderRequest.ext.prebid.profileNames } def "PBS should emit error and metrics when imp profile missing"() { diff --git a/src/test/groovy/org/prebid/server/functional/tests/SchainSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/SchainSpec.groovy index db67f6ce397..9b0dce39aec 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/SchainSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/SchainSpec.groovy @@ -41,6 +41,9 @@ class SchainSpec extends BaseSpec { then: "Configured schain node should be appended to the end of the node array" def bidderRequest = bidder.getBidderRequest(bidRequest.id) assert bidderRequest.source?.schain?.nodes == supplyChain.nodes + GLOBAL_SUPPLY_SCHAIN_NODE + + and: "Bidder request shouldn't contain schains as requested" + assert !bidderRequest.ext.prebid.schains } def "PBS should copy ext.schain to source.ext.schain when source.ext.schain doesn't exist"() { diff --git a/src/test/groovy/org/prebid/server/functional/tests/SetUidSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/SetUidSpec.groovy index 27b69e74341..65a1a8650fc 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/SetUidSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/SetUidSpec.groovy @@ -38,7 +38,6 @@ class SetUidSpec extends BaseSpec { private static final Integer MAX_NUMBER_OF_UID_COOKIES = 30 private static final Integer UPDATED_EXPIRE_DAYS = 14 private static final UserSyncInfo.Type USER_SYNC_TYPE = REDIRECT - private static final boolean CORS_SUPPORT = false private static final Integer RANDOM_EXPIRE_DAY = PBSUtils.getRandomNumber(1, 10) private static final String USER_SYNC_URL = "$networkServiceContainer.rootUri/generic-usersync" private static final String GENERIC_COOKIE_FAMILY_NAME = GENERIC.value @@ -63,14 +62,12 @@ class SetUidSpec extends BaseSpec { "adapters.${GENERIC.value}.meta-info.vendor-id" : VENDOR_ID, "adapters.${GENERIC.value}.usersync.cookie-family-name" : GENERIC_COOKIE_FAMILY_NAME, "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.support-cors" : CORS_SUPPORT.toString(), "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.uid-macro" : "", "adapters.${GRID.value}.enabled" : "true", "adapters.${GRID.value}.meta-info.vendor-id" : VENDOR_ID, "adapters.${GRID.value}.usersync.cookie-family-name" : GENERIC_COOKIE_FAMILY_NAME, "adapters.${GRID.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GRID.value}.usersync.${USER_SYNC_TYPE.value}.support-cors" : CORS_SUPPORT.toString(), "adapters.${GRID.value}.usersync.${USER_SYNC_TYPE.value}.uid-macro" : "", "adapters.${GENERIC}.aliases.${ALIAS}.enabled" : "true", @@ -78,7 +75,6 @@ class SetUidSpec extends BaseSpec { "adapters.${GENERIC}.aliases.${ALIAS}.meta-info.vendor-id" : VENDOR_ID, "adapters.${GENERIC}.aliases.${ALIAS}.usersync.cookie-family-name" : GENERIC_COOKIE_FAMILY_NAME, "adapters.${GENERIC}.aliases.${ALIAS}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC}.aliases.${ALIAS}.usersync.${USER_SYNC_TYPE.value}.support-cors" : CORS_SUPPORT.toString(), "adapters.${GENERIC}.aliases.${ALIAS}.usersync.${USER_SYNC_TYPE.value}.uid-macro" : "", "adapters.${GENERIC}.aliases.${OPENX_ALIAS}.enabled" : "true", @@ -86,7 +82,6 @@ class SetUidSpec extends BaseSpec { "adapters.${GENERIC}.aliases.${OPENX_ALIAS}.meta-info.vendor-id" : VENDOR_ID, "adapters.${GENERIC}.aliases.${OPENX_ALIAS}.usersync.cookie-family-name" : GENERIC_COOKIE_FAMILY_NAME, "adapters.${GENERIC}.aliases.${OPENX_ALIAS}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC}.aliases.${OPENX_ALIAS}.usersync.${USER_SYNC_TYPE.value}.support-cors": CORS_SUPPORT.toString(), "adapters.${GENERIC}.aliases.${OPENX_ALIAS}.usersync.${USER_SYNC_TYPE.value}.uid-macro" : ""] @Shared diff --git a/src/test/groovy/org/prebid/server/functional/tests/TargetingSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/TargetingSpec.groovy index d9d337b3c27..008f4c6a721 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/TargetingSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/TargetingSpec.groovy @@ -382,6 +382,13 @@ class TargetingSpec extends BaseSpec { then: "Amp response shouldn't contain custom targeting" assert !response.targeting[customKey] + and: "Bidder request should contain ext.prebid.targeting" + def bidderRequest = bidder.getBidderRequest(ampStoredRequest.id) + assert bidderRequest.ext.prebid.targeting + + and: "Bidder request shouldn't contain ext.prebid.adservertargeting" + assert !bidderRequest.ext.prebid.adServerTargeting + where: customSource | customValue "bidrequest" | "imp" @@ -450,6 +457,10 @@ class TargetingSpec extends BaseSpec { .every(map -> map.keySet() .every(key -> key.length() <= targetingLength))) + and: "Bidder request should contain ext.prebid.adservertargeting" + def bidderRequest = bidder.getBidderRequests(bidRequest.id) + assert bidderRequest.ext.prebid.targeting + cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) } diff --git a/src/test/groovy/org/prebid/server/functional/tests/UserSyncSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/UserSyncSpec.groovy index e2ddc563616..fea96bea8f0 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/UserSyncSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/UserSyncSpec.groovy @@ -12,14 +12,12 @@ import static org.prebid.server.functional.testcontainers.Dependencies.networkSe class UserSyncSpec extends BaseSpec { - private static final Map GENERIC_USERSYNC_CONFIG = ["adapters.${GENERIC.value}.usersync.${IFRAME.value}.url" : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - "adapters.${GENERIC.value}.usersync.${IFRAME.value}.support-cors": "false"] + private static final Map GENERIC_USERSYNC_CONFIG = ["adapters.${GENERIC.value}.usersync.${IFRAME.value}.url" : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString()] def "PBS should return usersync url with '#formatParam' format parameter for #userSyncFormat when format-override absent"() { given: "Pbs config with usersync.#userSyncFormat" def prebidServerService = pbsServiceFactory.getService( - ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - "adapters.generic.usersync.${userSyncFormat.value}.support-cors": "false"]) + ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString()]) and: "Default CookieSyncRequest" def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest @@ -42,7 +40,6 @@ class UserSyncSpec extends BaseSpec { given: "Pbs config with usersync.#userSyncFormat and iframe.format-override: #formatOverride" def prebidServerService = pbsServiceFactory.getService( ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - "adapters.generic.usersync.${userSyncFormat.value}.support-cors" : "false", "adapters.generic.usersync.${userSyncFormat.value}.format-override": formatOverride.value]) and: "Default CookieSyncRequest" @@ -68,7 +65,6 @@ class UserSyncSpec extends BaseSpec { given: "Pbs config with usersync.#userSyncFormat.url" def prebidServerService = pbsServiceFactory.getService( ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - "adapters.generic.usersync.${userSyncFormat.value}.support-cors": "false", "adapters.generic.usersync.${userSyncFormat.value}.uid-macro" : null]) and: "Default CookieSyncRequest" diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/RuleEngineBaseSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/RuleEngineBaseSpec.groovy index bfc73c8de37..d77288da086 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/RuleEngineBaseSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/RuleEngineBaseSpec.groovy @@ -89,7 +89,6 @@ abstract class RuleEngineBaseSpec extends ModuleBaseSpec { private static final String USER_SYNC_URL = "$networkServiceContainer.rootUri/generic-usersync" private static final Map GENERIC_CONFIG = [ "adapters.${GENERIC.value}.usersync.redirect.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.redirect.support-cors": false as String, "adapters.${GENERIC.value}.meta-info.vendor-id" : GENERIC_VENDOR_ID as String] protected static final PrebidServerService pbsServiceWithRulesEngineModule = pbsServiceFactory.getService(GENERIC_CONFIG + getRulesEngineSettings() + AMX_CONFIG + OPENX_CONFIG + OPENX_ALIAS_CONFIG + ['datacenter-region': CONFIG_DATA_CENTER] + diff --git a/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsRulesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsRulesSpec.groovy index 29d23897ed4..bd892ca8746 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsRulesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsRulesSpec.groovy @@ -4,7 +4,7 @@ import org.prebid.server.functional.model.ChannelType import org.prebid.server.functional.model.bidder.Generic import org.prebid.server.functional.model.bidder.Openx import org.prebid.server.functional.model.config.AlternateBidderCodes -import org.prebid.server.functional.model.config.BidderConfig +import org.prebid.server.functional.model.config.CodesBidderConfig import org.prebid.server.functional.model.db.StoredImp import org.prebid.server.functional.model.pricefloors.Country import org.prebid.server.functional.model.pricefloors.FloorModelGroup @@ -12,6 +12,7 @@ import org.prebid.server.functional.model.pricefloors.MediaType import org.prebid.server.functional.model.pricefloors.PriceFloorData import org.prebid.server.functional.model.pricefloors.PriceFloorSchema import org.prebid.server.functional.model.pricefloors.Rule +import org.prebid.server.functional.model.request.Channel import org.prebid.server.functional.model.request.auction.Amx import org.prebid.server.functional.model.request.auction.Banner import org.prebid.server.functional.model.request.auction.BidRequest @@ -60,7 +61,6 @@ import static org.prebid.server.functional.model.request.auction.DistributionCha import static org.prebid.server.functional.model.request.auction.DistributionChannel.SITE import static org.prebid.server.functional.model.request.auction.FetchStatus.ERROR import static org.prebid.server.functional.model.request.auction.Location.NO_DATA -import static org.prebid.server.functional.model.request.auction.Prebid.Channel import static org.prebid.server.functional.model.response.auction.BidRejectionReason.RESPONSE_REJECTED_DUE_TO_PRICE_FLOOR import static org.prebid.server.functional.testcontainers.Dependencies.getNetworkServiceContainer @@ -1178,7 +1178,7 @@ class PriceFloorsRulesSpec extends PriceFloorsBaseSpec { returnAllBidStatus = true alternateBidderCodes = new AlternateBidderCodes( enabled: true, - bidders: [(AMX): new BidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) + bidders: [(AMX): new CodesBidderConfig(enabled: true, allowedBidderCodes: [GENERIC])]) } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy index 55fd210806f..19f9798a9e8 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/PrivacyBaseSpec.groovy @@ -86,7 +86,6 @@ abstract class PrivacyBaseSpec extends BaseSpec { private static final int GEO_PRECISION = 2 protected static final Map GENERIC_CONFIG = ["adapters.${GENERIC.value}.usersync.${REDIRECT.value}.url" : "$networkServiceContainer.rootUri/generic-usersync".toString(), - "adapters.${GENERIC.value}.usersync.${REDIRECT.value}.support-cors": false.toString(), "adapters.${GENERIC.value}.ortb-version" : "2.6"] private static final Map OPENX_CONFIG = ["adaptrs.${OPENX.value}.enabled" : "true", "adapters.${OPENX.value}.usersync.cookie-family-name": OPENX.value, diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/ccpa/CcpaAuctionSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/ccpa/CcpaAuctionSpec.groovy index 719688ea015..fde801a3529 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/ccpa/CcpaAuctionSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/ccpa/CcpaAuctionSpec.groovy @@ -2,6 +2,7 @@ package org.prebid.server.functional.tests.privacy.ccpa import org.prebid.server.functional.model.ChannelType import org.prebid.server.functional.model.config.AccountCcpaConfig +import org.prebid.server.functional.model.request.Channel import org.prebid.server.functional.model.request.auction.DistributionChannel import org.prebid.server.functional.tests.privacy.PrivacyBaseSpec import org.prebid.server.functional.util.privacy.BogusConsent @@ -17,7 +18,6 @@ import static org.prebid.server.functional.model.privacy.Metric.TEMPLATE_REQUEST import static org.prebid.server.functional.model.request.auction.ActivityType.TRANSMIT_EIDS import static org.prebid.server.functional.model.request.auction.ActivityType.TRANSMIT_PRECISE_GEO import static org.prebid.server.functional.model.request.auction.ActivityType.TRANSMIT_UFPD -import static org.prebid.server.functional.model.request.auction.Prebid.Channel import static org.prebid.server.functional.model.request.auction.TraceLevel.BASIC import static org.prebid.server.functional.model.request.auction.TraceLevel.VERBOSE import static org.prebid.server.functional.util.privacy.CcpaConsent.Signal.ENFORCED diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAuctionSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAuctionSpec.groovy index d90bf8da9ac..21abcb59c6b 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAuctionSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAuctionSpec.groovy @@ -8,6 +8,7 @@ import org.prebid.server.functional.model.config.AccountMetricsVerbosityLevel import org.prebid.server.functional.model.config.PurposeConfig import org.prebid.server.functional.model.config.PurposeEnforcement import org.prebid.server.functional.model.pricefloors.Country +import org.prebid.server.functional.model.request.Channel import org.prebid.server.functional.model.request.auction.DistributionChannel import org.prebid.server.functional.model.request.auction.Regs import org.prebid.server.functional.model.request.auction.RegsExt @@ -41,7 +42,6 @@ import static org.prebid.server.functional.model.request.auction.ActivityType.FE import static org.prebid.server.functional.model.request.auction.ActivityType.TRANSMIT_EIDS import static org.prebid.server.functional.model.request.auction.ActivityType.TRANSMIT_PRECISE_GEO import static org.prebid.server.functional.model.request.auction.ActivityType.TRANSMIT_UFPD -import static org.prebid.server.functional.model.request.auction.Prebid.Channel import static org.prebid.server.functional.model.request.auction.PublicCountryIp.BGR_IP import static org.prebid.server.functional.model.request.auction.TraceLevel.BASIC import static org.prebid.server.functional.model.request.auction.TraceLevel.VERBOSE diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprSetUidSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprSetUidSpec.groovy index 65950dfdde1..21e67d65062 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprSetUidSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprSetUidSpec.groovy @@ -30,13 +30,11 @@ import static org.prebid.server.functional.util.privacy.TcfConsent.PurposeId.DEV class GdprSetUidSpec extends PrivacyBaseSpec { - private static final boolean CORS_SUPPORT = false private static final String USER_SYNC_URL = "$Dependencies.networkServiceContainer.rootUri/generic-usersync" private static final UserSyncInfo.Type USER_SYNC_TYPE = REDIRECT private static final Map VENDOR_GENERIC_PBS_CONFIG = GENERIC_VENDOR_CONFIG + ["gdpr.purposes.p1.enforce-purpose" : NO.value, - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.support-cors": CORS_SUPPORT.toString()] + "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL] private static final String TCF_ERROR_MESSAGE = "The gdpr_consent param prevents cookies from being saved" private static final int UNAVAILABLE_FOR_LEGAL_REASONS_CODE = 451 diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppCookieSyncSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppCookieSyncSpec.groovy index 284ea4670ba..46369e28503 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppCookieSyncSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppCookieSyncSpec.groovy @@ -36,21 +36,18 @@ import static org.prebid.server.functional.util.privacy.TcfConsent.PurposeId.DEV class GppCookieSyncSpec extends BaseSpec { private static final UserSyncInfo.Type USER_SYNC_TYPE = REDIRECT - private static final boolean CORS_SUPPORT = false private static final String USER_SYNC_URL = "$Dependencies.networkServiceContainer.rootUri/generic-usersync" private static final GppSectionId FIRST_GPP_SECTION = PBSUtils.getRandomEnum(GppSectionId.class) private static final GppSectionId SECOND_GPP_SECTION = PBSUtils.getRandomEnum(GppSectionId.class, [FIRST_GPP_SECTION]) private static final Map GENERIC_CONFIG = [ "adapters.${GENERIC.value}.meta-info.vendor-id" : GENERIC_VENDOR_ID as String, - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.support-cors": CORS_SUPPORT.toString()] + "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL] private static final Map GENERIC_WITH_SKIP_CONFIG = [ "adapters.${GENERIC.value}.meta-info.vendor-id" : GENERIC_VENDOR_ID as String, "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : "$Dependencies.networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), "adapters.${GENERIC.value}.usersync.skipwhen.gdpr" : 'true', - "adapters.${GENERIC.value}.usersync.skipwhen.gpp_sid" : "${FIRST_GPP_SECTION.value}, ${SECOND_GPP_SECTION.value}".toString(), - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.support-cors": CORS_SUPPORT.toString()] + "adapters.${GENERIC.value}.usersync.skipwhen.gpp_sid" : "${FIRST_GPP_SECTION.value}, ${SECOND_GPP_SECTION.value}".toString()] private static PrebidServerService prebidServerService = pbsServiceFactory.getService(GENERIC_CONFIG) private static PrebidServerService prebidServerServiceWithSkipConfig = pbsServiceFactory.getService(GENERIC_WITH_SKIP_CONFIG + GENERIC_ALIAS_CONFIG) @@ -100,7 +97,6 @@ class GppCookieSyncSpec extends BaseSpec { assert bidderStatus?.noCookie == true assert bidderStatus?.userSync?.url?.startsWith(USER_SYNC_URL) assert bidderStatus?.userSync?.type == USER_SYNC_TYPE - assert bidderStatus?.userSync?.supportCORS == CORS_SUPPORT } def "PBS cookie sync request should respond with a warning when gpp_sid contains 2 and gdpr is 0"() { @@ -123,7 +119,6 @@ class GppCookieSyncSpec extends BaseSpec { assert bidderStatus?.noCookie == true assert bidderStatus?.userSync?.url?.startsWith(USER_SYNC_URL) assert bidderStatus?.userSync?.type == USER_SYNC_TYPE - assert bidderStatus?.userSync?.supportCORS == CORS_SUPPORT } def "PBS cookie sync request should respond with a warning when gpp_sid doesn't contain 2 and gdpr is 1"() { @@ -168,7 +163,6 @@ class GppCookieSyncSpec extends BaseSpec { assert bidderStatus?.noCookie == true assert bidderStatus?.userSync?.url?.startsWith(USER_SYNC_URL) assert bidderStatus?.userSync?.type == USER_SYNC_TYPE - assert bidderStatus?.userSync?.supportCORS == CORS_SUPPORT } def "PBS cookie sync request should respond with an error when gpp_sid is invalid"() { @@ -233,8 +227,7 @@ class GppCookieSyncSpec extends BaseSpec { def "PBS should return empty gpp and gppSid in usersync url when gpp and gppSid is not present in request"() { given: "Pbs config with usersync.#userSyncFormat.url" - def pbsConfig = ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$Dependencies.networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - "adapters.generic.usersync.${userSyncFormat.value}.support-cors": "false"] + def pbsConfig = ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$Dependencies.networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString()] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Default CookieSyncRequest without gpp and gppSid" @@ -260,8 +253,7 @@ class GppCookieSyncSpec extends BaseSpec { def "PBS should populate gpp and gppSid in usersync url when gpp and gppSid is present in request"() { given: "Pbs config with usersync.#userSyncFormat.url" - def pbsConfig = ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$Dependencies.networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), - "adapters.generic.usersync.${userSyncFormat.value}.support-cors": "false"] + def pbsConfig = ["adapters.generic.usersync.${userSyncFormat.value}.url" : "$Dependencies.networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString()] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Default CookieSyncRequest with gpp and gppSid" @@ -415,8 +407,7 @@ class GppCookieSyncSpec extends BaseSpec { def pbsConfig = [ "adapters.${GENERIC.value}.meta-info.vendor-id" : GENERIC_VENDOR_ID as String, "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.url" : USER_SYNC_URL, - "adapters.${GENERIC.value}.usersync.skipwhen.gdpr" : 'false', - "adapters.${GENERIC.value}.usersync.${USER_SYNC_TYPE.value}.support-cors": CORS_SUPPORT.toString()] + "adapters.${GENERIC.value}.usersync.skipwhen.gdpr" : 'false'] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Default CookieSyncRequest with gdpr config" diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppTransmitTidActivitiesSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppTransmitTidActivitiesSpec.groovy index fd02a755fe1..f91df7acd50 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppTransmitTidActivitiesSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/gpp/GppTransmitTidActivitiesSpec.groovy @@ -88,7 +88,6 @@ class GppTransmitTidActivitiesSpec extends PrivacyBaseSpec { then: "Bidder request should generate (source/imp.ext).tid" def bidderRequest = bidder.getBidderRequest(bidRequest.id) - verifyAll { bidderRequest.imp[0].ext.tid bidderRequest.source.tid diff --git a/src/test/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleanerTest.java b/src/test/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleanerTest.java index 62e50c146bf..9178872df69 100644 --- a/src/test/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleanerTest.java +++ b/src/test/java/org/prebid/server/auction/bidderrequestpostprocessor/BidderRequestCleanerTest.java @@ -9,8 +9,22 @@ import org.prebid.server.VertxTest; import org.prebid.server.auction.model.BidderRequest; import org.prebid.server.proto.openrtb.ext.request.ExtRequest; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestBidAdjustmentFactors; import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebid; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidAdservertargetingRule; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidAlternateBidderCodes; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidAlternateBidderCodesBidder; +import org.prebid.server.proto.openrtb.ext.request.ExtRequestPrebidCache; +import org.prebid.server.proto.openrtb.ext.request.ImpMediaType; +import java.math.BigDecimal; +import java.util.EnumMap; +import java.util.Map; +import java.util.function.UnaryOperator; + +import static java.util.Collections.singleton; +import static java.util.Collections.singletonList; +import static java.util.function.UnaryOperator.identity; import static org.assertj.core.api.Assertions.assertThat; @ExtendWith(MockitoExtension.class) @@ -28,7 +42,7 @@ public void setUp() { @Test public void processShouldReturnSameRequest() { // given - final BidderRequest bidderRequest = givenBidderRequest(null); + final BidderRequest bidderRequest = givenBidderRequest(identity()); // when final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); @@ -39,9 +53,247 @@ public void processShouldReturnSameRequest() { } @Test - public void processShouldReturnCleanedRequest() { + public void processShouldCleanBidAdjustmentFactors() { + // given + final EnumMap> mediaTypes = new EnumMap<>(ImpMediaType.class); + mediaTypes.put(ImpMediaType.banner, Map.of("other", BigDecimal.ONE)); + mediaTypes.put(ImpMediaType.video, Map.of( + "other", BigDecimal.ONE, + "biddEr", BigDecimal.ONE)); + final ExtRequestBidAdjustmentFactors factors = ExtRequestBidAdjustmentFactors.builder() + .mediatypes(mediaTypes) + .build(); + factors.addFactor("other", BigDecimal.ONE); + factors.addFactor("bIdder", BigDecimal.ONE); + + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.bidadjustmentfactors(factors)); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getBidadjustmentfactors) + .satisfies(factorsResult -> { + assertThat(factorsResult.getAdjustments()).containsExactly(Map.entry("bIdder", BigDecimal.ONE)); + assertThat(factorsResult.getMediatypes()).containsExactly( + Map.entry(ImpMediaType.video, Map.of("biddEr", BigDecimal.ONE))); + }); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveBidAdjustmentFactors() { + // given + final EnumMap> mediaTypes = new EnumMap<>(ImpMediaType.class); + mediaTypes.put(ImpMediaType.banner, Map.of("other", BigDecimal.ONE)); + final ExtRequestBidAdjustmentFactors factors = ExtRequestBidAdjustmentFactors.builder() + .mediatypes(mediaTypes) + .build(); + factors.addFactor("other", BigDecimal.ONE); + + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.bidadjustmentfactors(factors)); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getBidadjustmentfactors) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldCleanBidAdjustments() { + // given + final ObjectNode bidAdjustments = mapper.valueToTree(Map.of( + "mediatype", Map.of( + "banner", Map.of("other", 1), + "video", Map.of("other", 1, "biddEr", 1)))); + + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.bidadjustments(bidAdjustments)); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getBidadjustments) + .isEqualTo(mapper.valueToTree(Map.of("mediatype", Map.of("video", Map.of("biddEr", 1))))); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveBidAdjustments() { + // given + final ObjectNode bidAdjustments = mapper.valueToTree(Map.of( + "mediatype", Map.of("banner", Map.of("other", 1)))); + + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.bidadjustments(bidAdjustments)); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getBidadjustments) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldCleanAlternateBidderCodes() { + // given + final ExtRequestPrebidAlternateBidderCodes codes = ExtRequestPrebidAlternateBidderCodes.of( + true, Map.of( + "other", ExtRequestPrebidAlternateBidderCodesBidder.of(true, singleton("otherV")), + "biddEr", ExtRequestPrebidAlternateBidderCodesBidder.of(true, singleton("bidderV")))); + + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.alternateBidderCodes(codes)); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getAlternateBidderCodes) + .isEqualTo(ExtRequestPrebidAlternateBidderCodes.of(true, Map.of( + "biddEr", ExtRequestPrebidAlternateBidderCodesBidder.of(true, singleton("bidderV"))))); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveReturnAllBidStatus() { + // given + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.returnallbidstatus(true)); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getReturnallbidstatus) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveAliasGvlIds() { + // given + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.aliasgvlids(Map.of("a", 1))); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getAliasgvlids) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveAdServerTargeting() { + // given + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.adservertargeting( + singletonList(ExtRequestPrebidAdservertargetingRule.of(null, null, null)))); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getAdservertargeting) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveCache() { + // given + final BidderRequest bidderRequest = givenBidderRequest( + extPrebid -> extPrebid.cache(ExtRequestPrebidCache.EMPTY)); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getCache) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveEvents() { + // given + final BidderRequest bidderRequest = givenBidderRequest( + extPrebid -> extPrebid.events(mapper.createObjectNode())); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getEvents) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveNoSale() { + // given + final BidderRequest bidderRequest = givenBidderRequest(extPrebid -> extPrebid.nosale(singletonList("s"))); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getNosale) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveBidderControls() { // given - final BidderRequest bidderRequest = givenBidderRequest(mapper.createObjectNode()); + final BidderRequest bidderRequest = givenBidderRequest( + extPrebid -> extPrebid.biddercontrols(mapper.createObjectNode())); // when final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); @@ -56,12 +308,69 @@ public void processShouldReturnCleanedRequest() { assertThat(result.getErrors()).isEmpty(); } - private static BidderRequest givenBidderRequest(ObjectNode bidderControls) { + @Test + public void processShouldRemoveAnalytics() { + // given + final BidderRequest bidderRequest = givenBidderRequest( + extPrebid -> extPrebid.analytics(mapper.createObjectNode())); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getAnalytics) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemovePassthrough() { + // given + final BidderRequest bidderRequest = givenBidderRequest( + extPrebid -> extPrebid.passthrough(mapper.createObjectNode())); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getPassthrough) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + @Test + public void processShouldRemoveKvps() { + // given + final BidderRequest bidderRequest = givenBidderRequest( + extPrebid -> extPrebid.kvps(mapper.createObjectNode())); + + // when + final BidderRequestPostProcessingResult result = target.process(bidderRequest, null, null).result(); + + // then + assertThat(result.getValue()) + .extracting(BidderRequest::getBidRequest) + .extracting(BidRequest::getExt) + .extracting(ExtRequest::getPrebid) + .extracting(ExtRequestPrebid::getKvps) + .isNull(); + assertThat(result.getErrors()).isEmpty(); + } + + private static BidderRequest givenBidderRequest( + UnaryOperator extPrebidCustomizer) { + return BidderRequest.builder() .bidRequest(BidRequest.builder() - .ext(ExtRequest.of(ExtRequestPrebid.builder() - .biddercontrols(bidderControls) - .build())) + .ext(ExtRequest.of(extPrebidCustomizer.apply(ExtRequestPrebid.builder()).build())) .build()) .bidder(BIDDER) .build(); diff --git a/src/test/java/org/prebid/server/bidder/UsersyncInfoFactoryTest.java b/src/test/java/org/prebid/server/bidder/UsersyncInfoFactoryTest.java index 446c8db449a..a8de186bb19 100644 --- a/src/test/java/org/prebid/server/bidder/UsersyncInfoFactoryTest.java +++ b/src/test/java/org/prebid/server/bidder/UsersyncInfoFactoryTest.java @@ -285,18 +285,6 @@ public void buildShouldReturnTypeFromUsersyncMethod() { assertThat(result.getType()).isEqualTo(UsersyncMethodType.IFRAME); } - @Test - public void buildShouldReturnIsSupportCORSFromUsersyncMethod() { - // given - final UsersyncMethod method = givenUsersyncMethod(builder -> builder.supportCORS(true)); - - // when - final UsersyncInfo result = target.build(BIDDER, null, method, givenEmptyPrivacy()); - - // then - assertThat(result.getSupportCORS()).isTrue(); - } - @Test public void buildShouldUseFormatOverrideOverTypeFormat() { // given @@ -338,7 +326,6 @@ public void buildShouldReturnCorrectFullUrlIfHostCookieUidIsNull() { &gpp={gpp}\ &gpp_sid={gpp_sid}""")) .uidMacro("$UID-MACRO") - .supportCORS(true) .formatOverride(UsersyncFormat.PIXEL) .build(); final Privacy privacy = Privacy.builder() @@ -353,7 +340,6 @@ public void buildShouldReturnCorrectFullUrlIfHostCookieUidIsNull() { final UsersyncInfo result = target.build("sync-bidder test", null, method, privacy); // then - assertThat(result.getSupportCORS()).isTrue(); assertThat(result.getType()).isEqualTo(UsersyncMethodType.IFRAME); assertThat(result.getUrl()).isEqualTo(""" https://usersync-url\ @@ -381,7 +367,6 @@ public void buildShouldReturnCorrectFullUrlIfHostCookieUidIsNotNull() { .type(UsersyncMethodType.IFRAME) .usersyncUrl(Uri.of("https://ignored.example/should-not-appear")) .uidMacro("$IGNORED") - .supportCORS(true) .formatOverride(UsersyncFormat.PIXEL) .build(); final Privacy privacy = Privacy.builder() @@ -396,7 +381,6 @@ public void buildShouldReturnCorrectFullUrlIfHostCookieUidIsNotNull() { final UsersyncInfo result = target.build("sync-bidder test", "host-uid value", method, privacy); // then - assertThat(result.getSupportCORS()).isTrue(); assertThat(result.getType()).isEqualTo(UsersyncMethodType.IFRAME); assertThat(result.getUrl()).isEqualTo(""" https://localhost:8080/setuid?\ diff --git a/src/test/java/org/prebid/server/bidder/UsersyncMethodChooserTest.java b/src/test/java/org/prebid/server/bidder/UsersyncMethodChooserTest.java index 1f16493d6ba..715048f944a 100644 --- a/src/test/java/org/prebid/server/bidder/UsersyncMethodChooserTest.java +++ b/src/test/java/org/prebid/server/bidder/UsersyncMethodChooserTest.java @@ -365,7 +365,6 @@ private UsersyncMethod iframeMethod(String url) { return UsersyncMethod.builder() .type(UsersyncMethodType.IFRAME) .usersyncUrl(Uri.of(url)) - .supportCORS(false) .build(); } @@ -373,7 +372,6 @@ private UsersyncMethod redirectMethod(String url) { return UsersyncMethod.builder() .type(UsersyncMethodType.REDIRECT) .usersyncUrl(Uri.of(url)) - .supportCORS(false) .build(); } } diff --git a/src/test/java/org/prebid/server/bidder/dxkulture/DxKultureBidderTest.java b/src/test/java/org/prebid/server/bidder/dxkulture/DxKultureBidderTest.java deleted file mode 100644 index 15e4f869c36..00000000000 --- a/src/test/java/org/prebid/server/bidder/dxkulture/DxKultureBidderTest.java +++ /dev/null @@ -1,281 +0,0 @@ -package org.prebid.server.bidder.dxkulture; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.iab.openrtb.request.Banner; -import com.iab.openrtb.request.BidRequest; -import com.iab.openrtb.request.Device; -import com.iab.openrtb.request.Imp; -import com.iab.openrtb.request.Site; -import com.iab.openrtb.request.Video; -import com.iab.openrtb.response.Bid; -import com.iab.openrtb.response.BidResponse; -import com.iab.openrtb.response.SeatBid; -import io.netty.handler.codec.http.HttpHeaderValues; -import io.vertx.core.MultiMap; -import org.junit.jupiter.api.Test; -import org.prebid.server.VertxTest; -import org.prebid.server.bidder.model.BidderBid; -import org.prebid.server.bidder.model.BidderCall; -import org.prebid.server.bidder.model.BidderError; -import org.prebid.server.bidder.model.HttpRequest; -import org.prebid.server.bidder.model.HttpResponse; -import org.prebid.server.bidder.model.Result; -import org.prebid.server.proto.openrtb.ext.ExtPrebid; -import org.prebid.server.proto.openrtb.ext.request.dxkulture.ExtImpDxKulture; -import org.prebid.server.util.HttpUtil; - -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -import static java.util.Collections.singletonList; -import static java.util.function.Function.identity; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; -import static org.assertj.core.api.Assertions.tuple; -import static org.prebid.server.proto.openrtb.ext.response.BidType.banner; -import static org.prebid.server.proto.openrtb.ext.response.BidType.video; - -public class DxKultureBidderTest extends VertxTest { - - public static final String ENDPOINT_URL = "https://test.endpoint.com"; - - private final DxKultureBidder target = new DxKultureBidder(ENDPOINT_URL, jacksonMapper); - - @Test - public void creationShouldFailOnInvalidEndpointUrl() { - assertThatIllegalArgumentException().isThrownBy(() -> new DxKultureBidder("invalid_url", jacksonMapper)); - } - - @Test - public void makeHttpRequestsShouldReturnErrorIfImpExtCouldNotBeParsed() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(Imp.builder() - .ext(mapper.valueToTree(ExtPrebid.of(null, mapper.createArrayNode()))) - .build())) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).hasSize(1); - assertThat(result.getErrors().getFirst().getMessage()).startsWith("Cannot deserialize value"); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeHttpRequestsShouldReturnExpectedBidRequest() { - // given - final BidRequest bidRequest = givenBidRequest(identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).hasSize(1) - .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) - .containsOnly(bidRequest); - } - - @Test - public void makeHttpRequestsShouldCreateCorrectUrl() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(Imp.builder() - .id("123") - .banner(Banner.builder().build()) - .video(Video.builder().build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpDxKulture.of("testPublisherId", "testPlacementId")))) - .build())) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).hasSize(1); - assertThat(result.getValue()) - .extracting(HttpRequest::getUri) - .containsExactly("https://test.endpoint.com?publisher_id=testPublisherId&placement_id=testPlacementId"); - } - - @Test - public void makeHttpRequestsShouldCorrectlyAddHeaders() { - // given - final BidRequest bidRequest = givenBidRequest(identity(), - bidRequestBuilder -> bidRequestBuilder - .device(Device.builder() - .ua("testUa") - .ip("testIp") - .ipv6("testIpV6").build()) - .site(Site.builder() - .ref("testRef") - .domain("testDomain").build()) - ); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .extracting(HttpRequest::getHeaders) - .flatExtracting(MultiMap::entries) - .extracting(Map.Entry::getKey, Map.Entry::getValue) - .containsExactlyInAnyOrder( - tuple(HttpUtil.CONTENT_TYPE_HEADER.toString(), HttpUtil.APPLICATION_JSON_CONTENT_TYPE), - tuple(HttpUtil.ACCEPT_HEADER.toString(), HttpHeaderValues.APPLICATION_JSON.toString()), - tuple(HttpUtil.REFERER_HEADER.toString(), "testRef"), - tuple(HttpUtil.ORIGIN_HEADER.toString(), "testDomain"), - tuple(HttpUtil.USER_AGENT_HEADER.toString(), "testUa"), - tuple(HttpUtil.X_FORWARDED_FOR_HEADER.toString(), "testIp"), - tuple(HttpUtil.X_FORWARDED_FOR_HEADER.toString(), "testIpV6"), - tuple(HttpUtil.X_OPENRTB_VERSION_HEADER.toString(), "2.5")); - } - - @Test - public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { - // given - final BidderCall httpCall = givenHttpCall(null, "invalid"); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getErrors()).hasSize(1); - assertThat(result.getErrors().getFirst().getMessage()).startsWith("Failed to decode: Unrecognized token"); - assertThat(result.getErrors().getFirst().getType()).isEqualTo(BidderError.Type.bad_server_response); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnEmptyListIfBidResponseIsNull() throws JsonProcessingException { - // given - final BidderCall httpCall = givenHttpCall(null, mapper.writeValueAsString(null)); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws JsonProcessingException { - // given - final BidderCall httpCall = givenHttpCall(null, - mapper.writeValueAsString(BidResponse.builder().build())); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnBannerBidIfMTypeIsOne() throws JsonProcessingException { - // given - final BidderCall httpCall = givenHttpCall( - BidRequest.builder().imp(singletonList(Imp.builder().id("123").build())).build(), - mapper.writeValueAsString(givenBidResponse(Bid.builder().mtype(1).build()))); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).containsOnly(BidderBid.of(Bid.builder().mtype(1).build(), banner, "USD")); - } - - @Test - public void makeBidsShouldReturnVideoBidIfMTypeIsTwo() throws JsonProcessingException { - // given - final BidderCall httpCall = givenHttpCall( - BidRequest.builder().imp(singletonList(Imp.builder().id("123").build())).build(), - mapper.writeValueAsString(givenBidResponse(Bid.builder().mtype(2).build()))); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).containsOnly(BidderBid.of(Bid.builder().mtype(2).build(), video, "USD")); - } - - @Test - public void makeBidsShouldReturnErrorsForBidsThatDoesNotContainMType() throws JsonProcessingException { - // given - final BidderCall httpCall = givenHttpCall( - BidRequest.builder().imp(singletonList(givenImp(identity()))).build(), - mapper.writeValueAsString(givenBidResponse(Bid.builder().id("123").build(), - Bid.builder().mtype(1).build()))); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getValue()).containsExactly(BidderBid.of(Bid.builder().mtype(1).build(), banner, "USD")); - assertThat(result.getErrors()).hasSize(1) - .extracting(BidderError::getMessage) - .containsExactly("Missing MType for bid: 123"); - } - - @Test - public void makeBidsShouldReturnErrorsForBidsThatDoesNotContainSupportedMType() throws JsonProcessingException { - // given - final BidderCall httpCall = givenHttpCall( - BidRequest.builder().imp(singletonList(givenImp(identity()))).build(), - mapper.writeValueAsString(givenBidResponse(Bid.builder().mtype(1).build(), - Bid.builder().id("123").mtype(3).build()))); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getValue()).containsExactly(BidderBid.of(Bid.builder().mtype(1).build(), banner, "USD")); - assertThat(result.getErrors()).hasSize(1) - .extracting(BidderError::getMessage) - .containsExactly("Unsupported MType: 3, for bid: 123"); - } - - private static BidRequest givenBidRequest( - Function impCustomizer, - Function requestCustomizer) { - - return requestCustomizer.apply(BidRequest.builder().imp(singletonList(givenImp(impCustomizer)))).build(); - } - - private static BidRequest givenBidRequest(Function impCustomizer) { - return givenBidRequest(impCustomizer, identity()); - } - - private static Imp givenImp(Function impCustomizer) { - return impCustomizer.apply(Imp.builder().id("123")) - .banner(Banner.builder().build()) - .video(Video.builder().build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpDxKulture.of("testPublisherId", "testPlacementId")))) - .build(); - } - - private static BidResponse givenBidResponse(Bid... bids) { - return BidResponse.builder() - .cur("USD") - .seatbid(singletonList(SeatBid.builder() - .bid(List.of(bids)) - .build())) - .build(); - } - - private static BidderCall givenHttpCall(BidRequest bidRequest, String body) { - return BidderCall.succeededHttp(HttpRequest.builder().payload(bidRequest).build(), - HttpResponse.of(200, null, body), null); - } -} diff --git a/src/test/java/org/prebid/server/bidder/intertech/IntertechBidderTest.java b/src/test/java/org/prebid/server/bidder/intertech/IntertechBidderTest.java deleted file mode 100644 index 35905dab816..00000000000 --- a/src/test/java/org/prebid/server/bidder/intertech/IntertechBidderTest.java +++ /dev/null @@ -1,369 +0,0 @@ -package org.prebid.server.bidder.intertech; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.iab.openrtb.request.Banner; -import com.iab.openrtb.request.BidRequest; -import com.iab.openrtb.request.Format; -import com.iab.openrtb.request.Imp; -import com.iab.openrtb.request.Native; -import com.iab.openrtb.request.Site; -import com.iab.openrtb.response.Bid; -import com.iab.openrtb.response.BidResponse; -import com.iab.openrtb.response.SeatBid; -import org.junit.jupiter.api.Test; -import org.prebid.server.VertxTest; -import org.prebid.server.bidder.model.BidderBid; -import org.prebid.server.bidder.model.BidderCall; -import org.prebid.server.bidder.model.BidderError; -import org.prebid.server.bidder.model.HttpRequest; -import org.prebid.server.bidder.model.HttpResponse; -import org.prebid.server.bidder.model.Result; -import org.prebid.server.proto.openrtb.ext.ExtPrebid; -import org.prebid.server.proto.openrtb.ext.request.intertech.ExtImpIntertech; - -import java.util.List; -import java.util.function.Function; - -import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; -import static java.util.function.Function.identity; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; -import static org.assertj.core.api.Assertions.tuple; -import static org.prebid.server.proto.openrtb.ext.response.BidType.banner; -import static org.prebid.server.proto.openrtb.ext.response.BidType.xNative; - -public class IntertechBidderTest extends VertxTest { - - private static final String ENDPOINT_URL = "https://test.endpoint.com/{page_id}?imp_id={imp_id}"; - - private final IntertechBidder target = new IntertechBidder(ENDPOINT_URL, jacksonMapper); - - @Test - public void creationShouldFailOnInvalidEndpointUrl() { - assertThatIllegalArgumentException().isThrownBy(() -> new IntertechBidder("invalid_url", jacksonMapper)); - } - - @Test - public void makeHttpRequestsShouldCreateCorrectUrl() { - // given - final BidRequest bidRequest = givenBidRequest(imp -> imp.ext(givenImpExt(123)), identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).hasSize(1); - assertThat(result.getValue()) - .extracting(HttpRequest::getUri) - .containsExactly("https://test.endpoint.com/123456?imp_id=123"); - } - - @Test - public void makeHttpRequestsShouldReturnErrorIfImpExtCouldNotBeParsed() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder.id("imp1") - .ext(mapper.valueToTree(ExtPrebid.of(null, mapper.createArrayNode()))), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()) - .allSatisfy(error -> { - assertThat(error.getType()).isEqualTo(BidderError.Type.bad_input); - assertThat(error.getMessage()).startsWith("imp #imp1: Cannot deserialize value"); - }); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeHttpRequestsShouldReturnErrorWhenPageIdIsEmpty() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder.id("imp1") - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpIntertech.of(null, 7)))), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).containsExactly(BidderError.badInput("imp #imp1: missing param page_id")); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeHttpRequestsShouldReturnErrorWhenImpIdIsEmpty() { - // given - final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder.id("imp1") - .ext(givenImpExt(0)), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).containsExactly(BidderError.badInput("imp #imp1: missing param imp_id")); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeHttpRequestsShouldCreateARequestForEachImpAndSkipImpsWithErrors() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(asList( - givenImp(impBuilder -> impBuilder.id("imp1")), - givenImp(impBuilder -> impBuilder.id("imp2") - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpIntertech.of(1234567, null))))), - givenImp(impBuilder -> impBuilder.id("imp3")))) - .build(); - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).containsExactly(BidderError.badInput("imp #imp2: missing param imp_id")); - assertThat(result.getValue()).hasSize(2) - .extracting(HttpRequest::getPayload) - .flatExtracting(BidRequest::getImp).hasSize(2) - .extracting(Imp::getId) - .containsOnly("imp1", "imp3"); - } - - @Test - public void makeHttpRequestsShouldCreateARequestForEachImpAndSkipImpsWithNoBanner() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(asList( - Imp.builder().id("123").ext(givenImpExt(7)).build(), - Imp.builder() - .banner(Banner.builder().w(100).h(100).build()).id("321") - .ext(givenImpExt(7)).build(), - Imp.builder() - .xNative(Native.builder().build()).id("322") - .ext(givenImpExt(8)).build())) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - // then - assertThat(result.getErrors()).containsExactly( - BidderError.badInput("Intertech only supports banner and native types. Ignoring imp id=123") - ); - } - - @Test - public void makeHttpRequestsShouldReturnErrorWhenBannerWidthIsZero() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder.id("imp1").banner(Banner.builder().w(0).h(100).build()), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getValue()).isEmpty(); - assertThat(result.getErrors()).containsExactly(BidderError.badInput("Invalid sizes provided for Banner 0x100")); - } - - @Test - public void makeHttpRequestsShouldReturnErrorWhenBannerHeightIsZero() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder.id("imp1").banner(Banner.builder().w(100).h(0).build()), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getValue()).isEmpty(); - assertThat(result.getErrors()).containsExactly(BidderError.badInput("Invalid sizes provided for Banner 100x0")); - } - - @Test - public void makeHttpRequestsShouldReturnErrorWhenBannerHasNoFormats() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder.id("imp1").banner(Banner.builder().build()), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getValue()).isEmpty(); - assertThat(result.getErrors()) - .containsExactly(BidderError.badInput("Invalid sizes provided for Banner nullxnull")); - } - - @Test - public void makeHttpRequestsSetFirstImpressionBannerWidthAndHeightWhenFromFirstFormatIfTheyAreNull() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder.id("imp1") - .banner(Banner.builder().format(singletonList(Format.builder().w(250).h(300).build())).build()), - identity()); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .extracting(HttpRequest::getPayload) - .flatExtracting(BidRequest::getImp) - .extracting(Imp::getBanner) - .extracting(Banner::getW, Banner::getH) - .containsExactly(tuple(250, 300)); - } - - @Test - public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { - // given - final BidderCall bidderCall = givenBidderCall(null, "invalid"); - - // when - final Result> result = target.makeBids(bidderCall, null); - - // then - assertThat(result.getErrors()) - .allSatisfy(error -> { - assertThat(error.getType()).isEqualTo(BidderError.Type.bad_server_response); - assertThat(error.getMessage()).startsWith("Failed to decode"); - }); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnEmptyListIfBidResponseIsNull() throws JsonProcessingException { - // given - final BidderCall bidderCall = givenBidderCall(null, - mapper.writeValueAsString(null)); - - // when - final Result> result = target.makeBids(bidderCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws JsonProcessingException { - // given - final BidderCall bidderCall = givenBidderCall(null, - mapper.writeValueAsString(BidResponse.builder().build())); - - // when - final Result> result = target.makeBids(bidderCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnErrorIfBidResponseSeatBidIsEmpty() throws JsonProcessingException { - // given - final BidderCall bidderCall = givenBidderCall(null, - mapper.writeValueAsString(BidResponse.builder().seatbid(emptyList()).build())); - - // when - final Result> result = target.makeBids(bidderCall, null); - - // then - assertThat(result.getErrors()).containsExactly(BidderError.badServerResponse("SeatBids is empty")); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnErrorWhenBidImpIdIsNotPresent() throws JsonProcessingException { - // given - final BidderCall bidderCall = givenBidderCall( - BidRequest.builder() - .imp(singletonList(Imp.builder() - .banner(Banner.builder().build()) - .id("123").build())) - .build(), - mapper.writeValueAsString( - givenBidResponse(bidBuilder -> bidBuilder.impid("321")))); - - // when - final Result> result = target.makeBids(bidderCall, null); - - // then - assertThat(result.getErrors()).containsExactly( - BidderError.badServerResponse( - "Invalid bid imp ID 321 does not match any imp IDs from the original bid request")); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnBannerAndNative() throws JsonProcessingException { - // given - final BidderCall bidderCall = givenBidderCall( - BidRequest.builder() - .imp(asList(Imp.builder().xNative(Native.builder().build()).id("123").build(), - Imp.builder().banner(Banner.builder().build()).id("321").build())) - .build(), - mapper.writeValueAsString(BidResponse.builder() - .cur("USD") - .seatbid(singletonList(SeatBid.builder() - .bid(asList(Bid.builder().impid("123").build(), - Bid.builder().impid("321").build())) - .build())) - .build())); - - // when - final Result> result = target.makeBids(bidderCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .containsOnly(BidderBid.of(Bid.builder().impid("123").build(), xNative, "USD"), - BidderBid.of(Bid.builder().impid("321").build(), banner, "USD")); - } - - private static BidRequest givenBidRequest( - Function impCustomizer, - Function requestCustomizer) { - return requestCustomizer.apply(BidRequest.builder() - .site(Site.builder().id("123").build()) - .imp(singletonList(givenImp(impCustomizer)))) - .build(); - } - - private static Imp givenImp(Function impCustomizer) { - return impCustomizer.apply(Imp.builder() - .banner(Banner.builder().w(100).h(100).build()) - .ext(givenImpExt(7))) - .build(); - } - - private static ObjectNode givenImpExt(int impId) { - return mapper.valueToTree(ExtPrebid.of(null, ExtImpIntertech.of(123456, impId))); - } - - private static BidResponse givenBidResponse(Function bidCustomizer) { - return BidResponse.builder() - .cur("USD") - .seatbid(singletonList(SeatBid.builder() - .bid(singletonList(bidCustomizer.apply(Bid.builder()).build())) - .build())) - .build(); - } - - private static BidderCall givenBidderCall(BidRequest bidRequest, String body) { - return BidderCall.succeededHttp( - HttpRequest.builder().payload(bidRequest).build(), - HttpResponse.of(200, null, body), - null); - } -} diff --git a/src/test/java/org/prebid/server/bidder/telaria/TelariaBidderTest.java b/src/test/java/org/prebid/server/bidder/telaria/TelariaBidderTest.java deleted file mode 100644 index 13539e3796e..00000000000 --- a/src/test/java/org/prebid/server/bidder/telaria/TelariaBidderTest.java +++ /dev/null @@ -1,412 +0,0 @@ -package org.prebid.server.bidder.telaria; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.iab.openrtb.request.App; -import com.iab.openrtb.request.Banner; -import com.iab.openrtb.request.BidRequest; -import com.iab.openrtb.request.Device; -import com.iab.openrtb.request.Imp; -import com.iab.openrtb.request.Publisher; -import com.iab.openrtb.request.Site; -import com.iab.openrtb.request.Video; -import com.iab.openrtb.response.Bid; -import com.iab.openrtb.response.BidResponse; -import com.iab.openrtb.response.SeatBid; -import org.junit.jupiter.api.Test; -import org.prebid.server.VertxTest; -import org.prebid.server.bidder.model.BidderBid; -import org.prebid.server.bidder.model.BidderCall; -import org.prebid.server.bidder.model.BidderError; -import org.prebid.server.bidder.model.HttpRequest; -import org.prebid.server.bidder.model.HttpResponse; -import org.prebid.server.bidder.model.Result; -import org.prebid.server.bidder.smartrtb.SmartrtbBidder; -import org.prebid.server.bidder.telaria.model.TelariaRequestExt; -import org.prebid.server.proto.openrtb.ext.ExtPrebid; -import org.prebid.server.proto.openrtb.ext.request.ExtRequest; -import org.prebid.server.proto.openrtb.ext.request.telaria.ExtImpTelaria; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.function.UnaryOperator; - -import static java.util.Collections.singletonList; -import static java.util.function.UnaryOperator.identity; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; -import static org.assertj.core.api.Assertions.tuple; -import static org.prebid.server.proto.openrtb.ext.response.BidType.video; - -public class TelariaBidderTest extends VertxTest { - - private static final String ENDPOINT_URL = "https://test.endpoint.com/"; - - private final TelariaBidder target = new TelariaBidder(ENDPOINT_URL, jacksonMapper); - - @Test - public void creationShouldFailOnInvalidEndpointUrl() { - assertThatIllegalArgumentException().isThrownBy(() -> new SmartrtbBidder("invalid_url", jacksonMapper)); - } - - @Test - public void makeHttpRequestsShouldReturnErrorIfImpHasNoVideo() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList( - givenImp(impBuilder -> impBuilder.video(null)))) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).containsExactly(BidderError.badInput("Telaria: Only Supports Video")); - } - - @Test - public void makeHttpRequestsShouldReturnErrorIfImpHasBanner() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList( - givenImp(impBuilder -> impBuilder.banner(Banner.builder().build())))) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).containsExactly(BidderError.badInput("Telaria: Banner not supported")); - } - - @Test - public void makeHttpRequestsShouldReturnErrorIfImpExtCouldNotBeParsed() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder - .id("123") - .ext(mapper.valueToTree(ExtPrebid.of(null, mapper.createArrayNode())))); - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).hasSize(1); - assertThat(result.getErrors().getFirst().getMessage()).startsWith("Cannot deserialize value"); - } - - @Test - public void makeHttpReturnErrorIfSeatCodeIsEmpty() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpTelaria.of("adCode", null, mapper.createObjectNode()))))); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).containsExactly(BidderError.badInput("Telaria: Seat Code required")); - } - - @Test - public void makeHttpRequestsShouldNotChangeExtIfExtExtraIsMissing() { - // given - final BidRequest bidRequest = givenBidRequest( - impBuilder -> impBuilder - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpTelaria.of("adCode", "seatCode", mapper.createObjectNode()))))); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).hasSize(1) - .extracting(HttpRequest::getPayload) - .extracting(BidRequest::getExt) - .extracting(ExtRequest::getPrebid) - .containsNull(); - } - - @Test - public void makeHttpRequestsShouldChangeRequestExtIfExtImpExtraIsNotEmpty() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList( - Imp.builder() - .video(Video.builder().build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpTelaria.of("adCode", "seatCode", - mapper.createObjectNode().put("custom", "1234"))))) - .build())) - .site(Site.builder().build()) - .app(App.builder().build()) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).hasSize(1) - .extracting(HttpRequest::getPayload) - .extracting(BidRequest::getExt) - .containsExactly(jacksonMapper.fillExtension( - ExtRequest.empty(), TelariaRequestExt.of(mapper.createObjectNode().put("custom", "1234")))); - } - - @Test - public void makeHttpRequestsShouldNotSetAppPublisherIdIfSiteIsNotNull() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(givenImp(identity()))) - .site(Site.builder().build()) - .app(App.builder().build()) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).hasSize(1) - .extracting(HttpRequest::getPayload) - .extracting(BidRequest::getApp) - .extracting(App::getId) - .containsNull(); - } - - @Test - public void makeHttpRequestsShouldSetAppPublisherIdIfSiteIsNull() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(givenImp(identity()))) - .app(App.builder().publisher(Publisher.builder().build()).build()) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .extracting(HttpRequest::getPayload) - .extracting(BidRequest::getApp) - .extracting(App::getPublisher) - .extracting(Publisher::getId) - .containsExactly("seatCode"); - } - - @Test - public void makeHttpRequestsShouldSetSitePublisherIdIfSiteIsPresent() { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(givenImp(identity()))) - .site(Site.builder().publisher(Publisher.builder().build()).build()) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .extracting(HttpRequest::getPayload) - .extracting(BidRequest::getSite) - .extracting(Site::getPublisher) - .extracting(Publisher::getId) - .containsExactly("seatCode"); - } - - @Test - public void makeHttpRequestsShouldReturnResultWithHttpRequestsContainingExpectedHeaders() { - // given - final BidRequest bidRequest = BidRequest.builder() - .device(Device.builder() - .ua("userAgent") - .ip("123.123.123.12") - .language("en") - .dnt(0) - .build()) - .imp(singletonList(givenImp(identity()))) - .build(); - - // when - final Result>> result = target.makeHttpRequests(bidRequest); - - // then - assertThat(result.getValue()) - .flatExtracting(r -> r.getHeaders().entries()) - .extracting(Map.Entry::getKey, Map.Entry::getValue) - .containsExactlyInAnyOrder( - tuple("Content-Type", "application/json;charset=utf-8"), - tuple("Accept", "application/json"), - tuple("x-openrtb-version", "2.5"), - tuple("User-Agent", "userAgent"), - tuple("X-Forwarded-For", "123.123.123.12"), - tuple("Accept-Language", "en"), - tuple("DNT", "0")); - } - - @Test - public void makeBidsShouldReturnEmptyBidderBidsFromSecondSeatBid() throws JsonProcessingException { - // given - final SeatBid firstSeatBId = SeatBid.builder() - .bid(singletonList(Bid.builder() - .impid("123") - .build())) - .build(); - - final SeatBid secondSeatBid = SeatBid.builder() - .bid(singletonList(Bid.builder() - .impid("456") - .build())) - .build(); - - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(Imp.builder().id("123").banner(Banner.builder().build()).build())) - .build(); - - final BidderCall httpCall = givenHttpCall( - bidRequest, - mapper.writeValueAsString(BidResponse.builder() - .seatbid(Arrays.asList(firstSeatBId, secondSeatBid)) - .build())); - - // when - final Result> result = target.makeBids(httpCall, bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .containsExactly(BidderBid.of(Bid.builder().impid("123").build(), video, null)); - } - - @Test - public void makeBidsShouldReturnErrorIfResponseBodyCouldNotBeParsed() { - // given - final BidderCall httpCall = givenHttpCall(null, "invalid"); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getErrors()).hasSize(1) - .allSatisfy(error -> { - assertThat(error.getType()).isEqualTo(BidderError.Type.bad_server_response); - assertThat(error.getMessage()).startsWith("Failed to decode: Unrecognized token"); - }); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnEmptyListIfBidResponseSeatBidIsNull() throws JsonProcessingException { - // given - final BidderCall httpCall = givenHttpCall(null, - mapper.writeValueAsString(BidResponse.builder().build())); - - // when - final Result> result = target.makeBids(httpCall, null); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnEmptyListIfNoBidsFromSeatArePresent() throws JsonProcessingException { - // given - final BidRequest bidRequest = BidRequest.builder().build(); - final BidderCall httpCall = givenHttpCall(bidRequest, - mapper.writeValueAsString(BidResponse.builder() - .seatbid(singletonList(SeatBid.builder().build())).build())); - - // when - final Result> result = target.makeBids(httpCall, bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()).isEmpty(); - } - - @Test - public void makeBidsShouldReturnVideoBidIfVideoIsPresentInRequestImp() throws JsonProcessingException { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(Imp.builder().id("123").video(Video.builder().build()).build())) - .build(); - - final BidderCall httpCall = givenHttpCall( - bidRequest, - mapper.writeValueAsString( - givenBidResponse(bidBuilder -> bidBuilder.impid("123")))); - - // when - final Result> result = target.makeBids(httpCall, bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .containsExactly(BidderBid.of(Bid.builder().impid("123").build(), video, "USD")); - } - - @Test - public void makeBidsShouldReturnProperImpidFromBidRequestImpId() throws JsonProcessingException { - // given - final BidRequest bidRequest = BidRequest.builder() - .imp(singletonList(Imp.builder().id("312").video(Video.builder().build()).build())) - .build(); - - final BidderCall httpCall = givenHttpCall( - bidRequest, - mapper.writeValueAsString(givenBidResponse(identity()))); - - // when - final Result> result = target.makeBids(httpCall, bidRequest); - - // then - assertThat(result.getErrors()).isEmpty(); - assertThat(result.getValue()) - .extracting(BidderBid::getBid) - .extracting(Bid::getImpid) - .containsExactly("312"); - } - - private static BidRequest givenBidRequest( - UnaryOperator bidRequestCustomizer, - UnaryOperator impCustomizer) { - - return bidRequestCustomizer.apply(BidRequest.builder() - .imp(singletonList(givenImp(impCustomizer)))) - .build(); - } - - private static BidRequest givenBidRequest(UnaryOperator impCustomizer) { - return givenBidRequest(identity(), impCustomizer); - } - - private static Imp givenImp(UnaryOperator impCustomizer) { - return impCustomizer.apply(Imp.builder() - .id("123") - .video(Video.builder().build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, - ExtImpTelaria.of("adCode", "seatCode", null))))) - .build(); - } - - private static BidResponse givenBidResponse(UnaryOperator bidCustomizer) { - return BidResponse.builder() - .cur("USD") - .seatbid(singletonList(SeatBid.builder().bid(singletonList(bidCustomizer.apply(Bid.builder()).build())) - .build())) - .build(); - } - - private static BidderCall givenHttpCall(BidRequest bidRequest, String body) { - return BidderCall.succeededHttp( - HttpRequest.builder().payload(bidRequest).build(), - HttpResponse.of(200, null, body), - null); - } -} diff --git a/src/test/java/org/prebid/server/cookie/PrioritizedCoopSyncProviderTest.java b/src/test/java/org/prebid/server/cookie/PrioritizedCoopSyncProviderTest.java index a6e24bed906..7ff551bfd9a 100644 --- a/src/test/java/org/prebid/server/cookie/PrioritizedCoopSyncProviderTest.java +++ b/src/test/java/org/prebid/server/cookie/PrioritizedCoopSyncProviderTest.java @@ -19,6 +19,7 @@ import static java.util.Collections.singleton; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatNoException; import static org.mockito.BDDMockito.given; import static org.mockito.Mock.Strictness.LENIENT; @@ -47,6 +48,18 @@ public void creationShouldFilterInvalidPrioritizedBidders() { assertThat(result).containsExactly("valid"); } + @Test + public void creationShouldAllowMultipleBiddersWithTheSameCookieFamilyName() { + // given + givenValidBidderWithCookieSync("bidder1", "cookie-family-name"); + givenValidBidderWithCookieSync("bidder2", "cookie-family-name"); + given(bidderCatalog.usersyncReadyBidders()).willReturn(Set.of("bidder1", "bidder2")); + + // when and then + assertThatNoException().isThrownBy(() -> + new PrioritizedCoopSyncProvider(Set.of("bidder1", "bidder2"), bidderCatalog)); + } + @Test public void prioritizedBiddersShouldReturnSetWithPrioritizedBiddersFromAccount() { // given @@ -99,9 +112,14 @@ private void givenValidBiddersWithCookieSync(String... bidders) { } private void givenValidBidderWithCookieSync(String bidder) { + givenValidBidderWithCookieSync(bidder, null); + } + + private void givenValidBidderWithCookieSync(String bidder, String cookieFamilyName) { given(bidderCatalog.isValidName(bidder)).willReturn(true); given(bidderCatalog.isActive(bidder)).willReturn(true); - given(bidderCatalog.cookieFamilyName(bidder)).willReturn(Optional.of(bidder + "-cookie-family")); + given(bidderCatalog.cookieFamilyName(bidder)) + .willReturn(Optional.ofNullable(cookieFamilyName).or(() -> Optional.of(bidder + "-cookie-family"))); given(bidderCatalog.usersyncerByName(bidder)).willReturn( Optional.of(Usersyncer.of( "cookie-family-name", diff --git a/src/test/java/org/prebid/server/handler/SetuidHandlerTest.java b/src/test/java/org/prebid/server/handler/SetuidHandlerTest.java index 057d1e9e110..815453e85ea 100644 --- a/src/test/java/org/prebid/server/handler/SetuidHandlerTest.java +++ b/src/test/java/org/prebid/server/handler/SetuidHandlerTest.java @@ -980,10 +980,10 @@ private static UidsCookie emptyUidsCookie() { } private static UsersyncMethod iframeMethod() { - return UsersyncMethod.builder().type(UsersyncMethodType.IFRAME).supportCORS(false).build(); + return UsersyncMethod.builder().type(UsersyncMethodType.IFRAME).build(); } private static UsersyncMethod redirectMethod() { - return UsersyncMethod.builder().type(UsersyncMethodType.REDIRECT).supportCORS(false).build(); + return UsersyncMethod.builder().type(UsersyncMethodType.REDIRECT).build(); } } diff --git a/src/test/java/org/prebid/server/it/AdsinteractiveTest.java b/src/test/java/org/prebid/server/it/AdsinteractiveTest.java deleted file mode 100644 index 4468e57a2a8..00000000000 --- a/src/test/java/org/prebid/server/it/AdsinteractiveTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.prebid.server.it; - -import io.restassured.response.Response; -import org.json.JSONException; -import org.junit.jupiter.api.Test; -import org.prebid.server.model.Endpoint; - -import java.io.IOException; - -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; -import static java.util.Collections.singletonList; - -public class AdsinteractiveTest extends IntegrationTest { - - @Test - public void openrtb2AuctionShouldRespondWithBidsFromAdsinteractive() throws IOException, JSONException { - // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/adsinteractive-exchange")) - .withRequestBody(equalToJson(jsonFrom("openrtb2/adsinteractive/test-adsinteractive-bid-request.json"))) - .willReturn(aResponse().withBody( - jsonFrom("openrtb2/adsinteractive/test-adsinteractive-bid-response.json")))); - - // when - final Response response = responseFor("openrtb2/adsinteractive/test-auction-adsinteractive-request.json", - Endpoint.openrtb2_auction); - - // then - assertJsonEquals("openrtb2/adsinteractive/test-auction-adsinteractive-response.json", - response, singletonList("adsinteractive")); - } -} diff --git a/src/test/java/org/prebid/server/it/ApplicationTest.java b/src/test/java/org/prebid/server/it/ApplicationTest.java index 0c937b928b8..54e550e93f7 100644 --- a/src/test/java/org/prebid/server/it/ApplicationTest.java +++ b/src/test/java/org/prebid/server/it/ApplicationTest.java @@ -136,9 +136,7 @@ public void openrtb2MultiBidAuctionShouldRespondWithMoreThanOneBid() throws IOEx // pre-bid cache WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/cache")) .withRequestBody(equalToBidCacheRequest( - jsonFrom( - "openrtb2/multi_bid/test-cache-generic-genericAlias-request.json" - ))) + jsonFrom("openrtb2/multi_bid/test-cache-generic-genericAlias-request.json"))) .willReturn(aResponse() .withTransformers("cache-response-transformer") .withTransformerParameter("matcherName", @@ -324,7 +322,7 @@ public void cookieSyncShouldReturnBidderStatusWithExpectedUsersyncInfo() { + "&gpp_sid=" + "&f=i" + "&uid=host-cookie-uid", - UsersyncMethodType.REDIRECT, false)) + UsersyncMethodType.REDIRECT)) .build(), BidderUsersyncStatus.builder() .bidder(APPNEXUS) @@ -337,7 +335,7 @@ public void cookieSyncShouldReturnBidderStatusWithExpectedUsersyncInfo() { + "%26gpp_sid%3D" + "%26f%3Di" + "%26uid%3D%24UID", - UsersyncMethodType.REDIRECT, false)) + UsersyncMethodType.REDIRECT)) .build()); } diff --git a/src/test/java/org/prebid/server/it/DxKultureTest.java b/src/test/java/org/prebid/server/it/DxKultureTest.java deleted file mode 100644 index 11bfd21abf8..00000000000 --- a/src/test/java/org/prebid/server/it/DxKultureTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.prebid.server.it; - -import io.restassured.response.Response; -import org.json.JSONException; -import org.junit.jupiter.api.Test; -import org.prebid.server.model.Endpoint; - -import java.io.IOException; - -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; -import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; -import static java.util.Collections.singletonList; - -public class DxKultureTest extends IntegrationTest { - - @Test - public void openrtb2AuctionShouldRespondWithBidsFromTheDxKultureBidder() throws IOException, JSONException { - // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/dxkulture-exchange")) - .withQueryParam("publisher_id", equalTo("testPublisherId")) - .withQueryParam("placement_id", equalTo("testPlacementId")) - .withRequestBody(equalToJson( - jsonFrom("openrtb2/dxkulture/test-dxkulture-bid-request.json"))) - .willReturn(aResponse().withBody( - jsonFrom("openrtb2/dxkulture/test-dxkulture-bid-response.json")))); - - // when - final Response response = responseFor("openrtb2/dxkulture/test-auction-dxkulture-request.json", - Endpoint.openrtb2_auction); - - // then - assertJsonEquals("openrtb2/dxkulture/test-auction-dxkulture-response.json", response, - singletonList("dxkulture")); - } -} diff --git a/src/test/java/org/prebid/server/it/IntertechTest.java b/src/test/java/org/prebid/server/it/IntertechTest.java deleted file mode 100644 index b12bb0bf9ce..00000000000 --- a/src/test/java/org/prebid/server/it/IntertechTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.prebid.server.it; - -import io.restassured.response.Response; -import org.json.JSONException; -import org.junit.jupiter.api.Test; -import org.prebid.server.model.Endpoint; - -import java.io.IOException; - -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; -import static java.util.Collections.singletonList; - -public class IntertechTest extends IntegrationTest { - - @Test - public void openrtb2AuctionShouldRespondWithBidsFromIntertech() throws IOException, JSONException { - // given - WIRE_MOCK_RULE.stubFor(post( - urlPathEqualTo("/intertech-exchange")) - .withRequestBody(equalToJson(jsonFrom("openrtb2/intertech/test-intertech-bid-request.json"))) - .willReturn(aResponse().withBody(jsonFrom("openrtb2/intertech/test-intertech-bid-response.json")))); - - // when - final Response response = responseFor("openrtb2/intertech/test-auction-intertech-request.json", - Endpoint.openrtb2_auction); - - // then - assertJsonEquals("openrtb2/intertech/test-auction-intertech-response.json", response, - singletonList("intertech")); - } -} diff --git a/src/test/java/org/prebid/server/it/TelariaTest.java b/src/test/java/org/prebid/server/it/TelariaTest.java deleted file mode 100644 index 72ed0b41721..00000000000 --- a/src/test/java/org/prebid/server/it/TelariaTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.prebid.server.it; - -import io.restassured.response.Response; -import org.json.JSONException; -import org.junit.jupiter.api.Test; -import org.prebid.server.model.Endpoint; - -import java.io.IOException; - -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; -import static java.util.Collections.singletonList; - -public class TelariaTest extends IntegrationTest { - - @Test - public void openrtb2AuctionShouldRespondWithBidsFromTelaria() throws IOException, JSONException { - // given - WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/telaria-exchange/")) - .withRequestBody(equalToJson(jsonFrom("openrtb2/telaria/test-telaria-bid-request.json"))) - .willReturn(aResponse().withBody(jsonFrom("openrtb2/telaria/test-telaria-bid-response.json")))); - - // when - final Response response = responseFor("openrtb2/telaria/test-auction-telaria-request.json", - Endpoint.openrtb2_auction); - - // then - assertJsonEquals("openrtb2/telaria/test-auction-telaria-response.json", response, singletonList("telaria")); - } -} diff --git a/src/test/java/org/prebid/server/log/ConditionalLoggerTest.java b/src/test/java/org/prebid/server/log/ConditionalLoggerTest.java index 3839310ce85..cb585197c6d 100644 --- a/src/test/java/org/prebid/server/log/ConditionalLoggerTest.java +++ b/src/test/java/org/prebid/server/log/ConditionalLoggerTest.java @@ -8,7 +8,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; +import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; import java.util.concurrent.TimeUnit; @@ -16,14 +16,13 @@ import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; @ExtendWith(MockitoExtension.class) @ExtendWith(VertxExtension.class) public class ConditionalLoggerTest { - @Mock - private Logger logger; + @Spy + private Logger logger = LoggerFactory.getLogger(ConditionalLoggerTest.class); private Vertx vertx; @@ -41,37 +40,10 @@ public void tearDown(VertxTestContext context) { } @Test - public void infoWithKeyShouldCallLoggerWithExpectedCount() { + public void infoShouldCallLoggerForEachLog() { // when - for (int i = 0; i < 10; i++) { - conditionalLogger.infoWithKey("key", "Log Message1", 2); - conditionalLogger.infoWithKey("key", "Log Message2", 2); - } - - // then - verify(logger, times(10)).info("Log Message2"); - verifyNoMoreInteractions(logger); - } - - @Test - public void infoShouldCallLoggerWithExpectedCount() { - // when - for (int i = 0; i < 10; i++) { - conditionalLogger.info("Log Message", 2); - } - - // then - verify(logger, times(5)).info("Log Message"); - } - - @Test - public void infoShouldCallLoggerBySpecifiedKeyWithExpectedCount() { - // given - conditionalLogger = new ConditionalLogger("key1", logger); - - // when - for (int i = 0; i < 10; i++) { - conditionalLogger.info("Log Message" + i, 2); + for (int i = 0; i < 5; i++) { + conditionalLogger.info("Log Message" + i, 0, TimeUnit.MILLISECONDS); } // then @@ -79,7 +51,7 @@ public void infoShouldCallLoggerBySpecifiedKeyWithExpectedCount() { } @Test - public void infoShouldCallLoggerWithExpectedTimeout() { + public void infoShouldSkipLogsForDuration() { // when for (int i = 0; i < 5; i++) { conditionalLogger.info("Log Message", 200, TimeUnit.MILLISECONDS); @@ -87,11 +59,11 @@ public void infoShouldCallLoggerWithExpectedTimeout() { } // then - verify(logger, times(2)).info("Log Message"); + verify(logger, times(3)).info("Log Message"); } @Test - public void infoShouldCallLoggerBySpecifiedKeyWithExpectedTimeout() { + public void infoShouldSkipLogsForKeyForDuration() { // given conditionalLogger = new ConditionalLogger("key1", logger); @@ -102,7 +74,7 @@ public void infoShouldCallLoggerBySpecifiedKeyWithExpectedTimeout() { } // then - verify(logger, times(2)).info(argThat(o -> o.toString().startsWith("Log Message"))); + verify(logger, times(3)).info(argThat(o -> o.toString().startsWith("Log Message"))); } private void doWait(long timeout) { diff --git a/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtilTest.java b/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtilTest.java index 8eeeb3ce9b8..536128973f1 100644 --- a/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtilTest.java +++ b/src/test/java/org/prebid/server/spring/config/bidder/util/UsersyncerUtilTest.java @@ -58,7 +58,6 @@ public void createShouldReturnUsersyncerWithCorrectUsersyncMethodParams() { final UsersyncMethodConfigurationProperties iframe = new UsersyncMethodConfigurationProperties(); iframe.setUrl("https://iframe-url"); iframe.setUidMacro("iframe-uid-macro"); - iframe.setSupportCors(true); iframe.setFormatOverride(UsersyncFormat.BLANK); final UsersyncConfigurationProperties properties = givenUsersyncConfigurationProperties(); @@ -72,7 +71,6 @@ public void createShouldReturnUsersyncerWithCorrectUsersyncMethodParams() { .type(UsersyncMethodType.IFRAME) .usersyncUrl(Uri.of("https://iframe-url")) .uidMacro("iframe-uid-macro") - .supportCORS(true) .formatOverride(UsersyncFormat.BLANK) .build()); } @@ -131,7 +129,6 @@ private static UsersyncConfigurationProperties givenUsersyncConfigurationPropert private static UsersyncMethodConfigurationProperties givenUsersyncMethodConfigurationProperties() { final UsersyncMethodConfigurationProperties properties = new UsersyncMethodConfigurationProperties(); properties.setUrl("https://url"); - properties.setSupportCors(false); return properties; } } diff --git a/src/test/resources/org/prebid/server/it/amp/test-generic-bid-request.json b/src/test/resources/org/prebid/server/it/amp/test-generic-bid-request.json index 4d45a82bbc0..fdba46fb7d2 100644 --- a/src/test/resources/org/prebid/server/it/amp/test-generic-bid-request.json +++ b/src/test/resources/org/prebid/server/it/amp/test-generic-bid-request.json @@ -104,9 +104,6 @@ "storedrequest": { "id": "test-amp-stored-request" }, - "cache": { - "bids": {} - }, "auctiontimestamp": 0, "amp": { "data": { @@ -124,13 +121,6 @@ "account": "accountId" } }, - "adservertargeting": [ - { - "key": "static_keyword1", - "source": "static", - "value": "static_value1" - } - ], "channel": { "name": "amp" }, diff --git a/src/test/resources/org/prebid/server/it/amp/test-genericAlias-bid-request.json b/src/test/resources/org/prebid/server/it/amp/test-genericAlias-bid-request.json index 65febdb9a16..afccf4ce628 100644 --- a/src/test/resources/org/prebid/server/it/amp/test-genericAlias-bid-request.json +++ b/src/test/resources/org/prebid/server/it/amp/test-genericAlias-bid-request.json @@ -102,9 +102,6 @@ "storedrequest": { "id": "test-amp-stored-request" }, - "cache": { - "bids": {} - }, "auctiontimestamp": 0, "amp": { "data": { @@ -122,13 +119,6 @@ "timeout": "10000000" } }, - "adservertargeting": [ - { - "key": "static_keyword1", - "source": "static", - "value": "static_value1" - } - ], "channel": { "name": "amp" }, diff --git a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-adsinteractive-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-adsinteractive-bid-request.json deleted file mode 100644 index dcf904ba566..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-adsinteractive-bid-request.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "banner": { - "w": 300, - "h": 250 - }, - "secure": 1, - "ext": { - "bidder": { - "type": "publisher", - "placementId": "testPlacementId" - } - } - } - ], - "site": { - "domain": "www.example.com", - "page": "http://www.example.com", - "publisher": { - "domain": "example.com" - }, - "ext": { - "amp": 0 - } - }, - "device": { - "ua": "userAgent", - "ip": "193.168.244.1" - }, - "at": 1, - "tmax": "${json-unit.any-number}", - "cur": [ - "USD" - ], - "source": { - "tid": "${json-unit.any-string}" - }, - "regs": { - "ext": { - "gdpr": 0 - } - }, - "ext": { - "prebid": { - "server": { - "externalurl": "http://localhost:8080", - "gvlid": 1, - "datacenter": "local", - "endpoint": "/openrtb2/auction" - } - } - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-adsinteractive-bid-response.json b/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-adsinteractive-bid-response.json deleted file mode 100644 index 180173549d8..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-adsinteractive-bid-response.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "id": "bid_id", - "impid": "imp_id", - "price": 3.33, - "crid": "creativeId", - "mtype": 1, - "ext": { - "prebid": { - "type": "banner" - } - } - } - ] - } - ] -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-auction-adsinteractive-request.json b/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-auction-adsinteractive-request.json deleted file mode 100644 index 18426f8e84f..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-auction-adsinteractive-request.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "banner": { - "w": 300, - "h": 250 - }, - "ext": { - "adsinteractive": { - "placementId": "testPlacementId" - } - } - } - ], - "tmax": 5000, - "regs": { - "ext": { - "gdpr": 0 - } - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-auction-adsinteractive-response.json b/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-auction-adsinteractive-response.json deleted file mode 100644 index b3b542f59e0..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/adsinteractive/test-auction-adsinteractive-response.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "id": "bid_id", - "impid": "imp_id", - "exp": 300, - "price": 3.33, - "crid": "creativeId", - "mtype": 1, - "ext": { - "origbidcpm": 3.33, - "prebid": { - "type": "banner", - "meta": { - "adaptercode": "adsinteractive" - } - } - } - } - ], - "seat": "adsinteractive", - "group": 0 - } - ], - "cur": "USD", - "ext": { - "responsetimemillis": { - "adsinteractive": "{{ adsinteractive.response_time_ms }}" - }, - "prebid": { - "auctiontimestamp": 0 - }, - "tmaxrequest": 5000 - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-1.json b/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-1.json index 5e19435fdc2..1d07d919797 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-1.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-1.json @@ -303,9 +303,6 @@ "translatecategories": false } }, - "cache": { - "vastxml": {} - }, "channel": { "name": "web" } diff --git a/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-2.json b/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-2.json index 1b09479f3ea..43d91e2e81c 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-2.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/appnexus/test-video-appnexus-bid-request-2.json @@ -96,9 +96,6 @@ "translatecategories": false } }, - "cache": { - "vastxml": {} - }, "channel": { "name": "web" } diff --git a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-auction-dxkulture-request.json b/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-auction-dxkulture-request.json deleted file mode 100644 index 265d275d931..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-auction-dxkulture-request.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "banner": { - "w": 300, - "h": 250 - }, - "ext": { - "dxkulture": { - "publisherId": "testPublisherId", - "placementId": "testPlacementId" - } - } - } - ], - "tmax": 5000, - "regs": { - "ext": { - "gdpr": 0 - } - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-auction-dxkulture-response.json b/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-auction-dxkulture-response.json deleted file mode 100644 index 5756bce1878..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-auction-dxkulture-response.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "id": "bid_id", - "mtype": 1, - "impid": "imp_id", - "exp": 300, - "price": 3.33, - "crid": "creativeId", - "ext": { - "origbidcpm": 3.33, - "prebid": { - "type": "banner", - "meta": { - "adaptercode": "dxkulture" - } - } - } - } - ], - "seat": "dxkulture", - "group": 0 - } - ], - "cur": "USD", - "ext": { - "responsetimemillis": { - "dxkulture": "{{ dxkulture.response_time_ms }}" - }, - "prebid": { - "auctiontimestamp": 0 - }, - "tmaxrequest": 5000 - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-dxkulture-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-dxkulture-bid-request.json deleted file mode 100644 index f850efbda61..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-dxkulture-bid-request.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "secure": 1, - "banner": { - "w": 300, - "h": 250 - }, - "ext": { - "tid": "${json-unit.any-string}", - "bidder": { - "publisherId": "testPublisherId", - "placementId": "testPlacementId" - } - } - } - ], - "source": { - "tid": "${json-unit.any-string}" - }, - "site": { - "domain": "www.example.com", - "page": "http://www.example.com", - "publisher": { - "domain": "example.com" - }, - "ext": { - "amp": 0 - } - }, - "device": { - "ua": "userAgent", - "ip": "193.168.244.1" - }, - "at": 1, - "tmax": "${json-unit.any-number}", - "cur": [ - "USD" - ], - "regs": { - "ext": { - "gdpr": 0 - } - }, - "ext": { - "prebid": { - "server": { - "externalurl": "http://localhost:8080", - "gvlid": 1, - "datacenter": "local", - "endpoint": "/openrtb2/auction" - } - } - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-dxkulture-bid-response.json b/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-dxkulture-bid-response.json deleted file mode 100644 index 6922c116b46..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/dxkulture/test-dxkulture-bid-response.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "id": "bid_id", - "impid": "imp_id", - "price": 3.33, - "crid": "creativeId", - "mtype": 1 - } - ] - } - ] -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/generic_core_functionality/test-generic-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/generic_core_functionality/test-generic-bid-request.json index 754ed9ddfff..da6529ee46c 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/generic_core_functionality/test-generic-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/generic_core_functionality/test-generic-bid-request.json @@ -94,9 +94,6 @@ "includewinners" : true, "includebidderkeys" : true }, - "cache" : { - "bids" : { } - }, "auctiontimestamp" : 0, "server" : { "externalurl" : "http://localhost:8080", diff --git a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-auction-intertech-request.json b/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-auction-intertech-request.json deleted file mode 100644 index aa6bcc2ad8e..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-auction-intertech-request.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "banner": { - "w": 300, - "h": 250 - }, - "ext": { - "intertech": { - "page_id": 123456, - "imp_id": 7 - } - } - } - ], - "tmax": 5000, - "regs": { - "ext": { - "gdpr": 0 - } - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-auction-intertech-response.json b/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-auction-intertech-response.json deleted file mode 100644 index 2771d04af3c..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-auction-intertech-response.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "id": "bid_id", - "impid": "imp_id", - "exp": 300, - "price": 3.33, - "adm": "adm001", - "adid": "adid001", - "cid": "cid001", - "crid": "crid001", - "w": 300, - "h": 250, - "ext": { - "prebid": { - "type": "banner", - "meta": { - "adaptercode": "intertech" - } - }, - "origbidcpm": 3.33 - } - } - ], - "seat": "intertech", - "group": 0 - } - ], - "cur": "USD", - "ext": { - "responsetimemillis": { - "intertech": "{{ intertech.response_time_ms }}" - }, - "prebid": { - "auctiontimestamp": 0 - }, - "tmaxrequest": 5000 - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-intertech-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-intertech-bid-request.json deleted file mode 100644 index a044b3b2105..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-intertech-bid-request.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "secure": 1, - "banner": { - "w": 300, - "h": 250 - }, - "ext": { - "tid": "${json-unit.any-string}", - "bidder": { - "page_id": 123456, - "imp_id": 7 - } - } - } - ], - "source": { - "tid": "${json-unit.any-string}" - }, - "site": { - "domain": "www.example.com", - "page": "http://www.example.com", - "publisher": { - "domain": "example.com" - }, - "ext": { - "amp": 0 - } - }, - "device": { - "ua": "userAgent", - "ip": "193.168.244.1" - }, - "at": 1, - "tmax": "${json-unit.any-number}", - "cur" : [ - "USD" - ], - "regs": { - "ext": { - "gdpr": 0 - } - }, - "ext": { - "prebid": { - "server": { - "externalurl": "http://localhost:8080", - "gvlid": 1, - "datacenter": "local", - "endpoint": "/openrtb2/auction" - } - } - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-intertech-bid-response.json b/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-intertech-bid-response.json deleted file mode 100644 index 8fcad4138e9..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/intertech/test-intertech-bid-response.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "id": "bid_id", - "impid": "imp_id", - "price": 3.33, - "adid": "adid001", - "crid": "crid001", - "cid": "cid001", - "adm": "adm001", - "h": 250, - "w": 300 - } - ] - } - ], - "bidid": "bid_id" -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-generic-bid-request-1.json b/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-generic-bid-request-1.json index 0c72e7ce2a4..19637b681f7 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-generic-bid-request-1.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-generic-bid-request-1.json @@ -22,13 +22,6 @@ "ext": { "prebid": { "auctiontimestamp": 1000, - "cache": { - "bids": { - }, - "vastxml": { - "ttlseconds": 120 - } - }, "channel": { "name": "web" }, @@ -44,8 +37,6 @@ "usepbsrates": false }, "debug": 0, - "events": { - }, "multibid": [ { "bidder": "generic", diff --git a/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-genericAlias-bid-request-1.json b/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-genericAlias-bid-request-1.json index f44b91769f3..c4deb7877af 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-genericAlias-bid-request-1.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/multi_bid/test-genericAlias-bid-request-1.json @@ -104,14 +104,6 @@ "includewinners": true, "includebidderkeys": true }, - "cache": { - "bids": { - }, - "vastxml": { - "ttlseconds": 120 - } - }, - "events": {}, "auctiontimestamp": 1000, "channel": { "name": "web" diff --git a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-auction-telaria-request.json b/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-auction-telaria-request.json deleted file mode 100644 index 6ff55fbb954..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-auction-telaria-request.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "tagid": "tag_id", - "video": { - "mimes": [ - "video/mp4" - ], - "protocols": [ - 2, - 5 - ], - "skipafter": 0, - "skipmin": 0, - "w": 1024, - "h": 576 - }, - "ext": { - "telaria": { - "adCode": "my-adcode", - "seatCode": "my-seatcode", - "extra": { - "custom": "1234" - } - } - } - } - ], - "tmax": 5000, - "regs": { - "ext": { - "gdpr": 0 - } - } -} \ No newline at end of file diff --git a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-auction-telaria-response.json b/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-auction-telaria-response.json deleted file mode 100644 index a62c605a690..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-auction-telaria-response.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "id": "bid_id", - "impid": "imp_id", - "price": 0.01, - "adm": "hi", - "cid": "cid", - "crid": "crid", - "exp": 120, - "ext": { - "prebid": { - "type": "video", - "meta": { - "adaptercode": "telaria" - } - }, - "origbidcpm": 0.01, - "format": "VIDEO" - } - } - ], - "seat": "telaria", - "group": 0 - } - ], - "cur": "USD", - "ext": { - "responsetimemillis": { - "telaria": "{{ telaria.response_time_ms }}" - }, - "prebid": { - "auctiontimestamp": 0 - }, - "tmaxrequest": 5000 - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-telaria-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-telaria-bid-request.json deleted file mode 100644 index 8a6a27af6ca..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-telaria-bid-request.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "id": "request_id", - "imp": [ - { - "id": "imp_id", - "secure": 1, - "video": { - "mimes": [ - "video/mp4" - ], - "protocols": [ - 2, - 5 - ], - "w": 1024, - "h": 576, - "skipmin": 0, - "skipafter": 0 - }, - "tagid": "my-adcode", - "ext": { - "originalTagid": "tag_id" - } - } - ], - "source": { - "tid": "${json-unit.any-string}" - }, - "site": { - "domain": "www.example.com", - "page": "http://www.example.com", - "publisher": { - "id": "my-seatcode", - "domain": "example.com" - }, - "ext": { - "amp": 0 - } - }, - "device": { - "ua": "userAgent", - "ip": "193.168.244.1" - }, - "at": 1, - "tmax": "${json-unit.any-number}", - "cur": [ - "USD" - ], - "regs": { - "ext": { - "gdpr": 0 - } - }, - "ext": { - "extra": { - "custom": "1234" - } - } -} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-telaria-bid-response.json b/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-telaria-bid-response.json deleted file mode 100644 index b902e03219d..00000000000 --- a/src/test/resources/org/prebid/server/it/openrtb2/telaria/test-telaria-bid-response.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "id": "request_id", - "seatbid": [ - { - "bid": [ - { - "adm": "hi", - "crid": "crid", - "cid": "cid", - "impid": "imp_id", - "exp": 120, - "id": "bid_id", - "price": 0.01, - "ext": { - "format": "VIDEO" - } - } - ] - } - ] -} diff --git a/src/test/resources/org/prebid/server/it/test-application.properties b/src/test/resources/org/prebid/server/it/test-application.properties index efabbcfeb1b..9df120154d8 100644 --- a/src/test/resources/org/prebid/server/it/test-application.properties +++ b/src/test/resources/org/prebid/server/it/test-application.properties @@ -134,7 +134,6 @@ adapters.appnexus.enabled=true adapters.appnexus.endpoint=http://localhost:8090/appnexus-exchange adapters.appnexus.usersync.redirect.url=http://usersync-url/getuid?{redirect_url} adapters.appnexus.usersync.redirect.uid-macro=$UID -adapters.appnexus.usersync.redirect.support-cors=false adapters.appnexus.aliases.mediafuse.enabled=true adapters.appnexus.aliases.mediafuse.endpoint=http://localhost:8090/mediafuse-exchange adapters.appush.enabled=true @@ -232,8 +231,6 @@ adapters.dmx.enabled=true adapters.dmx.endpoint=http://localhost:8090/dmx-exchange adapters.driftpixel.enabled=true adapters.driftpixel.endpoint=http://localhost:8090/driftpixel-exchange -adapters.dxkulture.enabled=true -adapters.dxkulture.endpoint=http://localhost:8090/dxkulture-exchange adapters.edge226.enabled=true adapters.edge226.endpoint=http://localhost:8090/edge226-exchange adapters.emtv.enabled=true @@ -300,8 +297,6 @@ adapters.impactify.enabled=true adapters.impactify.endpoint=http://localhost:8090/impactify-exchange adapters.improvedigital.enabled=true adapters.improvedigital.endpoint=http://localhost:8090/improvedigital-exchange -adapters.intertech.enabled=true -adapters.intertech.endpoint=http://localhost:8090/intertech-exchange adapters.iqx.enabled=true adapters.iqx.endpoint=http://localhost:8090/iqx-exchange adapters.iqzone.enabled=true @@ -415,7 +410,6 @@ adapters.msft.enabled=true adapters.msft.endpoint=http://localhost:8090/msft-exchange adapters.msft.usersync.redirect.url=http://usersync-url/getuid?{redirect_url} adapters.msft.usersync.redirect.uid-macro=$UID -adapters.msft.usersync.redirect.support-cors=false adapters.nativery.enabled=true adapters.nativery.endpoint=http://localhost:8090/nativery-exchange adapters.nativo.enabled=true @@ -504,7 +498,6 @@ adapters.rubicon.XAPI.Username=rubicon_user adapters.rubicon.XAPI.Password=rubicon_password adapters.rubicon.usersync.redirect.url=http://localhost:8090/rubicon-usersync?gdpr={gdpr}&gdpr_consent={gdpr_consent} adapters.rubicon.usersync.redirect.uid-macro=rubicon-macro -adapters.rubicon.usersync.redirect.support-cors=false adapters.salunamedia.enabled=true adapters.salunamedia.endpoint=http://localhost:8090/salunamedia-exchange adapters.screencore.enabled=true @@ -589,8 +582,6 @@ adapters.teads.enabled=true adapters.teads.endpoint=http://localhost:8090/teads-exchange adapters.teal.enabled=true adapters.teal.endpoint=http://localhost:8090/teal-exchange -adapters.telaria.enabled=true -adapters.telaria.endpoint=http://localhost:8090/telaria-exchange/ adapters.teqblaze.enabled=true adapters.teqblaze.endpoint=http://localhost:8090/teqblaze-exchange adapters.teqblaze.aliases.360playvid.enabled=true @@ -605,8 +596,6 @@ adapters.teqblaze.aliases.gravite.enabled=true adapters.teqblaze.aliases.gravite.endpoint=http://localhost:8090/gravite-exchange adapters.teqblaze.aliases.bidfuse.enabled=true adapters.teqblaze.aliases.bidfuse.endpoint=http://localhost:8090/bidfuse-exchange -adapters.teqblaze.aliases.adsinteractive.enabled=true -adapters.teqblaze.aliases.adsinteractive.endpoint=http://localhost:8090/adsinteractive-exchange adapters.teqblaze.aliases.progx.enabled=true adapters.teqblaze.aliases.progx.endpoint=http://localhost:8090/progx-exchange/ adapters.teqblaze.aliases.harion.enabled=true @@ -718,6 +707,7 @@ http-client.circuit-breaker.opening-interval-ms=1000 http-client.circuit-breaker.closing-interval-ms=10000 auction.tmax-upstream-response-time=0 auction.category-mapping-enabled=true +video.enable-deprecated-endpoint=true currency-converter.external-rates.enabled=true currency-converter.external-rates.url=http://localhost:8090/currency-rates amp.custom-targeting=rubicon