From 068167ac32f154499af4e5a10dd9f4b73d7180a8 Mon Sep 17 00:00:00 2001 From: Markiyan Mykush <95693607+marki1an@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:25:55 +0300 Subject: [PATCH 1/3] Test: Replaceing mock server with wiremock (#4390) Co-authored-by: osulzhenko --- docs/developers/functional-tests.md | 8 +- extra/pom.xml | 17 -- pom.xml | 11 -- .../functional/model/ResponseModel.groovy | 2 +- .../model/request/auction/Server.groovy | 2 + .../testcontainers/Dependencies.groovy | 6 +- .../container/NetworkServiceContainer.groovy | 10 +- .../testcontainers/scaffolding/Bidder.groovy | 112 ++++++----- .../scaffolding/CurrencyConversion.groovy | 29 ++- .../scaffolding/FloorsProvider.groovy | 45 +++-- .../scaffolding/HttpSettings.groovy | 80 +++----- .../scaffolding/NetworkScaffolding.groovy | 184 ++++++++---------- .../scaffolding/PrebidCache.groovy | 141 +++++++------- .../scaffolding/PubStackAnalytics.groovy | 45 +++-- .../scaffolding/StoredCache.groovy | 67 ++++--- .../scaffolding/VendorList.groovy | 77 ++++---- .../functional/tests/CacheVtrackSpec.groovy | 6 +- .../functional/tests/HttpSettingsSpec.groovy | 43 ++-- .../functional/tests/SeatNonBidSpec.groovy | 25 ++- .../tests/SecondaryBidderSpec.groovy | 14 +- .../optabletargeting/CacheStorageSpec.groovy | 4 +- .../pbruleengine/PbRuleEngineBaseSpec.groovy | 2 - .../PriceFloorsFetchingSpec.groovy | 6 +- .../PriceFloorsSignalingSpec.groovy | 4 +- .../tests/privacy/gdpr/GdprAmpSpec.groovy | 3 +- .../tests/privacy/gdpr/GdprAuctionSpec.groovy | 15 +- .../functional/util/SystemProperties.groovy | 1 - 27 files changed, 459 insertions(+), 500 deletions(-) diff --git a/docs/developers/functional-tests.md b/docs/developers/functional-tests.md index 523466fb0b0..abeb3ab38d4 100644 --- a/docs/developers/functional-tests.md +++ b/docs/developers/functional-tests.md @@ -2,8 +2,8 @@ Main language: Groovy. Project functional tests use [Spock](https://spockframework.org/) as a main testing framework. Also used [Docker](https://www.docker.com/) for running PBS and other services. -[Testcontainers](https://www.testcontainers.org/) is used as provider of lightweight, throwaway instances of PBS, MySQLContainer, MockServerContainer containers. -And [MockServer](https://www.mock-server.com/) for mocking external services. +[Testcontainers](https://www.testcontainers.org/) is used as provider of lightweight, throwaway instances of PBS, MySQLContainer, WireMock containers. +And [WireMock](https://wiremock.org/) for mocking external services. ## Getting Started @@ -64,12 +64,12 @@ Functional tests need to have name template **.\*Spec.groovy** - `/functional/testcontainers/PBSTestExtension` - allows to hook into a spec’s lifecycle to add ErrorListener using annotation `PBSTest`. - `/functional/testcontainers/TestcontainersExtension` - allow to hook into a spec’s lifecycle to start and stop support service containers using global extension. - `/functional/testcontainers/container` - responsible for creating and configuring containers. -- `/functional/testcontainers/scaffolding/NetworkScaffolding` - makes HTTP requests to a MockServer. +- `/functional/testcontainers/scaffolding/NetworkScaffolding` - makes HTTP requests to a WireMock. **Properties:** -`launchContainers` - responsible for starting the MockServer and the MySQLContainer container. Default value is false to not launch containers for unit tests. +`launchContainers` - responsible for starting containers. Default value is false to not launch containers for unit tests. `tests.max-container-count` - maximum number of simultaneously running PBS containers. Default value is 5. `skipFunctionalTests` - allow to skip funtional tests. Default value is false. `skipUnitTests` - allow to skip unit tests. Default value is false. diff --git a/extra/pom.xml b/extra/pom.xml index 556bc1e8d4a..b58ec91c678 100644 --- a/extra/pom.xml +++ b/extra/pom.xml @@ -61,8 +61,6 @@ 3.13.2 4.2.1 2.4-groovy-5.0 - - 5.15.0 6.0.0 @@ -271,21 +269,6 @@ json-logic-java ${json-logic.version} - - org.mock-server - mockserver-client-java - ${mockserver.version} - - - com.google.code.findbugs - jsr305 - - - commons-logging - commons-logging - - - diff --git a/pom.xml b/pom.xml index 85c99718bbf..9c200ca4a8d 100644 --- a/pom.xml +++ b/pom.xml @@ -316,11 +316,6 @@ testcontainers test - - org.testcontainers - testcontainers-mockserver - test - org.testcontainers testcontainers-mysql @@ -351,11 +346,6 @@ postgresql test - - org.mock-server - mockserver-client-java - test - org.influxdb influxdb-java @@ -627,7 +617,6 @@ maven-failsafe-plugin - ${mockserver.version} ${project.version} 5 false diff --git a/src/test/groovy/org/prebid/server/functional/model/ResponseModel.groovy b/src/test/groovy/org/prebid/server/functional/model/ResponseModel.groovy index 91a7f1fe9d0..5fe89f8488a 100644 --- a/src/test/groovy/org/prebid/server/functional/model/ResponseModel.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/ResponseModel.groovy @@ -1,6 +1,6 @@ package org.prebid.server.functional.model /** - * This marker interface should limit the possible values used by the MockServerClientWrapper. + * This marker interface should limit the possible values used by the WireMockClientWrapper. */ interface ResponseModel {} diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/Server.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/Server.groovy index c088163b38b..12238301ca1 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/Server.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/Server.groovy @@ -1,5 +1,6 @@ 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.ToString @@ -12,5 +13,6 @@ class Server { Integer gvlId String datacenter String endpoint + @JsonProperty("http_method") String httpMethod } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/Dependencies.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/Dependencies.groovy index 9c6407a4083..22b8e9cecae 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/Dependencies.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/Dependencies.groovy @@ -10,7 +10,6 @@ import org.testcontainers.containers.PostgreSQLContainer import org.testcontainers.lifecycle.Startables import org.testcontainers.utility.DockerImageName -import static org.prebid.server.functional.util.SystemProperties.MOCKSERVER_VERSION import static org.testcontainers.containers.localstack.LocalStackContainer.Service.S3 class Dependencies { @@ -42,7 +41,7 @@ class Dependencies { .withDatabase("prebid") .withNetwork(network) - static final NetworkServiceContainer networkServiceContainer = new NetworkServiceContainer(MOCKSERVER_VERSION) + static final NetworkServiceContainer networkServiceContainer = new NetworkServiceContainer() .withNetwork(network) static LocalStackContainer localStackContainer @@ -58,7 +57,8 @@ class Dependencies { static void stop() { if (IS_LAUNCH_CONTAINERS) { - [networkServiceContainer, mysqlContainer, localStackContainer, influxdbContainer].parallelStream() + [networkServiceContainer, mysqlContainer, localStackContainer, influxdbContainer] + .parallelStream() .forEach({ it.stop() }) } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/container/NetworkServiceContainer.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/container/NetworkServiceContainer.groovy index 8022f2e8dcc..3b732809bd5 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/container/NetworkServiceContainer.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/container/NetworkServiceContainer.groovy @@ -1,16 +1,18 @@ package org.prebid.server.functional.testcontainers.container -import org.testcontainers.containers.MockServerContainer +import org.testcontainers.containers.GenericContainer import org.testcontainers.containers.Network import org.testcontainers.utility.DockerImageName -class NetworkServiceContainer extends MockServerContainer { +class NetworkServiceContainer extends GenericContainer { - NetworkServiceContainer(String version) { - super(DockerImageName.parse("mockserver/mockserver:mockserver-$version")) + NetworkServiceContainer() { + super(DockerImageName.parse("wiremock/wiremock:3.3.1")) def aliasWithTopLevelDomain = "${getNetworkAliases().first()}.com".toString() withCreateContainerCmdModifier { it.withHostName(aliasWithTopLevelDomain) } setNetworkAliases([aliasWithTopLevelDomain]) + withCommand("--disable-gzip") + withExposedPorts(8080) } String getHostAndPort() { diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/Bidder.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/Bidder.groovy index bb7c8bc0d47..94e4b16583f 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/Bidder.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/Bidder.groovy @@ -1,60 +1,81 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.matchers.TimeToLive -import org.mockserver.matchers.Times -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpResponse -import org.prebid.server.functional.model.request.auction.Banner +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder import org.prebid.server.functional.model.request.auction.BidRequest -import org.prebid.server.functional.model.request.auction.Format -import org.prebid.server.functional.model.request.auction.Imp -import org.prebid.server.functional.model.response.auction.BidResponse -import org.testcontainers.containers.MockServerContainer +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer -import static java.util.concurrent.TimeUnit.MILLISECONDS -import static java.util.concurrent.TimeUnit.SECONDS -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.OK_200 -import static org.mockserver.model.JsonPathBody.jsonPath +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.matchingJsonPath +import static com.github.tomakehurst.wiremock.client.WireMock.post +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo +import static org.apache.http.HttpStatus.SC_OK class Bidder extends NetworkScaffolding { - Bidder(MockServerContainer mockServerContainer, String endpoint = "/auction") { - super(mockServerContainer, endpoint) + private static final String DEFAULT_BODY_RESPONSE = + ''' + { + "id": "{{jsonPath request.body '$.id'}}", + "seatbid": [ + { + "bid": [ + {{#each (jsonPath request.body '$.imp')}} + { + "id": "bid-{{randomInt}}", + "impid": "{{this.id}}", + "price": 10.0, + {{#if this.banner}} + "w": {{this.banner.format.[0].w}}, + "h": {{this.banner.format.[0].h}}, + {{/if}} + "crid": "creative-{{@index}}" + }{{#unless @last}},{{/unless}} + {{/each}} + ], + "seat": "generic" + } + ] + } + ''' + + Bidder(NetworkServiceContainer wireMockContainer, String endpoint = "/auction") { + super(wireMockContainer, endpoint) } - @Override - protected HttpRequest getRequest(String bidRequestId) { - request().withPath(endpoint) - .withBody(jsonPath("\$[?(@.id == '$bidRequestId')]")) + protected RequestPattern getRequest() { + postRequestedFor(urlEqualTo(endpoint)) + .build() } @Override - protected HttpRequest getRequest() { - request().withPath(endpoint) + protected RequestPatternBuilder getRequest(String bidRequestId) { + postRequestedFor(urlPathEqualTo(endpoint)) + .withRequestBody(matchingJsonPath("\$.id", equalTo(bidRequestId))) } - HttpRequest getRequest(String bidRequestId, String requestMatchPath) { - request().withPath(endpoint) - .withBody(jsonPath("\$[?(@.$requestMatchPath == '$bidRequestId')]")) + RequestPattern getRequest(String bidRequestId, String requestMatchPath) { + postRequestedFor(urlPathEqualTo(endpoint)) + .withRequestBody(matchingJsonPath("\$[?(@.${requestMatchPath} == '${bidRequestId}')]")) + .build() } @Override void setResponse() { - mockServerClient.when(request().withPath(endpoint), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { request -> - request.withPath(endpoint) - ? response().withStatusCode(OK_200.code()).withBody(getBodyByRequest(request)) - : HttpResponse.notFoundResponse() - } + setResponseWithDelay(0) } - void setResponseWithDelay(Long dilayTimeoutMillisecond = 5000) { - mockServerClient.when(request().withPath(endpoint), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond {request -> request.withPath(endpoint) - ? response().withDelay(MILLISECONDS, dilayTimeoutMillisecond).withStatusCode(OK_200.code()).withBody(getBodyByRequest(request)) - : HttpResponse.notFoundResponse()} + void setResponseWithDelay(Integer delayTimeoutMillisecond = 5_000) { + wireMockClient.register(post(urlPathEqualTo(endpoint)) + .atPriority(Integer.MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_OK) + .withFixedDelay(delayTimeoutMillisecond) + .withTransformers("response-template") + .withBody(DEFAULT_BODY_RESPONSE))) } List getBidderRequests(String bidRequestId) { @@ -75,21 +96,4 @@ class Bidder extends NetworkScaffolding { Map> getLastRecordedBidderRequestHeaders(String bidRequestId) { return getLastRecordedRequestHeaders(bidRequestId) } - - private String getBodyByRequest(HttpRequest request) { - def requestString = request.bodyAsString - def jsonNode = toJsonNode(requestString) - def id = jsonNode.get("id").asText() - def impNode = jsonNode.get("imp") - def imps = impNode.collect { - def formatNode = it.get("banner") != null ? it.get("banner").get("format") : null - new Imp(id: it.get("id").asText(), - banner: formatNode != null - ? new Banner(format: [new Format(width: formatNode.first().get("w").asInt(), height: formatNode.first().get("h").asInt())]) - : null) - } - def bidRequest = new BidRequest(id: id, imp: imps) - def response = BidResponse.getDefaultBidResponse(bidRequest) - encode(response) - } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/CurrencyConversion.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/CurrencyConversion.groovy index 6246f8c9f4d..f3be15dc102 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/CurrencyConversion.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/CurrencyConversion.groovy @@ -1,12 +1,12 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.model.HttpRequest +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder import org.prebid.server.functional.model.mock.services.currencyconversion.CurrencyConversionRatesResponse -import org.testcontainers.containers.MockServerContainer +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.OK_200 +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo import static org.prebid.server.functional.util.CurrencyUtil.DEFAULT_CURRENCY_RATES class CurrencyConversion extends NetworkScaffolding { @@ -14,29 +14,26 @@ class CurrencyConversion extends NetworkScaffolding { static final String CURRENCY_ENDPOINT_PATH = "/currency" private static final CurrencyConversionRatesResponse DEFAULT_RATES_RESPONSE = CurrencyConversionRatesResponse.getDefaultCurrencyConversionRatesResponse(DEFAULT_CURRENCY_RATES) - CurrencyConversion(MockServerContainer mockServerContainer) { - super(mockServerContainer, CURRENCY_ENDPOINT_PATH) + CurrencyConversion(NetworkServiceContainer wireMockContainer) { + super(wireMockContainer, CURRENCY_ENDPOINT_PATH) } void setCurrencyConversionRatesResponse(CurrencyConversionRatesResponse conversionRatesResponse = DEFAULT_RATES_RESPONSE) { - setResponse(request, conversionRatesResponse) + setResponse(getRequest(), conversionRatesResponse) } @Override void setResponse() { - mockServerClient.when(request().withPath(endpoint)) - .respond(response().withStatusCode(OK_200.code())) + throw new UnsupportedOperationException() } @Override - protected HttpRequest getRequest(String ignored) { - request().withMethod("GET") - .withPath(CURRENCY_ENDPOINT_PATH) + protected RequestPattern getRequest() { + getRequestedFor(urlEqualTo(CURRENCY_ENDPOINT_PATH)).build() } @Override - protected HttpRequest getRequest() { - request().withMethod("GET") - .withPath(CURRENCY_ENDPOINT_PATH) + protected RequestPatternBuilder getRequest(String value) { + throw new UnsupportedOperationException() } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/FloorsProvider.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/FloorsProvider.groovy index 77c18b09088..8997d1010d7 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/FloorsProvider.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/FloorsProvider.groovy @@ -1,43 +1,42 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.matchers.TimeToLive -import org.mockserver.matchers.Times -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpResponse +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder import org.prebid.server.functional.model.pricefloors.PriceFloorData -import org.testcontainers.containers.MockServerContainer +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.OK_200 +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse +import static com.github.tomakehurst.wiremock.client.WireMock.any +import static com.github.tomakehurst.wiremock.client.WireMock.anyRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching +import static org.apache.http.HttpStatus.SC_OK class FloorsProvider extends NetworkScaffolding { public static final String FLOORS_ENDPOINT = "/floors-provider/" - FloorsProvider(MockServerContainer mockServerContainer) { - super(mockServerContainer, FLOORS_ENDPOINT) + FloorsProvider(NetworkServiceContainer wireMockContainer) { + super(wireMockContainer, FLOORS_ENDPOINT) } - @Override - protected HttpRequest getRequest(String accountId) { - request().withPath(FLOORS_ENDPOINT + accountId) + protected RequestPattern getRequest() { + anyRequestedFor(urlEqualTo(FLOORS_ENDPOINT)) + .build() } @Override - protected HttpRequest getRequest() { - request().withPath(FLOORS_ENDPOINT) + protected RequestPatternBuilder getRequest(String accountId) { + getRequestedFor(urlEqualTo("$FLOORS_ENDPOINT$accountId")) } @Override void setResponse() { - mockServerClient.when(request().withPath("^.*$endpoint.*\$"), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond{request -> request.withPath(endpoint) - ? response().withStatusCode(OK_200.code()).withBody(defaultResponse) - : HttpResponse.notFoundResponse()} - } - - private String getDefaultResponse() { - encode(PriceFloorData.priceFloorData) + wireMockClient.register(any(urlPathMatching("${endpoint}.*")) + .atPriority(Integer.MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_OK) + .withBody(encode(PriceFloorData.priceFloorData)))) } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/HttpSettings.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/HttpSettings.groovy index 5af648b2bc0..31735a5a9b8 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/HttpSettings.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/HttpSettings.groovy @@ -1,16 +1,17 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.matchers.Times -import org.mockserver.model.Header -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpStatusCode +import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder +import com.github.tomakehurst.wiremock.stubbing.StubMapping import org.prebid.server.functional.model.ResponseModel -import org.testcontainers.containers.MockServerContainer +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.OK_200 -import static org.mockserver.model.MediaType.APPLICATION_JSON +import static com.github.tomakehurst.wiremock.client.WireMock.anyRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo +import static org.apache.http.HttpStatus.SC_OK class HttpSettings extends NetworkScaffolding { @@ -18,64 +19,45 @@ class HttpSettings extends NetworkScaffolding { private static final String RFC_ENDPOINT = "/stored-requests-rfc" private static final String AMP_ENDPOINT = "/amp-stored-requests" - HttpSettings(MockServerContainer mockServerContainer) { - super(mockServerContainer, ENDPOINT) + HttpSettings(NetworkServiceContainer wireMockContainer, String endpoint = ENDPOINT) { + super(wireMockContainer, endpoint) } - @Override - protected HttpRequest getRequest(String accountId) { - request().withPath(ENDPOINT) - .withQueryStringParameter("account-ids", "[\"$accountId\"]") + protected RequestPattern getRequest() { + anyRequestedFor(urlPathEqualTo(endpoint)).build() } @Override - protected HttpRequest getRequest() { - request().withPath(ENDPOINT) + protected RequestPatternBuilder getRequest(String accountId) { + getRequestedFor(urlPathEqualTo(endpoint)) + .withQueryParam("account-ids", equalTo("""["$accountId"]""")) } @Override void setResponse() { + throw new UnsupportedOperationException() } - protected HttpRequest getRfcRequest(String accountId) { - request().withPath(RFC_ENDPOINT) - .withQueryStringParameter("account-id", accountId) + protected RequestPatternBuilder getRfcRequestPattern(String accountId) { + anyRequestedFor(urlPathEqualTo(endpoint)) + .withQueryParam("account-id", equalTo(accountId)) } - void setRfcResponse(String value, - ResponseModel responseModel, - HttpStatusCode statusCode = OK_200, - Map headers = [:]) { - def responseHeaders = headers.collect { new Header(it.key, it.value) } - def mockResponse = encode(responseModel) - mockServerClient.when(getRfcRequest(value), Times.unlimited()) - .respond(response().withStatusCode(statusCode.code()) - .withBody(mockResponse, APPLICATION_JSON) - .withHeaders(responseHeaders)) - } - - int getRfcRequestCount(String value) { - mockServerClient.retrieveRecordedRequests(getRfcRequest(value)) - .size() - } + ResponseModel responseModel, + Map headers = [:]) { - @Override - void reset() { - super.reset(ENDPOINT) - super.reset(RFC_ENDPOINT) - super.reset(AMP_ENDPOINT) - } + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withStatus(SC_OK) + .withHeader("Content-Type", "application/json") + .withBody(encode(responseModel)) - static String getEndpoint() { - return ENDPOINT - } + headers.each { responseBuilder.withHeader(it.key, it.value) } - static String getAmpEndpoint() { - return AMP_ENDPOINT + wireMockClient.register(new StubMapping(getRfcRequestPattern(value).build(), responseBuilder.build())) } - static String getRfcEndpoint() { - return RFC_ENDPOINT + int getRfcRequestCount(String value) { + return wireMockClient.find(getRfcRequestPattern(value)).size() } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/NetworkScaffolding.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/NetworkScaffolding.groovy index 8ac5ad41483..66f83d456bf 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/NetworkScaffolding.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/NetworkScaffolding.groovy @@ -1,156 +1,143 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.client.MockServerClient -import org.mockserver.matchers.Times -import org.mockserver.model.ClearType -import org.mockserver.model.Header -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpStatusCode +import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder +import com.github.tomakehurst.wiremock.client.WireMock +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder +import com.github.tomakehurst.wiremock.stubbing.StubMapping import org.prebid.server.functional.model.ResponseModel +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer import org.prebid.server.functional.util.ObjectMapperWrapper -import org.testcontainers.containers.MockServerContainer -import java.util.concurrent.TimeUnit - -import static java.util.concurrent.TimeUnit.SECONDS -import static org.mockserver.model.ClearType.ALL -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.OK_200 -import static org.mockserver.model.MediaType.APPLICATION_JSON +import static org.apache.http.HttpStatus.SC_OK abstract class NetworkScaffolding implements ObjectMapperWrapper { - protected MockServerClient mockServerClient + protected WireMock wireMockClient protected String endpoint - NetworkScaffolding(MockServerContainer mockServerContainer, String endpoint) { - this.mockServerClient = new MockServerClient(mockServerContainer.host, mockServerContainer.serverPort) + NetworkScaffolding(NetworkServiceContainer wireMockContainer, String endpoint) { + this.wireMockClient = new WireMock(wireMockContainer.host, wireMockContainer.firstMappedPort) this.endpoint = endpoint } - abstract protected HttpRequest getRequest(String value) + abstract protected RequestPattern getRequest() - abstract protected HttpRequest getRequest() + abstract protected RequestPatternBuilder getRequest(String value) abstract void setResponse() - int getRequestCount(HttpRequest httpRequest) { - mockServerClient.retrieveRecordedRequests(httpRequest) - .size() + int getRequestCount(RequestPatternBuilder requestPatternBuilder) { + return wireMockClient.find(requestPatternBuilder).size() } int getRequestCount(String value) { - mockServerClient.retrieveRecordedRequests(getRequest(value)) - .size() - } - - int getRequestCount() { - mockServerClient.retrieveRecordedRequests(request) - .size() + return wireMockClient.find(getRequest(value)).size() } - void setResponse(HttpRequest httpRequest, + void setResponse(RequestPattern requestPattern, ResponseModel responseModel, - HttpStatusCode statusCode = OK_200, - Times times = Times.exactly(1)) { - def mockResponse = encode(responseModel) - mockServerClient.when(httpRequest, times) - .respond(response().withStatusCode(statusCode.code()) - .withBody(mockResponse, APPLICATION_JSON)) + Integer statusCode = SC_OK) { + + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withStatus(statusCode) + .withHeader("Content-Type", "application/json") + .withBody(encode(responseModel)) + + wireMockClient.register(new StubMapping(requestPattern, responseBuilder.build())) } void setResponse(String value, ResponseModel responseModel, Map headers) { - setResponse(value, responseModel, OK_200, headers) + setResponse(value, responseModel, SC_OK, headers) } void setResponse(String value, ResponseModel responseModel, - HttpStatusCode statusCode = OK_200, + Integer statusCode = SC_OK, Map headers = [:]) { - def responseHeaders = headers.collect { new Header(it.key, it.value) } - def mockResponse = encode(responseModel) - mockServerClient.when(getRequest(value), Times.unlimited()) - .respond(response().withStatusCode(statusCode.code()) - .withBody(mockResponse, APPLICATION_JSON) - .withHeaders(responseHeaders)) + + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withStatus(statusCode) + .withHeader("Content-Type", "application/json") + .withBody(encode(responseModel)) + + headers.each { responseBuilder.withHeader(it.key, it.value) } + + wireMockClient.register(new StubMapping(getRequest(value).build(), responseBuilder.build())) } void setResponse(String value, ResponseModel responseModel, int responseDelay, - HttpStatusCode statusCode = OK_200, - Map headers = [:]) { - def responseHeaders = headers.collect { new Header(it.key, it.value) } - def mockResponse = encode(responseModel) - mockServerClient.when(getRequest(value), Times.unlimited()) - .respond(response().withStatusCode(statusCode.code()) - .withBody(mockResponse, APPLICATION_JSON) - .withHeaders(responseHeaders) - .withDelay(TimeUnit.MILLISECONDS, responseDelay)) + Integer statusCode = SC_OK) { + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withStatus(statusCode) + .withHeader("Content-Type", "application/json") + .withBody(encode(responseModel)) + .withFixedDelay(responseDelay) + + wireMockClient.register(new StubMapping(getRequest(value).build(), responseBuilder.build())) } void setResponse(String value, String mockResponse) { - mockServerClient.when(getRequest(value), Times.exactly(1)) - .respond(response().withStatusCode(OK_200.code()) - .withBody(mockResponse, APPLICATION_JSON)) + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withStatus(SC_OK) + .withHeader("Content-Type", "application/json") + .withBody(mockResponse) + + wireMockClient.register(new StubMapping(getRequest(value).build(), responseBuilder.build())) } void setResponse(ResponseModel responseModel) { - def mockResponse = encode(responseModel) - mockServerClient.when(request().withPath(endpoint)) - .respond(response().withStatusCode(OK_200.code()) - .withBody(mockResponse, APPLICATION_JSON)) - } + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withStatus(SC_OK) + .withHeader("Content-Type", "application/json") + .withBody(encode(responseModel)) - void setResponse(String value, HttpStatusCode httpStatusCode) { - mockServerClient.when(getRequest(value), Times.exactly(1)) - .respond(response().withStatusCode(httpStatusCode.code())) + wireMockClient.register(new StubMapping(getRequest(), responseBuilder.build())) } - void setResponse(String value, HttpStatusCode httpStatusCode, String errorText) { - mockServerClient.when(getRequest(value), Times.exactly(1)) - .respond(response().withStatusCode(httpStatusCode.code()) - .withBody(errorText, APPLICATION_JSON)) + void setResponse(String value, Integer statusCode) { + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withStatus(statusCode) + + wireMockClient.register(new StubMapping(getRequest(value).build(), responseBuilder.build())) } void setResponseWithTimeout(String value, int timeoutSec = 5) { - mockServerClient.when(getRequest(value), Times.exactly(1)) - .respond(response().withDelay(SECONDS, timeoutSec)) - } + def responseBuilder = ResponseDefinitionBuilder.responseDefinition() + .withFixedDelay(timeoutSec * 1000) - protected def getRequestAndResponse() { - mockServerClient.retrieveRecordedRequestsAndResponses(request()) + wireMockClient.register(new StubMapping(getRequest(value).build(), responseBuilder.build())) } - List getRecordedRequestsBody(HttpRequest httpRequest) { - mockServerClient.retrieveRecordedRequests(httpRequest) - .collect { it.body.toString() } + List getRecordedRequestsBody(RequestPatternBuilder requestPatternBuilder) { + wireMockClient.find(requestPatternBuilder).bodyAsString } - String getRecordedRequestsQueryParameters(HttpRequest httpRequest) { - mockServerClient.retrieveRecordedRequests(httpRequest) - .collect { it -> it.queryStringParameters.multimap.toString()} + String getRecordedRequestsQueryParameters(RequestPatternBuilder requestPatternBuilder) { + wireMockClient.find(requestPatternBuilder) + .collect { + it.queryParams.collectEntries { k, v -> + [(k): v.values()] + }.toString() + } } List getRecordedRequestsBody(String value) { - mockServerClient.retrieveRecordedRequests(getRequest(value)) - .collect { it.body.toString() } - } - - List getRecordedRequestsBody() { - mockServerClient.retrieveRecordedRequests(request) - .collect { it.body.toString() } + wireMockClient.find(getRequest(value)).bodyAsString } - Map> getLastRecordedRequestHeaders(HttpRequest httpRequest) { - getRecordedRequestsHeaders(httpRequest).last() + Map> getLastRecordedRequestHeaders(RequestPatternBuilder requestPatternBuilder) { + getRecordedRequestsHeaders(requestPatternBuilder).last() } - List>> getRecordedRequestsHeaders(HttpRequest httpRequest) { - getRequestsHeaders(mockServerClient.retrieveRecordedRequests(httpRequest) as List) + List>> getRecordedRequestsHeaders(RequestPatternBuilder builder) { + wireMockClient.find(builder).collect { req -> + req.headers.all().collectEntries { [it.key(), it.values()*.toString()] } + } } Map> getLastRecordedRequestHeaders(String value) { @@ -158,17 +145,12 @@ abstract class NetworkScaffolding implements ObjectMapperWrapper { } List>> getRecordedRequestsHeaders(String value) { - getRequestsHeaders(mockServerClient.retrieveRecordedRequests(getRequest(value)) as List) + getRecordedRequestsHeaders(getRequest(value)) } - // should be used instead of mockServerClient.reset due to memory leak on library - void reset(String resetEndpoint = endpoint, ClearType clearType = ALL) { - mockServerClient.clear(request().withPath(resetEndpoint), clearType) - } - - private static List>> getRequestsHeaders(List httpRequests) { - httpRequests*.headerList*.collectEntries { header -> - [header.name as String, header.values.collect { it as String }] - } + void reset() { + wireMockClient.resetMappings() + wireMockClient.resetScenarios() + wireMockClient.resetRequests() } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PrebidCache.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PrebidCache.groovy index 66ce54a9531..121f9f2ab96 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PrebidCache.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PrebidCache.groovy @@ -1,39 +1,49 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.matchers.TimeToLive -import org.mockserver.matchers.Times -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpResponse -import org.prebid.server.functional.model.mock.services.prebidcache.response.CacheObject -import org.prebid.server.functional.model.mock.services.prebidcache.response.PrebidCacheResponse +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder import org.prebid.server.functional.model.request.cache.BidCacheRequest import org.prebid.server.functional.model.response.vtrack.TransferValue +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer import org.prebid.server.functional.util.PBSUtils -import org.testcontainers.containers.MockServerContainer -import java.util.stream.Stream - -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.INTERNAL_SERVER_ERROR_500 -import static org.mockserver.model.HttpStatusCode.OK_200 -import static org.mockserver.model.JsonPathBody.jsonPath +import static java.lang.Integer.MAX_VALUE +import static com.github.tomakehurst.wiremock.client.WireMock.post +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo +import static com.github.tomakehurst.wiremock.client.WireMock.matchingJsonPath +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse +import static com.github.tomakehurst.wiremock.client.WireMock.get +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor +import static org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR +import static org.apache.hc.core5.http.HttpStatus.SC_OK class PrebidCache extends NetworkScaffolding { private static final String CACHE_ENDPOINT = "/cache" + private static final String RESPONSE_BODY = + ''' + { + "responses" : [ + {{#each (jsonPath request.body '$.puts')}} + { + "uuid" : "{{randomValue type='UUID'}}" + }{{#unless @last}},{{/unless}} + {{/each}} + ] + } + ''' - PrebidCache(MockServerContainer mockServerContainer) { - super(mockServerContainer, CACHE_ENDPOINT) - } - String getVTracGetRequestParams() { - getRecordedRequestsQueryParameters(request().withMethod("GET") - .withPath(CACHE_ENDPOINT)) + PrebidCache(NetworkServiceContainer wireMockContainer) { + super(wireMockContainer, CACHE_ENDPOINT) } - void setXmlCacheResponse(String payload, PrebidCacheResponse prebidCacheResponse) { - setResponse(getXmlCacheRequest(payload), prebidCacheResponse) + String getVTracGetRequestParams() { + getRecordedRequestsQueryParameters(getRequestedFor(urlPathEqualTo(CACHE_ENDPOINT))) } int getXmlRequestCount(String payload) { @@ -44,84 +54,63 @@ class PrebidCache extends NetworkScaffolding { getRecordedRequestsBody(getXmlCacheRequest(payload)) } - Map getXmlRecordedRequestHeaders(String payload) { - getLastRecordedRequestHeaders(getXmlCacheRequest(payload)) + protected RequestPattern getRequest() { + postRequestedFor(urlEqualTo(endpoint)) + .build() } @Override - protected HttpRequest getRequest(String impId) { - request().withMethod("POST") - .withPath(CACHE_ENDPOINT) - .withBody(jsonPath("\$.puts[?(@.value.impid == '$impId')]")) + protected RequestPatternBuilder getRequest(String impId) { + postRequestedFor(urlEqualTo(CACHE_ENDPOINT)) + .withRequestBody(matchingJsonPath("\$.puts[?(@.value.impid == '$impId')]")) } + List getRecordedRequests(String impId) { - mockServerClient.retrieveRecordedRequests(getRequest(impId)) - .collect { decode(it.body.toString(), BidCacheRequest) } + wireMockClient.find(getRequest(impId)).bodyAsString + .collect { decode(it, BidCacheRequest) } } Map> getRequestHeaders(String impId) { getLastRecordedRequestHeaders(getRequest(impId)) } - @Override - HttpRequest getRequest() { - request().withMethod("POST") - .withPath(CACHE_ENDPOINT) - } - @Override void setResponse() { - mockServerClient.when(request() - .withMethod("POST") - .withPath(endpoint), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { request -> - request.withPath(endpoint) - ? response().withStatusCode(OK_200.code()).withBody(getBodyByRequest(request)) - : HttpResponse.notFoundResponse() - } + wireMockClient.register(post(urlPathEqualTo(endpoint)) + .atPriority(MAX_VALUE) + .willReturn(aResponse() + .withTransformers("response-template") + .withStatus(SC_OK) + .withBody(RESPONSE_BODY))) } void setGetResponse(TransferValue vTrackResponse) { - mockServerClient.when(request() - .withMethod("GET") - .withPath(endpoint), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { request -> - request.withPath(endpoint) - ? response().withStatusCode(OK_200.code()).withBody(encode(vTrackResponse)) - : HttpResponse.notFoundResponse() - } + wireMockClient.register(get(urlPathEqualTo(endpoint)) + .atPriority(MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_OK) + .withBody(encode(vTrackResponse)))) } void setInvalidPostResponse() { - mockServerClient.when(request() - .withMethod("POST") - .withPath(endpoint), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { response().withStatusCode(INTERNAL_SERVER_ERROR_500.code()) } + wireMockClient.register(post(urlPathEqualTo(endpoint)) + .atPriority(MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_INTERNAL_SERVER_ERROR))) } void setInvalidGetResponse(String uuid, String errorMessage = PBSUtils.randomString) { - mockServerClient.when(request() - .withMethod("GET") - .withPath(endpoint) - .withQueryStringParameter("uuid", uuid), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { response().withBody(errorMessage).withStatusCode(INTERNAL_SERVER_ERROR_500.code()) } - - } - - private static HttpRequest getXmlCacheRequest(String payload) { - request().withMethod("POST") - .withPath(CACHE_ENDPOINT) - .withBody(jsonPath("\$.puts[?(@.value =~/^.*$payload.*\$/)]")) + wireMockClient.register(get(urlPathEqualTo(endpoint)) + .withQueryParam("uuid", equalTo(uuid)) + .atPriority(MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_INTERNAL_SERVER_ERROR) + .withBody(errorMessage))) } - private String getBodyByRequest(HttpRequest request) { - def requestString = request.bodyAsString - def jsonNode = toJsonNode(requestString) - def putsSize = jsonNode.get("puts").size() - def cacheObjects = Stream.generate(CacheObject::getDefaultCacheObject) - .limit(putsSize) - .toList() - encode(new PrebidCacheResponse(responses: cacheObjects)) + private static RequestPatternBuilder getXmlCacheRequest(String payload) { + postRequestedFor(urlEqualTo(CACHE_ENDPOINT)) + .withRequestBody(matchingJsonPath("\$.puts[?(@.value =~ /.*$payload.*/)]")) } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PubStackAnalytics.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PubStackAnalytics.groovy index a3bd0e9ddfb..71372108a2b 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PubStackAnalytics.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/PubStackAnalytics.groovy @@ -1,37 +1,50 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.model.HttpRequest -import org.testcontainers.containers.MockServerContainer - -import static org.mockserver.model.HttpRequest.request +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder +import org.prebid.server.functional.model.mock.services.pubstack.PubStackResponse +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse +import static com.github.tomakehurst.wiremock.client.WireMock.get +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo +import static org.apache.http.HttpStatus.SC_OK class PubStackAnalytics extends NetworkScaffolding { private static final String CONFIG_ENDPOINT = "/bootstrap" private static final String ANALYTICS_ENDPOINT = "/intake/auction" - PubStackAnalytics(MockServerContainer mockServerContainer) { - super(mockServerContainer, CONFIG_ENDPOINT) + PubStackAnalytics(NetworkServiceContainer wireMockContainer) { + super(wireMockContainer, CONFIG_ENDPOINT) } @Override - protected HttpRequest getRequest() { - request().withPath(ANALYTICS_ENDPOINT) + protected RequestPattern getRequest() { + postRequestedFor(urlEqualTo(ANALYTICS_ENDPOINT)) + .build() } @Override - void setResponse() { - + protected RequestPatternBuilder getRequest(String value) { + throw new UnsupportedOperationException() } @Override - protected HttpRequest getRequest(String value) { - request().withPath(ANALYTICS_ENDPOINT) + void setResponse() { + throw new UnsupportedOperationException() } - @Override - void reset() { - super.reset(CONFIG_ENDPOINT) - super.reset(ANALYTICS_ENDPOINT) + void setResponse(PubStackResponse pubStackResponse) { + wireMockClient.register(get(urlPathEqualTo(endpoint)) + .atPriority(Integer.MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_OK) + .withTransformers("response-template") + .withBody(encode(pubStackResponse)) + )) + } } diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/StoredCache.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/StoredCache.groovy index c8ad7caa924..959729d79f9 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/StoredCache.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/StoredCache.groovy @@ -1,9 +1,7 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.matchers.TimeToLive -import org.mockserver.matchers.Times -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpStatusCode +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder import org.prebid.server.functional.model.config.Audience import org.prebid.server.functional.model.config.AudienceId import org.prebid.server.functional.model.config.IdentifierType @@ -12,59 +10,68 @@ import org.prebid.server.functional.model.config.TargetingOrtb import org.prebid.server.functional.model.config.TargetingResult import org.prebid.server.functional.model.request.auction.BidRequest import org.prebid.server.functional.model.request.auction.User +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer import org.prebid.server.functional.util.PBSUtils -import org.testcontainers.containers.MockServerContainer import java.nio.charset.StandardCharsets -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.NO_CONTENT_204 -import static org.mockserver.model.HttpStatusCode.OK_200 +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse +import static com.github.tomakehurst.wiremock.client.WireMock.get +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.post +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo +import static org.apache.http.HttpStatus.SC_NO_CONTENT +import static org.apache.http.HttpStatus.SC_OK class StoredCache extends NetworkScaffolding { private static final String CACHE_ENDPOINT = "/stored-cache" - StoredCache(MockServerContainer mockServerContainer) { - super(mockServerContainer, CACHE_ENDPOINT) + StoredCache(NetworkServiceContainer wireMockContainer) { + super(wireMockContainer, CACHE_ENDPOINT) } - @Override - protected HttpRequest getRequest(String impId) {} + protected RequestPattern getRequest() { + getRequestedFor(urlEqualTo(endpoint)) + .build() + } @Override - HttpRequest getRequest() { - request().withMethod("GET") - .withPath(endpoint) + protected RequestPatternBuilder getRequest(String bidRequestId) { + throw new UnsupportedOperationException() } @Override - void setResponse() {} + void setResponse() { + throw new UnsupportedOperationException() + } TargetingResult setTargetingResponse(BidRequest bidRequest, OptableTargetingConfig config) { def targetingResult = getBodyByRequest(bidRequest) - mockServerClient.when(request() - .withMethod("GET") - .withPath("$endpoint${QueryBuilder.buildQuery(bidRequest, config)}"), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { response().withStatusCode(OK_200.code()).withBody(encode(targetingResult)) } + wireMockClient.register(get(urlPathEqualTo("$endpoint${QueryBuilder.buildQuery(bidRequest, config)}")) + .atPriority(Integer.MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_OK) + .withBody(encode(targetingResult)))) targetingResult } TargetingResult setCachedTargetingResponse(BidRequest bidRequest) { def targetingResult = getBodyByRequest(bidRequest) - mockServerClient.when(request() - .withMethod("GET") - .withPath(endpoint), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { response().withStatusCode(OK_200.code()).withBody(encode(targetingResult)) } + wireMockClient.register(get(urlPathEqualTo(endpoint)) + .atPriority(Integer.MAX_VALUE) + .willReturn(aResponse() + .withStatus(SC_OK) + .withBody(encode(targetingResult)))) targetingResult } - void setCachingResponse(HttpStatusCode statusCode = NO_CONTENT_204) { - mockServerClient.when(request() - .withMethod("POST") - .withPath(endpoint), Times.unlimited(), TimeToLive.unlimited(), -10) - .respond { response().withStatusCode(statusCode.code()) } + void setCachingResponse(Integer statusCode = SC_NO_CONTENT) { + wireMockClient.register(post(urlPathEqualTo(endpoint)) + .atPriority(Integer.MAX_VALUE) + .willReturn(aResponse() + .withStatus(statusCode))) } private static TargetingResult getBodyByRequest(BidRequest bidRequest) { diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/VendorList.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/VendorList.groovy index 29b0060af27..ec561b073b7 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/VendorList.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/scaffolding/VendorList.groovy @@ -1,15 +1,17 @@ package org.prebid.server.functional.testcontainers.scaffolding -import org.mockserver.matchers.TimeToLive -import org.mockserver.matchers.Times -import org.mockserver.model.Delay -import org.mockserver.model.HttpRequest +import com.github.tomakehurst.wiremock.matching.RequestPattern +import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder +import org.prebid.server.functional.testcontainers.container.NetworkServiceContainer import org.prebid.server.functional.util.privacy.TcfConsent -import org.testcontainers.containers.MockServerContainer -import static org.mockserver.model.HttpRequest.request -import static org.mockserver.model.HttpResponse.response -import static org.mockserver.model.HttpStatusCode.OK_200 +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse +import static com.github.tomakehurst.wiremock.client.WireMock.any +import static com.github.tomakehurst.wiremock.client.WireMock.anyRequestedFor +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo +import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching +import static com.github.tomakehurst.wiremock.stubbing.Scenario.STARTED +import static org.apache.http.HttpStatus.SC_OK import static org.prebid.server.functional.model.mock.services.vendorlist.GvlSpecificationVersion.V2 import static org.prebid.server.functional.model.mock.services.vendorlist.GvlSpecificationVersion.V3 import static org.prebid.server.functional.model.mock.services.vendorlist.VendorListResponse.Vendor @@ -24,52 +26,61 @@ class VendorList extends NetworkScaffolding { private final String fileName - VendorList(MockServerContainer mockServerContainer, String fileName = "vendor-list.json") { - super(mockServerContainer, ENDPOINT_TEMPLATE.replace("{FILE_NAME}", fileName)) + VendorList(NetworkServiceContainer networkServiceContainer, String fileName = "vendor-list.json") { + super(networkServiceContainer, ENDPOINT_TEMPLATE.replace("{FILE_NAME}", fileName)) this.fileName = fileName } @Override - protected HttpRequest getRequest(String value) { - return null + protected RequestPattern getRequest(TcfPolicyVersion tcfPolicyVersion = TCF_POLICY_V2) { + anyRequestedFor(urlEqualTo(endpoint.replace("{TCF_POLICY}", tcfPolicyVersion.vendorListVersion.toString()))) + .build() } @Override - protected HttpRequest getRequest() { - request().withPath(endpoint) - } - - @Override - void reset() { - TcfPolicyVersion.values().each { - super.reset("/v${it.vendorListVersion}/${fileName}") - } + protected RequestPatternBuilder getRequest(String value) { + throw new UnsupportedOperationException() } void setResponse(TcfPolicyVersion tcfPolicyVersion = TCF_POLICY_V2, - Delay delay = null, + Integer delaySeconds = null, Map vendors = [(GENERIC_VENDOR_ID): Vendor.getDefaultVendor(GENERIC_VENDOR_ID)], Integer vendorListVersion = TcfConsent.VENDOR_LIST_VERSION, - Times times = Times.unlimited()) { + Integer times = Integer.MAX_VALUE) { - def prepareEndpoint = endpoint.replace("{TCF_POLICY}", tcfPolicyVersion.vendorListVersion.toString()) - def prepareEncodeResponseBody = encode(defaultVendorListResponse.tap { + def preparedEndpoint = endpoint.replace("{TCF_POLICY}", tcfPolicyVersion.vendorListVersion.toString()) + + def preparedEncodedResponseBody = encode(defaultVendorListResponse.tap { it.tcfPolicyVersion = tcfPolicyVersion.vendorListVersion it.vendors = vendors it.vendorListVersion = vendorListVersion it.gvlSpecificationVersion = tcfPolicyVersion >= TcfPolicyVersion.TCF_POLICY_V4 ? V3 : V2 }) - def mockResponse = response() - .withStatusCode(OK_200.code()) - .withBody(prepareEncodeResponseBody) + def response = aResponse() + .withStatus(SC_OK) + .withBody(preparedEncodedResponseBody) + + if (delaySeconds != null) { + response.withFixedDelay(delaySeconds * 1000) + } - delay?.with { - mockResponse.withDelay(it) + if (times == Integer.MAX_VALUE) { + wireMockClient.register(any(urlMatching(preparedEndpoint)) + .atPriority(Integer.MAX_VALUE) + .willReturn(response)) + return } - mockServerClient - .when(request().withPath(prepareEndpoint), times, TimeToLive.unlimited(), -10) - .respond(mockResponse) + def scenario = UUID.randomUUID().toString() + for (int i = 0; i < times; i++) { + wireMockClient.register(any(urlMatching(preparedEndpoint)) + .atPriority(Integer.MAX_VALUE) + .inScenario(scenario) + .whenScenarioStateIs(i == 0 ? STARTED : "STATE_$i") + .willSetStateTo("STATE_${i + 1}") + .willReturn(response) + ) + } } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy index e5637fe80e2..a58517a7637 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy @@ -359,7 +359,7 @@ class CacheVtrackSpec extends BaseSpec { and: "Verify parameters that came to external cache services" def requestParams = prebidCache.getVTracGetRequestParams() - assert requestParams == "[{ch=[$cacheHost], uuid=[$uuid]}]" + assert requestParams == "[[uuid:[$uuid], ch:[$cacheHost]]]" } def "PBS should return 200 status code when internal cache and get vtrack request contain uuid"() { @@ -388,7 +388,7 @@ class CacheVtrackSpec extends BaseSpec { and: "Verify parameters that came to external cache services" def requestParams = prebidCache.getVTracGetRequestParams() - assert requestParams == "[{uuid=[$uuid]}]" + assert requestParams == "[[uuid:[$uuid]]]" } def "PBS should return status code that came from pbc when internal cache and get vtrack request and response from pbc invalid"() { @@ -416,7 +416,7 @@ class CacheVtrackSpec extends BaseSpec { and: "Verify parameters that came to external cache services" def requestParams = prebidCache.getVTracGetRequestParams() - assert requestParams == "[{uuid=[$uuid]}]" + assert requestParams == "[[uuid:[$uuid]]]" } def "PBS should return 400 status code when internal cache and get vtrack request without uuid"() { 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 682bb2fef8b..3efece1188b 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy @@ -1,5 +1,6 @@ package org.prebid.server.functional.tests +import org.apache.http.HttpStatus import org.prebid.server.functional.model.UidsCookie import org.prebid.server.functional.model.db.StoredRequest import org.prebid.server.functional.model.mock.services.httpsettings.HttpAccountsResponse @@ -16,6 +17,7 @@ import org.prebid.server.functional.testcontainers.scaffolding.HttpSettings import org.prebid.server.functional.util.PBSUtils import org.prebid.server.util.ResourceUtil +import static org.apache.http.HttpStatus.SC_UNAUTHORIZED import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.testcontainers.Dependencies.networkServiceContainer @@ -25,21 +27,16 @@ class HttpSettingsSpec extends BaseSpec { static PrebidServerService prebidServerService static PrebidServerService prebidServerServiceWithRfc + private static final String rfcEndpoint = "/stored-requests-rfc" private static final HttpSettings httpSettings = new HttpSettings(networkServiceContainer) + private static final HttpSettings httpSettingsWithRfc = new HttpSettings(networkServiceContainer, rfcEndpoint) private static final Map PBS_CONFIG_WITH_RFC = new HashMap<>(PbsConfig.httpSettingsConfig) + - ['settings.http.endpoint': "${networkServiceContainer.rootUri}${HttpSettings.rfcEndpoint}".toString(), - 'settings.http.rfc3986-compatible': 'true'] + ['settings.http.endpoint' : "${networkServiceContainer.rootUri}${rfcEndpoint}".toString(), + 'settings.http.rfc3986-compatible': 'true'] def setupSpec() { prebidServerService = pbsServiceFactory.getService(PbsConfig.httpSettingsConfig) prebidServerServiceWithRfc = pbsServiceFactory.getService(PBS_CONFIG_WITH_RFC) - bidder.setResponse() - vendorList.setResponse() - } - - def cleanupSpec() { - prebidServerService = pbsServiceFactory.removeContainer(PbsConfig.httpSettingsConfig) - prebidServerService = pbsServiceFactory.removeContainer(PBS_CONFIG_WITH_RFC) } def "PBS should take account information from http data source on auction request"() { @@ -74,7 +71,7 @@ class HttpSettingsSpec extends BaseSpec { and: "Prepare default account response with gdpr = 0" def httpSettingsResponse = HttpAccountsResponse.getDefaultHttpAccountsResponse(bidRequest.accountId) - httpSettings.setRfcResponse(bidRequest.accountId, httpSettingsResponse) + httpSettingsWithRfc.setRfcResponse(bidRequest.accountId, httpSettingsResponse) when: "PBS processes auction request" def response = prebidServerServiceWithRfc.sendAuctionRequest(bidRequest) @@ -89,7 +86,7 @@ class HttpSettingsSpec extends BaseSpec { assert bidder.getRequestCount(bidRequest.id) == 1 and: "There should be only one account request" - assert httpSettings.getRfcRequestCount(bidRequest.accountId) == 1 + assert httpSettingsWithRfc.getRfcRequestCount(bidRequest.accountId) == 1 } def "PBS should take account information from http data source on AMP request"() { @@ -137,7 +134,7 @@ class HttpSettingsSpec extends BaseSpec { and: "Prepare default account response with gdpr = 0" def httpSettingsResponse = HttpAccountsResponse.getDefaultHttpAccountsResponse(ampRequest.account.toString()) - httpSettings.setRfcResponse(ampRequest.account.toString(), httpSettingsResponse) + httpSettingsWithRfc.setRfcResponse(ampRequest.account.toString(), httpSettingsResponse) when: "PBS processes amp request" def response = prebidServerServiceWithRfc.sendAmpRequest(ampRequest) @@ -146,7 +143,7 @@ class HttpSettingsSpec extends BaseSpec { assert !response.ext?.debug?.httpcalls?.isEmpty() and: "There should be only one account request" - assert httpSettings.getRfcRequestCount(ampRequest.account.toString()) == 1 + assert httpSettingsWithRfc.getRfcRequestCount(ampRequest.account.toString()) == 1 then: "Response should contain targeting" assert !response.ext?.debug?.httpcalls?.isEmpty() @@ -177,7 +174,7 @@ class HttpSettingsSpec extends BaseSpec { and: "Prepare default account response" def httpSettingsResponse = HttpAccountsResponse.getDefaultHttpAccountsResponse(eventRequest.accountId.toString()) - httpSettings.setRfcResponse(eventRequest.accountId.toString(), httpSettingsResponse) + httpSettingsWithRfc.setRfcResponse(eventRequest.accountId.toString(), httpSettingsResponse) when: "PBS processes event request" def responseBody = prebidServerServiceWithRfc.sendEventRequest(eventRequest) @@ -187,7 +184,7 @@ class HttpSettingsSpec extends BaseSpec { ResourceUtil.readByteArrayFromClassPath("org/prebid/server/functional/tracking-pixel.png") and: "There should be only one account request" - assert httpSettings.getRfcRequestCount(eventRequest.accountId.toString()) == 1 + assert httpSettingsWithRfc.getRfcRequestCount(eventRequest.accountId.toString()) == 1 } def "PBS should take account information from http data source on setuid request"() { @@ -226,8 +223,8 @@ class HttpSettingsSpec extends BaseSpec { def "PBS should take account information from http data source on setuid request when rfc3986 enabled"() { given: "Pbs config with adapters.generic.usersync.redirect.*" def pbsConfig = new HashMap<>(PbsConfig.httpSettingsConfig) + - ['settings.http.endpoint': "${networkServiceContainer.rootUri}${HttpSettings.rfcEndpoint}".toString(), - 'settings.http.rfc3986-compatible': 'true', + ['settings.http.endpoint' : "${networkServiceContainer.rootUri}${rfcEndpoint}".toString(), + 'settings.http.rfc3986-compatible' : 'true', 'adapters.generic.usersync.redirect.url' : "$networkServiceContainer.rootUri/generic-usersync&redir={redirect_url}".toString(), 'adapters.generic.usersync.redirect.format-override': 'blank'] def prebidServerService = pbsServiceFactory.getService(pbsConfig) @@ -240,7 +237,7 @@ class HttpSettingsSpec extends BaseSpec { and: "Prepare default account response" def httpSettingsResponse = HttpAccountsResponse.getDefaultHttpAccountsResponse(request.account) - httpSettings.setRfcResponse(request.account, httpSettingsResponse) + httpSettingsWithRfc.setRfcResponse(request.account, httpSettingsResponse) when: "PBS processes setuid request" def response = prebidServerService.sendSetUidRequest(request, uidsCookie) @@ -252,7 +249,7 @@ class HttpSettingsSpec extends BaseSpec { ResourceUtil.readByteArrayFromClassPath("org/prebid/server/functional/tracking-pixel.png") and: "There should be only one account request" - assert httpSettings.getRfcRequestCount(request.account) == 1 + assert httpSettingsWithRfc.getRfcRequestCount(request.account) == 1 cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) @@ -291,7 +288,7 @@ class HttpSettingsSpec extends BaseSpec { and: "Prepare default account response" def httpSettingsResponse = HttpAccountsResponse.getDefaultHttpAccountsResponse(accountId) - httpSettings.setRfcResponse(accountId, httpSettingsResponse) + httpSettingsWithRfc.setRfcResponse(accountId, httpSettingsResponse) when: "PBS processes vtrack request" def response = prebidServerServiceWithRfc.sendPostVtrackRequest(request, accountId) @@ -300,7 +297,7 @@ class HttpSettingsSpec extends BaseSpec { assert response.responses[0]?.uuid and: "There should be only one account request and pbc request" - assert httpSettings.getRfcRequestCount(accountId.toString()) == 1 + assert httpSettingsWithRfc.getRfcRequestCount(accountId) == 1 assert prebidCache.getXmlRequestCount(payload) == 1 and: "VastXml that was send to PrebidCache must contain event url" @@ -317,7 +314,7 @@ class HttpSettingsSpec extends BaseSpec { then: "Request should fail with error" def exception = thrown(PrebidServerException) - assert exception.statusCode == 401 + assert exception.statusCode == SC_UNAUTHORIZED assert exception.responseBody.contains("Account '$eventRequest.accountId' doesn't support events") } @@ -330,7 +327,7 @@ class HttpSettingsSpec extends BaseSpec { then: "Request should fail with error" def exception = thrown(PrebidServerException) - assert exception.statusCode == 401 + assert exception.statusCode == SC_UNAUTHORIZED assert exception.responseBody.contains("Account '$eventRequest.accountId' doesn't support events") } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/SeatNonBidSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/SeatNonBidSpec.groovy index 02adb2ab5e5..d4886f35e98 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/SeatNonBidSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/SeatNonBidSpec.groovy @@ -1,6 +1,5 @@ package org.prebid.server.functional.tests -import org.mockserver.model.HttpStatusCode import org.prebid.server.functional.model.bidder.BidderName import org.prebid.server.functional.model.config.AccountAuctionConfig import org.prebid.server.functional.model.config.AccountBidValidationConfig @@ -16,14 +15,15 @@ import org.prebid.server.functional.model.response.auction.BidResponse import org.prebid.server.functional.model.response.auction.SeatBid import org.prebid.server.functional.util.PBSUtils -import static org.mockserver.model.HttpStatusCode.BAD_REQUEST_400 -import static org.mockserver.model.HttpStatusCode.INTERNAL_SERVER_ERROR_500 -import static org.mockserver.model.HttpStatusCode.NO_CONTENT_204 -import static org.mockserver.model.HttpStatusCode.OK_200 -import static org.mockserver.model.HttpStatusCode.PROCESSING_102 -import static org.mockserver.model.HttpStatusCode.SERVICE_UNAVAILABLE_503 +import static org.apache.http.HttpStatus.SC_CONTINUE +import static org.apache.http.HttpStatus.SC_INSUFFICIENT_STORAGE +import static org.apache.http.HttpStatus.SC_OK +import static org.apache.http.HttpStatus.SC_BAD_REQUEST +import static org.apache.http.HttpStatus.SC_NO_CONTENT +import static org.apache.http.HttpStatus.SC_PROCESSING +import static org.apache.http.HttpStatus.SC_SERVICE_UNAVAILABLE +import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR import static org.prebid.server.functional.model.AccountStatus.ACTIVE - import static org.prebid.server.functional.model.config.BidValidationEnforcement.ENFORCE import static org.prebid.server.functional.model.request.auction.DebugCondition.DISABLED import static org.prebid.server.functional.model.request.auction.DebugCondition.ENABLED @@ -36,7 +36,6 @@ import static org.prebid.server.functional.model.response.auction.BidRejectionRe import static org.prebid.server.functional.model.response.auction.BidRejectionReason.RESPONSE_REJECTED_INVALID_CREATIVE_NOT_SECURE import static org.prebid.server.functional.model.response.auction.BidRejectionReason.RESPONSE_REJECTED_INVALID_CREATIVE_SIZE import static org.prebid.server.functional.model.response.auction.BidRejectionReason.ERROR_TIMED_OUT -import static org.prebid.server.functional.model.response.auction.ErrorType.GENERIC class SeatNonBidSpec extends BaseSpec { @@ -64,7 +63,7 @@ class SeatNonBidSpec extends BaseSpec { assert seatNonBid.nonBid[0].statusCode == ERROR_NO_BID where: - responseStatusCode << [OK_200, NO_CONTENT_204] + responseStatusCode << [SC_OK, SC_NO_CONTENT] } def "PBS should populate seatNonBid when returnAllBidStatus=true and requested bidder responded with invalid bid response status code"() { @@ -75,7 +74,7 @@ class SeatNonBidSpec extends BaseSpec { def bidResponse = BidResponse.getDefaultBidResponse(bidRequest) and: "Set bidder response" - def statusCode = PBSUtils.getRandomElement([PROCESSING_102, BAD_REQUEST_400, INTERNAL_SERVER_ERROR_500]) + def statusCode = PBSUtils.getRandomElement([SC_PROCESSING, SC_BAD_REQUEST, SC_INTERNAL_SERVER_ERROR]) bidder.setResponse(bidRequest.id, bidResponse, statusCode) when: "PBS processes auction request" @@ -98,7 +97,7 @@ class SeatNonBidSpec extends BaseSpec { def bidResponse = BidResponse.getDefaultBidResponse(bidRequest) and: "Set bidder response" - bidder.setResponse(bidRequest.id, bidResponse, SERVICE_UNAVAILABLE_503) + bidder.setResponse(bidRequest.id, bidResponse, SC_SERVICE_UNAVAILABLE) when: "PBS processes auction request" def response = defaultPbsService.sendAuctionRequest(bidRequest) @@ -242,7 +241,7 @@ class SeatNonBidSpec extends BaseSpec { } and: "Set bidder response" - bidder.setResponse(bidRequest.id, bidResponse, PBSUtils.getRandomElement(HttpStatusCode.values() as List)) + bidder.setResponse(bidRequest.id, bidResponse, PBSUtils.getRandomNumber(SC_CONTINUE, SC_INSUFFICIENT_STORAGE)) when: "PBS processes auction request" def response = defaultPbsService.sendAuctionRequest(bidRequest) diff --git a/src/test/groovy/org/prebid/server/functional/tests/SecondaryBidderSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/SecondaryBidderSpec.groovy index d032747b0d7..058af6495c7 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/SecondaryBidderSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/SecondaryBidderSpec.groovy @@ -30,19 +30,23 @@ class SecondaryBidderSpec extends BaseSpec { private static final Map GENERIC_ALIAS_CONFIG = [ "adapters.${GENERIC.value}.aliases.${ALIAS}.enabled" : "true", "adapters.${GENERIC.value}.aliases.${ALIAS}.endpoint": "$networkServiceContainer.rootUri$GENERIC_ALIAS_AUCTION_ENDPOINT".toString()] - private static final String WARNING_TIME_OUT_MESSAGE = "secondary bidder timed out, auction proceeded" - private static final Long RESPONSE_DELAY_MILLISECONDS = 5000 + private static final Integer RESPONSE_DELAY_MILLISECONDS = 5_000 private static final Bidder openXBidder = new Bidder(networkServiceContainer, OPENX_AUCTION_ENDPOINT) private static final Bidder genericAliasBidder = new Bidder(networkServiceContainer, GENERIC_ALIAS_AUCTION_ENDPOINT) - @Shared - PrebidServerService pbsServiceWithOpenXBidder = pbsServiceFactory.getService(OPENX_CONFIG + GENERIC_ALIAS_CONFIG) + private static final String WARNING_TIME_OUT_MESSAGE = "secondary bidder timed out, auction proceeded" + + private static final PrebidServerService pbsServiceWithOpenXBidder = pbsServiceFactory.getService(OPENX_CONFIG + GENERIC_ALIAS_CONFIG) @Override def cleanupSpec() { pbsServiceFactory.removeContainer(OPENX_CONFIG + GENERIC_ALIAS_CONFIG) } + def setup() { + bidder.setResponse() + } + def cleanup() { openXBidder.reset() genericAliasBidder.reset() @@ -257,7 +261,7 @@ class SecondaryBidderSpec extends BaseSpec { and: "Set up openx bidder response with delay" def openXRandomDelay = bidRequest.tmax - PBSUtils.getRandomNumber(100, 500) - openXBidder.setResponseWithDelay(openXRandomDelay) + openXBidder.setResponseWithDelay(openXRandomDelay.toInteger()) when: "PBS processes auction request" def bidResponse = pbsServiceWithOpenXBidder.sendAuctionRequest(bidRequest) diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/optabletargeting/CacheStorageSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/optabletargeting/CacheStorageSpec.groovy index e9e7c2928db..f3452ddd92d 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/optabletargeting/CacheStorageSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/optabletargeting/CacheStorageSpec.groovy @@ -20,7 +20,7 @@ import org.prebid.server.functional.tests.module.ModuleBaseSpec import org.prebid.server.functional.util.PBSUtils import static org.apache.commons.codec.binary.Base64.encodeBase64 -import static org.mockserver.model.HttpStatusCode.NOT_FOUND_404 +import static org.apache.http.HttpStatus.SC_NOT_FOUND import static org.prebid.server.functional.model.config.ModuleName.OPTABLE_TARGETING import static org.prebid.server.functional.testcontainers.Dependencies.getNetworkServiceContainer @@ -93,7 +93,7 @@ class CacheStorageSpec extends ModuleBaseSpec { and: "Mocked external request" storedCache.setTargetingResponse(bidRequest, targetingConfig) - storedCache.setCachingResponse(NOT_FOUND_404) + storedCache.setCachingResponse(SC_NOT_FOUND) and: "Flash metrics" flushMetrics(prebidServerStoredCacheService) diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/PbRuleEngineBaseSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/PbRuleEngineBaseSpec.groovy index b277753183f..4ed578adbf8 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/PbRuleEngineBaseSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/pbruleengine/PbRuleEngineBaseSpec.groovy @@ -38,7 +38,6 @@ import static org.prebid.server.functional.model.request.auction.TraceLevel.VERB import static org.prebid.server.functional.testcontainers.Dependencies.getNetworkServiceContainer import static org.prebid.server.functional.util.privacy.TcfConsent.GENERIC_VENDOR_ID -@Retry //TODO remove in 3.34+ abstract class PbRuleEngineBaseSpec extends ModuleBaseSpec { protected static final List MULTI_BID_ADAPTERS = [GENERIC, OPENX, AMX].sort() @@ -90,7 +89,6 @@ abstract class PbRuleEngineBaseSpec extends ModuleBaseSpec { protected static BidRequest getDefaultBidRequestWithMultiplyBidders(DistributionChannel distributionChannel = SITE) { BidRequest.getDefaultBidRequest(distributionChannel).tap { - it.tmax = 5_000 // prevents timeout issues on slow pipelines it.imp[0].ext.prebid.bidder.amx = new Amx() it.imp[0].ext.prebid.bidder.openx = Openx.defaultOpenx it.imp[0].ext.prebid.bidder.generic = new Generic() diff --git a/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsFetchingSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsFetchingSpec.groovy index b40f6e8cac2..fcfa39f6e9d 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsFetchingSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsFetchingSpec.groovy @@ -14,7 +14,7 @@ import org.prebid.server.functional.util.PBSUtils import java.time.Instant -import static org.mockserver.model.HttpStatusCode.BAD_REQUEST_400 +import static org.apache.http.HttpStatus.SC_BAD_REQUEST import static org.prebid.server.functional.model.Currency.EUR import static org.prebid.server.functional.model.Currency.JPY import static org.prebid.server.functional.model.bidder.BidderName.GENERIC @@ -740,7 +740,7 @@ class PriceFloorsFetchingSpec extends PriceFloorsBaseSpec { accountDao.save(account) and: "Set Floors Provider response with status code != 200" - floorsProvider.setResponse(accountId, BAD_REQUEST_400) + floorsProvider.setResponse(accountId, SC_BAD_REQUEST) and: "PBS fetch rules from floors provider" cacheFloorsProviderRules(bidRequest, floorsPbsService, GENERIC, NONE) @@ -1952,7 +1952,7 @@ class PriceFloorsFetchingSpec extends PriceFloorsBaseSpec { cacheFloorsProviderRules(bidRequest, floorValue, pbsService) and: "Set Floors Provider response with status code != 200" - floorsProvider.setResponse(accountId, BAD_REQUEST_400) + floorsProvider.setResponse(accountId, SC_BAD_REQUEST) when: "PBS processes auction request" pbsService.sendAuctionRequest(bidRequest) diff --git a/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsSignalingSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsSignalingSpec.groovy index b06c2530242..e9b819d23fa 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsSignalingSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/pricefloors/PriceFloorsSignalingSpec.groovy @@ -21,7 +21,7 @@ import org.prebid.server.functional.util.PBSUtils import java.math.RoundingMode import java.time.Instant -import static org.mockserver.model.HttpStatusCode.BAD_REQUEST_400 +import static org.apache.http.HttpStatus.SC_BAD_REQUEST import static org.prebid.server.functional.model.Currency.USD import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.model.pricefloors.MediaType.BANNER @@ -297,7 +297,7 @@ class PriceFloorsSignalingSpec extends PriceFloorsBaseSpec { accountDao.save(account) and: "Set Floors Provider response with status code != 200" - floorsProvider.setResponse(bidRequest.site.publisher.id, BAD_REQUEST_400) + floorsProvider.setResponse(bidRequest.site.publisher.id, SC_BAD_REQUEST) and: "Set bidder response" def bidResponse = BidResponse.getDefaultBidResponse(bidRequest) diff --git a/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAmpSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAmpSpec.groovy index 19d352208b2..e24e8fdc563 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAmpSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/privacy/gdpr/GdprAmpSpec.groovy @@ -1,6 +1,5 @@ package org.prebid.server.functional.tests.privacy.gdpr -import org.mockserver.model.Delay import org.prebid.server.functional.model.ChannelType import org.prebid.server.functional.model.config.AccountConfig import org.prebid.server.functional.model.config.AccountGdprConfig @@ -440,7 +439,7 @@ class GdprAmpSpec extends PrivacyBaseSpec { vendorListResponse.reset() and: "Set vendor list response with delay" - vendorListResponse.setResponse(tcfPolicyVersion, Delay.seconds(EXPONENTIAL_BACKOFF_MAX_DELAY + 3)) + vendorListResponse.setResponse(tcfPolicyVersion, EXPONENTIAL_BACKOFF_MAX_DELAY + 3) when: "PBS processes amp request" defaultPrivacyPbsService.sendAmpRequest(ampRequest) 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 545355d3efd..ffbbbcbbd79 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 @@ -1,7 +1,5 @@ package org.prebid.server.functional.tests.privacy.gdpr -import org.mockserver.matchers.Times -import org.mockserver.model.Delay import org.prebid.server.functional.model.ChannelType import org.prebid.server.functional.model.config.AccountGdprConfig import org.prebid.server.functional.model.config.AccountMetricsConfig @@ -361,6 +359,10 @@ class GdprAuctionSpec extends PrivacyBaseSpec { and: "Flush metrics" flushMetrics(privacyPbsService) + and: "Mock responses" + bidder.setResponse() + vendorListResponse.setResponse(TCF_POLICY_V5) + when: "PBS processes auction request" def response = privacyPbsService.sendAuctionRequest(bidRequest) @@ -408,7 +410,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { vendorListResponse.reset() and: "Set vendor list response with delay" - vendorListResponse.setResponse(tcfPolicyVersion, Delay.seconds(EXPONENTIAL_BACKOFF_MAX_DELAY + 3)) + vendorListResponse.setResponse(tcfPolicyVersion, EXPONENTIAL_BACKOFF_MAX_DELAY + 3) when: "PBS processes auction request" defaultPrivacyPbsService.sendAuctionRequest(bidRequest) @@ -1312,7 +1314,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { def olderVendorList = VendorListResponse.Vendor.getDefaultVendor(GENERIC_VENDOR_ID).tap { deletedDate = ZonedDateTime.now().minusSeconds(1) } - downloadLiveGvtList(VENDOR_LIST_VERSION, olderVendorList, Times.once()) + downloadLiveGvtList(VENDOR_LIST_VERSION, olderVendorList, 1) and: "PBS with a high-frequency live GVL refresh config" def config = REFRESH_LIVE_VENDOR_LIST_CONFIG + ['gdpr.vendorlist.live.refresh-period-ms': '1000'] @@ -1325,7 +1327,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { def newerVendorList = VendorListResponse.Vendor.getDefaultVendor(GENERIC_VENDOR_ID).tap { deletedDate = ZonedDateTime.now().plusYears(1) } - downloadLiveGvtList(VENDOR_LIST_VERSION + 1, newerVendorList, Times.once()) + downloadLiveGvtList(VENDOR_LIST_VERSION + 1, newerVendorList, 1) pbsWithLiveGvlSetup.isContainMetricByValue('privacy.tcf.vendorlist.live.ok') and: "GVL list is warmed up for PBS" @@ -1375,7 +1377,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { private static void downloadLiveGvtList( Integer vendorListVersion = VENDOR_LIST_VERSION, VendorListResponse.Vendor vendor = VendorListResponse.Vendor.getDefaultVendor(GENERIC_VENDOR_ID), - Times times = Times.unlimited()) { + Integer times = Integer.MAX_VALUE) { liveVendorListResponse.reset() liveVendorListResponse.setResponse(TCF_POLICY_V5, null, [(vendor.id): vendor], vendorListVersion, times) @@ -1391,6 +1393,7 @@ class GdprAuctionSpec extends PrivacyBaseSpec { .build() vendorList.reset() + bidder.setResponse() vendorList.setResponse(TCF_POLICY_V2, null, [(vendor.id): vendor]) def bidRequest = getGdprBidRequest(simpleTcfString) diff --git a/src/test/groovy/org/prebid/server/functional/util/SystemProperties.groovy b/src/test/groovy/org/prebid/server/functional/util/SystemProperties.groovy index 91379b3bbc1..410f9736991 100644 --- a/src/test/groovy/org/prebid/server/functional/util/SystemProperties.groovy +++ b/src/test/groovy/org/prebid/server/functional/util/SystemProperties.groovy @@ -3,7 +3,6 @@ package org.prebid.server.functional.util class SystemProperties { public static final String PBS_VERSION = System.getProperty("pbs.version")?.split("-")?.first() - public static final String MOCKSERVER_VERSION = System.getProperty("mockserver.version") public static final boolean USE_FIXED_CONTAINER_PORTS = getPropertyOrDefault("tests.fixed-container-ports", false) public static final int DEFAULT_TIMEOUT = 5000 From ab2479ae76199002de318cf73dadee2eaa973f95 Mon Sep 17 00:00:00 2001 From: osulzhenko <125548596+osulzhenko@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:27:30 +0300 Subject: [PATCH 2/3] Tests: Add support for endpoints with same path but different method (#4382) --- .../functional/model/config/Endpoint.groovy | 12 +- .../model/config/ExecutionPlan.groovy | 10 +- .../model/config/HookHttpEndpoint.groovy | 32 +++++ .../service/PrebidServerService.groovy | 66 +++++----- .../container/PrebidServerContainer.groovy | 3 +- .../functional/tests/AuctionSpec.groovy | 3 +- .../functional/tests/BidderParamsSpec.groovy | 5 +- .../functional/tests/CacheVtrackSpec.groovy | 3 +- .../functional/tests/HttpSettingsSpec.groovy | 5 +- .../tests/module/AbTestingModuleSpec.groovy | 52 ++++---- .../tests/module/GeneralModuleSpec.groovy | 118 +++++++++++++++++- .../tests/module/ModuleBaseSpec.groovy | 13 +- .../AnalyticsTagsModuleSpec.groovy | 18 +-- .../PbOrtb2BlockingSpec.groovy | 4 +- .../pbrichmedia/PbRichMediaFilterSpec.groovy | 8 +- 15 files changed, 254 insertions(+), 98 deletions(-) create mode 100644 src/test/groovy/org/prebid/server/functional/model/config/HookHttpEndpoint.groovy diff --git a/src/test/groovy/org/prebid/server/functional/model/config/Endpoint.groovy b/src/test/groovy/org/prebid/server/functional/model/config/Endpoint.groovy index eee6d80d319..3d3ee4a1b13 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/Endpoint.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/Endpoint.groovy @@ -6,16 +6,20 @@ import groovy.transform.ToString @ToString enum Endpoint { - OPENRTB2_AUCTION("/openrtb2/auction"), - OPENRTB2_AMP("/openrtb2/amp"), - OPENRTB2_VIDEO("/openrtb2/video"), + AUCTION("/openrtb2/auction"), + AMP("/openrtb2/amp"), + VIDEO("/openrtb2/video"), COOKIE_SYNC("/cookie_sync"), SETUID("/setuid"), BIDDER_PARAMS("/bidders/params"), EVENT("/event"), GETUIDS("/getuids"), INFO_BIDDERS("/info/bidders"), - OPTOUT("/optout"), + CURRENCY_RATES("/currency/rates"), + HTTP_INTERACTION("/logging/httpinteraction"), + COLLECTED_METRICS("/collected-metrics"), + PROMETHEUS_METRICS ("/metrics"), + INFLUX_DB("/query"), STATUS("/status"), VTRACK("/vtrack") diff --git a/src/test/groovy/org/prebid/server/functional/model/config/ExecutionPlan.groovy b/src/test/groovy/org/prebid/server/functional/model/config/ExecutionPlan.groovy index 81e103d68f3..48f7051af32 100644 --- a/src/test/groovy/org/prebid/server/functional/model/config/ExecutionPlan.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/config/ExecutionPlan.groovy @@ -9,13 +9,17 @@ import groovy.transform.ToString class ExecutionPlan { List abTests - Map endpoints + Map endpoints - static ExecutionPlan getSingleEndpointExecutionPlan(Endpoint endpoint, ModuleName moduleName, List stage) { + static ExecutionPlan getSingleEndpointExecutionPlan(HookHttpEndpoint endpoint, ModuleName moduleName, List stage) { new ExecutionPlan(endpoints: [(endpoint): EndpointExecutionPlan.getModuleEndpointExecutionPlan(moduleName, stage)]) } - static ExecutionPlan getSingleEndpointExecutionPlan(Endpoint endpoint, Map> modulesStages) { + static ExecutionPlan getSingleEndpointExecutionPlan(HookHttpEndpoint endpoint, Map> modulesStages) { new ExecutionPlan(endpoints: [(endpoint): EndpointExecutionPlan.getModulesEndpointExecutionPlan(modulesStages)]) } + + List getListOfModuleCodes() { + endpoints.values().stages*.values().groups.hookSequence.moduleCode.flatten() as List + } } diff --git a/src/test/groovy/org/prebid/server/functional/model/config/HookHttpEndpoint.groovy b/src/test/groovy/org/prebid/server/functional/model/config/HookHttpEndpoint.groovy new file mode 100644 index 00000000000..918a3b05e66 --- /dev/null +++ b/src/test/groovy/org/prebid/server/functional/model/config/HookHttpEndpoint.groovy @@ -0,0 +1,32 @@ +package org.prebid.server.functional.model.config + +import com.fasterxml.jackson.annotation.JsonValue +import groovy.transform.ToString + +@ToString +enum HookHttpEndpoint { + + AUCTION("/openrtb2/auction"), + AUCTION_GET("GET /openrtb2/auction"), + AUCTION_POST("POST /openrtb2/auction"), + + AMP("/openrtb2/amp"), + AMP_GET("GET /openrtb2/amp"), + AMP_POST("POST /openrtb2/amp"), + + VIDEO("/openrtb2/video"), + VIDEO_GET("GET /openrtb2/video"), + VIDEO_POST("POST /openrtb2/video") + + @JsonValue + final String value + + HookHttpEndpoint(String value) { + this.value = value + } + + @Override + String toString() { + value + } +} diff --git a/src/test/groovy/org/prebid/server/functional/service/PrebidServerService.groovy b/src/test/groovy/org/prebid/server/functional/service/PrebidServerService.groovy index 2e0d0765a0f..c7994152f35 100644 --- a/src/test/groovy/org/prebid/server/functional/service/PrebidServerService.groovy +++ b/src/test/groovy/org/prebid/server/functional/service/PrebidServerService.groovy @@ -43,26 +43,26 @@ import java.time.format.DateTimeFormatter import static io.restassured.RestAssured.given import static java.time.ZoneOffset.UTC +import static org.prebid.server.functional.model.config.Endpoint.AMP +import static org.prebid.server.functional.model.config.Endpoint.AUCTION +import static org.prebid.server.functional.model.config.Endpoint.BIDDER_PARAMS +import static org.prebid.server.functional.model.config.Endpoint.COLLECTED_METRICS +import static org.prebid.server.functional.model.config.Endpoint.COOKIE_SYNC +import static org.prebid.server.functional.model.config.Endpoint.CURRENCY_RATES +import static org.prebid.server.functional.model.config.Endpoint.EVENT +import static org.prebid.server.functional.model.config.Endpoint.GETUIDS +import static org.prebid.server.functional.model.config.Endpoint.HTTP_INTERACTION +import static org.prebid.server.functional.model.config.Endpoint.INFLUX_DB +import static org.prebid.server.functional.model.config.Endpoint.INFO_BIDDERS +import static org.prebid.server.functional.model.config.Endpoint.PROMETHEUS_METRICS +import static org.prebid.server.functional.model.config.Endpoint.SETUID +import static org.prebid.server.functional.model.config.Endpoint.STATUS +import static org.prebid.server.functional.model.config.Endpoint.VTRACK import static org.prebid.server.functional.testcontainers.Dependencies.influxdbContainer class PrebidServerService implements ObjectMapperWrapper { - static final String AUCTION_ENDPOINT = "/openrtb2/auction" - static final String AMP_ENDPOINT = "/openrtb2/amp" - static final String COOKIE_SYNC_ENDPOINT = "/cookie_sync" - static final String SET_UID_ENDPOINT = "/setuid" - static final String GET_UIDS_ENDPOINT = "/getuids" - static final String EVENT_ENDPOINT = "/event" - static final String VTRACK_ENDPOINT = "/vtrack" - static final String STATUS_ENDPOINT = "/status" - static final String INFO_BIDDERS_ENDPOINT = "/info/bidders" - static final String BIDDERS_PARAMS_ENDPOINT = "/bidders/params" - static final String CURRENCY_RATES_ENDPOINT = "/currency/rates" - static final String HTTP_INTERACTION_ENDPOINT = "/logging/httpinteraction" - static final String COLLECTED_METRICS_ENDPOINT = "/collected-metrics" - static final String PROMETHEUS_METRICS_ENDPOINT = "/metrics" - static final String INFLUX_DB_ENDPOINT = "/query" static final String UIDS_COOKIE_NAME = "uids" private final PrebidServerContainer pbsContainer @@ -190,7 +190,7 @@ class PrebidServerService implements ObjectMapperWrapper { .cookies(cookies) .queryParams(toMap(request)) .headers(header) - .get(SET_UID_ENDPOINT) + .get(SETUID.value) checkResponseStatusCode(response) @@ -206,7 +206,7 @@ class PrebidServerService implements ObjectMapperWrapper { def uidsCookieAsEncodedJson = Base64.urlEncoder.encodeToString(uidsCookieAsJson.bytes) def response = given(requestSpecification).cookie(UIDS_COOKIE_NAME, uidsCookieAsEncodedJson) - .get(GET_UIDS_ENDPOINT) + .get(GETUIDS.value) checkResponseStatusCode(response) decode(response.body.asString(), GetuidResponse) @@ -215,7 +215,7 @@ class PrebidServerService implements ObjectMapperWrapper { byte[] sendEventRequest(EventRequest eventRequest, Map headers = [:]) { def response = given(requestSpecification).headers(headers) .queryParams(toMap(eventRequest)) - .get(EVENT_ENDPOINT) + .get(EVENT.value) checkResponseStatusCode(response) response.body.asByteArray() @@ -224,7 +224,7 @@ class PrebidServerService implements ObjectMapperWrapper { PrebidCacheResponse sendPostVtrackRequest(VtrackRequest request, String account) { def response = given(requestSpecification).queryParams(["a": account]) .body(request) - .post(VTRACK_ENDPOINT) + .post(VTRACK.value) checkResponseStatusCode(response) decode(response.body.asString(), PrebidCacheResponse) @@ -233,28 +233,28 @@ class PrebidServerService implements ObjectMapperWrapper { TransferValue sendGetVtrackRequest(Map parameters) { def response = given(requestSpecification) .queryParams(parameters) - .get(VTRACK_ENDPOINT) + .get(VTRACK.value) checkResponseStatusCode(response) decode(response.body.asString(), TransferValue) } StatusResponse sendStatusRequest() { - def response = given(requestSpecification).get(STATUS_ENDPOINT) + def response = given(requestSpecification).get(STATUS.value) checkResponseStatusCode(response) decode(response.body.asString(), StatusResponse) } String sendInfoBiddersRequest() { - def response = given(requestSpecification).get(INFO_BIDDERS_ENDPOINT) + def response = given(requestSpecification).get(INFO_BIDDERS.value) checkResponseStatusCode(response) response.body().asString() } List sendInfoBiddersRequest(Map queryParam) { - def response = given(requestSpecification).queryParams(queryParam).get(INFO_BIDDERS_ENDPOINT) + def response = given(requestSpecification).queryParams(queryParam).get(INFO_BIDDERS.value) checkResponseStatusCode(response) decode(response.asString(), new TypeReference>() {}) @@ -262,21 +262,21 @@ class PrebidServerService implements ObjectMapperWrapper { BidderInfoResponse sendBidderInfoRequest(BidderName bidderName) { - def response = given(requestSpecification).get("$INFO_BIDDERS_ENDPOINT/$bidderName.value") + def response = given(requestSpecification).get("${INFO_BIDDERS.value}/$bidderName.value") checkResponseStatusCode(response) decode(response.body.asString(), BidderInfoResponse) } BiddersParamsResponse sendBiddersParamsRequest() { - def response = given(requestSpecification).get(BIDDERS_PARAMS_ENDPOINT) + def response = given(requestSpecification).get(BIDDER_PARAMS.value) checkResponseStatusCode(response) decode(response.body.asString(), BiddersParamsResponse) } CurrencyRatesResponse sendCurrencyRatesRequest() { - def response = given(adminRequestSpecification).get(CURRENCY_RATES_ENDPOINT) + def response = given(adminRequestSpecification).get(CURRENCY_RATES.value) checkResponseStatusCode(response) decode(response.body.asString(), CurrencyRatesResponse) @@ -284,14 +284,14 @@ class PrebidServerService implements ObjectMapperWrapper { String sendLoggingHttpInteractionRequest(HttpInteractionRequest httpInteractionRequest) { def response = given(adminRequestSpecification).queryParams(toMap(httpInteractionRequest)) - .get(HTTP_INTERACTION_ENDPOINT) + .get(HTTP_INTERACTION.value) checkResponseStatusCode(response) response.body().asString() } Map sendCollectedMetricsRequest() { - def response = given(adminRequestSpecification).get(COLLECTED_METRICS_ENDPOINT) + def response = given(adminRequestSpecification).get(COLLECTED_METRICS.value) checkResponseStatusCode(response) decode(response.asString(), new TypeReference>() {}) @@ -301,14 +301,14 @@ class PrebidServerService implements ObjectMapperWrapper { def response = given(influxRequestSpecification) .queryParams(["db": influxdbContainer.getDatabase(), "q" : "SELECT COUNT(count) FROM /.*/ WHERE count >= 1 GROUP BY \"measurement\""]) - .get(INFLUX_DB_ENDPOINT) + .get(INFLUX_DB.value) checkResponseStatusCode(response) collectInToMap(decode(response.getBody().asString(), InfluxResponse)) } String sendPrometheusMetricsRequest() { - def response = given(prometheusRequestSpecification).get(PROMETHEUS_METRICS_ENDPOINT) + def response = given(prometheusRequestSpecification).get(PROMETHEUS_METRICS.value) checkResponseStatusCode(response) response.body().asString() @@ -324,7 +324,7 @@ class PrebidServerService implements ObjectMapperWrapper { given(requestSpecification).headers(headers) .body(payload) - .post(AUCTION_ENDPOINT) + .post(AUCTION.value) } private Response postCookieSync(CookieSyncRequest cookieSyncRequest, @@ -355,7 +355,7 @@ class PrebidServerService implements ObjectMapperWrapper { requestSpecification.headers(headers) } - requestSpecification.post(COOKIE_SYNC_ENDPOINT) + requestSpecification.post(COOKIE_SYNC.value) } private Response getAmp(AmpRequest ampRequest, @@ -369,7 +369,7 @@ class PrebidServerService implements ObjectMapperWrapper { given(requestSpecification).headers(headers) .queryParams(map) - .get(AMP_ENDPOINT) + .get(AMP.value) } private void checkResponseStatusCode(Response response, int statusCode = 200) { diff --git a/src/test/groovy/org/prebid/server/functional/testcontainers/container/PrebidServerContainer.groovy b/src/test/groovy/org/prebid/server/functional/testcontainers/container/PrebidServerContainer.groovy index a886a2a3fb2..5a177572122 100644 --- a/src/test/groovy/org/prebid/server/functional/testcontainers/container/PrebidServerContainer.groovy +++ b/src/test/groovy/org/prebid/server/functional/testcontainers/container/PrebidServerContainer.groovy @@ -7,6 +7,7 @@ import org.testcontainers.containers.GenericContainer import org.testcontainers.containers.wait.strategy.Wait import org.testcontainers.images.builder.Transferable +import static org.prebid.server.functional.model.config.Endpoint.STATUS import static org.prebid.server.functional.testcontainers.PbsConfig.DEFAULT_ENV class PrebidServerContainer extends GenericContainer { @@ -30,7 +31,7 @@ class PrebidServerContainer extends GenericContainer { withExposedPorts(PORT, DEBUG_PORT, ADMIN_PORT, PROMETHEUS_PORT) withFixedPorts() withStartupAttempts(3) - waitingFor(Wait.forHttp("/status") + waitingFor(Wait.forHttp(STATUS.value) .forPort(PORT) .forStatusCode(200)) withDebug() 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 378c1ddd5e6..166f49e4cf6 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/AuctionSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/AuctionSpec.groovy @@ -35,6 +35,7 @@ import static org.prebid.server.functional.model.bidder.BidderName.ALIAS import static org.prebid.server.functional.model.bidder.BidderName.APPNEXUS import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.model.bidder.BidderName.GENERIC_CAMEL_CASE +import static org.prebid.server.functional.model.config.Endpoint.AUCTION import static org.prebid.server.functional.model.response.auction.ErrorType.PREBID import static org.prebid.server.functional.model.response.cookiesync.UserSyncInfo.Type.REDIRECT import static org.prebid.server.functional.testcontainers.Dependencies.networkServiceContainer @@ -298,7 +299,7 @@ class AuctionSpec extends BaseSpec { then: "BidderRequest should contain endpoint in ext.prebid.server.endpoint instead of ext.prebid.pbs.endpoint" def bidderRequest = bidder.getBidderRequest(bidRequest.id) - assert bidderRequest?.ext?.prebid?.server?.endpoint == "/openrtb2/auction" + assert bidderRequest?.ext?.prebid?.server?.endpoint == AUCTION.value assert bidderRequest?.ext?.prebid?.server?.httpMethod == HttpPost.METHOD_NAME assert !bidderRequest?.ext?.prebid?.pbs?.endpoint 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 2a33e6921a7..42579c0f688 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidderParamsSpec.groovy @@ -3,6 +3,7 @@ package org.prebid.server.functional.tests import org.prebid.server.functional.model.bidder.AppNexus import org.prebid.server.functional.model.bidder.BidderName import org.prebid.server.functional.model.bidder.Generic +import org.prebid.server.functional.model.config.Endpoint import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.db.StoredImp import org.prebid.server.functional.model.db.StoredRequest @@ -146,7 +147,7 @@ class BidderParamsSpec extends BaseSpec { then: "vast xml is modified" def prebidCacheRequest = prebidCache.getXmlRecordedRequestsBody(payload) assert prebidCacheRequest.size() == 1 - assert prebidCacheRequest.first().contains("/event?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") + assert prebidCacheRequest.first().contains("${Endpoint.EVENT}?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) @@ -178,7 +179,7 @@ class BidderParamsSpec extends BaseSpec { then: "vast xml is not modified" def prebidCacheRequest = prebidCache.getXmlRecordedRequestsBody(payload) assert prebidCacheRequest.size() == 1 - assert !prebidCacheRequest.first().contains("/event?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") + assert !prebidCacheRequest.first().contains("${Endpoint.EVENT}?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) diff --git a/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy index a58517a7637..bfab691b3f3 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/CacheVtrackSpec.groovy @@ -5,6 +5,7 @@ import org.prebid.server.functional.model.config.AccountCacheConfig import org.prebid.server.functional.model.config.AccountConfig import org.prebid.server.functional.model.config.AccountEventsConfig import org.prebid.server.functional.model.config.AccountVtrackConfig +import org.prebid.server.functional.model.config.Endpoint import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.request.vtrack.VtrackRequest import org.prebid.server.functional.model.request.vtrack.xml.Vast @@ -89,7 +90,7 @@ class CacheVtrackSpec extends BaseSpec { then: "Vast xml is modified" def prebidCacheRequest = prebidCache.getXmlRecordedRequestsBody(payload) assert prebidCacheRequest.size() == 1 - assert prebidCacheRequest[0].contains("/event?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") + assert prebidCacheRequest[0].contains("${Endpoint.EVENT}?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") and: "prebid_cache.creative_size.xml metric should be updated" def metrics = defaultPbsService.sendCollectedMetricsRequest() 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 3efece1188b..bdf1d453fe8 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/HttpSettingsSpec.groovy @@ -2,6 +2,7 @@ package org.prebid.server.functional.tests import org.apache.http.HttpStatus import org.prebid.server.functional.model.UidsCookie +import org.prebid.server.functional.model.config.Endpoint import org.prebid.server.functional.model.db.StoredRequest import org.prebid.server.functional.model.mock.services.httpsettings.HttpAccountsResponse import org.prebid.server.functional.model.request.amp.AmpRequest @@ -277,7 +278,7 @@ class HttpSettingsSpec extends BaseSpec { and: "VastXml that was send to PrebidCache must contain event url" def prebidCacheRequest = prebidCache.getXmlRecordedRequestsBody(payload)[0] - assert prebidCacheRequest.contains("/event?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") + assert prebidCacheRequest.contains("${Endpoint.EVENT}?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") } def "PBS should take account information from http data source on vtrack request when rfc3986 enabled"() { @@ -302,7 +303,7 @@ class HttpSettingsSpec extends BaseSpec { and: "VastXml that was send to PrebidCache must contain event url" def prebidCacheRequest = prebidCache.getXmlRecordedRequestsBody(payload)[0] - assert prebidCacheRequest.contains("/event?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") + assert prebidCacheRequest.contains("${Endpoint.EVENT}?t=imp&b=${request.puts[0].bidid}&a=$accountId&bidder=${request.puts[0].bidder}") } def "PBS should return error if account settings isn't found"() { diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/AbTestingModuleSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/AbTestingModuleSpec.groovy index 041e41d4e26..de9d940de43 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/AbTestingModuleSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/AbTestingModuleSpec.groovy @@ -1,10 +1,10 @@ package org.prebid.server.functional.tests.module -import org.prebid.server.functional.model.config.ModuleName import org.prebid.server.functional.model.config.AbTest import org.prebid.server.functional.model.config.AccountConfig import org.prebid.server.functional.model.config.AccountHooksConfiguration import org.prebid.server.functional.model.config.ExecutionPlan +import org.prebid.server.functional.model.config.ModuleName import org.prebid.server.functional.model.config.Stage import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.request.auction.BidRequest @@ -15,8 +15,8 @@ import org.prebid.server.functional.model.response.auction.InvocationResult import org.prebid.server.functional.service.PrebidServerService import org.prebid.server.functional.util.PBSUtils +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION import static org.prebid.server.functional.model.config.ModuleName.PB_RESPONSE_CORRECTION -import static org.prebid.server.functional.model.config.Endpoint.OPENRTB2_AUCTION import static org.prebid.server.functional.model.config.Stage.ALL_PROCESSED_BID_RESPONSES import static org.prebid.server.functional.model.config.Stage.BIDDER_REQUEST import static org.prebid.server.functional.model.config.Stage.RAW_BIDDER_RESPONSE @@ -61,7 +61,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def abTest = AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { enabled = false } - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { it.abTests = [abTest] } def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan)) @@ -104,7 +104,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(prebidServerService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code)] } def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan)) @@ -147,7 +147,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(moduleName)] } def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan)) @@ -195,7 +195,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def richMediaAbTestConfig = AbTest.getDefault(PB_RESPONSE_CORRECTION.code).tap { it.percentActive = MAX_PERCENT_AB } - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [ortb2AbTestConfig, richMediaAbTestConfig] } def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan)) @@ -256,7 +256,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def richMediaAbTestConfig = AbTest.getDefault(PB_RESPONSE_CORRECTION.code).tap { it.percentActive = MIN_PERCENT_AB } - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [ortb2AbTestConfig, richMediaAbTestConfig] } def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan)) @@ -317,7 +317,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def richMediaAbTestConfig = AbTest.getDefault(PB_RESPONSE_CORRECTION.code).tap { it.percentActive = MAX_PERCENT_AB } - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [ortb2AbTestConfig, richMediaAbTestConfig] } def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan)) @@ -370,7 +370,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code, [PBSUtils.randomNumber]).tap { percentActive = MIN_PERCENT_AB }] @@ -407,7 +407,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { it.percentActive = percentActive it.percentActiveSnakeCase = percentActiveSnakeCase @@ -456,7 +456,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { it.percentActive = percentActive it.percentActiveSnakeCase = percentActiveSnakeCase @@ -499,7 +499,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { it.percentActive = percentActive it.percentActiveSnakeCase = percentActiveSnakeCase @@ -546,7 +546,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { it.percentActive = percentActive it.percentActiveSnakeCase = percentActiveSnakeCase @@ -599,7 +599,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { percentActive = MIN_PERCENT_AB it.logAnalyticsTag = logAnalyticsTag @@ -644,7 +644,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { percentActive = MIN_PERCENT_AB it.logAnalyticsTag = logAnalyticsTag @@ -687,7 +687,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { percentActive = MAX_PERCENT_AB it.logAnalyticsTag = logAnalyticsTag @@ -735,7 +735,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(ortbModulePbsService) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, ORTB_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, ORTB_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { percentActive = PBSUtils.getRandomNumber(MIN_PERCENT_AB, MAX_PERCENT_AB) }] @@ -765,7 +765,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def "PBS should apply a/b test config from host config when accounts is not specified when account config and default account doesn't include a/b test config"() { given: "PBS service with specific ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code, accouns).tap { percentActive = MIN_PERCENT_AB }] @@ -825,7 +825,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def "PBS should apply a/b test config from host config for specific accounts and only specified module when account config and default account doesn't include a/b test config"() { given: "PBS service with specific ab test config" def accountId = PBSUtils.randomNumber - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code, [PBSUtils.randomNumber, accountId]).tap { percentActive = MIN_PERCENT_AB }] @@ -891,7 +891,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def richMediaAbTestConfig = AbTest.getDefault(PB_RESPONSE_CORRECTION.code, [accountId]).tap { it.percentActive = MIN_PERCENT_AB } - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [ortb2AbTestConfig, richMediaAbTestConfig] } def pbsConfig = MULTI_MODULE_CONFIG + ['hooks.host-execution-plan': encode(executionPlan)] @@ -951,7 +951,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def "PBS shouldn't apply a/b test config from host config for non specified accounts when account config and default account doesn't include a/b test config"() { given: "PBS service with specific ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code, [PBSUtils.randomNumber]).tap { percentActive = MIN_PERCENT_AB }] @@ -1013,7 +1013,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def "PBS should prioritise a/b test config from default account and only specified module when host and default account contains a/b test configs"() { given: "PBS service with specific ab test config" - def accountExecutionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def accountExecutionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { percentActive = MIN_PERCENT_AB }] @@ -1022,7 +1022,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { hooks = new AccountHooksConfiguration(executionPlan: accountExecutionPlan) } - def hostExecutionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def hostExecutionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code)] } def pbsConfig = MULTI_MODULE_CONFIG + ['hooks.host-execution-plan': encode(hostExecutionPlan)] + ["settings.default-account-config": encode(defaultAccountConfigSettings)] @@ -1077,7 +1077,9 @@ class AbTestingModuleSpec extends ModuleBaseSpec { def "PBS should prioritise a/b test config from account over default account and only specified module when specific account and default account contains a/b test configs"() { given: "PBS service with specific ab test config" - def accountExecutionPlan = new ExecutionPlan(abTests: [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code)]) + def accountExecutionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { + abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code)] + } def defaultAccountConfigSettings = AccountConfig.defaultAccountConfig.tap { hooks = new AccountHooksConfiguration(executionPlan: accountExecutionPlan) } @@ -1093,7 +1095,7 @@ class AbTestingModuleSpec extends ModuleBaseSpec { flushMetrics(pbsServiceWithMultipleModules) and: "Save account with ab test config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES).tap { + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES).tap { abTests = [AbTest.getDefault(ModuleName.PB_ORTB2_BLOCKING.code).tap { percentActive = MIN_PERCENT_AB }] diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/GeneralModuleSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/GeneralModuleSpec.groovy index a8868878bd8..d883da8f219 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/GeneralModuleSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/GeneralModuleSpec.groovy @@ -1,10 +1,10 @@ package org.prebid.server.functional.tests.module -import org.prebid.server.functional.model.config.ModuleName import org.prebid.server.functional.model.config.AccountConfig import org.prebid.server.functional.model.config.AccountHooksConfiguration import org.prebid.server.functional.model.config.AdminConfig import org.prebid.server.functional.model.config.ExecutionPlan +import org.prebid.server.functional.model.config.ModuleName import org.prebid.server.functional.model.config.Ortb2BlockingConfig import org.prebid.server.functional.model.config.PbResponseCorrection import org.prebid.server.functional.model.config.PbsModulesConfig @@ -13,12 +13,19 @@ import org.prebid.server.functional.model.db.Account import org.prebid.server.functional.model.request.auction.RichmediaFilter import org.prebid.server.functional.model.request.auction.TraceLevel import org.prebid.server.functional.model.response.auction.InvocationResult +import org.prebid.server.functional.service.PrebidServerException import org.prebid.server.functional.service.PrebidServerService import org.prebid.server.functional.util.PBSUtils +import java.time.Instant + +import static io.netty.handler.codec.http.HttpResponseStatus.UNAUTHORIZED +import static org.prebid.server.functional.model.AccountStatus.ACTIVE +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION_GET +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION_POST import static org.prebid.server.functional.model.config.ModuleName.PB_ORTB2_BLOCKING import static org.prebid.server.functional.model.config.ModuleName.PB_RICHMEDIA_FILTER -import static org.prebid.server.functional.model.config.Endpoint.OPENRTB2_AUCTION import static org.prebid.server.functional.model.config.Stage.ALL_PROCESSED_BID_RESPONSES import static org.prebid.server.functional.model.config.Stage.BIDDER_REQUEST import static org.prebid.server.functional.model.config.Stage.RAW_BIDDER_RESPONSE @@ -35,9 +42,11 @@ class GeneralModuleSpec extends ModuleBaseSpec { (RAW_BIDDER_RESPONSE): [PB_ORTB2_BLOCKING]] private final static Map> RESPONSE_STAGES = [(ALL_PROCESSED_BID_RESPONSES): [PB_RICHMEDIA_FILTER]] private final static Map> MODULES_STAGES = ORTB_STAGES + RESPONSE_STAGES + private final static ExecutionPlan GLOBAL_EXECUTION_PLAN = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, MODULES_STAGES) private final static Map MULTI_MODULE_CONFIG = getRichMediaFilterSettings(PBSUtils.randomString) + getOrtb2BlockingSettings() + - ['hooks.host-execution-plan': encode(ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, MODULES_STAGES))] + ['settings.enforce-valid-account': 'true', + 'hooks.host-execution-plan' : encode(GLOBAL_EXECUTION_PLAN)] private static final PrebidServerService pbsServiceWithMultipleModule = pbsServiceFactory.getService(MULTI_MODULE_CONFIG + DISABLED_INVOKE_CONFIG) private static final PrebidServerService pbsServiceWithMultipleModuleWithRequireInvoke = pbsServiceFactory.getService(MULTI_MODULE_CONFIG + ENABLED_INVOKE_CONFIG) @@ -149,6 +158,10 @@ class GeneralModuleSpec extends ModuleBaseSpec { and: "Flush metrics" flushMetrics(pbsServiceWithMultipleModules) + and: "Save base active account" + def account = new Account(uuid: bidRequest.getAccountId(), status: ACTIVE) + accountDao.save(account) + when: "PBS processes auction request" def response = pbsServiceWithMultipleModules.sendAuctionRequest(bidRequest) @@ -305,6 +318,10 @@ class GeneralModuleSpec extends ModuleBaseSpec { and: "Flush metrics" flushMetrics(pbsServiceWithMultipleModules) + and: "Save base active account" + def account = new Account(uuid: bidRequest.getAccountId(), status: ACTIVE) + accountDao.save(account) + when: "PBS processes auction request" def response = pbsServiceWithMultipleModules.sendAuctionRequest(bidRequest) @@ -326,7 +343,7 @@ class GeneralModuleSpec extends ModuleBaseSpec { pbsServiceFactory.removeContainer(pbsConfig) } - def "PBS shouldn't call any module without account config when modules disabled in module-execution host config"() { + def "PBS shouldn't call module when disabled in host config and no account config provided"() { given: "PBS service with module-execution config" def pbsConfig = MULTI_MODULE_CONFIG + ENABLED_INVOKE_CONFIG + [("hooks.admin.module-execution.${PB_ORTB2_BLOCKING.code}".toString()): 'false'] @@ -340,6 +357,10 @@ class GeneralModuleSpec extends ModuleBaseSpec { and: "Flush metrics" flushMetrics(pbsServiceWithMultipleModules) + and: "Save account without modules config" + def account = new Account(uuid: bidRequest.getAccountId(), status: ACTIVE) + accountDao.save(account) + when: "PBS processes auction request" def response = pbsServiceWithMultipleModules.sendAuctionRequest(bidRequest) @@ -363,7 +384,7 @@ class GeneralModuleSpec extends ModuleBaseSpec { hooks = new AccountHooksConfiguration(admin: new AdminConfig(moduleExecution: [(PB_ORTB2_BLOCKING): true])) } def pbsConfig = MULTI_MODULE_CONFIG + ENABLED_INVOKE_CONFIG + ["settings.default-account-config": encode(defaultAccountConfigSettings)] + - [("hooks.admin.module-execution.${PB_ORTB2_BLOCKING.code}".toString()): 'false'] + [("hooks.admin.module-execution.${PB_ORTB2_BLOCKING.code}".toString()): 'false'] def pbsServiceWithMultipleModules = pbsServiceFactory.getService(pbsConfig) and: "Default bid request with verbose trace" @@ -528,4 +549,91 @@ class GeneralModuleSpec extends ModuleBaseSpec { cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) } + + def "PBS should merge account level config without any errors when config contains proper request methods"() { + given: "Test start time" + def startTime = Instant.now() + + and: "Default bid request with verbose trace" + def bidRequest = defaultBidRequest.tap { + ext.prebid.trace = TraceLevel.VERBOSE + } + + and: "Save account without modules config" + def pbsModulesConfig = new PbsModulesConfig(pbRichmediaFilter: new RichmediaFilter(filterMraid: true), pbOrtb2Blocking: new Ortb2BlockingConfig()) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(endpoint, RESPONSE_STAGES) + def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan, modules: pbsModulesConfig)) + def account = new Account(uuid: bidRequest.getAccountId(), config: accountConfig) + accountDao.save(account) + + and: "Flush metrics" + flushMetrics(pbsServiceWithMultipleModule) + + when: "PBS processes auction request" + def response = pbsServiceWithMultipleModule.sendAuctionRequest(bidRequest) + + then: "PBS response should include trace information about called modules" + def modulesCodes = GLOBAL_EXECUTION_PLAN.listOfModuleCodes + executionPlan.listOfModuleCodes + verifyAll(response?.ext?.prebid?.modules?.trace?.stages?.outcomes?.groups?.invocationResults?.flatten() as List) { + it.status == [SUCCESS] * modulesCodes.size() + it.action == [NO_ACTION] * modulesCodes.size() + it.hookId.moduleCode.sort() == modulesCodes.sort() + } + + and: "Ortb2blocking module call metrics should be updated" + def metrics = pbsServiceWithMultipleModule.sendCollectedMetricsRequest() + assert metrics[CALL_METRIC(PB_ORTB2_BLOCKING, BIDDER_REQUEST)] == 1 + assert metrics[CALL_METRIC(PB_ORTB2_BLOCKING, RAW_BIDDER_RESPONSE)] == 1 + assert metrics[NOOP_METRIC(PB_ORTB2_BLOCKING, BIDDER_REQUEST)] == 1 + assert metrics[NOOP_METRIC(PB_ORTB2_BLOCKING, RAW_BIDDER_RESPONSE)] == 1 + + and: "RB-Richmedia-Filter module call metrics should be updated" + def richmediaCounts = modulesCodes.count(PB_RICHMEDIA_FILTER.code) + assert metrics[CALL_METRIC(PB_RICHMEDIA_FILTER, ALL_PROCESSED_BID_RESPONSES)] == richmediaCounts + assert metrics[NOOP_METRIC(PB_RICHMEDIA_FILTER, ALL_PROCESSED_BID_RESPONSES)] == richmediaCounts + + and: "Response shouldn't contain warnings and errors" + assert !response.ext?.warnings + assert !response.ext?.errors + + and: "PBS log should not contain deserialization error messages" + def logs = pbsServiceWithMultipleModule.getLogsByTime(startTime) + assert !getLogsByText(logs, "Cannot deserialize value of type `org.prebid.server.hooks.execution.model.HookHttpEndpoint` " + + "from String \"${AUCTION_GET}\": not one of the values accepted for Enum class").size() + + where: + endpoint << [AUCTION, AUCTION_POST] + } + + def "PBS should merge account level config and emit error when config contains invalid request methods"() { + given: "Test start time" + def startTime = Instant.now() + + and: "Default bid request with verbose trace" + def bidRequest = defaultBidRequest.tap { + ext.prebid.trace = TraceLevel.VERBOSE + } + + and: "Save account without modules config" + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION_GET, MODULES_STAGES) + def accountConfig = new AccountConfig(hooks: new AccountHooksConfiguration(executionPlan: executionPlan)) + def account = new Account(uuid: bidRequest.getAccountId(), config: accountConfig) + accountDao.save(account) + + and: "Flush metrics" + flushMetrics(pbsServiceWithMultipleModule) + + when: "PBS processes auction request" + pbsServiceWithMultipleModule.sendAuctionRequest(bidRequest) + + then: "Response should contain error" + def exception = thrown(PrebidServerException) + assert exception.statusCode == UNAUTHORIZED.code() + assert exception.responseBody == "Unauthorized account id: ${account.uuid}" + + and: "PBS log should contain message" + def logs = pbsServiceWithMultipleModule.getLogsByTime(startTime) + assert getLogsByText(logs, "Cannot deserialize value of type `org.prebid.server.hooks.execution.model.HookHttpEndpoint` " + + "from String \"${AUCTION_GET}\": not one of the values accepted for Enum class").size() == 1 + } } diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/ModuleBaseSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/ModuleBaseSpec.groovy index d509d0ac44b..da5057d472b 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/ModuleBaseSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/ModuleBaseSpec.groovy @@ -3,6 +3,7 @@ package org.prebid.server.functional.tests.module import org.prebid.server.functional.model.config.ModuleName import org.prebid.server.functional.model.config.Endpoint import org.prebid.server.functional.model.config.ExecutionPlan +import org.prebid.server.functional.model.config.HookHttpEndpoint import org.prebid.server.functional.model.config.Stage import org.prebid.server.functional.model.response.auction.AnalyticResult import org.prebid.server.functional.model.response.auction.BidResponse @@ -15,7 +16,7 @@ import static org.prebid.server.functional.model.config.ModuleName.PB_REQUEST_CO import static org.prebid.server.functional.model.config.ModuleName.PB_RESPONSE_CORRECTION import static org.prebid.server.functional.model.config.ModuleName.PB_RICHMEDIA_FILTER import static org.prebid.server.functional.model.config.ModuleName.PB_RULE_ENGINE -import static org.prebid.server.functional.model.config.Endpoint.OPENRTB2_AUCTION +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION import static org.prebid.server.functional.model.config.Stage.ALL_PROCESSED_BID_RESPONSES import static org.prebid.server.functional.model.config.Stage.PROCESSED_AUCTION_REQUEST import static org.prebid.server.functional.testcontainers.Dependencies.getNetworkServiceContainer @@ -49,7 +50,7 @@ class ModuleBaseSpec extends BaseSpec { "modules.module.${module.code}.stage.${stage.metricValue}.hook.${module.code}-${stage.value}-hook.execution-error" } - protected static Map getResponseCorrectionConfig(Endpoint endpoint = OPENRTB2_AUCTION) { + protected static Map getResponseCorrectionConfig(HookHttpEndpoint endpoint = AUCTION) { ["hooks.${PB_RESPONSE_CORRECTION.code}.enabled": true, "hooks.host-execution-plan" : encode(ExecutionPlan.getSingleEndpointExecutionPlan(endpoint, [(ALL_PROCESSED_BID_RESPONSES): [PB_RESPONSE_CORRECTION]]))] .collectEntries { key, value -> [(key.toString()): value.toString()] } @@ -57,7 +58,7 @@ class ModuleBaseSpec extends BaseSpec { protected static Map getRichMediaFilterSettings(String scriptPattern, Boolean filterMraidEnabled = true, - Endpoint endpoint = OPENRTB2_AUCTION) { + HookHttpEndpoint endpoint = AUCTION) { ["hooks.${PB_RICHMEDIA_FILTER.code}.enabled" : true, "hooks.modules.${PB_RICHMEDIA_FILTER.code}.mraid-script-pattern": scriptPattern, @@ -75,7 +76,7 @@ class ModuleBaseSpec extends BaseSpec { .collectEntries { key, value -> [(key.toString()): value.toString()] } } - protected static Map getOptableTargetingSettings(boolean isEnabled = true, Endpoint endpoint = OPENRTB2_AUCTION) { + protected static Map getOptableTargetingSettings(boolean isEnabled = true, HookHttpEndpoint endpoint = AUCTION) { ["hooks.${OPTABLE_TARGETING.code}.enabled" : isEnabled as String, "hooks.modules.${OPTABLE_TARGETING.code}.api-endpoint": "$networkServiceContainer.rootUri/stored-cache".toString(), "hooks.modules.${OPTABLE_TARGETING.code}.tenant" : PBSUtils.randomString, @@ -88,12 +89,12 @@ class ModuleBaseSpec extends BaseSpec { ["hooks.${PB_ORTB2_BLOCKING.code}.enabled": isEnabled as String] } - protected static Map getRequestCorrectionSettings(Endpoint endpoint = OPENRTB2_AUCTION, Stage stage = PROCESSED_AUCTION_REQUEST) { + protected static Map getRequestCorrectionSettings(HookHttpEndpoint endpoint = AUCTION, Stage stage = PROCESSED_AUCTION_REQUEST) { ["hooks.${PB_REQUEST_CORRECTION.code}.enabled": "true", "hooks.host-execution-plan" : encode(ExecutionPlan.getSingleEndpointExecutionPlan(endpoint, PB_REQUEST_CORRECTION, [stage]))] } - protected static Map getRulesEngineSettings(Endpoint endpoint = OPENRTB2_AUCTION, Stage stage = PROCESSED_AUCTION_REQUEST) { + protected static Map getRulesEngineSettings(HookHttpEndpoint endpoint = AUCTION, Stage stage = PROCESSED_AUCTION_REQUEST) { ["hooks.${PB_RULE_ENGINE.code}.enabled" : "true", "hooks.${PB_RULE_ENGINE.code}.rule-cache.expire-after-minutes" : "10000", "hooks.${PB_RULE_ENGINE.code}.rule-cache.max-size" : "20000", diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/analyticstag/AnalyticsTagsModuleSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/analyticstag/AnalyticsTagsModuleSpec.groovy index 05815a64158..dfd34bccb86 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/analyticstag/AnalyticsTagsModuleSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/analyticstag/AnalyticsTagsModuleSpec.groovy @@ -22,7 +22,7 @@ import org.prebid.server.functional.util.PBSUtils import static org.prebid.server.functional.model.config.ModuleName.PB_ORTB2_BLOCKING import static org.prebid.server.functional.model.config.ModuleName.PB_RICHMEDIA_FILTER import static org.prebid.server.functional.model.bidder.BidderName.GENERIC -import static org.prebid.server.functional.model.config.Endpoint.OPENRTB2_AUCTION +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION import static org.prebid.server.functional.model.config.Stage.ALL_PROCESSED_BID_RESPONSES import static org.prebid.server.functional.model.config.Stage.RAW_BIDDER_RESPONSE import static org.prebid.server.functional.model.request.auction.TraceLevel.VERBOSE @@ -43,7 +43,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { } and: "Account in the DB" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def hooksConfiguration = new AccountHooksConfiguration(executionPlan: executionPlan) def accountConfig = new AccountConfig(hooks: hooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: true)) def account = new Account(uuid: bidRequest.accountId, config: accountConfig) @@ -122,7 +122,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { def "PBS should include analytics tag in response when request and default account allow client details"() { given: "Default account with module config" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def hooksConfiguration = new AccountHooksConfiguration(executionPlan: executionPlan) def accountConfig = new AccountConfig(hooks: hooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: true)) @@ -161,7 +161,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { def "PBS should include analytics tag in response when request and account allow client details but default doesn't"() { given: "Default account with module config" - def defaultExecutionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def defaultExecutionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def defaultHooksConfiguration = new AccountHooksConfiguration(executionPlan: defaultExecutionPlan) def defaultAccountConfig = new AccountConfig(hooks: defaultHooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: false)) @@ -175,7 +175,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { } and: "Account in the DB" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def hooksConfiguration = new AccountHooksConfiguration(executionPlan: executionPlan) def accountConfig = new AccountConfig(hooks: hooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: true)) def account = new Account(uuid: bidRequest.accountId, config: accountConfig) @@ -212,7 +212,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { } and: "Account in the DB" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def hooksConfiguration = new AccountHooksConfiguration(executionPlan: executionPlan) def accountConfig = new AccountConfig(hooks: hooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: true)) def account = new Account(uuid: bidRequest.accountId, config: accountConfig) @@ -235,7 +235,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { } and: "Account in the DB" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def hooksConfiguration = new AccountHooksConfiguration(executionPlan: executionPlan) def accountConfig = new AccountConfig(hooks: hooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: true)) def account = new Account(uuid: bidRequest.accountId, config: accountConfig) @@ -258,7 +258,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { } and: "Account in the DB" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def hooksConfiguration = new AccountHooksConfiguration(executionPlan: executionPlan) def accountConfig = new AccountConfig(hooks: hooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: false)) def account = new Account(uuid: bidRequest.accountId, config: accountConfig) @@ -282,7 +282,7 @@ class AnalyticsTagsModuleSpec extends ModuleBaseSpec { } and: "Account in the DB" - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [RAW_BIDDER_RESPONSE]) def hooksConfiguration = new AccountHooksConfiguration(executionPlan: executionPlan) def accountConfig = new AccountConfig(hooks: hooksConfiguration, analytics: new AccountAnalyticsConfig(allowClientDetails: false)) def account = new Account(uuid: bidRequest.accountId, config: accountConfig) diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/pbortb2blocking/PbOrtb2BlockingSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/pbortb2blocking/PbOrtb2BlockingSpec.groovy index 59b2f30d90b..29e45b86955 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/pbortb2blocking/PbOrtb2BlockingSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/pbortb2blocking/PbOrtb2BlockingSpec.groovy @@ -37,7 +37,7 @@ import static org.prebid.server.functional.model.config.ModuleName.PB_ORTB2_BLOC import static org.prebid.server.functional.model.bidder.BidderName.ALIAS import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.model.bidder.BidderName.IX -import static org.prebid.server.functional.model.config.Endpoint.OPENRTB2_AUCTION +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION import static org.prebid.server.functional.model.config.Ortb2BlockingAttribute.AUDIO_BATTR import static org.prebid.server.functional.model.config.Ortb2BlockingAttribute.BADV import static org.prebid.server.functional.model.config.Ortb2BlockingAttribute.BAPP @@ -1531,7 +1531,7 @@ class PbOrtb2BlockingSpec extends ModuleBaseSpec { private static Account getAccountWithOrtb2BlockingConfig(String accountId, Map attributes) { def blockingConfig = new Ortb2BlockingConfig(attributes: attributes) - def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_ORTB2_BLOCKING, [BIDDER_REQUEST, RAW_BIDDER_RESPONSE]) + def executionPlan = ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_ORTB2_BLOCKING, [BIDDER_REQUEST, RAW_BIDDER_RESPONSE]) def moduleConfig = new PbsModulesConfig(pbOrtb2Blocking: blockingConfig) def accountHooksConfig = new AccountHooksConfiguration(executionPlan: executionPlan, modules: moduleConfig) def accountConfig = new AccountConfig(hooks: accountHooksConfig) diff --git a/src/test/groovy/org/prebid/server/functional/tests/module/pbrichmedia/PbRichMediaFilterSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/module/pbrichmedia/PbRichMediaFilterSpec.groovy index a4b2b6b6047..037a38fb922 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/module/pbrichmedia/PbRichMediaFilterSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/module/pbrichmedia/PbRichMediaFilterSpec.groovy @@ -16,12 +16,12 @@ import org.prebid.server.functional.service.PrebidServerService import org.prebid.server.functional.tests.module.ModuleBaseSpec import org.prebid.server.functional.util.PBSUtils -import static org.prebid.server.functional.model.response.auction.BidRejectionReason.RESPONSE_REJECTED_INVALID_CREATIVE -import static org.prebid.server.functional.model.config.ModuleName.PB_RICHMEDIA_FILTER import static org.prebid.server.functional.model.bidder.BidderName.GENERIC -import static org.prebid.server.functional.model.config.Endpoint.OPENRTB2_AUCTION +import static org.prebid.server.functional.model.config.HookHttpEndpoint.AUCTION +import static org.prebid.server.functional.model.config.ModuleName.PB_RICHMEDIA_FILTER import static org.prebid.server.functional.model.config.Stage.ALL_PROCESSED_BID_RESPONSES import static org.prebid.server.functional.model.request.auction.TraceLevel.VERBOSE +import static org.prebid.server.functional.model.response.auction.BidRejectionReason.RESPONSE_REJECTED_INVALID_CREATIVE class PbRichMediaFilterSpec extends ModuleBaseSpec { @@ -30,7 +30,7 @@ class PbRichMediaFilterSpec extends ModuleBaseSpec { private static final Map DISABLED_FILTER_SPECIFIC_PATTERN_NAME_CONFIG = getRichMediaFilterSettings(PATTERN_NAME, false) private static final Map SPECIFIC_PATTERN_NAME_CONFIG = getRichMediaFilterSettings(PATTERN_NAME) private static final Map SNAKE_SPECIFIC_PATTERN_NAME_CONFIG = (getRichMediaFilterSettings(PATTERN_NAME) + - ["hooks.host-execution-plan": encode(ExecutionPlan.getSingleEndpointExecutionPlan(OPENRTB2_AUCTION, PB_RICHMEDIA_FILTER, [ALL_PROCESSED_BID_RESPONSES]).tap { + ["hooks.host-execution-plan": encode(ExecutionPlan.getSingleEndpointExecutionPlan(AUCTION, PB_RICHMEDIA_FILTER, [ALL_PROCESSED_BID_RESPONSES]).tap { endpoints.values().first().stages.values().first().groups.first.hookSequenceSnakeCase = [new HookId(moduleCodeSnakeCase: PB_RICHMEDIA_FILTER.code, hookImplCodeSnakeCase: "${PB_RICHMEDIA_FILTER.code}-${ALL_PROCESSED_BID_RESPONSES.value}-hook")] })]).collectEntries { key, value -> [(key.toString()): value.toString()] } From 9cc44efdde98b7d439d1184ef5443c8e2a07d99b Mon Sep 17 00:00:00 2001 From: Oleksandr Zhevedenko <720803+Net-burst@users.noreply.github.com> Date: Mon, 27 Jul 2026 13:14:08 -0400 Subject: [PATCH 3/3] Magnite adapter: Rebrand Rubicon adapter into Magnite adapter (#4573) --- extra/modules/pb-ortb2-blocking/README.md | 2 +- sample/configs/prebid-config-db.yaml | 2 +- sample/configs/prebid-config-s3.yaml | 2 +- sample/configs/prebid-config-with-51d-dd.yaml | 2 +- sample/configs/prebid-config-with-module.yaml | 2 +- .../configs/prebid-config-with-optable.yaml | 2 +- sample/configs/prebid-config-with-wurfl.yaml | 2 +- sample/configs/prebid-config.yaml | 2 +- .../auction/TargetingKeywordsCreator.java | 2 +- .../MagniteBidder.java} | 344 ++++++------ .../magnite/proto/request/MagniteAppExt.java | 9 + .../proto/request/MagniteBannerExt.java | 9 + .../proto/request/MagniteBannerExtRp.java | 9 + .../proto/request/MagniteDeviceExt.java | 9 + .../proto/request/MagniteDeviceExtRp.java} | 4 +- .../request/MagniteExtPrebidBidders.java | 9 + .../MagniteExtPrebidBiddersBidder.java} | 6 +- .../MagniteExtPrebidBiddersBidderDebug.java | 9 + .../proto/request/MagniteImpExt.java} | 8 +- .../proto/request/MagniteImpExtPrebid.java} | 4 +- .../proto/request/MagniteImpExtRp.java} | 8 +- .../proto/request/MagniteImpExtRpRtb.java} | 4 +- .../proto/request/MagniteImpExtRpTrack.java} | 4 +- .../proto/request/MagniteNative.java} | 4 +- .../magnite/proto/request/MagnitePubExt.java | 9 + .../proto/request/MagnitePubExtRp.java | 9 + .../magnite/proto/request/MagniteSiteExt.java | 9 + .../proto/request/MagniteSiteExtRp.java} | 4 +- .../proto/request/MagniteTargeting.java} | 4 +- .../proto/request/MagniteTargetingExt.java | 9 + .../proto/request/MagniteTargetingExtRp.java | 11 + .../magnite/proto/request/MagniteUserExt.java | 11 + .../proto/request/MagniteUserExtRp.java} | 4 +- .../proto/request/MagniteVideoExt.java} | 6 +- .../proto/request/MagniteVideoExtRp.java | 9 + .../proto/response/MagniteBid.java} | 4 +- .../proto/response/MagniteBidResponse.java} | 6 +- .../proto/response/MagniteSeatBid.java} | 6 +- .../rubicon/proto/request/RubiconAppExt.java | 9 - .../proto/request/RubiconBannerExt.java | 9 - .../proto/request/RubiconBannerExtRp.java | 9 - .../proto/request/RubiconDeviceExt.java | 9 - .../request/RubiconExtPrebidBidders.java | 9 - .../RubiconExtPrebidBiddersBidderDebug.java | 9 - .../rubicon/proto/request/RubiconPubExt.java | 9 - .../proto/request/RubiconPubExtRp.java | 9 - .../rubicon/proto/request/RubiconSiteExt.java | 9 - .../proto/request/RubiconTargetingExt.java | 9 - .../proto/request/RubiconTargetingExtRp.java | 11 - .../rubicon/proto/request/RubiconUserExt.java | 11 - .../proto/request/RubiconVideoExtRp.java | 9 - .../ExtImpMagnite.java} | 10 +- .../ExtImpMagniteDebug.java} | 6 +- .../MagniteVideoParams.java} | 4 +- ...uration.java => MagniteConfiguration.java} | 26 +- .../validation/BidderParamValidator.java | 2 +- .../{rubicon.yaml => magnite.yaml} | 6 +- .../{rubicon.json => magnite.json} | 8 +- .../functional/model/bidder/BidderName.groovy | 4 +- .../bidder/{Rubicon.groovy => Magnite.groovy} | 6 +- .../model/request/auction/Bidder.groovy | 4 +- .../model/request/auction/Imp.groovy | 2 +- .../model/request/auction/ImpExt.groovy | 4 +- .../model/response/auction/ErrorType.groovy | 2 +- .../functional/tests/BidAdjustmentSpec.groovy | 4 +- .../functional/tests/CookieSyncSpec.groovy | 100 ++-- .../server/functional/tests/EidsSpec.groovy | 14 +- .../tests/HttpInteractionSpec.groovy | 18 +- .../functional/tests/ImpRequestSpec.groovy | 4 +- .../server/functional/tests/SetUidSpec.groovy | 72 +-- .../tests/prometheus/PrometheusSpec.groovy | 8 +- .../functional/util/privacy/TcfConsent.groovy | 2 +- .../MagniteBidderTest.java} | 516 +++++++++--------- .../org/prebid/server/it/ApplicationTest.java | 2 +- .../validation/BidderParamValidatorTest.java | 20 +- .../test-info-bidder-details-response.json | 2 +- .../magnite/test-magnite-bid-request.json | 2 +- .../rubicon/test-rubicon-bid-request.json | 2 +- .../server/it/test-application.properties | 16 +- .../empty/{rubicon.json => magnite.json} | 0 .../invalid/{rubicon.json => magnite.json} | 0 .../validation/schema/valid/test-magnite.json | 3 + .../validation/schema/valid/test-rubicon.json | 3 - .../validation/schema/valid/test-schemas.json | 2 +- 84 files changed, 777 insertions(+), 777 deletions(-) rename src/main/java/org/prebid/server/bidder/{rubicon/RubiconBidder.java => magnite/MagniteBidder.java} (85%) create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteAppExt.java create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExt.java create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExtRp.java create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteDeviceExt.java rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconDeviceExtRp.java => magnite/proto/request/MagniteDeviceExtRp.java} (56%) create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBidders.java rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconExtPrebidBiddersBidder.java => magnite/proto/request/MagniteExtPrebidBiddersBidder.java} (57%) create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBiddersBidderDebug.java rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconImpExt.java => magnite/proto/request/MagniteImpExt.java} (66%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconImpExtPrebid.java => magnite/proto/request/MagniteImpExtPrebid.java} (72%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconImpExtRp.java => magnite/proto/request/MagniteImpExtRp.java} (53%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconImpExtRpRtb.java => magnite/proto/request/MagniteImpExtRpRtb.java} (66%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconImpExtRpTrack.java => magnite/proto/request/MagniteImpExtRpTrack.java} (52%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconNative.java => magnite/proto/request/MagniteNative.java} (73%) create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExt.java create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExtRp.java create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteSiteExt.java rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconSiteExtRp.java => magnite/proto/request/MagniteSiteExtRp.java} (62%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconTargeting.java => magnite/proto/request/MagniteTargeting.java} (58%) create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExt.java create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExtRp.java create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteUserExt.java rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconUserExtRp.java => magnite/proto/request/MagniteUserExtRp.java} (59%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/request/RubiconVideoExt.java => magnite/proto/request/MagniteVideoExt.java} (52%) create mode 100644 src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteVideoExtRp.java rename src/main/java/org/prebid/server/bidder/{rubicon/proto/response/RubiconBid.java => magnite/proto/response/MagniteBid.java} (89%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/response/RubiconBidResponse.java => magnite/proto/response/MagniteBidResponse.java} (67%) rename src/main/java/org/prebid/server/bidder/{rubicon/proto/response/RubiconSeatBid.java => magnite/proto/response/MagniteSeatBid.java} (67%) delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconAppExt.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExt.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExtRp.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconDeviceExt.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBidders.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBiddersBidderDebug.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExt.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExtRp.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconSiteExt.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExt.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExtRp.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconUserExt.java delete mode 100644 src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconVideoExtRp.java rename src/main/java/org/prebid/server/proto/openrtb/ext/request/{rubicon/ExtImpRubicon.java => magnite/ExtImpMagnite.java} (75%) rename src/main/java/org/prebid/server/proto/openrtb/ext/request/{rubicon/ExtImpRubiconDebug.java => magnite/ExtImpMagniteDebug.java} (71%) rename src/main/java/org/prebid/server/proto/openrtb/ext/request/{rubicon/RubiconVideoParams.java => magnite/MagniteVideoParams.java} (77%) rename src/main/java/org/prebid/server/spring/config/bidder/{RubiconConfiguration.java => MagniteConfiguration.java} (80%) rename src/main/resources/bidder-config/{rubicon.yaml => magnite.yaml} (93%) rename src/main/resources/static/bidder-params/{rubicon.json => magnite.json} (92%) rename src/test/groovy/org/prebid/server/functional/model/bidder/{Rubicon.groovy => Magnite.groovy} (74%) rename src/test/java/org/prebid/server/bidder/{rubicon/RubiconBidderTest.java => magnite/MagniteBidderTest.java} (91%) rename src/test/resources/org/prebid/server/validation/schema/empty/{rubicon.json => magnite.json} (100%) rename src/test/resources/org/prebid/server/validation/schema/invalid/{rubicon.json => magnite.json} (100%) create mode 100644 src/test/resources/org/prebid/server/validation/schema/valid/test-magnite.json delete mode 100644 src/test/resources/org/prebid/server/validation/schema/valid/test-rubicon.json diff --git a/extra/modules/pb-ortb2-blocking/README.md b/extra/modules/pb-ortb2-blocking/README.md index e0ae450b370..a964edd7a85 100644 --- a/extra/modules/pb-ortb2-blocking/README.md +++ b/extra/modules/pb-ortb2-blocking/README.md @@ -12,7 +12,7 @@ This module allows Prebid Server host companies to better support adapters that # Maintainer contacts -Any suggestions or questions can be directed to [header-bidding@rubiconproject.com](header-bidding@rubiconproject.com) +Any suggestions or questions can be directed to [header-bidding@magnite.com](header-bidding@magnite.com) e-mail. Or just open new [issue](https://github.com/prebid/prebid-server-java/issues/new) diff --git a/sample/configs/prebid-config-db.yaml b/sample/configs/prebid-config-db.yaml index 666ffb69a55..8fb31f4a22e 100644 --- a/sample/configs/prebid-config-db.yaml +++ b/sample/configs/prebid-config-db.yaml @@ -8,7 +8,7 @@ adapters: enabled: true pubmatic: enabled: true - rubicon: + magnite: enabled: true metrics: prefix: prebid diff --git a/sample/configs/prebid-config-s3.yaml b/sample/configs/prebid-config-s3.yaml index 09620ceec87..ff2e9e15086 100644 --- a/sample/configs/prebid-config-s3.yaml +++ b/sample/configs/prebid-config-s3.yaml @@ -13,7 +13,7 @@ adapters: enabled: true pubmatic: enabled: true - rubicon: + magnite: enabled: true metrics: prefix: prebid diff --git a/sample/configs/prebid-config-with-51d-dd.yaml b/sample/configs/prebid-config-with-51d-dd.yaml index 1e29ec1d997..c5ddea986d0 100644 --- a/sample/configs/prebid-config-with-51d-dd.yaml +++ b/sample/configs/prebid-config-with-51d-dd.yaml @@ -8,7 +8,7 @@ adapters: enabled: true pubmatic: enabled: true - rubicon: + magnite: enabled: true metrics: prefix: prebid diff --git a/sample/configs/prebid-config-with-module.yaml b/sample/configs/prebid-config-with-module.yaml index 959a4cef2af..9c0fc93ca42 100644 --- a/sample/configs/prebid-config-with-module.yaml +++ b/sample/configs/prebid-config-with-module.yaml @@ -8,7 +8,7 @@ adapters: enabled: true pubmatic: enabled: true - rubicon: + magnite: enabled: true metrics: prefix: prebid diff --git a/sample/configs/prebid-config-with-optable.yaml b/sample/configs/prebid-config-with-optable.yaml index ef2d59037bf..d5a938f47ac 100644 --- a/sample/configs/prebid-config-with-optable.yaml +++ b/sample/configs/prebid-config-with-optable.yaml @@ -8,7 +8,7 @@ adapters: enabled: true pubmatic: enabled: true - rubicon: + magnite: enabled: true improvedigital: enabled: true diff --git a/sample/configs/prebid-config-with-wurfl.yaml b/sample/configs/prebid-config-with-wurfl.yaml index 9a82d459195..f7faf43d178 100644 --- a/sample/configs/prebid-config-with-wurfl.yaml +++ b/sample/configs/prebid-config-with-wurfl.yaml @@ -8,7 +8,7 @@ adapters: enabled: true pubmatic: enabled: true - rubicon: + magnite: enabled: true metrics: prefix: prebid diff --git a/sample/configs/prebid-config.yaml b/sample/configs/prebid-config.yaml index f969f25bd60..6079c7a0d36 100644 --- a/sample/configs/prebid-config.yaml +++ b/sample/configs/prebid-config.yaml @@ -8,7 +8,7 @@ adapters: enabled: true pubmatic: enabled: true - rubicon: + magnite: enabled: true metrics: prefix: prebid diff --git a/src/main/java/org/prebid/server/auction/TargetingKeywordsCreator.java b/src/main/java/org/prebid/server/auction/TargetingKeywordsCreator.java index 16af4e15d71..a7224de4efc 100644 --- a/src/main/java/org/prebid/server/auction/TargetingKeywordsCreator.java +++ b/src/main/java/org/prebid/server/auction/TargetingKeywordsCreator.java @@ -35,7 +35,7 @@ public class TargetingKeywordsCreator { */ private static final String ENV_KEY = "_env"; /** - * Name of the Bidder. For example, "appnexus" or "rubicon". + * Name of the Bidder. For example, "appnexus" or "magnite". */ private static final String BIDDER_KEY = "_bidder"; /** diff --git a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java b/src/main/java/org/prebid/server/bidder/magnite/MagniteBidder.java similarity index 85% rename from src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java rename to src/main/java/org/prebid/server/bidder/magnite/MagniteBidder.java index 827822ab127..06250d70528 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java +++ b/src/main/java/org/prebid/server/bidder/magnite/MagniteBidder.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon; +package org.prebid.server.bidder.magnite; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; @@ -34,39 +34,39 @@ import org.apache.commons.lang3.math.NumberUtils; import org.prebid.server.bidder.Bidder; import org.prebid.server.bidder.ViewabilityVendors; +import org.prebid.server.bidder.magnite.proto.request.MagniteAppExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteBannerExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteBannerExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteDeviceExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteDeviceExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteExtPrebidBidders; +import org.prebid.server.bidder.magnite.proto.request.MagniteExtPrebidBiddersBidder; +import org.prebid.server.bidder.magnite.proto.request.MagniteExtPrebidBiddersBidderDebug; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExtRpRtb; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExtRpTrack; +import org.prebid.server.bidder.magnite.proto.request.MagniteNative; +import org.prebid.server.bidder.magnite.proto.request.MagnitePubExt; +import org.prebid.server.bidder.magnite.proto.request.MagnitePubExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteSiteExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteSiteExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteTargeting; +import org.prebid.server.bidder.magnite.proto.request.MagniteTargetingExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteTargetingExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteUserExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteUserExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteVideoExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteVideoExtRp; +import org.prebid.server.bidder.magnite.proto.response.MagniteBid; +import org.prebid.server.bidder.magnite.proto.response.MagniteBidResponse; +import org.prebid.server.bidder.magnite.proto.response.MagniteSeatBid; 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.PriceFloorInfo; import org.prebid.server.bidder.model.Result; -import org.prebid.server.bidder.rubicon.proto.request.RubiconAppExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconBannerExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconBannerExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconDeviceExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconDeviceExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconExtPrebidBidders; -import org.prebid.server.bidder.rubicon.proto.request.RubiconExtPrebidBiddersBidder; -import org.prebid.server.bidder.rubicon.proto.request.RubiconExtPrebidBiddersBidderDebug; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExtRpRtb; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExtRpTrack; -import org.prebid.server.bidder.rubicon.proto.request.RubiconNative; -import org.prebid.server.bidder.rubicon.proto.request.RubiconPubExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconPubExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconSiteExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconSiteExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconTargeting; -import org.prebid.server.bidder.rubicon.proto.request.RubiconTargetingExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconTargetingExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconUserExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconUserExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconVideoExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconVideoExtRp; -import org.prebid.server.bidder.rubicon.proto.response.RubiconBid; -import org.prebid.server.bidder.rubicon.proto.response.RubiconBidResponse; -import org.prebid.server.bidder.rubicon.proto.response.RubiconSeatBid; import org.prebid.server.currency.CurrencyConversionService; import org.prebid.server.exception.PreBidException; import org.prebid.server.floors.PriceFloorResolver; @@ -96,9 +96,9 @@ import org.prebid.server.proto.openrtb.ext.request.ExtSource; import org.prebid.server.proto.openrtb.ext.request.ExtUser; import org.prebid.server.proto.openrtb.ext.request.ImpMediaType; -import org.prebid.server.proto.openrtb.ext.request.rubicon.ExtImpRubicon; -import org.prebid.server.proto.openrtb.ext.request.rubicon.ExtImpRubiconDebug; -import org.prebid.server.proto.openrtb.ext.request.rubicon.RubiconVideoParams; +import org.prebid.server.proto.openrtb.ext.request.magnite.ExtImpMagnite; +import org.prebid.server.proto.openrtb.ext.request.magnite.ExtImpMagniteDebug; +import org.prebid.server.proto.openrtb.ext.request.magnite.MagniteVideoParams; import org.prebid.server.proto.openrtb.ext.response.BidType; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidMeta; @@ -128,9 +128,9 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; -public class RubiconBidder implements Bidder { +public class MagniteBidder implements Bidder { - private static final Logger logger = LoggerFactory.getLogger(RubiconBidder.class); + private static final Logger logger = LoggerFactory.getLogger(MagniteBidder.class); private static final ConditionalLogger missingVideoSizeLogger = new ConditionalLogger("missing_video_size", logger); @@ -168,7 +168,7 @@ public class RubiconBidder implements Bidder { private static final Set STYPE_TO_REMOVE = new HashSet<>(Arrays.asList(PPUID_STYPE, SHA256EMAIL_STYPE, DMP_STYPE)); - private static final TypeReference> RUBICON_EXT_TYPE_REFERENCE = + private static final TypeReference> MAGNITE_EXT_TYPE_REFERENCE = new TypeReference<>() { }; private static final TypeReference> EXT_PREBID_TYPE_REFERENCE = @@ -192,7 +192,7 @@ public class RubiconBidder implements Bidder { private final MultiMap headers; - public RubiconBidder(String bidderName, + public MagniteBidder(String bidderName, String endpoint, String defaultTkXInt, String externalUrl, @@ -231,18 +231,18 @@ public Result>> makeHttpRequests(BidRequest bidRequ final List imps = extractValidImps(bidRequest, errors); if (CollectionUtils.isEmpty(imps)) { - errors.add(BidderError.badInput("There are no valid impressions to create bid request to rubicon bidder")); + errors.add(BidderError.badInput("There are no valid impressions to create bid request to magnite bidder")); return Result.withErrors(errors); } - final Map impToImpExt = parseRubiconImpExts(imps, errors); + final Map impToImpExt = parseMagniteImpExts(imps, errors); final String language = firstImpExtLanguage(impToImpExt.values()); final String uri = makeUri(bidRequest); - for (Map.Entry impToExt : impToImpExt.entrySet()) { + for (Map.Entry impToExt : impToImpExt.entrySet()) { try { final Imp imp = impToExt.getKey(); - final ExtImpRubicon impExt = impToExt.getValue(); + final ExtImpMagnite impExt = impToExt.getValue(); final String pbBidId = generateBidId ? idGenerator.generateId() : null; final List impBidRequests = isMultiformatEnabled(impExt) ? createMultiFormatRequests(bidRequest, imp, impExt, pbBidId, language, errors) @@ -259,7 +259,7 @@ public Result>> makeHttpRequests(BidRequest bidRequ private List createMultiFormatRequests(BidRequest bidRequest, Imp imp, - ExtImpRubicon impExt, + ExtImpMagnite impExt, String pbBidId, String language, List errors) { @@ -316,8 +316,8 @@ private List> createImpHttpRequests(Imp imp, List> makeBids(BidderCall httpCall, BidRequest bidRequest) { try { final List errors = new ArrayList<>(); - final RubiconBidResponse bidResponse = - mapper.decodeValue(httpCall.getResponse().getBody(), RubiconBidResponse.class); + final MagniteBidResponse bidResponse = + mapper.decodeValue(httpCall.getResponse().getBody(), MagniteBidResponse.class); return Result.of(extractBids(bidRequest, httpCall.getRequest().getPayload(), bidResponse, errors), errors); } catch (DecodeException e) { return Result.withError(BidderError.badServerResponse(e.getMessage())); @@ -326,26 +326,26 @@ public Result> makeBids(BidderCall httpCall, BidRequ @Override public Map extractTargeting(ObjectNode extBidBidder) { - final RubiconTargetingExt rubiconTargetingExt; + final MagniteTargetingExt magniteTargetingExt; try { - rubiconTargetingExt = mapper.mapper().convertValue(extBidBidder, RubiconTargetingExt.class); + magniteTargetingExt = mapper.mapper().convertValue(extBidBidder, MagniteTargetingExt.class); } catch (IllegalArgumentException e) { - logger.warn("Error adding rubicon specific targeting to amp response", e); + logger.warn("Error adding magnite specific targeting to amp response", e); return Collections.emptyMap(); } - final RubiconTargetingExtRp rp = rubiconTargetingExt.getRp(); - final List targetings = rp != null ? rp.getTargeting() : null; + final MagniteTargetingExtRp rp = magniteTargetingExt.getRp(); + final List targetings = rp != null ? rp.getTargeting() : null; return targetings != null ? targetings.stream() .filter(targeting -> !CollectionUtils.isEmpty(targeting.getValues())) - .collect(Collectors.toMap(RubiconTargeting::getKey, targeting -> targeting.getValues().getFirst())) + .collect(Collectors.toMap(MagniteTargeting::getKey, targeting -> targeting.getValues().getFirst())) : Collections.emptyMap(); } private List extractValidImps(BidRequest bidRequest, List errors) { final Map> isValidToImps = bidRequest.getImp().stream() - .collect(Collectors.groupingBy(RubiconBidder::isValidType)); + .collect(Collectors.groupingBy(MagniteBidder::isValidType)); isValidToImps.getOrDefault(false, Collections.emptyList()).stream() .map(this::impTypeErrorMessage) @@ -391,11 +391,11 @@ private static String authHeader(String xapiUsername, String xapiPassword) { return "Basic " + Base64.getEncoder().encodeToString((xapiUsername + ':' + xapiPassword).getBytes()); } - private Map parseRubiconImpExts(List imps, List errors) { - final Map impToImpExt = new HashMap<>(); + private Map parseMagniteImpExts(List imps, List errors) { + final Map impToImpExt = new HashMap<>(); for (final Imp imp : imps) { try { - impToImpExt.put(imp, parseRubiconExt(imp)); + impToImpExt.put(imp, parseMagniteExt(imp)); } catch (PreBidException e) { errors.add(BidderError.badInput(e.getMessage())); } @@ -403,26 +403,26 @@ private Map parseRubiconImpExts(List imps, List rubiconImpExts) { - return rubiconImpExts.stream() + private static String firstImpExtLanguage(Collection magniteImpExts) { + return magniteImpExts.stream() .filter(Objects::nonNull) - .map(ExtImpRubicon::getVideo) + .map(ExtImpMagnite::getVideo) .filter(Objects::nonNull) - .map(RubiconVideoParams::getLanguage) + .map(MagniteVideoParams::getLanguage) .filter(StringUtils::isNotBlank) .findFirst() .orElse(null); @@ -430,18 +430,18 @@ private static String firstImpExtLanguage(Collection rubiconImpEx private BidRequest createSingleRequest(BidRequest bidRequest, Imp imp, - ExtImpRubicon extImpRubicon, + ExtImpMagnite extImpMagnite, String pbBidId, Set formats, String impLanguage, List errors) { return bidRequest.toBuilder() - .imp(Collections.singletonList(makeImp(imp, extImpRubicon, bidRequest, pbBidId, formats, errors))) - .user(downgradeUserConsent(makeUser(bidRequest.getUser(), extImpRubicon))) + .imp(Collections.singletonList(makeImp(imp, extImpMagnite, bidRequest, pbBidId, formats, errors))) + .user(downgradeUserConsent(makeUser(bidRequest.getUser(), extImpMagnite))) .device(makeDevice(bidRequest.getDevice())) - .site(makeSite(bidRequest.getSite(), impLanguage, extImpRubicon)) - .app(makeApp(bidRequest.getApp(), extImpRubicon)) + .site(makeSite(bidRequest.getSite(), impLanguage, extImpMagnite)) + .app(makeApp(bidRequest.getApp(), extImpMagnite)) .source(makeSource(bidRequest.getSource())) .cur(null) // suppress currencies .regs(makeRegs(bidRequest.getRegs())) @@ -469,13 +469,13 @@ private String tkXintValue(BidRequest bidRequest) { return StringUtils.stripToNull(integration); } - private RubiconExtPrebidBiddersBidder extPrebidBiddersRubicon(ExtRequest extRequest) { + private MagniteExtPrebidBiddersBidder extPrebidBiddersMagnite(ExtRequest extRequest) { final ExtRequestPrebid prebid = extRequest == null ? null : extRequest.getPrebid(); final ObjectNode biddersNode = prebid == null ? null : prebid.getBidders(); if (biddersNode != null) { try { - final RubiconExtPrebidBidders bidders = mapper.mapper().convertValue(biddersNode, - RubiconExtPrebidBidders.class); + final MagniteExtPrebidBidders bidders = mapper.mapper().convertValue(biddersNode, + MagniteExtPrebidBidders.class); return bidders == null ? null : bidders.getBidder(); } catch (IllegalArgumentException e) { return null; @@ -485,7 +485,7 @@ private RubiconExtPrebidBiddersBidder extPrebidBiddersRubicon(ExtRequest extRequ } private Imp makeImp(Imp imp, - ExtImpRubicon extImpRubicon, + ExtImpMagnite extImpMagnite, BidRequest bidRequest, String pbImpId, Set formats, @@ -498,7 +498,7 @@ private Imp makeImp(Imp imp, final List priceFloorsWarnings = new ArrayList<>(); final PriceFloorResult priceFloorResult = resolvePriceFloors(bidRequest, imp, impType, priceFloorsWarnings); - final Set resolvedFormats = ObjectUtils.defaultIfNull(extImpRubicon.getFormats(), formats); + final Set resolvedFormats = ObjectUtils.defaultIfNull(extImpMagnite.getFormats(), formats); final BigDecimal ipfFloor = ObjectUtil.getIfNotNull(priceFloorResult, PriceFloorResult::getFloorValue); final String ipfCurrency = ipfFloor != null @@ -512,7 +512,7 @@ private Imp makeImp(Imp imp, final Imp.ImpBuilder builder = imp.toBuilder() .metric(makeMetrics(imp)) .ext(mapper.mapper().valueToTree( - makeImpExt(imp, extImpRubicon, resolvedFormats, site, app, extRequest, pbImpId))); + makeImpExt(imp, extImpMagnite, resolvedFormats, site, app, extRequest, pbImpId))); final BigDecimal resolvedBidFloor = ipfFloor != null ? convertToXAPICurrency(ipfFloor, ipfCurrency, imp, bidRequest) @@ -529,7 +529,7 @@ private Imp makeImp(Imp imp, .banner(null) .xNative(null) .rwdd(null) - .video(makeVideo(imp, extImpRubicon.getVideo(), referer(site))); + .video(makeVideo(imp, extImpMagnite.getVideo(), referer(site))); case banner -> builder .banner(makeBanner(imp)) .xNative(null) @@ -667,27 +667,27 @@ private BigDecimal convertBidFloorCurrency(BigDecimal bidFloor, } } - private RubiconImpExt makeImpExt(Imp imp, - ExtImpRubicon rubiconImpExt, + private MagniteImpExt makeImpExt(Imp imp, + ExtImpMagnite magniteImpExt, Set formats, Site site, App app, ExtRequest extRequest, String pbBidId) { - final RubiconImpExtRpRtb rubiconImpExtRpRtb = CollectionUtils.isNotEmpty(formats) - ? RubiconImpExtRpRtb.of(formats) + final MagniteImpExtRpRtb magniteImpExtRpRtb = CollectionUtils.isNotEmpty(formats) + ? MagniteImpExtRpRtb.of(formats) : null; - final RubiconImpExtRp rubiconImpExtRp = RubiconImpExtRp.of( - rubiconImpExt.getZoneId(), - makeTarget(imp, rubiconImpExt, site, app), - RubiconImpExtRpTrack.of("", ""), - rubiconImpExtRpRtb, + final MagniteImpExtRp magniteImpExtRp = MagniteImpExtRp.of( + magniteImpExt.getZoneId(), + makeTarget(imp, magniteImpExt, site, app), + MagniteImpExtRpTrack.of("", ""), + magniteImpExtRpRtb, pbBidId); - return RubiconImpExt.builder() - .rp(rubiconImpExtRp) + return MagniteImpExt.builder() + .rp(magniteImpExtRp) .viewabilityvendors(mapVendorsNamesToUrls(imp.getMetric())) .maxbids(getMaxBids(extRequest)) .gpid(getGpid(imp.getExt())) @@ -696,14 +696,14 @@ private RubiconImpExt makeImpExt(Imp imp, .build(); } - private JsonNode makeTarget(Imp imp, ExtImpRubicon rubiconImpExt, Site site, App app) { + private JsonNode makeTarget(Imp imp, ExtImpMagnite magniteImpExt, Site site, App app) { final ObjectNode result = mapper.mapper().createObjectNode(); - populateFirstPartyDataAttributes(rubiconImpExt.getInventory(), result); + populateFirstPartyDataAttributes(magniteImpExt.getInventory(), result); mergeFirstPartyDataFromSite(site, result); mergeFirstPartyDataFromApp(app, result); - mergeFirstPartyDataFromImp(imp, rubiconImpExt, result); + mergeFirstPartyDataFromImp(imp, magniteImpExt, result); result.put(PBS_LOGIN, xapiUsername); result.put(PBS_VERSION, versionProvider.getNameVersionRecord()); @@ -732,13 +732,13 @@ private void mergeFirstPartyDataFromApp(App app, ObjectNode result) { } private void mergeFirstPartyDataFromImp(Imp imp, - ExtImpRubicon rubiconImpExt, + ExtImpMagnite magniteImpExt, ObjectNode result) { mergeFirstPartyDataFromData(imp, result); mergeFirstPartyDataKeywords(imp, result); - // merge OPENRTB.imp[].ext.rubicon.keywords to XAPI.imp[].ext.rp.target.keywords - mergeCollectionAttributeIntoArray(result, rubiconImpExt, ExtImpRubicon::getKeywords, FPD_KEYWORDS_FIELD); + // merge OPENRTB.imp[].ext.magnite.keywords to XAPI.imp[].ext.rp.target.keywords + mergeCollectionAttributeIntoArray(result, magniteImpExt, ExtImpMagnite::getKeywords, FPD_KEYWORDS_FIELD); } private void mergeFirstPartyDataFromData(Imp imp, ObjectNode result) { @@ -966,12 +966,12 @@ private static String referer(Site site) { return site != null ? site.getPage() : null; } - private Video makeVideo(Imp imp, RubiconVideoParams rubiconVideoParams, String referer) { + private Video makeVideo(Imp imp, MagniteVideoParams magniteVideoParams, String referer) { final Video video = imp.getVideo(); - final Integer skip = rubiconVideoParams != null ? rubiconVideoParams.getSkip() : null; - final Integer skipDelay = rubiconVideoParams != null ? rubiconVideoParams.getSkipdelay() : null; - final Integer resolvedSizeId = resolveSizeId(rubiconVideoParams, imp, referer); + final Integer skip = magniteVideoParams != null ? magniteVideoParams.getSkip() : null; + final Integer skipDelay = magniteVideoParams != null ? magniteVideoParams.getSkipdelay() : null; + final Integer resolvedSizeId = resolveSizeId(magniteVideoParams, imp, referer); final Integer rewarded = imp.getRwdd(); final String videoType = rewarded != null && rewarded == 1 ? "rewarded" : null; @@ -983,15 +983,15 @@ private Video makeVideo(Imp imp, RubiconVideoParams rubiconVideoParams, String r return video.toBuilder() .ext(mapper.mapper().valueToTree( - RubiconVideoExt.of(skip, + MagniteVideoExt.of(skip, skipDelay, - resolvedSizeId != null ? RubiconVideoExtRp.of(resolvedSizeId) : null, + resolvedSizeId != null ? MagniteVideoExtRp.of(resolvedSizeId) : null, videoType))) .build(); } - private Integer resolveSizeId(RubiconVideoParams rubiconVideoParams, Imp imp, String referer) { - final Integer sizeId = rubiconVideoParams != null ? rubiconVideoParams.getSizeId() : null; + private Integer resolveSizeId(MagniteVideoParams magniteVideoParams, Imp imp, String referer) { + final Integer sizeId = magniteVideoParams != null ? magniteVideoParams.getSizeId() : null; final Integer resolvedSizeId = BidderUtil.isNullOrZero(sizeId) ? null : sizeId; @@ -1016,12 +1016,12 @@ private Banner makeBanner(Imp imp) { final Integer height = banner.getH(); final List format = banner.getFormat(); if ((width == null || height == null) && CollectionUtils.isEmpty(format)) { - throw new PreBidException("rubicon imps must have at least one size element [w, h, format]"); + throw new PreBidException("magnite imps must have at least one size element [w, h, format]"); } return banner.toBuilder() .ext(mapper.mapper().valueToTree( - RubiconBannerExt.of(RubiconBannerExtRp.of("text/html")))) + MagniteBannerExt.of(MagniteBannerExtRp.of("text/html")))) .build(); } @@ -1041,7 +1041,7 @@ private Native makeNative(Imp imp) { String.format("Error in native object for imp with id %s: %s", imp.getId(), e.getMessage())); } - return RubiconNative.builder() + return MagniteNative.builder() .requestNative((ObjectNode) requestNode) .request(xNative.getRequest()) .ver(xNative.getVer()) @@ -1080,7 +1080,7 @@ private void validateNativeRequest(JsonNode requestNode) { } } - private User makeUser(User user, ExtImpRubicon rubiconImpExt) { + private User makeUser(User user, ExtImpMagnite magniteImpExt) { final String userId = user != null ? user.getId() : null; final List userEids = user != null ? user.getEids() : null; final String resolvedId = userId == null ? resolveUserId(userEids) : null; @@ -1090,7 +1090,7 @@ private User makeUser(User user, ExtImpRubicon rubiconImpExt) { ? prepareUserEids(userEids) : userEids; final boolean hasDataToRemove = ObjectUtil.getIfNotNull(user, User::getData) != null; - final RubiconUserExtRp userExtRp = rubiconUserExtRp(user, rubiconImpExt); + final MagniteUserExtRp userExtRp = magniteUserExtRp(user, magniteImpExt); final ObjectNode userExtData = extUser != null ? extUser.getData() : null; if (userExtRp == null @@ -1108,7 +1108,7 @@ private User makeUser(User user, ExtImpRubicon rubiconImpExt) { .eids(resolvedUserEids) .build(); - final RubiconUserExt rubiconUserExt = RubiconUserExt.builder() + final MagniteUserExt magniteUserExt = MagniteUserExt.builder() .rp(userExtRp) .build(); @@ -1121,7 +1121,7 @@ private User makeUser(User user, ExtImpRubicon rubiconImpExt) { .geo(null) .data(null) .eids(null) - .ext(mapper.fillExtension(userExt, rubiconUserExt)) + .ext(mapper.fillExtension(userExt, magniteUserExt)) .build(); } @@ -1181,7 +1181,7 @@ private static boolean hasStypeToRemove(List userEids) { .map(Eid::getUids) .filter(Objects::nonNull) .flatMap(Collection::stream) - .map(RubiconBidder::getUserEidUidStype) + .map(MagniteBidder::getUserEidUidStype) .filter(Objects::nonNull) .anyMatch(STYPE_TO_REMOVE::contains); } @@ -1189,14 +1189,14 @@ private static boolean hasStypeToRemove(List userEids) { private static List prepareUserEids(List userEids) { return CollectionUtils.emptyIfNull(userEids).stream() .filter(Objects::nonNull) - .map(RubiconBidder::prepareExtUserEid) + .map(MagniteBidder::prepareExtUserEid) .toList(); } private static Eid prepareExtUserEid(Eid extUserEid) { final List extUserEidUids = CollectionUtils.emptyIfNull(extUserEid.getUids()).stream() .filter(Objects::nonNull) - .map(RubiconBidder::cleanExtUserEidUidStype) + .map(MagniteBidder::cleanExtUserEidUidStype) .toList(); return extUserEid.toBuilder().uids(extUserEidUids).build(); } @@ -1213,14 +1213,14 @@ private static Uid cleanExtUserEidUidStype(Uid extUserEidUid) { return extUserEidUid.toBuilder().ext(extUserEidUidExtCopy).build(); } - private RubiconUserExtRp rubiconUserExtRp(User user, ExtImpRubicon rubiconImpExt) { - final JsonNode target = rubiconUserExtRpTarget(rubiconImpExt.getVisitor(), user); + private MagniteUserExtRp magniteUserExtRp(User user, ExtImpMagnite magniteImpExt) { + final JsonNode target = magniteUserExtRpTarget(magniteImpExt.getVisitor(), user); - return target != null ? RubiconUserExtRp.of(target) : null; + return target != null ? MagniteUserExtRp.of(target) : null; } - private JsonNode rubiconUserExtRpTarget(ObjectNode visitor, User user) { - final ObjectNode result = existingRubiconUserExtRpTarget(user); + private JsonNode magniteUserExtRpTarget(ObjectNode visitor, User user) { + final ObjectNode result = existingMagniteUserExtRpTarget(user); populateFirstPartyDataAttributes(visitor, result); @@ -1233,13 +1233,13 @@ private JsonNode rubiconUserExtRpTarget(ObjectNode visitor, User user) { return !result.isEmpty() ? result : null; } - private ObjectNode existingRubiconUserExtRpTarget(User user) { + private ObjectNode existingMagniteUserExtRpTarget(User user) { final ExtUser userExt = user != null ? user.getExt() : null; - final RubiconUserExt userRubiconExt = userExt != null - ? mapper.mapper().convertValue(userExt, RubiconUserExt.class) + final MagniteUserExt userMagniteExt = userExt != null + ? mapper.mapper().convertValue(userExt, MagniteUserExt.class) : null; - final RubiconUserExtRp userRubiconRpExt = userRubiconExt != null ? userRubiconExt.getRp() : null; - final JsonNode target = userRubiconRpExt != null ? userRubiconRpExt.getTarget() : null; + final MagniteUserExtRp userMagniteRpExt = userMagniteExt != null ? userMagniteExt.getRp() : null; + final JsonNode target = userMagniteRpExt != null ? userMagniteRpExt.getTarget() : null; return target != null && target.isObject() ? (ObjectNode) target : mapper.mapper().createObjectNode(); } @@ -1297,11 +1297,11 @@ private Device makeDevice(Device device) { return device == null ? null : device.toBuilder() .ext(mapper.fillExtension( ExtDevice.empty(), - RubiconDeviceExt.of(RubiconDeviceExtRp.of(device.getPxratio())))) + MagniteDeviceExt.of(MagniteDeviceExtRp.of(device.getPxratio())))) .build(); } - private Site makeSite(Site site, String impLanguage, ExtImpRubicon rubiconImpExt) { + private Site makeSite(Site site, String impLanguage, ExtImpMagnite magniteImpExt) { if (site == null && StringUtils.isBlank(impLanguage)) { return null; } @@ -1311,9 +1311,9 @@ private Site makeSite(Site site, String impLanguage, ExtImpRubicon rubiconImpExt .content(makeSiteContent(null, impLanguage)) .build() : site.toBuilder() - .publisher(makePublisher(rubiconImpExt)) + .publisher(makePublisher(magniteImpExt)) .content(makeSiteContent(site.getContent(), impLanguage)) - .ext(makeSiteExt(site, rubiconImpExt)) + .ext(makeSiteExt(site, magniteImpExt)) .build(); } @@ -1335,19 +1335,19 @@ private static Content makeSiteContent(Content siteContent, String impLanguage) : siteContent; } - private Publisher makePublisher(ExtImpRubicon rubiconImpExt) { + private Publisher makePublisher(ExtImpMagnite magniteImpExt) { return Publisher.builder() - .ext(makePublisherExt(rubiconImpExt)) + .ext(makePublisherExt(magniteImpExt)) .build(); } - private ExtPublisher makePublisherExt(ExtImpRubicon rubiconImpExt) { + private ExtPublisher makePublisherExt(ExtImpMagnite magniteImpExt) { return mapper.fillExtension( ExtPublisher.empty(), - RubiconPubExt.of(RubiconPubExtRp.of(rubiconImpExt.getAccountId()))); + MagnitePubExt.of(MagnitePubExtRp.of(magniteImpExt.getAccountId()))); } - private ExtSite makeSiteExt(Site site, ExtImpRubicon rubiconImpExt) { + private ExtSite makeSiteExt(Site site, ExtImpMagnite magniteImpExt) { final ExtSite extSite = site != null ? site.getExt() : null; final Integer siteExtAmp = extSite != null ? extSite.getAmp() : null; final Content siteContent = site != null ? site.getContent() : null; @@ -1355,36 +1355,36 @@ private ExtSite makeSiteExt(Site site, ExtImpRubicon rubiconImpExt) { ObjectNode target = null; if (CollectionUtils.isNotEmpty(siteContentData)) { - target = existingRubiconSiteExtRpTargetOrEmptyNode(extSite); + target = existingMagniteSiteExtRpTargetOrEmptyNode(extSite); enrichWithIabAndSegtaxAttribute(target, siteContentData, SITE_SEGTAXES); } return mapper.fillExtension( ExtSite.of(siteExtAmp, null), - RubiconSiteExt.of(RubiconSiteExtRp.of(rubiconImpExt.getSiteId(), + MagniteSiteExt.of(MagniteSiteExtRp.of(magniteImpExt.getSiteId(), target != null && !target.isEmpty() ? target : null))); } - private ObjectNode existingRubiconSiteExtRpTargetOrEmptyNode(ExtSite siteExt) { - final RubiconSiteExt rubiconSiteExt = siteExt != null - ? mapper.mapper().convertValue(siteExt, RubiconSiteExt.class) + private ObjectNode existingMagniteSiteExtRpTargetOrEmptyNode(ExtSite siteExt) { + final MagniteSiteExt magniteSiteExt = siteExt != null + ? mapper.mapper().convertValue(siteExt, MagniteSiteExt.class) : null; - final RubiconSiteExtRp rubiconSiteExtRp = rubiconSiteExt != null ? rubiconSiteExt.getRp() : null; - final JsonNode target = rubiconSiteExtRp != null ? rubiconSiteExtRp.getTarget() : null; + final MagniteSiteExtRp magniteSiteExtRp = magniteSiteExt != null ? magniteSiteExt.getRp() : null; + final JsonNode target = magniteSiteExtRp != null ? magniteSiteExtRp.getTarget() : null; return target != null && target.isObject() ? (ObjectNode) target : mapper.mapper().createObjectNode(); } - private App makeApp(App app, ExtImpRubicon rubiconImpExt) { + private App makeApp(App app, ExtImpMagnite magniteImpExt) { return app == null ? null : app.toBuilder() - .publisher(makePublisher(rubiconImpExt)) - .ext(makeAppExt(rubiconImpExt)) + .publisher(makePublisher(magniteImpExt)) + .ext(makeAppExt(magniteImpExt)) .build(); } - private ExtApp makeAppExt(ExtImpRubicon rubiconImpExt) { + private ExtApp makeAppExt(ExtImpMagnite magniteImpExt) { return mapper.fillExtension(ExtApp.of(null, null), - RubiconAppExt.of(RubiconSiteExtRp.of(rubiconImpExt.getSiteId(), null))); + MagniteAppExt.of(MagniteSiteExtRp.of(magniteImpExt.getSiteId(), null))); } private static Source makeSource(Source source) { @@ -1463,7 +1463,7 @@ private List> createDealsRequests(BidRequest bidRequest, private BidRequest createLineItemBidRequest(ExtDealLine lineItem, BidRequest bidRequest, Imp imp) { final Imp dealsImp = imp.toBuilder() .banner(modifyBanner(imp.getBanner(), lineItem.getSizes())) - .ext(modifyRubiconImpExt(imp.getExt(), bidRequest.getExt(), lineItem.getExtLineItemId(), + .ext(modifyMagniteImpExt(imp.getExt(), bidRequest.getExt(), lineItem.getExtLineItemId(), getAdSlot(imp))) .build(); @@ -1476,23 +1476,23 @@ private static Banner modifyBanner(Banner banner, List sizes) { return CollectionUtils.isEmpty(sizes) || banner == null ? banner : banner.toBuilder().format(sizes).build(); } - private ObjectNode modifyRubiconImpExt(ObjectNode impExtNode, ExtRequest extRequest, String extLineItemId, + private ObjectNode modifyMagniteImpExt(ObjectNode impExtNode, ExtRequest extRequest, String extLineItemId, String adSlot) { - final RubiconImpExt rubiconImpExt = mapper.mapper().convertValue(impExtNode, RubiconImpExt.class); - final RubiconImpExtRp impExtRp = rubiconImpExt.getRp(); + final MagniteImpExt magniteImpExt = mapper.mapper().convertValue(impExtNode, MagniteImpExt.class); + final MagniteImpExtRp impExtRp = magniteImpExt.getRp(); final ObjectNode targetNode = impExtRp.getTarget() == null || impExtRp.getTarget().isNull() ? mapper.mapper().createObjectNode() : (ObjectNode) impExtRp.getTarget(); final ObjectNode modifiedTargetNode = targetNode.put("line_item", extLineItemId); - final RubiconImpExtRp modifiedImpExtRp = RubiconImpExtRp.of( + final MagniteImpExtRp modifiedImpExtRp = MagniteImpExtRp.of( impExtRp.getZoneId(), modifiedTargetNode, impExtRp.getTrack(), impExtRp.getRtb(), impExtRp.getPbBidId()); - return mapper.mapper().valueToTree(rubiconImpExt.toBuilder() + return mapper.mapper().valueToTree(magniteImpExt.toBuilder() .rp(modifiedImpExtRp) .maxbids(getMaxBids(extRequest)) .gpid(adSlot) @@ -1502,7 +1502,7 @@ private ObjectNode modifyRubiconImpExt(ObjectNode impExtNode, ExtRequest extRequ private List extractBids(BidRequest prebidRequest, BidRequest bidRequest, - RubiconBidResponse bidResponse, + MagniteBidResponse bidResponse, List errors) { return bidResponse == null || CollectionUtils.isEmpty(bidResponse.getSeatbid()) ? Collections.emptyList() @@ -1511,14 +1511,14 @@ private List extractBids(BidRequest prebidRequest, private List bidsFromResponse(BidRequest prebidRequest, BidRequest bidRequest, - RubiconBidResponse bidResponse, + MagniteBidResponse bidResponse, List errors) { final Map idToImp = prebidRequest.getImp().stream() .collect(Collectors.toMap(Imp::getId, Function.identity())); - final Map idToRubiconImp = bidRequest.getImp().stream() + final Map idToMagniteImp = bidRequest.getImp().stream() .collect(Collectors.toMap(Imp::getId, Function.identity())); - final RubiconExtPrebidBiddersBidder extPrebidBiddersBidder = extPrebidBiddersRubicon(prebidRequest.getExt()); + final MagniteExtPrebidBiddersBidder extPrebidBiddersBidder = extPrebidBiddersMagnite(prebidRequest.getExt()); final Float cpmOverrideFromRequest = cpmOverrideFromRequest(extPrebidBiddersBidder); final boolean hasApexRenderer = hasApexRenderer(extPrebidBiddersBidder); final BidType bidType = bidType(bidRequest); @@ -1531,7 +1531,7 @@ private List bidsFromResponse(BidRequest prebidRequest, bid, seatBid, idToImp.get(bid.getImpid()), - idToRubiconImp.get(bid.getImpid()), + idToMagniteImp.get(bid.getImpid()), bidType, cpmOverrideFromRequest, hasApexRenderer, @@ -1539,7 +1539,7 @@ private List bidsFromResponse(BidRequest prebidRequest, .filter(Objects::nonNull) .map(bid -> createBidderBid( bid, - idToRubiconImp.get(bid.getImpid()), + idToMagniteImp.get(bid.getImpid()), bidType, bidResponse.getCur())) .toList()) @@ -1547,10 +1547,10 @@ private List bidsFromResponse(BidRequest prebidRequest, .toList(); } - private Bid updateBid(RubiconBid bid, - RubiconSeatBid seatBid, + private Bid updateBid(MagniteBid bid, + MagniteSeatBid seatBid, Imp imp, - Imp rubiconImp, + Imp magniteImp, BidType bidType, Float cpmOverrideFromRequest, boolean hasApexRenderer, @@ -1570,18 +1570,18 @@ private Bid updateBid(RubiconBid bid, ? new BigDecimal(String.valueOf(cpmOverride)) : bid.getPrice(); - final RubiconBid updatedRubiconBid = bid.toBuilder() - .id(resolveBidId(rubiconImp, bid)) + final MagniteBid updatedMagniteBid = bid.toBuilder() + .id(resolveBidId(magniteImp, bid)) .adm(resolveAdm(bid.getAdm(), bid.getAdmNative())) .price(bidPrice) .ext(updateBidExt) .build(); - return bidFromRubiconBid(updatedRubiconBid); + return bidFromMagniteBid(updatedMagniteBid); } - private ObjectNode prepareBidExt(RubiconBid bid, - RubiconSeatBid seatBid, + private ObjectNode prepareBidExt(MagniteBid bid, + MagniteSeatBid seatBid, Imp imp, BidType bidType, boolean hasApexRenderer) { @@ -1629,7 +1629,7 @@ private ExtPrebid getExtPrebid(ObjectNode bidExt, Stri } } - private static Integer resolveNetworkId(RubiconSeatBid seatBid) { + private static Integer resolveNetworkId(MagniteSeatBid seatBid) { final String buyer = seatBid.getBuyer(); final int networkId = NumberUtils.toInt(buyer, 0); return networkId <= 0 ? null : networkId; @@ -1660,7 +1660,7 @@ private static Integer resolveAdvertiserId(ObjectNode bidExt) { .map(ext -> ext.get("rp")) .filter(JsonNode::isObject) .map(rp -> rp.get("advid")) - .map(RubiconBidder::convertToInt) + .map(MagniteBidder::convertToInt) .orElse(null); } @@ -1680,9 +1680,9 @@ private static Integer convertToInt(JsonNode jsonNode) { return null; } - private String resolveBidId(Imp rubiconImp, RubiconBid bid) { + private String resolveBidId(Imp magniteImp, MagniteBid bid) { return generateBidId - ? Optional.ofNullable(rubiconImp) + ? Optional.ofNullable(magniteImp) .map(Imp::getExt) .map(ext -> ext.get("rp")) .map(rp -> rp.get("pb_bid_id")) @@ -1699,11 +1699,11 @@ private String resolveAdm(String bidAdm, ObjectNode admobject) { return admobject != null ? admobject.toString() : null; } - private Bid bidFromRubiconBid(RubiconBid rubiconBid) { + private Bid bidFromMagniteBid(MagniteBid magniteBid) { try { - return mapper.mapper().convertValue(rubiconBid, Bid.class); + return mapper.mapper().convertValue(magniteBid, Bid.class); } catch (IllegalArgumentException e) { - throw new PreBidException("Error converting rubiconBid to ortbBid: " + e.getMessage(), e); + throw new PreBidException("Error converting magniteBid to ortbBid: " + e.getMessage(), e); } } @@ -1716,21 +1716,21 @@ private static BidderBid createBidderBid(Bid bid, Imp imp, BidType bidType, Stri .build(); } - private static Float cpmOverrideFromRequest(RubiconExtPrebidBiddersBidder bidder) { - final RubiconExtPrebidBiddersBidderDebug debug = bidder != null ? bidder.getDebug() : null; + private static Float cpmOverrideFromRequest(MagniteExtPrebidBiddersBidder bidder) { + final MagniteExtPrebidBiddersBidderDebug debug = bidder != null ? bidder.getDebug() : null; return debug != null ? debug.getCpmoverride() : null; } private Float cpmOverrideFromImp(Imp imp) { return Optional.ofNullable(imp) - .map(this::parseRubiconExt) - .map(ExtImpRubicon::getDebug) - .map(ExtImpRubiconDebug::getCpmoverride) + .map(this::parseMagniteExt) + .map(ExtImpMagnite::getDebug) + .map(ExtImpMagniteDebug::getCpmoverride) .orElse(null); } - private static boolean hasApexRenderer(RubiconExtPrebidBiddersBidder bidder) { - return Optional.ofNullable(bidder).map(RubiconExtPrebidBiddersBidder::getApexRenderer).orElse(false); + private static boolean hasApexRenderer(MagniteExtPrebidBiddersBidder bidder) { + return Optional.ofNullable(bidder).map(MagniteExtPrebidBiddersBidder::getApexRenderer).orElse(false); } private static BidType bidType(BidRequest bidRequest) { diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteAppExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteAppExt.java new file mode 100644 index 00000000000..ae089e9ae58 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteAppExt.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteAppExt { + + MagniteSiteExtRp rp; +} diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExt.java new file mode 100644 index 00000000000..5c60c4419b6 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExt.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteBannerExt { + + MagniteBannerExtRp rp; +} diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExtRp.java new file mode 100644 index 00000000000..0342e8ab507 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteBannerExtRp.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteBannerExtRp { + + String mime; +} diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteDeviceExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteDeviceExt.java new file mode 100644 index 00000000000..93bcecdebb9 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteDeviceExt.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteDeviceExt { + + MagniteDeviceExtRp rp; +} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconDeviceExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteDeviceExtRp.java similarity index 56% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconDeviceExtRp.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteDeviceExtRp.java index 6cfcb37b934..6d572786616 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconDeviceExtRp.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteDeviceExtRp.java @@ -1,11 +1,11 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import lombok.Value; import java.math.BigDecimal; @Value(staticConstructor = "of") -public class RubiconDeviceExtRp { +public class MagniteDeviceExtRp { BigDecimal pixelratio; } diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBidders.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBidders.java new file mode 100644 index 00000000000..edaa111cf70 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBidders.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteExtPrebidBidders { + + MagniteExtPrebidBiddersBidder bidder; +} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBiddersBidder.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBiddersBidder.java similarity index 57% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBiddersBidder.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBiddersBidder.java index f2988ffe165..5a96dce03ea 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBiddersBidder.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBiddersBidder.java @@ -1,14 +1,14 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Value; @Value(staticConstructor = "of") -public class RubiconExtPrebidBiddersBidder { +public class MagniteExtPrebidBiddersBidder { String integration; - RubiconExtPrebidBiddersBidderDebug debug; + MagniteExtPrebidBiddersBidderDebug debug; @JsonProperty("apexRenderer") Boolean apexRenderer; diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBiddersBidderDebug.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBiddersBidderDebug.java new file mode 100644 index 00000000000..8c2c23854bf --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteExtPrebidBiddersBidderDebug.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteExtPrebidBiddersBidderDebug { + + Float cpmoverride; +} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExt.java similarity index 66% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExt.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExt.java index d40333b891a..1def70255da 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExt.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExt.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.Builder; @@ -8,9 +8,9 @@ @Value @Builder(toBuilder = true) -public class RubiconImpExt { +public class MagniteImpExt { - RubiconImpExtRp rp; + MagniteImpExtRp rp; List viewabilityvendors; @@ -22,5 +22,5 @@ public class RubiconImpExt { String tid; - RubiconImpExtPrebid prebid; + MagniteImpExtPrebid prebid; } diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtPrebid.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtPrebid.java similarity index 72% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtPrebid.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtPrebid.java index 039fec04fbe..99bb646e896 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtPrebid.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtPrebid.java @@ -1,10 +1,10 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import lombok.Value; import org.prebid.server.proto.openrtb.ext.request.ExtImpPrebidFloors; @Value(staticConstructor = "of") -public class RubiconImpExtPrebid { +public class MagniteImpExtPrebid { /** * Defines the contract for bidrequest.imp[i].ext.prebid.floors diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRp.java similarity index 53% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRp.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRp.java index fae19232ebe..c9ff5b69e38 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRp.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRp.java @@ -1,18 +1,18 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import com.fasterxml.jackson.databind.JsonNode; import lombok.Value; @Value(staticConstructor = "of") -public class RubiconImpExtRp { +public class MagniteImpExtRp { Integer zoneId; JsonNode target; - RubiconImpExtRpTrack track; + MagniteImpExtRpTrack track; - RubiconImpExtRpRtb rtb; + MagniteImpExtRpRtb rtb; String pbBidId; } diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRpRtb.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRpRtb.java similarity index 66% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRpRtb.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRpRtb.java index d127ed39502..7e43447b3d0 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRpRtb.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRpRtb.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import lombok.Value; import org.prebid.server.proto.openrtb.ext.request.ImpMediaType; @@ -6,7 +6,7 @@ import java.util.Set; @Value(staticConstructor = "of") -public class RubiconImpExtRpRtb { +public class MagniteImpExtRpRtb { Set formats; } diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRpTrack.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRpTrack.java similarity index 52% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRpTrack.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRpTrack.java index 0ff71bc5aaa..c4876b59f6d 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconImpExtRpTrack.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteImpExtRpTrack.java @@ -1,9 +1,9 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import lombok.Value; @Value(staticConstructor = "of") -public class RubiconImpExtRpTrack { +public class MagniteImpExtRpTrack { String mint; diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconNative.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteNative.java similarity index 73% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconNative.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteNative.java index 7ab007d1212..0aae1982c33 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconNative.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteNative.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import com.fasterxml.jackson.databind.node.ObjectNode; import com.iab.openrtb.request.Native; @@ -9,7 +9,7 @@ @Value @SuperBuilder @EqualsAndHashCode(callSuper = true) -public class RubiconNative extends Native { +public class MagniteNative extends Native { ObjectNode requestNative; } diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExt.java new file mode 100644 index 00000000000..01df78d8def --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExt.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagnitePubExt { + + MagnitePubExtRp rp; +} diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExtRp.java new file mode 100644 index 00000000000..d8c16c28864 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagnitePubExtRp.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagnitePubExtRp { + + Integer accountId; +} diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteSiteExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteSiteExt.java new file mode 100644 index 00000000000..37ac0d4aef2 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteSiteExt.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteSiteExt { + + MagniteSiteExtRp rp; +} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconSiteExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteSiteExtRp.java similarity index 62% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconSiteExtRp.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteSiteExtRp.java index 7c8c7f88d33..00960de9aa6 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconSiteExtRp.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteSiteExtRp.java @@ -1,10 +1,10 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import com.fasterxml.jackson.databind.JsonNode; import lombok.Value; @Value(staticConstructor = "of") -public class RubiconSiteExtRp { +public class MagniteSiteExtRp { Integer siteId; diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargeting.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargeting.java similarity index 58% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargeting.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargeting.java index ee8ff245729..b5827d6944d 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargeting.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargeting.java @@ -1,11 +1,11 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import lombok.Value; import java.util.List; @Value(staticConstructor = "of") -public class RubiconTargeting { +public class MagniteTargeting { String key; diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExt.java new file mode 100644 index 00000000000..583ca78f6ee --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExt.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteTargetingExt { + + MagniteTargetingExtRp rp; +} diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExtRp.java new file mode 100644 index 00000000000..29ade94387a --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteTargetingExtRp.java @@ -0,0 +1,11 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +import java.util.List; + +@Value(staticConstructor = "of") +public class MagniteTargetingExtRp { + + List targeting; +} diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteUserExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteUserExt.java new file mode 100644 index 00000000000..c6dbd36a7e3 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteUserExt.java @@ -0,0 +1,11 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Builder; +import lombok.Value; + +@Builder +@Value +public class MagniteUserExt { + + MagniteUserExtRp rp; +} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconUserExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteUserExtRp.java similarity index 59% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconUserExtRp.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteUserExtRp.java index a3f16f3a5f2..0e3b44d3bc4 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconUserExtRp.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteUserExtRp.java @@ -1,10 +1,10 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import com.fasterxml.jackson.databind.JsonNode; import lombok.Value; @Value(staticConstructor = "of") -public class RubiconUserExtRp { +public class MagniteUserExtRp { JsonNode target; } diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconVideoExt.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteVideoExt.java similarity index 52% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconVideoExt.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteVideoExt.java index fe85f28ad09..f08ffc273dc 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconVideoExt.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteVideoExt.java @@ -1,15 +1,15 @@ -package org.prebid.server.bidder.rubicon.proto.request; +package org.prebid.server.bidder.magnite.proto.request; import lombok.Value; @Value(staticConstructor = "of") -public class RubiconVideoExt { +public class MagniteVideoExt { Integer skip; Integer skipdelay; - RubiconVideoExtRp rp; + MagniteVideoExtRp rp; String videotype; } diff --git a/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteVideoExtRp.java b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteVideoExtRp.java new file mode 100644 index 00000000000..fc9af2335b3 --- /dev/null +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/request/MagniteVideoExtRp.java @@ -0,0 +1,9 @@ +package org.prebid.server.bidder.magnite.proto.request; + +import lombok.Value; + +@Value(staticConstructor = "of") +public class MagniteVideoExtRp { + + Integer sizeId; +} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconBid.java b/src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteBid.java similarity index 89% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconBid.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteBid.java index c8580f53323..7ce36d6eded 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconBid.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteBid.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon.proto.response; +package org.prebid.server.bidder.magnite.proto.response; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.Builder; @@ -9,7 +9,7 @@ @Builder(toBuilder = true) @Value -public class RubiconBid { +public class MagniteBid { String id; diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconBidResponse.java b/src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteBidResponse.java similarity index 67% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconBidResponse.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteBidResponse.java index 23317236057..25c3891623d 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconBidResponse.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteBidResponse.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon.proto.response; +package org.prebid.server.bidder.magnite.proto.response; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.Builder; @@ -8,11 +8,11 @@ @Builder @Value -public class RubiconBidResponse { +public class MagniteBidResponse { String id; - List seatbid; + List seatbid; String bidid; diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconSeatBid.java b/src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteSeatBid.java similarity index 67% rename from src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconSeatBid.java rename to src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteSeatBid.java index 6c58cd64c5d..f3f6c17ee96 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/response/RubiconSeatBid.java +++ b/src/main/java/org/prebid/server/bidder/magnite/proto/response/MagniteSeatBid.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon.proto.response; +package org.prebid.server.bidder.magnite.proto.response; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.Builder; @@ -8,9 +8,9 @@ @Builder(toBuilder = true) @Value -public class RubiconSeatBid { +public class MagniteSeatBid { - List bid; + List bid; String seat; diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconAppExt.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconAppExt.java deleted file mode 100644 index 905527302b9..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconAppExt.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconAppExt { - - RubiconSiteExtRp rp; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExt.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExt.java deleted file mode 100644 index 95625d80fd7..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExt.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconBannerExt { - - RubiconBannerExtRp rp; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExtRp.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExtRp.java deleted file mode 100644 index 6aaadbb26f0..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconBannerExtRp.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconBannerExtRp { - - String mime; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconDeviceExt.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconDeviceExt.java deleted file mode 100644 index 2d3ea5de017..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconDeviceExt.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconDeviceExt { - - RubiconDeviceExtRp rp; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBidders.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBidders.java deleted file mode 100644 index d7fa100c490..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBidders.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconExtPrebidBidders { - - RubiconExtPrebidBiddersBidder bidder; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBiddersBidderDebug.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBiddersBidderDebug.java deleted file mode 100644 index 0947162a9f9..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconExtPrebidBiddersBidderDebug.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconExtPrebidBiddersBidderDebug { - - Float cpmoverride; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExt.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExt.java deleted file mode 100644 index 507a0354b8c..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExt.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconPubExt { - - RubiconPubExtRp rp; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExtRp.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExtRp.java deleted file mode 100644 index 274ff2c4576..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconPubExtRp.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconPubExtRp { - - Integer accountId; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconSiteExt.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconSiteExt.java deleted file mode 100644 index ba3bd531196..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconSiteExt.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconSiteExt { - - RubiconSiteExtRp rp; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExt.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExt.java deleted file mode 100644 index 23fcfc62e86..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExt.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconTargetingExt { - - RubiconTargetingExtRp rp; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExtRp.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExtRp.java deleted file mode 100644 index 75835a959c3..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconTargetingExtRp.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -import java.util.List; - -@Value(staticConstructor = "of") -public class RubiconTargetingExtRp { - - List targeting; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconUserExt.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconUserExt.java deleted file mode 100644 index 1f3d8116629..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconUserExt.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Builder; -import lombok.Value; - -@Builder -@Value -public class RubiconUserExt { - - RubiconUserExtRp rp; -} diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconVideoExtRp.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconVideoExtRp.java deleted file mode 100644 index 602dd9f5409..00000000000 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/request/RubiconVideoExtRp.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.prebid.server.bidder.rubicon.proto.request; - -import lombok.Value; - -@Value(staticConstructor = "of") -public class RubiconVideoExtRp { - - Integer sizeId; -} diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/ExtImpRubicon.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/ExtImpMagnite.java similarity index 75% rename from src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/ExtImpRubicon.java rename to src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/ExtImpMagnite.java index c1cd0e3e326..103b54cf2d1 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/ExtImpRubicon.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/ExtImpMagnite.java @@ -1,4 +1,4 @@ -package org.prebid.server.proto.openrtb.ext.request.rubicon; +package org.prebid.server.proto.openrtb.ext.request.magnite; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -10,11 +10,11 @@ import java.util.Set; /** - * Defines the contract for bidrequest.imp[i].ext.rubicon + * Defines the contract for bidrequest.imp[i].ext.magnite */ @Builder @Value -public class ExtImpRubicon { +public class ExtImpMagnite { @JsonProperty("accountId") Integer accountId; @@ -34,11 +34,11 @@ public class ExtImpRubicon { ObjectNode visitor; - RubiconVideoParams video; + MagniteVideoParams video; List keywords; Set formats; - ExtImpRubiconDebug debug; + ExtImpMagniteDebug debug; } diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/ExtImpRubiconDebug.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/ExtImpMagniteDebug.java similarity index 71% rename from src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/ExtImpRubiconDebug.java rename to src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/ExtImpMagniteDebug.java index 42590bd46f2..934a52a3656 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/ExtImpRubiconDebug.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/ExtImpMagniteDebug.java @@ -1,12 +1,12 @@ -package org.prebid.server.proto.openrtb.ext.request.rubicon; +package org.prebid.server.proto.openrtb.ext.request.magnite; import lombok.Value; /** - * Defines the contract for bidrequest.imp[i].ext.prebid.bidder.rubicon.debug + * Defines the contract for bidrequest.imp[i].ext.prebid.bidder.magnite.debug */ @Value(staticConstructor = "of") -public class ExtImpRubiconDebug { +public class ExtImpMagniteDebug { /** * This should be used only for testing. diff --git a/src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/RubiconVideoParams.java b/src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/MagniteVideoParams.java similarity index 77% rename from src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/RubiconVideoParams.java rename to src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/MagniteVideoParams.java index d41e897514c..8bdaafa5d4c 100644 --- a/src/main/java/org/prebid/server/proto/openrtb/ext/request/rubicon/RubiconVideoParams.java +++ b/src/main/java/org/prebid/server/proto/openrtb/ext/request/magnite/MagniteVideoParams.java @@ -1,4 +1,4 @@ -package org.prebid.server.proto.openrtb.ext.request.rubicon; +package org.prebid.server.proto.openrtb.ext.request.magnite; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Builder; @@ -6,7 +6,7 @@ @Builder @Value -public class RubiconVideoParams { +public class MagniteVideoParams { String language; diff --git a/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java b/src/main/java/org/prebid/server/spring/config/bidder/MagniteConfiguration.java similarity index 80% rename from src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java rename to src/main/java/org/prebid/server/spring/config/bidder/MagniteConfiguration.java index a43ba818f86..15a5d537305 100644 --- a/src/main/java/org/prebid/server/spring/config/bidder/RubiconConfiguration.java +++ b/src/main/java/org/prebid/server/spring/config/bidder/MagniteConfiguration.java @@ -4,7 +4,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import org.prebid.server.bidder.BidderDeps; -import org.prebid.server.bidder.rubicon.RubiconBidder; +import org.prebid.server.bidder.magnite.MagniteBidder; import org.prebid.server.currency.CurrencyConversionService; import org.prebid.server.floors.PriceFloorResolver; import org.prebid.server.identity.UUIDIdGenerator; @@ -25,29 +25,29 @@ import jakarta.validation.constraints.NotNull; @Configuration -@PropertySource(value = "classpath:/bidder-config/rubicon.yaml", factory = YamlPropertySourceFactory.class) -public class RubiconConfiguration { +@PropertySource(value = "classpath:/bidder-config/magnite.yaml", factory = YamlPropertySourceFactory.class) +public class MagniteConfiguration { - private static final String BIDDER_NAME = "rubicon"; + private static final String BIDDER_NAME = "magnite"; - @Bean("rubiconConfigurationProperties") - @ConfigurationProperties("adapters.rubicon") - RubiconConfigurationProperties configurationProperties() { - return new RubiconConfigurationProperties(); + @Bean("magniteConfigurationProperties") + @ConfigurationProperties("adapters.magnite") + MagniteConfigurationProperties configurationProperties() { + return new MagniteConfigurationProperties(); } @Bean - BidderDeps rubiconBidderDeps(RubiconConfigurationProperties rubiconConfigurationProperties, + BidderDeps magniteBidderDeps(MagniteConfigurationProperties magniteConfigurationProperties, @NotBlank @Value("${external-url}") String externalUrl, CurrencyConversionService currencyConversionService, PriceFloorResolver floorResolver, PrebidVersionProvider versionProvider, JacksonMapper mapper) { - return BidderDepsAssembler.forBidder(BIDDER_NAME) - .withConfig(rubiconConfigurationProperties) + return BidderDepsAssembler.forBidder(BIDDER_NAME) + .withConfig(magniteConfigurationProperties) .bidderCreator(config -> - new RubiconBidder( + new MagniteBidder( BIDDER_NAME, config.getEndpoint(), config.getDefaultTkXInt(), @@ -69,7 +69,7 @@ BidderDeps rubiconBidderDeps(RubiconConfigurationProperties rubiconConfiguration @Data @EqualsAndHashCode(callSuper = true) @NoArgsConstructor - private static class RubiconConfigurationProperties extends BidderConfigurationProperties { + private static class MagniteConfigurationProperties extends BidderConfigurationProperties { @Valid @NotNull diff --git a/src/main/java/org/prebid/server/validation/BidderParamValidator.java b/src/main/java/org/prebid/server/validation/BidderParamValidator.java index 71a21b13341..dd1cb0dfc79 100644 --- a/src/main/java/org/prebid/server/validation/BidderParamValidator.java +++ b/src/main/java/org/prebid/server/validation/BidderParamValidator.java @@ -59,7 +59,7 @@ public Set validate(String bidder, JsonNode jsonNode) { * "audienceNetwork": { * "schema": "..." * }, - * "rubicon": { + * "magnite": { * "schema": "...." * } * } diff --git a/src/main/resources/bidder-config/rubicon.yaml b/src/main/resources/bidder-config/magnite.yaml similarity index 93% rename from src/main/resources/bidder-config/rubicon.yaml rename to src/main/resources/bidder-config/magnite.yaml index 88d48fafd27..64a95dd98bd 100644 --- a/src/main/resources/bidder-config/rubicon.yaml +++ b/src/main/resources/bidder-config/magnite.yaml @@ -1,5 +1,5 @@ adapters: - rubicon: + magnite: ortb-version: "2.6" # Contact global-support@magnite.com to ask about enabling a connection to the Magnite (formerly Rubicon) exchange. # We have the following regional endpoint domains: exapi-us-east, exapi-us-west, exapi-apac, exapi-eu @@ -9,12 +9,12 @@ adapters: geoscope: - global aliases: - magnite: + rubicon: enabled: false ortb: multiformat-supported: true meta-info: - maintainer-email: header-bidding@rubiconproject.com + maintainer-email: header-bidding@magnite.com app-media-types: - banner - video diff --git a/src/main/resources/static/bidder-params/rubicon.json b/src/main/resources/static/bidder-params/magnite.json similarity index 92% rename from src/main/resources/static/bidder-params/rubicon.json rename to src/main/resources/static/bidder-params/magnite.json index 4e9ef90cf72..5f0ea8ea33e 100644 --- a/src/main/resources/static/bidder-params/rubicon.json +++ b/src/main/resources/static/bidder-params/magnite.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Rubicon Adapter Params", - "description": "A schema which validates params accepted by the Rubicon adapter", + "title": "Magnite Adapter Params", + "description": "A schema which validates params accepted by the Magnite adapter", "type": "object", "properties": { "accountId": { @@ -55,7 +55,7 @@ }, "video": { "type": "object", - "description": "An object defining additional Rubicon video parameters", + "description": "An object defining additional Magnite video parameters", "properties": { "language": { "type": "string", @@ -71,7 +71,7 @@ }, "size_id": { "type": "integer", - "description": "Rubicon size_id, used to describe type of video ad (preroll, postroll, etc)" + "description": "Magnite size_id, used to describe type of video ad (preroll, postroll, etc)" }, "skip": { "type": "integer", diff --git a/src/test/groovy/org/prebid/server/functional/model/bidder/BidderName.groovy b/src/test/groovy/org/prebid/server/functional/model/bidder/BidderName.groovy index 8971403ffed..1061cf4a348 100644 --- a/src/test/groovy/org/prebid/server/functional/model/bidder/BidderName.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/bidder/BidderName.groovy @@ -15,9 +15,9 @@ enum BidderName { GENERIC_CAMEL_CASE("GeNerIc"), GENERIC("generic"), GENER_X("gener_x"), - RUBICON("rubicon"), + MAGNITE("magnite"), APPNEXUS("appnexus"), - RUBICON_ALIAS("rubiconAlias"), + MAGNITE_ALIAS("magniteAlias"), OPENX("openx"), OPENX_ALIAS("openxalias"), ACEEX("aceex"), diff --git a/src/test/groovy/org/prebid/server/functional/model/bidder/Rubicon.groovy b/src/test/groovy/org/prebid/server/functional/model/bidder/Magnite.groovy similarity index 74% rename from src/test/groovy/org/prebid/server/functional/model/bidder/Rubicon.groovy rename to src/test/groovy/org/prebid/server/functional/model/bidder/Magnite.groovy index 9ccdd3db258..87358054807 100644 --- a/src/test/groovy/org/prebid/server/functional/model/bidder/Rubicon.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/bidder/Magnite.groovy @@ -2,14 +2,14 @@ package org.prebid.server.functional.model.bidder import org.prebid.server.functional.util.PBSUtils -class Rubicon implements BidderAdapter { +class Magnite implements BidderAdapter { Integer accountId Integer siteId Integer zoneId - static Rubicon getDefaultRubicon() { - new Rubicon().tap { + static Magnite getDefaultMagnite() { + new Magnite().tap { accountId = PBSUtils.randomNumber siteId = PBSUtils.randomNumber zoneId = PBSUtils.randomNumber diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/Bidder.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/Bidder.groovy index 9c4a17ec5cf..5ea7a7d3270 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/Bidder.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/Bidder.groovy @@ -6,7 +6,7 @@ import groovy.transform.ToString import org.prebid.server.functional.model.bidder.AppNexus import org.prebid.server.functional.model.bidder.Generic import org.prebid.server.functional.model.bidder.Openx -import org.prebid.server.functional.model.bidder.Rubicon +import org.prebid.server.functional.model.bidder.Magnite @ToString(includeNames = true, ignoreNulls = true) class Bidder { @@ -19,7 +19,7 @@ class Bidder { Generic generX @JsonProperty("GeNerIc") Generic genericCamelCase - Rubicon rubicon + Magnite magnite @JsonProperty("appnexus") AppNexus appNexus Openx openx diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/Imp.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/Imp.groovy index 13c97a36ba4..0a3d1471fbd 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/Imp.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/Imp.groovy @@ -88,7 +88,7 @@ class Imp { (bidder.alias) : BidderName.ALIAS, (bidder.generic) : BidderName.GENERIC, (bidder.genericCamelCase): BidderName.GENERIC_CAMEL_CASE, - (bidder.rubicon) : BidderName.RUBICON, + (bidder.magnite) : BidderName.MAGNITE, (bidder.appNexus) : BidderName.APPNEXUS, (bidder.openx) : BidderName.OPENX, (bidder.ix) : BidderName.IX diff --git a/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExt.groovy b/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExt.groovy index ebd963b0737..a95e6b4ad69 100644 --- a/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExt.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/request/auction/ImpExt.groovy @@ -6,7 +6,7 @@ import groovy.transform.ToString import org.prebid.server.functional.model.bidder.AppNexus import org.prebid.server.functional.model.bidder.GeneralBidderAdapter import org.prebid.server.functional.model.bidder.Generic -import org.prebid.server.functional.model.bidder.Rubicon +import org.prebid.server.functional.model.bidder.Magnite import org.prebid.server.functional.model.bidderspecific.Rp @ToString(includeNames = true, ignoreNulls = true) @@ -16,7 +16,7 @@ class ImpExt { ImpExtPrebid prebid Generic generic @Deprecated - Rubicon rubicon + Magnite magnite @Deprecated @JsonProperty("appnexus") AppNexus appNexus diff --git a/src/test/groovy/org/prebid/server/functional/model/response/auction/ErrorType.groovy b/src/test/groovy/org/prebid/server/functional/model/response/auction/ErrorType.groovy index 975aa9c710a..81dcd788b7d 100644 --- a/src/test/groovy/org/prebid/server/functional/model/response/auction/ErrorType.groovy +++ b/src/test/groovy/org/prebid/server/functional/model/response/auction/ErrorType.groovy @@ -7,7 +7,7 @@ enum ErrorType { GENERAL("general"), GENERIC("generic"), GENERIC_CAMEL_CASE("GeNerIc"), - RUBICON("rubicon"), + MAGNITE("magnite"), APPNEXUS("appnexus"), PREBID("prebid"), CACHE("cache"), 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 a2a9452971c..2c8837301bc 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/BidAdjustmentSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/BidAdjustmentSpec.groovy @@ -34,7 +34,7 @@ import static org.prebid.server.functional.model.bidder.BidderName.ALIAS import static org.prebid.server.functional.model.bidder.BidderName.AMX import static org.prebid.server.functional.model.bidder.BidderName.APPNEXUS import static org.prebid.server.functional.model.bidder.BidderName.GENERIC -import static org.prebid.server.functional.model.bidder.BidderName.RUBICON +import static org.prebid.server.functional.model.bidder.BidderName.MAGNITE import static org.prebid.server.functional.model.request.auction.AdjustmentType.CPM import static org.prebid.server.functional.model.request.auction.AdjustmentType.MULTIPLIER import static org.prebid.server.functional.model.request.auction.AdjustmentType.STATIC @@ -152,7 +152,7 @@ class BidAdjustmentSpec extends BaseSpec { assert response?.seatbid?.first?.bid?.first?.price == bidResponse.seatbid.first.bid.first.price where: - adjustmentBidder << [RUBICON, APPNEXUS] + adjustmentBidder << [MAGNITE, APPNEXUS] } def "PBS should adjust bid price based on media type only when request contains corresponding media type adjustment for bidder"() { 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 9dfee8ae272..0fea9561336 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/CookieSyncSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/CookieSyncSpec.groovy @@ -36,7 +36,7 @@ import static org.prebid.server.functional.model.bidder.BidderName.APPNEXUS import static org.prebid.server.functional.model.bidder.BidderName.BOGUS import static org.prebid.server.functional.model.bidder.BidderName.GENERIC 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.MAGNITE import static org.prebid.server.functional.model.request.cookiesync.FilterType.EXCLUDE import static org.prebid.server.functional.model.request.cookiesync.FilterType.INCLUDE import static org.prebid.server.functional.model.response.cookiesync.CookieSyncResponse.Status.NO_COOKIE @@ -50,7 +50,7 @@ import static org.prebid.server.functional.util.HttpUtil.SET_COOKIE_HEADER import static org.prebid.server.functional.util.privacy.CcpaConsent.Signal.ENFORCED import static org.prebid.server.functional.util.privacy.TcfConsent.GENERIC_VENDOR_ID import static org.prebid.server.functional.util.privacy.TcfConsent.PurposeId.BASIC_ADS -import static org.prebid.server.functional.util.privacy.TcfConsent.RUBICON_VENDOR_ID +import static org.prebid.server.functional.util.privacy.TcfConsent.MAGNITE_VENDOR_ID class CookieSyncSpec extends BaseSpec { @@ -66,12 +66,12 @@ class CookieSyncSpec extends BaseSpec { "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}"] - 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.iframe.url" : "https://test.iframe.endpoint.com&redir={redirect_url}"] + private static final Map MAGNITE_CONFIG = [ + "adapters.${MAGNITE.value}.enabled" : "true", + "adapters.${MAGNITE.value}.meta-info.vendor-id" : MAGNITE_VENDOR_ID as String, + "adapters.${MAGNITE.value}.usersync.cookie-family-name" : MAGNITE.value, + "adapters.${MAGNITE.value}.usersync.redirect.url" : "https://test.redirect.endpoint.com", + "adapters.${MAGNITE.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, @@ -91,7 +91,7 @@ class CookieSyncSpec extends BaseSpec { ] - private static final Map PBS_CONFIG = APPNEXUS_CONFIG + RUBICON_CONFIG + OPENX_CONFIG + + private static final Map PBS_CONFIG = APPNEXUS_CONFIG + MAGNITE_CONFIG + OPENX_CONFIG + GENERIC_CONFIG + ACEEX_CONFIG + AAX_CONFIG + ACUITYADS_CONFIG + ADKERNEL_CONFIG + ["cookie-sync.pri": "grid, ix, adkernel"] @@ -161,7 +161,7 @@ class CookieSyncSpec extends BaseSpec { def "PBS cookie sync request should replace bidder without config and fill up response with enabled bidders to the limit in request"() { given: "PBS bidder config" - def prebidServerService = pbsServiceFactory.getService(RUBICON_CONFIG + GENERIC_CONFIG + def prebidServerService = pbsServiceFactory.getService(MAGNITE_CONFIG + GENERIC_CONFIG + ["adapters.${BOGUS.value}.enabled": "true"]) and: "Default Cookie sync request" @@ -183,13 +183,13 @@ class CookieSyncSpec extends BaseSpec { assert !response.getBidderUserSync(BOGUS) and: "Response should contain coop-synced bidder" - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) assert response.getBidderUserSync(GENERIC) } def "PBS cookie sync request should replace unknown bidder and fill up response with enabled bidders to the limit in request"() { given: "PBS bidder config" - def prebidServerService = pbsServiceFactory.getService(RUBICON_CONFIG + APPNEXUS_CONFIG) + def prebidServerService = pbsServiceFactory.getService(MAGNITE_CONFIG + APPNEXUS_CONFIG) and: "Cookie sync request" def requestLimit = 2 @@ -210,13 +210,13 @@ class CookieSyncSpec extends BaseSpec { assert !response.getBidderUserSync(BOGUS) and: "Response should contain coop-synced bidder" - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) assert response.getBidderUserSync(APPNEXUS) } def "PBS cookie sync request should replace disabled bidder and fill up response with enabled bidders to the limit in request"() { given: "PBS bidder config" - def prebidServerService = pbsServiceFactory.getService(RUBICON_CONFIG + APPNEXUS_CONFIG + def prebidServerService = pbsServiceFactory.getService(MAGNITE_CONFIG + APPNEXUS_CONFIG + ["adapters.${GENERIC.value}.enabled": "false",]) and: "Default Cookie sync request" @@ -238,13 +238,13 @@ class CookieSyncSpec extends BaseSpec { assert !response.getBidderUserSync(GENERIC) and: "Response should contain coop-synced bidder" - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) assert response.getBidderUserSync(APPNEXUS) } def "PBS cookie sync request should replace filtered bidder and fill up response with enabled bidders to the limit in request"() { given: "PBS bidder config" - def prebidServerService = pbsServiceFactory.getService(RUBICON_CONFIG + APPNEXUS_CONFIG) + def prebidServerService = pbsServiceFactory.getService(MAGNITE_CONFIG + APPNEXUS_CONFIG) and: "Cookie sync request" def requestLimit = 2 @@ -266,7 +266,7 @@ class CookieSyncSpec extends BaseSpec { assert !response.getBidderUserSync(GENERIC) and: "Response should contain coop-synced bidder" - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) assert response.getBidderUserSync(APPNEXUS) } @@ -880,7 +880,7 @@ class CookieSyncSpec extends BaseSpec { def accountId = PBSUtils.randomNumber def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { limit = requestLimit - bidders = [RUBICON, APPNEXUS, GENERIC] + bidders = [MAGNITE, APPNEXUS, GENERIC] account = accountId debug = false } @@ -906,7 +906,7 @@ class CookieSyncSpec extends BaseSpec { and: "Default cookie sync request with 3 bidders" def accountId = PBSUtils.randomNumber def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { - bidders = [RUBICON, APPNEXUS, GENERIC] + bidders = [MAGNITE, APPNEXUS, GENERIC] account = accountId debug = false } @@ -934,7 +934,7 @@ class CookieSyncSpec extends BaseSpec { def requestLimit = 1 def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { limit = requestLimit - bidders = [RUBICON, APPNEXUS, GENERIC] + bidders = [MAGNITE, APPNEXUS, GENERIC] debug = false } @@ -953,7 +953,7 @@ class CookieSyncSpec extends BaseSpec { and: "Default cookie sync request with 2 bidders" def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { - bidders = [GENERIC, RUBICON] + bidders = [GENERIC, MAGNITE] debug = false } @@ -973,7 +973,7 @@ class CookieSyncSpec extends BaseSpec { and: "Default cookie sync request with 3 bidders" def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { - bidders = [GENERIC, APPNEXUS, RUBICON] + bidders = [GENERIC, APPNEXUS, MAGNITE] limit = 5 debug = false } @@ -994,7 +994,7 @@ class CookieSyncSpec extends BaseSpec { and: "Default cookie sync request with 3 bidders" def accountId = PBSUtils.randomNumber def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { - bidders = [GENERIC, APPNEXUS, RUBICON] + bidders = [GENERIC, APPNEXUS, MAGNITE] limit = 5 account = accountId debug = false @@ -1094,7 +1094,7 @@ class CookieSyncSpec extends BaseSpec { and: "Default cookie sync request with 2 bidders and limit of 1" def limit = 1 - def bidders = [GENERIC, RUBICON] + def bidders = [GENERIC, MAGNITE] def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { it.limit = limit it.bidders = bidders @@ -1423,7 +1423,7 @@ class CookieSyncSpec extends BaseSpec { "cookie-sync.default-limit": limit as String] + PBS_CONFIG) and: "Default cookie sync request with 2 bidders" - def bidders = [GENERIC, RUBICON] + def bidders = [GENERIC, MAGNITE] def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { it.bidders = bidders } @@ -1450,7 +1450,7 @@ class CookieSyncSpec extends BaseSpec { and: "Default cookie sync request with 2 bidders" def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { coopSync = true - bidders = [RUBICON] + bidders = [MAGNITE] } when: "PBS processes cookie sync request" @@ -1476,12 +1476,12 @@ class CookieSyncSpec extends BaseSpec { assert HttpUtil.findUrlParameterValue(genericBidderStatus.userSync?.url, "f") == PIXEL.name and: "Response should contain '#formatParam' format parameter" - def rubiconBidderStatus = response.getBidderUserSync(RUBICON) - assert rubiconBidderStatus?.userSync?.type == IFRAME - assert HttpUtil.findUrlParameterValue(rubiconBidderStatus.userSync?.url, "f") == BLANK.name + def magniteBidderStatus = response.getBidderUserSync(MAGNITE) + assert magniteBidderStatus?.userSync?.type == IFRAME + assert HttpUtil.findUrlParameterValue(magniteBidderStatus.userSync?.url, "f") == BLANK.name and: "Response should contain coop-synced bidder" - assert response.bidderStatus.bidder.containsAll(ADKERNEL, ACUITYADS, ACEEX, APPNEXUS, AAX, RUBICON, OPENX, GENERIC) + assert response.bidderStatus.bidder.containsAll(ADKERNEL, ACUITYADS, ACEEX, APPNEXUS, AAX, MAGNITE, OPENX, GENERIC) } def "PBS cookie sync request shouldn't return bidder due to filter setting request"() { @@ -1512,7 +1512,7 @@ class CookieSyncSpec extends BaseSpec { def "PBS cookie sync request should include all bidder due to filterSettings"() { given: "Cookie sync request with filter setting" def filterSettings = new FilterSettings().tap { - iframe = new MethodFilter(bidders: [RUBICON], filter: INCLUDE) + iframe = new MethodFilter(bidders: [MAGNITE], filter: INCLUDE) image = new MethodFilter(bidders: [APPNEXUS], filter: INCLUDE) } def cookieSyncRequest = new CookieSyncRequest(filterSettings: filterSettings, limit: 0) @@ -1525,7 +1525,7 @@ class CookieSyncSpec extends BaseSpec { and: "Bidder should be include by filter" assert response.getBidderUserSync(APPNEXUS) - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) } def "PBS cookie sync request should exclude all iframe bidders when asterisk present in bidders filterSettings"() { @@ -1650,7 +1650,7 @@ class CookieSyncSpec extends BaseSpec { and: "Response should contain configured bidders" assert response?.getBidderStatus()?.bidder?.sort() == - [GENERIC, RUBICON, APPNEXUS, OPENX, ACEEX, ACUITYADS, AAX, ADKERNEL].sort() + [GENERIC, MAGNITE, APPNEXUS, OPENX, ACEEX, ACUITYADS, AAX, ADKERNEL].sort() } def "PBS cookie sync request should return url for all bidders when no uids cookie is present"() { @@ -1687,7 +1687,7 @@ class CookieSyncSpec extends BaseSpec { and: "Response should contain configured bidders" assert response?.getBidderStatus()?.bidder?.sort() == - [RUBICON, APPNEXUS, OPENX, ACEEX, ACUITYADS, AAX, ADKERNEL].sort() + [MAGNITE, APPNEXUS, OPENX, ACEEX, ACUITYADS, AAX, ADKERNEL].sort() } def "PBS cookie sync request shouldn't return iframe sync url included by sync type bidders for bidder in cookie"() { @@ -1765,7 +1765,7 @@ class CookieSyncSpec extends BaseSpec { assert response.getBidderUserSync(OPENX) assert response.getBidderUserSync(GENERIC) assert response.getBidderUserSync(APPNEXUS) - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) assert response.getBidderUserSync(ACEEX) } @@ -1820,7 +1820,7 @@ class CookieSyncSpec extends BaseSpec { def "PBS cookie sync request should contain only request bidders with limit when coop sync off and limit specified"() { given: "Default cookie sync request" def cookieSyncRequest = CookieSyncRequest.defaultCookieSyncRequest.tap { - bidders = [APPNEXUS, GENERIC, RUBICON] + bidders = [APPNEXUS, GENERIC, MAGNITE] coopSync = false limit = 2 } @@ -1840,11 +1840,11 @@ class CookieSyncSpec extends BaseSpec { def "PBS cookie sync request should return only requested bidder and reduce image list by filter settings"() { given: "Default cookie sync request" def cookieSyncRequest = new CookieSyncRequest().tap { - bidders = [RUBICON, APPNEXUS, ACEEX] + bidders = [MAGNITE, APPNEXUS, ACEEX] coopSync = false filterSettings = new FilterSettings().tap { image = new MethodFilter(bidders: [ACEEX], filter: EXCLUDE) - iframe = new MethodFilter(bidders: [RUBICON], filter: INCLUDE) + iframe = new MethodFilter(bidders: [MAGNITE], filter: INCLUDE) } } @@ -1856,7 +1856,7 @@ class CookieSyncSpec extends BaseSpec { and: "Response should contain two requested bidders" assert response.getBidderStatus().size() == cookieSyncRequest.bidders.size() - 1 - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) assert response.getBidderUserSync(APPNEXUS) and: "Response shouldn't contain requested bidders due to filter" @@ -1882,7 +1882,7 @@ class CookieSyncSpec extends BaseSpec { def "PBS cookie sync request shouldn't return all bidders when coop sync #coopSync and limit param specified"() { given: "Cookie sync request with bidders and limit" - def cookieSyncRequest = new CookieSyncRequest(coopSync: coopSync, bidders: [APPNEXUS, RUBICON], limit: 1) + def cookieSyncRequest = new CookieSyncRequest(coopSync: coopSync, bidders: [APPNEXUS, MAGNITE], limit: 1) when: "PBS processes cookie sync request without cookies" def response = prebidServerService.sendCookieSyncRequest(cookieSyncRequest) @@ -1901,8 +1901,8 @@ class CookieSyncSpec extends BaseSpec { given: "Empty cookie sync request body" def cookieSyncRequest = new CookieSyncRequest().tap { limit = 1 - bidders = [RUBICON, GENERIC] - filterSettings = new FilterSettings(image: new MethodFilter(bidders: [RUBICON, GENERIC], filter: INCLUDE)) + bidders = [MAGNITE, GENERIC] + filterSettings = new FilterSettings(image: new MethodFilter(bidders: [MAGNITE, GENERIC], filter: INCLUDE)) } when: "PBS processes cookie sync request without cookies" @@ -1950,8 +1950,8 @@ class CookieSyncSpec extends BaseSpec { given: "Cookie sync request body" def cookieSyncRequest = new CookieSyncRequest().tap { it.coopSync = false - it.bidders = [GENERIC, RUBICON] - it.filterSettings = new FilterSettings(image: new MethodFilter(bidders: [GENERIC, RUBICON, APPNEXUS], filter: INCLUDE)) + it.bidders = [GENERIC, MAGNITE] + it.filterSettings = new FilterSettings(image: new MethodFilter(bidders: [GENERIC, MAGNITE, APPNEXUS], filter: INCLUDE)) } when: "PBS processes cookie sync request without cookies" @@ -1961,7 +1961,7 @@ class CookieSyncSpec extends BaseSpec { assert response.bidderStatus.bidder.size() == cookieSyncRequest.bidders.size() and: "Should contain requested bidders" - assert response.bidderStatus.bidder.containsAll(GENERIC, RUBICON) + assert response.bidderStatus.bidder.containsAll(GENERIC, MAGNITE) } def "PBS cookie sync request should fill response with all available coop sync bidder when limit is not specified"() { @@ -1996,7 +1996,7 @@ class CookieSyncSpec extends BaseSpec { given: "Cookie sync request body" def cookieSyncRequest = new CookieSyncRequest().tap { coopSync = false - bidders = [ACEEX, RUBICON] + bidders = [ACEEX, MAGNITE] filterSettings = new FilterSettings(image: new MethodFilter(bidders: [ACEEX], filter: EXCLUDE)) debug = true } @@ -2009,15 +2009,15 @@ class CookieSyncSpec extends BaseSpec { assert bidderStatus.error == "Rejected by request filter" and: "Response should contain one valid bidder" - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) } def "PBS cookie sync request shouldn't include bidder when bidder specified in uids cookie"() { given: "Cookie sync request body" def cookieSyncRequest = new CookieSyncRequest().tap { coopSync = false - bidders = [APPNEXUS, RUBICON] - filterSettings = new FilterSettings(image: new MethodFilter(bidders: [APPNEXUS, RUBICON], filter: INCLUDE)) + bidders = [APPNEXUS, MAGNITE] + filterSettings = new FilterSettings(image: new MethodFilter(bidders: [APPNEXUS, MAGNITE], filter: INCLUDE)) debug = false } @@ -2028,7 +2028,7 @@ class CookieSyncSpec extends BaseSpec { def response = prebidServerService.sendCookieSyncRequest(cookieSyncRequest, cookie) then: "Response should contain valid bidder" - assert response.getBidderUserSync(RUBICON) + assert response.getBidderUserSync(MAGNITE) and: "Response shouldn't contain bidder that present in uids cookie" assert !response.getBidderUserSync(APPNEXUS) diff --git a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy index 6bc172f3fa4..53ff2b7813d 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/EidsSpec.groovy @@ -18,7 +18,7 @@ import static org.prebid.server.functional.model.bidder.BidderName.ALIAS import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.model.bidder.BidderName.GENERIC_CAMEL_CASE 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.MAGNITE import static org.prebid.server.functional.model.bidder.BidderName.UNKNOWN import static org.prebid.server.functional.model.bidder.BidderName.WILDCARD import static org.prebid.server.functional.model.request.auction.DebugCondition.DISABLED @@ -344,7 +344,7 @@ class EidsSpec extends BaseSpec { def "PBS should pass user.eids to all bidders when any of required eid permissions doesn't match"() { given: "Default BidRequest with eids" - def eidPermission = EidPermission.getDefaultEidPermission([RUBICON]) + def eidPermission = EidPermission.getDefaultEidPermission([MAGNITE]) def userEid = updateEidClosure(Eid.from(eidPermission)) def bidRequest = BidRequest.defaultBidRequest.tap { @@ -382,7 +382,7 @@ class EidsSpec extends BaseSpec { def "PBS shouldn't pass user.eids to unmatched bidders when eidPermissions fields match user.eids"() { given: "Default BidRequest with eids" def eidPermissionWithUnmatchedBidder = eidPermission.tap { - bidders = [RUBICON] + bidders = [MAGNITE] } def userEid = updateEidClosure(eidPermissionWithUnmatchedBidder) @@ -416,7 +416,7 @@ class EidsSpec extends BaseSpec { def "PBS should filter only unauthorized eids when multiple eids with different permissions are present"() { given: "Default BidRequest with eids" - def eidPermissionWithUnmatchedBidder = EidPermission.getDefaultEidPermission([RUBICON]) + def eidPermissionWithUnmatchedBidder = EidPermission.getDefaultEidPermission([MAGNITE]) def userEid = Eid.from(eidPermissionWithUnmatchedBidder) def properEids = [Eid.defaultEid, Eid.defaultEid] def bidRequest = BidRequest.defaultBidRequest.tap { @@ -475,7 +475,7 @@ class EidsSpec extends BaseSpec { given: "Default BidRequest with eids" def userEid = Eid.getDefaultEid() def moreSpecificEidPermission = moreSpecificPermissionClosure(userEid).tap { - it.bidders = [RUBICON] + it.bidders = [MAGNITE] } def lessSpecificEidPermission = lessSpecificPermissionClosure(userEid).tap { it.bidders = [GENERIC] @@ -513,7 +513,7 @@ class EidsSpec extends BaseSpec { it.bidders = [GENERIC] } def lessSpecificEidPermission = lessSpecificPermissionClosure(userEid).tap { - it.bidders = [RUBICON] + it.bidders = [MAGNITE] } def bidRequest = BidRequest.defaultBidRequest.tap { user = new User(eids: [userEid]) @@ -548,7 +548,7 @@ class EidsSpec extends BaseSpec { it.bidders = [GENERIC] } def restrictingRule = restrictingPermissionClosure(userEid).tap { - it.bidders = [RUBICON] + it.bidders = [MAGNITE] } def bidRequest = BidRequest.defaultBidRequest.tap { user = new User(eids: [userEid]) diff --git a/src/test/groovy/org/prebid/server/functional/tests/HttpInteractionSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/HttpInteractionSpec.groovy index 1220be38b66..ff865b5cc42 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/HttpInteractionSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/HttpInteractionSpec.groovy @@ -2,7 +2,7 @@ package org.prebid.server.functional.tests import org.prebid.server.functional.model.bidder.BidderName import org.prebid.server.functional.model.bidder.Generic -import org.prebid.server.functional.model.bidder.Rubicon +import org.prebid.server.functional.model.bidder.Magnite import org.prebid.server.functional.model.request.auction.BidRequest import org.prebid.server.functional.model.request.logging.httpinteraction.HttpInteractionRequest import org.prebid.server.functional.util.PBSUtils @@ -11,7 +11,7 @@ import spock.lang.Retry import java.time.Instant import static org.prebid.server.functional.model.bidder.BidderName.GENERIC -import static org.prebid.server.functional.model.bidder.BidderName.RUBICON +import static org.prebid.server.functional.model.bidder.BidderName.MAGNITE class HttpInteractionSpec extends BaseSpec { @@ -27,7 +27,7 @@ class HttpInteractionSpec extends BaseSpec { and: "Default basic generic BidRequest" def bidRequest = BidRequest.defaultBidRequest bidRequest.imp.first().ext.prebid.bidder.generic = new Generic() - bidRequest.imp.first().ext.prebid.bidder.rubicon = new Rubicon(accountId: PBSUtils.randomNumber, + bidRequest.imp.first().ext.prebid.bidder.magnite = new Magnite(accountId: PBSUtils.randomNumber, siteId: PBSUtils.randomNumber, zoneId: PBSUtils.randomNumber) when: "PBS processes bidders params request" @@ -42,9 +42,9 @@ class HttpInteractionSpec extends BaseSpec { and: "PBS log should contain request to allowed adapter" def logs = defaultPbsService.getLogsByTime(startTime) def genericBidderLogs = getLogsByBidder(logs, GENERIC) - def rubiconBidderLogs = getLogsByBidder(logs, RUBICON) + def magniteBidderLogs = getLogsByBidder(logs, MAGNITE) assert getLogsByText(genericBidderLogs, bidRequest.id).size() == 1 - assert getLogsByText(rubiconBidderLogs, bidRequest.id).size() == 0 + assert getLogsByText(magniteBidderLogs, bidRequest.id).size() == 0 } def "PBS should not log request to adapter when it is not allowed"() { @@ -72,10 +72,10 @@ class HttpInteractionSpec extends BaseSpec { def request = HttpInteractionRequest.defaultHttpInteractionRequest request.bidder = GENERIC - and: "Default basic generic BidRequest with rubicon" + and: "Default basic generic BidRequest with magnite" def bidRequest = BidRequest.defaultBidRequest bidRequest.imp.first().ext.prebid.bidder.generic = new Generic() - bidRequest.imp.first().ext.prebid.bidder.rubicon = new Rubicon(accountId: PBSUtils.randomNumber, + bidRequest.imp.first().ext.prebid.bidder.magnite = new Magnite(accountId: PBSUtils.randomNumber, siteId: PBSUtils.randomNumber, zoneId: PBSUtils.randomNumber) when: "PBS processes bidders params request" @@ -97,13 +97,13 @@ class HttpInteractionSpec extends BaseSpec { and: "Logged request should not contain bidder parameters in imp[].ext.prebid.bidder.BIDDER" assert !retrievedRequest?.imp?.first()?.ext?.prebid?.bidder?.generic - assert !retrievedRequest?.imp?.first()?.ext?.prebid?.bidder?.rubicon + assert !retrievedRequest?.imp?.first()?.ext?.prebid?.bidder?.magnite and: "Logged request should contain bidder parameters in imp[].ext.BIDDER" assert retrievedRequest?.imp?.first()?.ext?.generic and: "Logged request should contain only bidder parameters for the named bidder" - assert !retrievedRequest?.imp?.first()?.ext?.rubicon + assert !retrievedRequest?.imp?.first()?.ext?.magnite } private static List getLogsByBidder(List logs, BidderName bidderName) { diff --git a/src/test/groovy/org/prebid/server/functional/tests/ImpRequestSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/ImpRequestSpec.groovy index 7a2f5923d56..2b0e4146a6c 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/ImpRequestSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/ImpRequestSpec.groovy @@ -16,7 +16,7 @@ import static org.prebid.server.functional.model.bidder.BidderName.EMPTY import static org.prebid.server.functional.model.bidder.BidderName.GENERIC import static org.prebid.server.functional.model.bidder.BidderName.GENERIC_CAMEL_CASE 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.MAGNITE import static org.prebid.server.functional.model.bidder.BidderName.UNKNOWN import static org.prebid.server.functional.model.bidder.BidderName.WILDCARD import static org.prebid.server.functional.model.bidder.BidderName.GENER_X @@ -206,7 +206,7 @@ class ImpRequestSpec extends BaseSpec { def bidRequest = BidRequest.defaultBidRequest.tap { imp.first.tap { pmp = impPmp - ext.prebid.imp = [(RUBICON): new Imp(pmp: Pmp.defaultPmp)] + ext.prebid.imp = [(MAGNITE): new Imp(pmp: Pmp.defaultPmp)] } } 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 f7f8594f95f..b767cec7f4e 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/SetUidSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/SetUidSpec.groovy @@ -23,14 +23,14 @@ import static org.prebid.server.functional.model.bidder.BidderName.GENERIC_CAMEL import static org.prebid.server.functional.model.bidder.BidderName.GRID import static org.prebid.server.functional.model.bidder.BidderName.OPENX import static org.prebid.server.functional.model.bidder.BidderName.OPENX_ALIAS -import static org.prebid.server.functional.model.bidder.BidderName.RUBICON +import static org.prebid.server.functional.model.bidder.BidderName.MAGNITE import static org.prebid.server.functional.model.bidder.BidderName.UNKNOWN import static org.prebid.server.functional.model.bidder.BidderName.WILDCARD import static org.prebid.server.functional.model.request.setuid.UidWithExpiry.defaultUidWithExpiry import static org.prebid.server.functional.model.response.cookiesync.UserSyncInfo.Type.REDIRECT import static org.prebid.server.functional.testcontainers.Dependencies.networkServiceContainer import static org.prebid.server.functional.util.privacy.TcfConsent.GENERIC_VENDOR_ID -import static org.prebid.server.functional.util.privacy.TcfConsent.RUBICON_VENDOR_ID +import static org.prebid.server.functional.util.privacy.TcfConsent.MAGNITE_VENDOR_ID class SetUidSpec extends BaseSpec { @@ -50,8 +50,8 @@ class SetUidSpec extends BaseSpec { private static final Map PBS_CONFIG = ["host-cookie.max-cookie-size-bytes" : MAX_COOKIE_SIZE as String, - "adapters.${RUBICON.value}.enabled" : "true", - "adapters.${RUBICON.value}.usersync.cookie-family-name" : RUBICON.value, + "adapters.${MAGNITE.value}.enabled" : "true", + "adapters.${MAGNITE.value}.usersync.cookie-family-name" : MAGNITE.value, "adapters.${OPENX.value}.enabled" : "true", "adapters.${OPENX.value}.usersync.cookie-family-name" : OPENX.value, @@ -131,7 +131,7 @@ class SetUidSpec extends BaseSpec { def "PBS setuid should remove expired uids cookie"() { given: "Default SetuidRequest" def request = SetuidRequest.defaultSetuidRequest - def uidsCookie = UidsCookie.getDefaultUidsCookie(RUBICON, -RANDOM_EXPIRE_DAY) + def uidsCookie = UidsCookie.getDefaultUidsCookie(MAGNITE, -RANDOM_EXPIRE_DAY) when: "PBS processes setuid request" def response = singleCookiesPbsService.sendSetUidRequest(request, uidsCookie) @@ -150,7 +150,7 @@ class SetUidSpec extends BaseSpec { uid = UUID.randomUUID().toString() } def uidsCookie = UidsCookie.defaultUidsCookie.tap { - tempUIDs = [(RUBICON): defaultUidWithExpiry] + tempUIDs = [(MAGNITE): defaultUidWithExpiry] } when: "PBS processes setuid request" @@ -158,7 +158,7 @@ class SetUidSpec extends BaseSpec { then: "Response should contain requested tempUIDs" assert response.uidsCookie.tempUIDs[GENERIC] - assert response.uidsCookie.tempUIDs[RUBICON] + assert response.uidsCookie.tempUIDs[MAGNITE] cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) @@ -175,17 +175,17 @@ class SetUidSpec extends BaseSpec { it.bidder = genericBidder uid = UUID.randomUUID().toString() } - def rubiconBidder = RUBICON + def magniteBidder = MAGNITE def uidsCookie = UidsCookie.defaultUidsCookie.tap { tempUIDs = [(APPNEXUS) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY + 1), - (rubiconBidder): getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY)] + (magniteBidder): getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY)] } when: "PBS processes setuid request" def response = prebidServerService.sendSetUidRequest(request, uidsCookie) then: "Response should contain uids cookies" - assert response.uidsCookie.tempUIDs[rubiconBidder] + assert response.uidsCookie.tempUIDs[magniteBidder] assert response.uidsCookie.tempUIDs[genericBidder] cleanup: "Stop and remove pbs container" @@ -205,18 +205,18 @@ class SetUidSpec extends BaseSpec { def appnexusUidWithExpiry = defaultUidWithExpiry.tap { expires = ZonedDateTime.now(Clock.systemUTC()).plusDays(5) } - def rubiconUidWithExpiry = defaultUidWithExpiry.tap { + def magniteUidWithExpiry = defaultUidWithExpiry.tap { expires = ZonedDateTime.now(Clock.systemUTC()).plusDays(1) } tempUIDs = [(APPNEXUS): appnexusUidWithExpiry, - (RUBICON) : rubiconUidWithExpiry] + (MAGNITE) : magniteUidWithExpiry] } when: "PBS processes setuid request" def response = prebidServerService.sendSetUidRequest(request, uidsCookie) then: "Response should contain uids cookies" - assert response.uidsCookie.tempUIDs[RUBICON] + assert response.uidsCookie.tempUIDs[MAGNITE] assert response.uidsCookie.tempUIDs[GENERIC] cleanup: "Stop and remove pbs container" @@ -237,7 +237,7 @@ class SetUidSpec extends BaseSpec { def uidsCookie = UidsCookie.defaultUidsCookie.tap { tempUIDs = [(APPNEXUS): defaultUidWithExpiry, - (RUBICON) : defaultUidWithExpiry] + (MAGNITE) : defaultUidWithExpiry] } when: "PBS processes setuid request" @@ -249,7 +249,7 @@ class SetUidSpec extends BaseSpec { and: "Response should contain uids cookies" assert response.uidsCookie.tempUIDs[APPNEXUS] - assert response.uidsCookie.tempUIDs[RUBICON] + assert response.uidsCookie.tempUIDs[MAGNITE] cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) @@ -257,19 +257,19 @@ class SetUidSpec extends BaseSpec { def "PBS setuid should reject bidder when cookie's filled and requested bidder in pri and rejected by tcf"() { given: "Setuid request" - def pbsConfig = PBS_CONFIG + ["gdpr.host-vendor-id": RUBICON_VENDOR_ID.toString(), - "cookie-sync.pri" : RUBICON.value] + def pbsConfig = PBS_CONFIG + ["gdpr.host-vendor-id": MAGNITE_VENDOR_ID.toString(), + "cookie-sync.pri" : MAGNITE.value] def prebidServerService = pbsServiceFactory.getService(pbsConfig) def request = SetuidRequest.defaultSetuidRequest.tap { - it.bidder = RUBICON + it.bidder = MAGNITE gdpr = "1" gdprConsent = new TcfConsent.Builder().setDisclosedVendors([GENERIC_VENDOR_ID]).build() } def uidsCookie = UidsCookie.defaultUidsCookie.tap { tempUIDs = [(APPNEXUS): defaultUidWithExpiry, - (RUBICON) : defaultUidWithExpiry] + (MAGNITE) : defaultUidWithExpiry] } when: "PBS processes setuid request" @@ -282,7 +282,7 @@ class SetUidSpec extends BaseSpec { and: "usersync.BIDDER.tcf.blocked metric should be updated" def metric = prebidServerService.sendCollectedMetricsRequest() - assert metric["usersync.${RUBICON.value}.tcf.blocked"] == 1 + assert metric["usersync.${MAGNITE.value}.tcf.blocked"] == 1 cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) @@ -303,7 +303,7 @@ class SetUidSpec extends BaseSpec { def uidsCookie = UidsCookie.defaultUidsCookie.tap { tempUIDs = [(APPNEXUS): getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY), - (RUBICON) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY + 1)] + (MAGNITE) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY + 1)] } when: "PBS processes setuid request" @@ -311,7 +311,7 @@ class SetUidSpec extends BaseSpec { and: "usersync.FAMILY.sizeblocked metric should be updated" def metrics = prebidServerService.sendCollectedMetricsRequest() - assert metrics["usersync.${RUBICON.value}.sizeblocked"] == 1 + assert metrics["usersync.${MAGNITE.value}.sizeblocked"] == 1 then: "Response should contain uids cookies" assert response.uidsCookie.tempUIDs[APPNEXUS] @@ -335,7 +335,7 @@ class SetUidSpec extends BaseSpec { and: "Set up set uid cookie" def uidsCookie = UidsCookie.defaultUidsCookie.tap { tempUIDs = [(APPNEXUS): getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY + 1), - (RUBICON) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY)] + (MAGNITE) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY)] } and: "Flush metrics" @@ -366,7 +366,7 @@ class SetUidSpec extends BaseSpec { def "PBS set uid should emit sizedout metric and remove most distant expiration bidder from uids cookie in prioritized bidder"() { given: "PBS config" - def pbsConfig = PBS_CONFIG + ["cookie-sync.pri": "$OPENX.value, $APPNEXUS.value, $RUBICON.value" as String] + def pbsConfig = PBS_CONFIG + ["cookie-sync.pri": "$OPENX.value, $APPNEXUS.value, $MAGNITE.value" as String] def prebidServerService = pbsServiceFactory.getService(pbsConfig) and: "Set uid request" @@ -376,7 +376,7 @@ class SetUidSpec extends BaseSpec { def uidsCookie = UidsCookie.defaultUidsCookie.tap { tempUIDs = [(APPNEXUS): getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY + 1), (OPENX) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY), - (RUBICON) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY)] + (MAGNITE) : getDefaultUidWithExpiry(RANDOM_EXPIRE_DAY)] } and: "Flush metrics" @@ -387,7 +387,7 @@ class SetUidSpec extends BaseSpec { then: "Response should contain pri bidder in uids cookies" assert response.uidsCookie.tempUIDs[OPENX] - assert response.uidsCookie.tempUIDs[RUBICON] + assert response.uidsCookie.tempUIDs[MAGNITE] and: "Response set cookie header size should be lowest or the same as max cookie config size" assert getSetUidsHeaders(response).first.split("Secure;")[0].length() <= MAX_COOKIE_SIZE @@ -459,21 +459,21 @@ class SetUidSpec extends BaseSpec { uid = UUID.randomUUID().toString() } def genericUidsCookie = UidsCookie.getDefaultUidsCookie(GENERIC) - def rubiconUidsCookie = UidsCookie.getDefaultUidsCookie(RUBICON) + def magniteUidsCookie = UidsCookie.getDefaultUidsCookie(MAGNITE) when: "PBS processes setuid request" - def response = multipleCookiesPbsService.sendSetUidRequest(request, [genericUidsCookie, rubiconUidsCookie]) + def response = multipleCookiesPbsService.sendSetUidRequest(request, [genericUidsCookie, magniteUidsCookie]) then: "Response should contain requested tempUIDs" assert response.uidsCookie.tempUIDs[GENERIC] - assert response.uidsCookie.tempUIDs[RUBICON] + assert response.uidsCookie.tempUIDs[MAGNITE] and: "Headers uids cookies should contain same cookie as response" def setUidsHeaders = getSetUidsHeaders(response) def uidsCookie = extractHeaderTempUIDs(setUidsHeaders.first) assert setUidsHeaders.size() == 1 assert uidsCookie.tempUIDs[GENERIC] - assert uidsCookie.tempUIDs[RUBICON] + assert uidsCookie.tempUIDs[MAGNITE] } def "PBS should send multiple uids cookies by priority and expiration timestamp"() { @@ -489,15 +489,15 @@ class SetUidSpec extends BaseSpec { def request = SetuidRequest.defaultSetuidRequest def genericUidsCookie = UidsCookie.getDefaultUidsCookie(GENERIC, RANDOM_EXPIRE_DAY + 1) - def rubiconUidsCookie = UidsCookie.getDefaultUidsCookie(RUBICON, RANDOM_EXPIRE_DAY + 2) + def magniteUidsCookie = UidsCookie.getDefaultUidsCookie(MAGNITE, RANDOM_EXPIRE_DAY + 2) def openxUidsCookie = UidsCookie.getDefaultUidsCookie(OPENX, RANDOM_EXPIRE_DAY + 3) def appnexusUidsCookie = UidsCookie.getDefaultUidsCookie(APPNEXUS, RANDOM_EXPIRE_DAY) when: "PBS processes setuid request" - def response = prebidServerService.sendSetUidRequest(request, [appnexusUidsCookie, genericUidsCookie, rubiconUidsCookie, openxUidsCookie]) + def response = prebidServerService.sendSetUidRequest(request, [appnexusUidsCookie, genericUidsCookie, magniteUidsCookie, openxUidsCookie]) then: "Response should contain requested tempUIDs" - assert response.uidsCookie.tempUIDs.keySet() == new LinkedHashSet([GENERIC, OPENX, APPNEXUS, RUBICON]) + assert response.uidsCookie.tempUIDs.keySet() == new LinkedHashSet([GENERIC, OPENX, APPNEXUS, MAGNITE]) cleanup: "Stop and remove pbs container" pbsServiceFactory.removeContainer(pbsConfig) @@ -545,14 +545,14 @@ class SetUidSpec extends BaseSpec { uid = UUID.randomUUID().toString() } def genericUidsCookie = UidsCookie.getDefaultUidsCookie(GENERIC) - def rubiconUidsCookie = UidsCookie.getDefaultUidsCookie(RUBICON) + def magniteUidsCookie = UidsCookie.getDefaultUidsCookie(MAGNITE) when: "PBS processes setuid request" - def response = multipleCookiesPbsService.sendSetUidRequest(request, [genericUidsCookie, rubiconUidsCookie]) + def response = multipleCookiesPbsService.sendSetUidRequest(request, [genericUidsCookie, magniteUidsCookie]) then: "Response should contain requested tempUIDs" assert response.uidsCookie.tempUIDs[GENERIC] - assert response.uidsCookie.tempUIDs[RUBICON] + assert response.uidsCookie.tempUIDs[MAGNITE] and: "Headers uids cookies should contain same cookie as response" assert getSetUidsHeaders(response).size() == 1 diff --git a/src/test/groovy/org/prebid/server/functional/tests/prometheus/PrometheusSpec.groovy b/src/test/groovy/org/prebid/server/functional/tests/prometheus/PrometheusSpec.groovy index 538705e3b68..a4ff6ed63d5 100644 --- a/src/test/groovy/org/prebid/server/functional/tests/prometheus/PrometheusSpec.groovy +++ b/src/test/groovy/org/prebid/server/functional/tests/prometheus/PrometheusSpec.groovy @@ -81,8 +81,8 @@ class PrometheusSpec extends BaseSpec { def "PBS should add namespace and subsystem parts to Prometheus metric names when those are config provided"() { given: "PBS config with set up Prometheus" - def namespace = "namespace_01_Rubicon" - def subsystem = "subsystem_01_Rubicon" + def namespace = "namespace_01_Magnite" + def subsystem = "subsystem_01_Magnite" def config = basePrometheusConfig + getNamespaceSubsystemConfig(namespace, subsystem) and: "PBS is started" @@ -105,8 +105,8 @@ class PrometheusSpec extends BaseSpec { def "PBS service fails to start when invalid symbols by namespace and subsystem in Prometheus config are present"() { given: "PBS config with invalid symbols in namespace, subsystem Prometheus config" - def namespace = "namespace_01_Rubi%con" - def subsystem = "sub@system_01_Rubicon" + def namespace = "namespace_01_Mag%nite" + def subsystem = "sub@system_01_Magnite" def config = basePrometheusConfig + getNamespaceSubsystemConfig(namespace, subsystem) and: "PBS container is prepared" diff --git a/src/test/groovy/org/prebid/server/functional/util/privacy/TcfConsent.groovy b/src/test/groovy/org/prebid/server/functional/util/privacy/TcfConsent.groovy index 363c7eca4bd..a2f085c9311 100644 --- a/src/test/groovy/org/prebid/server/functional/util/privacy/TcfConsent.groovy +++ b/src/test/groovy/org/prebid/server/functional/util/privacy/TcfConsent.groovy @@ -12,7 +12,7 @@ import static org.prebid.server.functional.util.privacy.TcfConsent.TcfPolicyVers class TcfConsent implements ConsentString { - public static final Integer RUBICON_VENDOR_ID = PBSUtils.getRandomNumber(1, 65534) + public static final Integer MAGNITE_VENDOR_ID = PBSUtils.getRandomNumber(1, 65534) public static final Integer GENERIC_VENDOR_ID = PBSUtils.getRandomNumber(1, 65534) public static final Integer VENDOR_LIST_VERSION = PBSUtils.getRandomNumber(1, 4095) diff --git a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java b/src/test/java/org/prebid/server/bidder/magnite/MagniteBidderTest.java similarity index 91% rename from src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java rename to src/test/java/org/prebid/server/bidder/magnite/MagniteBidderTest.java index 5444bce997b..0012756a67c 100644 --- a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/magnite/MagniteBidderTest.java @@ -1,4 +1,4 @@ -package org.prebid.server.bidder.rubicon; +package org.prebid.server.bidder.magnite; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; @@ -44,34 +44,34 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.prebid.server.VertxTest; +import org.prebid.server.bidder.magnite.proto.request.MagniteAppExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteBannerExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteBannerExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExtRpRtb; +import org.prebid.server.bidder.magnite.proto.request.MagniteImpExtRpTrack; +import org.prebid.server.bidder.magnite.proto.request.MagniteNative; +import org.prebid.server.bidder.magnite.proto.request.MagnitePubExt; +import org.prebid.server.bidder.magnite.proto.request.MagnitePubExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteSiteExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteSiteExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteTargeting; +import org.prebid.server.bidder.magnite.proto.request.MagniteTargetingExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteTargetingExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteUserExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteUserExtRp; +import org.prebid.server.bidder.magnite.proto.request.MagniteVideoExt; +import org.prebid.server.bidder.magnite.proto.request.MagniteVideoExtRp; +import org.prebid.server.bidder.magnite.proto.response.MagniteBid; +import org.prebid.server.bidder.magnite.proto.response.MagniteBidResponse; +import org.prebid.server.bidder.magnite.proto.response.MagniteSeatBid; 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.rubicon.proto.request.RubiconAppExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconBannerExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconBannerExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExtRpRtb; -import org.prebid.server.bidder.rubicon.proto.request.RubiconImpExtRpTrack; -import org.prebid.server.bidder.rubicon.proto.request.RubiconNative; -import org.prebid.server.bidder.rubicon.proto.request.RubiconPubExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconPubExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconSiteExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconSiteExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconTargeting; -import org.prebid.server.bidder.rubicon.proto.request.RubiconTargetingExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconTargetingExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconUserExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconUserExtRp; -import org.prebid.server.bidder.rubicon.proto.request.RubiconVideoExt; -import org.prebid.server.bidder.rubicon.proto.request.RubiconVideoExtRp; -import org.prebid.server.bidder.rubicon.proto.response.RubiconBid; -import org.prebid.server.bidder.rubicon.proto.response.RubiconBidResponse; -import org.prebid.server.bidder.rubicon.proto.response.RubiconSeatBid; import org.prebid.server.currency.CurrencyConversionService; import org.prebid.server.exception.PreBidException; import org.prebid.server.floors.PriceFloorResolver; @@ -100,10 +100,10 @@ import org.prebid.server.proto.openrtb.ext.request.ExtSource; import org.prebid.server.proto.openrtb.ext.request.ExtUser; import org.prebid.server.proto.openrtb.ext.request.ImpMediaType; -import org.prebid.server.proto.openrtb.ext.request.rubicon.ExtImpRubicon; -import org.prebid.server.proto.openrtb.ext.request.rubicon.ExtImpRubicon.ExtImpRubiconBuilder; -import org.prebid.server.proto.openrtb.ext.request.rubicon.ExtImpRubiconDebug; -import org.prebid.server.proto.openrtb.ext.request.rubicon.RubiconVideoParams; +import org.prebid.server.proto.openrtb.ext.request.magnite.ExtImpMagnite; +import org.prebid.server.proto.openrtb.ext.request.magnite.ExtImpMagnite.ExtImpMagniteBuilder; +import org.prebid.server.proto.openrtb.ext.request.magnite.ExtImpMagniteDebug; +import org.prebid.server.proto.openrtb.ext.request.magnite.MagniteVideoParams; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebid; import org.prebid.server.proto.openrtb.ext.response.ExtBidPrebidMeta; import org.prebid.server.util.HttpUtil; @@ -143,7 +143,7 @@ import static org.prebid.server.proto.openrtb.ext.response.BidType.xNative; @ExtendWith(MockitoExtension.class) -public class RubiconBidderTest extends VertxTest { +public class MagniteBidderTest extends VertxTest { private static final String BIDDER_NAME = "bidderName"; private static final String ENDPOINT_URL = "http://rubiconproject.com/exchange.json"; @@ -168,11 +168,11 @@ public class RubiconBidderTest extends VertxTest { @Mock(strictness = LENIENT) private IdGenerator idGenerator; - private RubiconBidder target; + private MagniteBidder target; @BeforeEach public void setUp() { - target = new RubiconBidder( + target = new MagniteBidder( BIDDER_NAME, ENDPOINT_URL, DEFAULT_TK_X_INT, @@ -195,7 +195,7 @@ public void setUp() { @Test public void creationShouldFailOnInvalidEndpointUrl() { assertThatIllegalArgumentException().isThrownBy( - () -> new RubiconBidder(BIDDER_NAME, + () -> new MagniteBidder(BIDDER_NAME, "invalid_url", EXTERNAL_URL, DEFAULT_TK_X_INT, @@ -270,7 +270,7 @@ public void makeHttpRequestsShouldFilterAllImpressionsAndReturnErrorMeessagesWit + " Allowed types are [banner, video, native]", BidderError.Type.bad_input), BidderError.of("Impression with id 2 rejected with invalid type `audio`." + " Allowed types are [banner, video, native]", BidderError.Type.bad_input), - BidderError.of("There are no valid impressions to create bid request to rubicon bidder", + BidderError.of("There are no valid impressions to create bid request to magnite bidder", BidderError.Type.bad_input)); assertThat(result.getValue()).isEmpty(); } @@ -282,7 +282,7 @@ public void makeHttpRequestsShouldCreateSeparateRequestForEachMediaTypeForMultiF .video(Video.builder().w(300).h(200).build()) .xNative(Native.builder().build()) .banner(Banner.builder().w(300).h(200).build()), - extImpRubiconBuilder -> extImpRubiconBuilder.bidOnMultiFormat(true)); + extImpMagniteBuilder -> extImpMagniteBuilder.bidOnMultiFormat(true)); // when final Result>> result = target.makeHttpRequests(bidRequest); @@ -313,7 +313,7 @@ public void makeHttpRequestsShouldSetImpExtRpRtbFormatsToImpExtFormats() { // given final BidRequest bidRequest = givenBidRequest( impBuilder -> impBuilder.banner(Banner.builder().w(300).h(200).build()), - extImpRubiconBuilder -> extImpRubiconBuilder.formats(Set.of(ImpMediaType.video, ImpMediaType.banner))); + extImpMagniteBuilder -> extImpMagniteBuilder.formats(Set.of(ImpMediaType.video, ImpMediaType.banner))); // when final Result>> result = target.makeHttpRequests(bidRequest); @@ -324,10 +324,10 @@ public void makeHttpRequestsShouldSetImpExtRpRtbFormatsToImpExtFormats() { .extracting(HttpRequest::getPayload) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getRtb) - .flatExtracting(RubiconImpExtRpRtb::getFormats) + .extracting(ext -> mapper.treeToValue(ext, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getRtb) + .flatExtracting(MagniteImpExtRpRtb::getFormats) .containsExactlyInAnyOrder(ImpMediaType.video, ImpMediaType.banner); } @@ -337,7 +337,7 @@ public void makeHttpRequestsShouldNotSetImpExtRpRtbFormatsToImpFormatsWhenImpCon // given final BidRequest bidRequest = givenBidRequest( impBuilder -> impBuilder.banner(Banner.builder().w(300).h(200).build()), - extImpRubiconBuilder -> extImpRubiconBuilder.bidOnMultiFormat(true)); + extImpMagniteBuilder -> extImpMagniteBuilder.bidOnMultiFormat(true)); // when final Result>> result = target.makeHttpRequests(bidRequest); @@ -348,9 +348,9 @@ public void makeHttpRequestsShouldNotSetImpExtRpRtbFormatsToImpFormatsWhenImpCon .extracting(HttpRequest::getPayload) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getRtb) + .extracting(ext -> mapper.treeToValue(ext, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getRtb) .containsOnlyNulls(); } @@ -361,7 +361,7 @@ public void makeHttpRequestsShouldSetImpExtRpRtbFormatsToSuppliedImpFormatsWhenB impBuilder -> impBuilder .banner(Banner.builder().w(300).h(200).build()) .video(Video.builder().w(300).h(200).build()), - extImpRubiconBuilder -> extImpRubiconBuilder.bidOnMultiFormat(true)); + extImpMagniteBuilder -> extImpMagniteBuilder.bidOnMultiFormat(true)); // when final Result>> result = target.makeHttpRequests(bidRequest); @@ -372,10 +372,10 @@ public void makeHttpRequestsShouldSetImpExtRpRtbFormatsToSuppliedImpFormatsWhenB .extracting(HttpRequest::getPayload) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getRtb) - .extracting(RubiconImpExtRpRtb::getFormats) + .extracting(ext -> mapper.treeToValue(ext, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getRtb) + .extracting(MagniteImpExtRpRtb::getFormats) .containsExactlyInAnyOrder( Set.of(ImpMediaType.video, ImpMediaType.banner), Set.of(ImpMediaType.video, ImpMediaType.banner)); @@ -388,11 +388,11 @@ public void makeHttpRequestsShouldCreateSeparateRequestsOnlyForMultiformatImps() final Imp imp1 = givenImp(impBuilder -> impBuilder .video(Video.builder().w(300).h(200).build()) .banner(Banner.builder().w(300).h(200).build()), - extImpRubiconBuilder -> extImpRubiconBuilder.bidOnMultiFormat(true)); + extImpMagniteBuilder -> extImpMagniteBuilder.bidOnMultiFormat(true)); final Imp imp2 = givenImp(impBuilder -> impBuilder .video(Video.builder().w(300).h(200).build()) .banner(Banner.builder().w(300).h(200).build()), - extImpRubiconBuilder -> extImpRubiconBuilder.bidOnMultiFormat(false)); + extImpMagniteBuilder -> extImpMagniteBuilder.bidOnMultiFormat(false)); final BidRequest bidRequest = BidRequest.builder().imp(asList(imp1, imp2)).build(); // when @@ -428,7 +428,7 @@ public void makeHttpRequestsShouldAddMaxbidsAttributeFromExtPrebidMultibid() { // given final BidRequest bidRequest = givenBidRequest( builder -> builder.ext(ExtRequest.of(ExtRequestPrebid.builder() - .multibid(singletonList(ExtRequestPrebidMultiBid.of("rubicon", null, 5, "prefix"))) + .multibid(singletonList(ExtRequestPrebidMultiBid.of("magnite", null, 5, "prefix"))) .build())), impBuilder -> impBuilder.video(Video.builder().build()), identity()); @@ -442,8 +442,8 @@ public void makeHttpRequestsShouldAddMaxbidsAttributeFromExtPrebidMultibid() { .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getExt).doesNotContainNull() - .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) - .extracting(RubiconImpExt::getMaxbids) + .extracting(ext -> mapper.treeToValue(ext, MagniteImpExt.class)) + .extracting(MagniteImpExt::getMaxbids) .containsExactly(5); } @@ -513,7 +513,7 @@ public void makeHttpRequestsShouldPassBannerBtypeField() { .format(singletonList(Format.builder().w(300).h(250).build())) .btype(List.of(3, 4)) .build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpRubicon.builder() + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpMagnite.builder() .sizes(singletonList(15)).build()))) .build())) .build(); @@ -540,7 +540,7 @@ public void makeHttpRequestsShouldPassBannerBattrField() { .format(singletonList(Format.builder().w(300).h(250).build())) .battr(List.of(3, 4)) .build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpRubicon.builder() + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpMagnite.builder() .sizes(singletonList(15)).build()))) .build())) .build(); @@ -607,7 +607,7 @@ public void makeHttpRequestsShouldAddMaxbidsAttributeAsNullIfExtPrebidMultibidMa final BidRequest bidRequest = givenBidRequest( builder -> builder.ext(ExtRequest.of(ExtRequestPrebid.builder() .multibid(singletonList( - ExtRequestPrebidMultiBid.of("rubicon", null, null, "prefix"))) + ExtRequestPrebidMultiBid.of("magnite", null, null, "prefix"))) .build())), impBuilder -> impBuilder.video(Video.builder().build()), identity()); @@ -621,8 +621,8 @@ public void makeHttpRequestsShouldAddMaxbidsAttributeAsNullIfExtPrebidMultibidMa .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getExt).doesNotContainNull() - .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) - .extracting(RubiconImpExt::getMaxbids) + .extracting(ext -> mapper.treeToValue(ext, MagniteImpExt.class)) + .extracting(MagniteImpExt::getMaxbids) .containsOnlyNulls(); } @@ -653,12 +653,12 @@ public void makeHttpRequestsShouldFillImpExt() { .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getExt).doesNotContainNull() - .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) - .containsExactly(RubiconImpExt.builder() - .rp(RubiconImpExtRp.of( + .extracting(ext -> mapper.treeToValue(ext, MagniteImpExt.class)) + .containsExactly(MagniteImpExt.builder() + .rp(MagniteImpExtRp.of( 4001, expectedTarget, - RubiconImpExtRpTrack.of("", ""), + MagniteImpExtRpTrack.of("", ""), null, "uuid_bid_id")) .skadn(givenSkadn) @@ -675,7 +675,7 @@ public void makeHttpRequestsShouldPassBannerFormat() { Format.builder().w(300).h(250).build(), Format.builder().w(300).h(600).build())) .build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpRubicon.builder() + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpMagnite.builder() .sizes(singletonList(15)).build()))) .build())) .build(); @@ -705,7 +705,7 @@ public void makeHttpRequestsShouldSetMobilePortrait67SizeIdFotInterstitialNotVal .format(singletonList( Format.builder().w(360).h(616).build())) .build()) - .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpRubicon.builder().build()))) + .ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpMagnite.builder().build()))) .build())) .build(); @@ -721,7 +721,7 @@ public void makeHttpRequestsShouldSetMobilePortrait67SizeIdFotInterstitialNotVal .containsOnly(Banner.builder() .format(singletonList( Format.builder().w(360).h(616).build())) - .ext(mapper.valueToTree(RubiconBannerExt.of(RubiconBannerExtRp.of("text/html")))) + .ext(mapper.valueToTree(MagniteBannerExt.of(MagniteBannerExtRp.of("text/html")))) .build()); } @@ -747,7 +747,7 @@ public void makeHttpRequestsShouldCreateBannerRequestIfImpHasBannerAndVideoButNo Banner.builder() .format(singletonList(Format.builder().w(300).h(250).build())) .ext(mapper.valueToTree( - RubiconBannerExt.of(RubiconBannerExtRp.of("text/html")))) + MagniteBannerExt.of(MagniteBannerExtRp.of("text/html")))) .build(), null)); // video is removed } @@ -880,7 +880,7 @@ public void makeHttpRequestsShouldIgnoreBidRequestIfCurrencyServiceThrowsAnExcep @Test public void shouldNotSetSizeIfBidderParamsIsMissingSizeId() { // given - target = new RubiconBidder( + target = new MagniteBidder( BIDDER_NAME, ENDPOINT_URL, DEFAULT_TK_X_INT, @@ -897,7 +897,7 @@ public void shouldNotSetSizeIfBidderParamsIsMissingSizeId() { jacksonMapper); final BidRequest bidRequest = givenBidRequest( builder -> builder.instl(1).video(Video.builder().placement(1).build()), - builder -> builder.video(RubiconVideoParams.builder().sizeId(null).build())); + builder -> builder.video(MagniteVideoParams.builder().sizeId(null).build())); // when final Result>> result = target.makeHttpRequests(bidRequest); @@ -917,7 +917,7 @@ public void makeHttpRequestsShouldFillVideoExt() { // given final BidRequest bidRequest = givenBidRequest( builder -> builder.video(Video.builder().build()), - builder -> builder.video(RubiconVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build())); + builder -> builder.video(MagniteVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build())); // when final Result>> result = target.makeHttpRequests(bidRequest); @@ -929,18 +929,18 @@ public void makeHttpRequestsShouldFillVideoExt() { .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getVideo).doesNotContainNull() .extracting(Video::getExt).doesNotContainNull() - .extracting(ext -> mapper.treeToValue(ext, RubiconVideoExt.class)) - .containsOnly(RubiconVideoExt.of(5, 10, RubiconVideoExtRp.of(14), null)); + .extracting(ext -> mapper.treeToValue(ext, MagniteVideoExt.class)) + .containsOnly(MagniteVideoExt.of(5, 10, MagniteVideoExtRp.of(14), null)); } @Test public void makeHttpRequestsShouldTransferRewardedVideoFlagIntoRewardedVideoObject() { // given - final ExtImpRubicon rubicon = ExtImpRubicon.builder() - .video(RubiconVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) + final ExtImpMagnite magnite = ExtImpMagnite.builder() + .video(MagniteVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) .build(); - final ExtPrebid ext = ExtPrebid.of(null, rubicon); + final ExtPrebid ext = ExtPrebid.of(null, magnite); final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder .rwdd(1) @@ -957,19 +957,19 @@ public void makeHttpRequestsShouldTransferRewardedVideoFlagIntoRewardedVideoObje .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getVideo).doesNotContainNull() .extracting(Video::getExt).doesNotContainNull() - .extracting(ex -> mapper.treeToValue(ex, RubiconVideoExt.class)) - .containsOnly(RubiconVideoExt.of(5, 10, RubiconVideoExtRp.of(14), "rewarded")); + .extracting(ex -> mapper.treeToValue(ex, MagniteVideoExt.class)) + .containsOnly(MagniteVideoExt.of(5, 10, MagniteVideoExtRp.of(14), "rewarded")); } @Test public void makeHttpRequestsShouldIgnoreRewardedVideoLogic() { // given final ExtImpPrebid prebid = ExtImpPrebid.builder().build(); - final ExtImpRubicon rubicon = ExtImpRubicon.builder() - .video(RubiconVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) + final ExtImpMagnite magnite = ExtImpMagnite.builder() + .video(MagniteVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) .build(); - final ExtPrebid ext = ExtPrebid.of(prebid, rubicon); + final ExtPrebid ext = ExtPrebid.of(prebid, magnite); final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder.video(Video.builder().build()) .ext(mapper.valueToTree(ext))); @@ -984,19 +984,19 @@ public void makeHttpRequestsShouldIgnoreRewardedVideoLogic() { .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getVideo).doesNotContainNull() .extracting(Video::getExt).doesNotContainNull() - .extracting(ex -> mapper.treeToValue(ex, RubiconVideoExt.class)) - .containsOnly(RubiconVideoExt.of(5, 10, RubiconVideoExtRp.of(14), null)); + .extracting(ex -> mapper.treeToValue(ex, MagniteVideoExt.class)) + .containsOnly(MagniteVideoExt.of(5, 10, MagniteVideoExtRp.of(14), null)); } @Test public void makeHttpRequestsShouldIgnoreRewardedVideoLogicIfRewardedInventoryIsNotOne() { // given final ExtImpPrebid prebid = ExtImpPrebid.builder().isRewardedInventory(2).build(); - final ExtImpRubicon rubicon = ExtImpRubicon.builder() - .video(RubiconVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) + final ExtImpMagnite magnite = ExtImpMagnite.builder() + .video(MagniteVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) .build(); - final ExtPrebid ext = ExtPrebid.of(prebid, rubicon); + final ExtPrebid ext = ExtPrebid.of(prebid, magnite); final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder.video(Video.builder().build()) .ext(mapper.valueToTree(ext))); @@ -1011,8 +1011,8 @@ public void makeHttpRequestsShouldIgnoreRewardedVideoLogicIfRewardedInventoryIsN .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getVideo).doesNotContainNull() .extracting(Video::getExt).doesNotContainNull() - .extracting(ex -> mapper.treeToValue(ex, RubiconVideoExt.class)) - .containsOnly(RubiconVideoExt.of(5, 10, RubiconVideoExtRp.of(14), null)); + .extracting(ex -> mapper.treeToValue(ex, MagniteVideoExt.class)) + .containsOnly(MagniteVideoExt.of(5, 10, MagniteVideoExtRp.of(14), null)); } @Test @@ -1020,11 +1020,11 @@ public void makeHttpRequestsShouldNotFailIfVideoParamIsNull() { // given final ExtImpPrebid prebid = ExtImpPrebid .builder().build(); - final ExtImpRubicon rubicon = ExtImpRubicon.builder() + final ExtImpMagnite magnite = ExtImpMagnite.builder() .video(null) .build(); - final ExtPrebid ext = ExtPrebid.of(prebid, rubicon); + final ExtPrebid ext = ExtPrebid.of(prebid, magnite); final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder.video(Video.builder().build()) .ext(mapper.valueToTree(ext))); @@ -1040,11 +1040,11 @@ public void makeHttpRequestsShouldNotFailIfVideoParamIsNull() { public void makeHttpRequestsShouldIgnoreRewardedVideoFlag() { // given final ExtImpPrebid prebid = ExtImpPrebid.builder().isRewardedInventory(0).build(); - final ExtImpRubicon rubicon = ExtImpRubicon.builder() - .video(RubiconVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) + final ExtImpMagnite magnite = ExtImpMagnite.builder() + .video(MagniteVideoParams.builder().skip(5).skipdelay(10).sizeId(14).build()) .build(); - final ExtPrebid ext = ExtPrebid.of(prebid, rubicon); + final ExtPrebid ext = ExtPrebid.of(prebid, magnite); final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder.video(Video.builder().build()) .ext(mapper.valueToTree(ext))); @@ -1059,8 +1059,8 @@ public void makeHttpRequestsShouldIgnoreRewardedVideoFlag() { .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getVideo).doesNotContainNull() .extracting(Video::getExt).doesNotContainNull() - .extracting(ex -> mapper.treeToValue(ex, RubiconVideoExt.class)) - .containsOnly(RubiconVideoExt.of(5, 10, RubiconVideoExtRp.of(14), null)); + .extracting(ex -> mapper.treeToValue(ex, MagniteVideoExt.class)) + .containsOnly(MagniteVideoExt.of(5, 10, MagniteVideoExtRp.of(14), null)); } @Test @@ -1083,8 +1083,8 @@ public void makeHttpRequestsShouldFillUserExtIfUserAndVisitorPresent() { .containsOnly(User.builder() .ext(jacksonMapper.fillExtension( ExtUser.builder().build(), - RubiconUserExt.builder() - .rp(RubiconUserExtRp.of(mapper.valueToTree( + MagniteUserExt.builder() + .rp(MagniteUserExtRp.of(mapper.valueToTree( Visitor.of(singletonList("new"), singletonList("iphone"))))) .build())) .build()); @@ -1116,8 +1116,8 @@ public void makeHttpRequestsShouldFillUserExtRpWithIabAttributeIfSegtaxEqualsFou .extracting(User::getExt) .containsOnly(jacksonMapper.fillExtension( ExtUser.builder().build(), - RubiconUserExt.builder() - .rp(RubiconUserExtRp.of(expectedTarget)) + MagniteUserExt.builder() + .rp(MagniteUserExtRp.of(expectedTarget)) .build())); } @@ -1696,7 +1696,7 @@ public void makeHttpRequestsShouldPassValidNativeRequestToRequestNativeObjectIfV .extracting(HttpRequest::getPayload) .flatExtracting(BidRequest::getImp) .extracting(Imp::getXNative) - .containsExactly(RubiconNative.builder() + .containsExactly(MagniteNative.builder() .requestNative(expectedNativeRequest) .request(nativeRequest) .ver("1.2") @@ -1727,7 +1727,7 @@ public void makeHttpRequestsShouldPassValidNativeRequestToRequestNativeObjectIfV .extracting(HttpRequest::getPayload) .flatExtracting(BidRequest::getImp) .extracting(Imp::getXNative) - .containsExactly(RubiconNative.builder() + .containsExactly(MagniteNative.builder() .requestNative(expectedNativeRequest) .request(nativeRequest) .build()); @@ -1814,8 +1814,8 @@ public void makeHttpRequestsShouldMergeUserExtDataFieldsToUserExtRp() { .data(mapper.createObjectNode() .set("property", mapper.createArrayNode().add("valueFromExtData"))) .build(), - RubiconUserExt.builder() - .rp(RubiconUserExtRp.of(mapper.createObjectNode() + MagniteUserExt.builder() + .rp(MagniteUserExtRp.of(mapper.createObjectNode() .set("property", mapper.createArrayNode().add("valueFromExtRpTarget")))) .build()); @@ -1835,8 +1835,8 @@ public void makeHttpRequestsShouldMergeUserExtDataFieldsToUserExtRp() { .extracting(User::getExt) .containsOnly(jacksonMapper.fillExtension( ExtUser.builder().build(), - RubiconUserExt.builder() - .rp(RubiconUserExtRp.of(mapper.createObjectNode() + MagniteUserExt.builder() + .rp(MagniteUserExtRp.of(mapper.createObjectNode() .set("property", mapper.createArrayNode() .add("valueFromExtRpTarget") .add("valueFromExtData")))) @@ -1863,8 +1863,8 @@ public void makeHttpRequestsShouldCreateUserIfVisitorPresent() { .containsOnly(User.builder() .ext(jacksonMapper.fillExtension( ExtUser.builder().build(), - RubiconUserExt.builder() - .rp(RubiconUserExtRp.of(mapper.valueToTree( + MagniteUserExt.builder() + .rp(MagniteUserExtRp.of(mapper.valueToTree( Visitor.of(singletonList("new"), singletonList("iphone"))))) .build())) .build()); @@ -1906,8 +1906,8 @@ public void makeHttpRequestsShouldNormalizeAndCopyUserExtDataFieldsToUserExtRp() .extracting(User::getExt) .containsOnly(jacksonMapper.fillExtension( ExtUser.builder().build(), - RubiconUserExt.builder() - .rp(RubiconUserExtRp.of(mapper.createObjectNode() + MagniteUserExt.builder() + .rp(MagniteUserExtRp.of(mapper.createObjectNode() .set("property1", mapper.createArrayNode() .add("value1") .add("value2")) @@ -2143,7 +2143,7 @@ public void makeHttpRequestsShouldCreateUserExtEidsWithAdServerEidSource() { .build())) .build())) .build(), - RubiconUserExt.builder().build())); + MagniteUserExt.builder().build())); } @Test @@ -2289,10 +2289,10 @@ public void makeHttpRequestsShouldFillSiteExtIfSitePresent() { .publisher(Publisher.builder() .ext(jacksonMapper.fillExtension( ExtPublisher.empty(), - RubiconPubExt.of(RubiconPubExtRp.of(2001)))) + MagnitePubExt.of(MagnitePubExtRp.of(2001)))) .build()) .ext(jacksonMapper.fillExtension( - ExtSite.of(null, null), RubiconSiteExt.of(RubiconSiteExtRp.of(3001, null)))) + ExtSite.of(null, null), MagniteSiteExt.of(MagniteSiteExtRp.of(3001, null)))) .build()); } @@ -2316,10 +2316,10 @@ public void makeHttpRequestsShouldPassSiteExtAmpIfPresent() { .publisher(Publisher.builder() .ext(jacksonMapper.fillExtension( ExtPublisher.empty(), - RubiconPubExt.of(RubiconPubExtRp.of(2001)))) + MagnitePubExt.of(MagnitePubExtRp.of(2001)))) .build()) .ext(jacksonMapper.fillExtension( - ExtSite.of(1, null), RubiconSiteExt.of(RubiconSiteExtRp.of(3001, null)))) + ExtSite.of(1, null), MagniteSiteExt.of(MagniteSiteExtRp.of(3001, null)))) .build()); } @@ -2341,7 +2341,7 @@ public void makeHttpRequestsShouldRemoveSiteExtData() { .extracting(Site::getExt) .containsOnly(jacksonMapper.fillExtension( ExtSite.of(null, null), - RubiconSiteExt.of(RubiconSiteExtRp.of(3001, null)))); + MagniteSiteExt.of(MagniteSiteExtRp.of(3001, null)))); } @Test @@ -2364,11 +2364,11 @@ public void makeHttpRequestsShouldFillAppExtIfAppPresent() { .publisher(Publisher.builder() .ext(jacksonMapper.fillExtension( ExtPublisher.empty(), - RubiconPubExt.of(RubiconPubExtRp.of(2001)))) + MagnitePubExt.of(MagnitePubExtRp.of(2001)))) .build()) .ext(jacksonMapper.fillExtension( ExtApp.of(null, null), - RubiconAppExt.of(RubiconSiteExtRp.of(3001, null)))) + MagniteAppExt.of(MagniteSiteExtRp.of(3001, null)))) .build()); } @@ -2390,7 +2390,7 @@ public void makeHttpRequestsShouldRemoveAppExtData() { .extracting(App::getExt) .containsOnly(jacksonMapper.fillExtension( ExtApp.of(null, null), - RubiconAppExt.of(RubiconSiteExtRp.of(3001, null)))); + MagniteAppExt.of(MagniteSiteExtRp.of(3001, null)))); } @Test @@ -2440,13 +2440,13 @@ public void makeHttpRequestsShouldCreateRequestPerImp() { final Result>> result = target.makeHttpRequests(bidRequest); // then - final RubiconImpExtRp expectedImpExtRp = RubiconImpExtRp.of( - null, givenImpExtRpTarget(), RubiconImpExtRpTrack.of("", ""), null, "uuid_bid_id"); + final MagniteImpExtRp expectedImpExtRp = MagniteImpExtRp.of( + null, givenImpExtRpTarget(), MagniteImpExtRpTrack.of("", ""), null, "uuid_bid_id"); final BidRequest expectedBidRequest1 = BidRequest.builder() .imp(singletonList(Imp.builder() .video(Video.builder().build()) - .ext(mapper.valueToTree(RubiconImpExt.builder() + .ext(mapper.valueToTree(MagniteImpExt.builder() .rp(expectedImpExtRp) .build())) .build())) @@ -2456,7 +2456,7 @@ public void makeHttpRequestsShouldCreateRequestPerImp() { .id("2") .video(Video.builder().build()) .ext(mapper.valueToTree( - RubiconImpExt.builder() + MagniteImpExt.builder() .rp(expectedImpExtRp) .build())) .build())) @@ -2469,7 +2469,7 @@ public void makeHttpRequestsShouldCreateRequestPerImp() { } @Test - public void makeHttpRequestsShouldCopyAndModifyDataFieldsToRubiconImpExtRpTarget() { + public void makeHttpRequestsShouldCopyAndModifyDataFieldsToMagniteImpExtRpTarget() { // given final BidRequest bidRequest = givenBidRequest( identity(), @@ -2489,9 +2489,9 @@ public void makeHttpRequestsShouldCopyAndModifyDataFieldsToRubiconImpExtRpTarget .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .containsExactly(givenImpExtRpTarget().set("property2", mapper.createArrayNode().add("value2"))); } @@ -2517,7 +2517,7 @@ public void makeHttpRequestsShouldPassThroughImpExtGpid() { } @Test - public void makeHttpRequestsShouldCopySiteExtDataFieldsToRubiconImpExtRpTarget() { + public void makeHttpRequestsShouldCopySiteExtDataFieldsToMagniteImpExtRpTarget() { // given final ObjectNode siteExtDataNode = mapper.createObjectNode() .set("property", mapper.createArrayNode().add("value")); @@ -2536,14 +2536,14 @@ public void makeHttpRequestsShouldCopySiteExtDataFieldsToRubiconImpExtRpTarget() .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .containsExactly(givenImpExtRpTarget().set("property", mapper.createArrayNode().add("value"))); } @Test - public void makeHttpRequestsShouldCopyAppExtDataFieldsToRubiconImpExtRpTarget() { + public void makeHttpRequestsShouldCopyAppExtDataFieldsToMagniteImpExtRpTarget() { // given final ObjectNode appExtDataNode = mapper.createObjectNode() .set("property", mapper.createArrayNode().add("value")); @@ -2562,14 +2562,14 @@ public void makeHttpRequestsShouldCopyAppExtDataFieldsToRubiconImpExtRpTarget() .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .containsOnly(givenImpExtRpTarget().set("property", mapper.createArrayNode().add("value"))); } @Test - public void makeHttpRequestsShouldSetXapiFieldsToRubiconImpExtRpTarget() { + public void makeHttpRequestsShouldSetXapiFieldsToMagniteImpExtRpTarget() { // given final BidRequest bidRequest = givenBidRequest(impBuilder -> impBuilder.video(Video.builder().build())); @@ -2582,14 +2582,14 @@ public void makeHttpRequestsShouldSetXapiFieldsToRubiconImpExtRpTarget() { .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .containsExactly(givenImpExtRpTarget()); } @Test - public void makeHttpRequestsShouldCopySiteExtDataFieldToRubiconImpExtRpTarget() { + public void makeHttpRequestsShouldCopySiteExtDataFieldToMagniteImpExtRpTarget() { // given final ObjectNode siteExtDataNode = mapper.createObjectNode() .set("site", mapper.createArrayNode().add("value1")); @@ -2616,15 +2616,15 @@ public void makeHttpRequestsShouldCopySiteExtDataFieldToRubiconImpExtRpTarget() .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .extracting(target -> target.get("site")) .containsExactly(siteNode); } @Test - public void makeHttpRequestsShouldCopyAppExtDataFieldToRubiconImpExtRpTarget() { + public void makeHttpRequestsShouldCopyAppExtDataFieldToMagniteImpExtRpTarget() { // given final ObjectNode appExtDataNode = mapper.createObjectNode() .set("app", mapper.createArrayNode().add("value1")); @@ -2646,15 +2646,15 @@ public void makeHttpRequestsShouldCopyAppExtDataFieldToRubiconImpExtRpTarget() { .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .extracting(target -> target.get("app")) .containsExactly(appNode); } @Test - public void makeHttpRequestsShouldMergeImpExtRubiconAndDataKeywordsToRubiconImpExtRpTargetKeywords() + public void makeHttpRequestsShouldMergeImpExtMagniteAndDataKeywordsToMagniteImpExtRpTargetKeywords() throws IOException { // given @@ -2668,8 +2668,8 @@ public void makeHttpRequestsShouldMergeImpExtRubiconAndDataKeywordsToRubiconImpE .put("keywords", "imp,ext,data,keywords")); impExt.set( "bidder", - mapper.valueToTree(ExtImpRubicon.builder() - .keywords(asList("imp", "ext", "rubicon", "keywords")) + mapper.valueToTree(ExtImpMagnite.builder() + .keywords(asList("imp", "ext", "magnite", "keywords")) .build())); // when @@ -2681,16 +2681,16 @@ public void makeHttpRequestsShouldMergeImpExtRubiconAndDataKeywordsToRubiconImpE .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .extracting(target -> target.get("keywords")) .containsOnly(mapper.readTree("[\"imp,ext,data,keywords\"," - + "\"imp\",\"ext\",\"data\",\"keywords\",\"rubicon\"]")); + + "\"imp\",\"ext\",\"data\",\"keywords\",\"magnite\"]")); } @Test - public void makeHttpRequestsShouldCopyDataSearchToRubiconImpExtRpTargetSearch() { + public void makeHttpRequestsShouldCopyDataSearchToMagniteImpExtRpTargetSearch() { // given final BidRequest bidRequest = givenBidRequest( identity(), @@ -2712,9 +2712,9 @@ public void makeHttpRequestsShouldCopyDataSearchToRubiconImpExtRpTargetSearch() .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .containsExactly(expectedTarget); } @@ -2723,7 +2723,7 @@ public void makeHttpRequestsShouldCopyImpExtVideoLanguageToSiteContentLanguage() // given final BidRequest bidRequest = givenBidRequest( imp -> imp.video(Video.builder().build()), - extImp -> extImp.video(RubiconVideoParams.builder().language("ua").build())); + extImp -> extImp.video(MagniteVideoParams.builder().language("ua").build())); // when final Result>> result = target.makeHttpRequests(bidRequest); @@ -2739,7 +2739,7 @@ public void makeHttpRequestsShouldCopyImpExtVideoLanguageToSiteContentLanguage() } @Test - public void makeHttpRequestsShouldMergeSiteAttributesAndCopyToRubiconImpExtRpTarget() { + public void makeHttpRequestsShouldMergeSiteAttributesAndCopyToMagniteImpExtRpTarget() { // given final BidRequest bidRequest = givenBidRequest( requestBuilder -> requestBuilder.site(Site.builder() @@ -2761,9 +2761,9 @@ public void makeHttpRequestsShouldMergeSiteAttributesAndCopyToRubiconImpExtRpTar .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) .extracting(Imp::getExt) - .extracting(objectNode -> mapper.convertValue(objectNode, RubiconImpExt.class)) - .extracting(RubiconImpExt::getRp) - .extracting(RubiconImpExtRp::getTarget) + .extracting(objectNode -> mapper.convertValue(objectNode, MagniteImpExt.class)) + .extracting(MagniteImpExt::getRp) + .extracting(MagniteImpExtRp::getTarget) .containsExactly(givenImpExtRpTarget().set("page", mapper.createArrayNode().add("site page"))); } @@ -2896,7 +2896,7 @@ public void makeHttpRequestsShouldReturnErrorIfNoImpFormatWidthAndHeight() { // then assertThat(result.getErrors()).hasSize(1); assertThat(result.getErrors()) - .containsOnly(BidderError.badInput("rubicon imps must have at least one size element [w, h, format]")); + .containsOnly(BidderError.badInput("magnite imps must have at least one size element [w, h, format]")); assertThat(result.getValue()).hasSize(1); } @@ -2930,8 +2930,8 @@ public void makeHttpRequestsShouldProcessMetricsAndFillViewabilityVendor() { .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp).doesNotContainNull() .extracting(Imp::getExt).doesNotContainNull() - .extracting(ext -> mapper.treeToValue(ext, RubiconImpExt.class)) - .extracting(RubiconImpExt::getViewabilityvendors) + .extracting(ext -> mapper.treeToValue(ext, MagniteImpExt.class)) + .extracting(MagniteImpExt::getViewabilityvendors) .containsExactly(asList("moat.com", "doubleclickbygoogle.com")); } @@ -2968,7 +2968,7 @@ public void makeHttpRequestsShouldReturnOnlyLineItemRequestsWithExpectedFieldsWh assertThat(result.getValue()) .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .flatExtracting(BidRequest::getImp) - .extracting(imp -> mapper.treeToValue(imp.getExt(), RubiconImpExt.class).getRp().getTarget()) + .extracting(imp -> mapper.treeToValue(imp.getExt(), MagniteImpExt.class).getRp().getTarget()) .containsOnly( givenImpExtRpTarget().put("line_item", "123"), givenImpExtRpTarget().put("line_item", "234")); @@ -3114,10 +3114,10 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlForOutputStreamVide final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.impid("impId").price(ONE)))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE)))) .build())) .build())); @@ -3164,10 +3164,10 @@ public void makeBidsShouldSetApexRendererUrlToMetaRendererUrlWhenMetaMediaTypeIs final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE).ext(givenBidExt)))) .build())) .build())); @@ -3216,10 +3216,10 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenMetaMediaTyp final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE).ext(givenBidExt)))) .build())) .build())); @@ -3245,10 +3245,10 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRenderer final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.impid("impId").price(ONE)))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE)))) .build())) .build())); @@ -3280,10 +3280,10 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenApexRenderer final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.impid("impId").price(ONE)))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE)))) .build())) .build())); @@ -3315,10 +3315,10 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenBidResponseI final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.impid("impId").price(ONE)))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE)))) .build())) .build())); @@ -3350,10 +3350,10 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenVideoPlaceme final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.impid("impId").price(ONE)))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE)))) .build())) .build())); @@ -3385,10 +3385,10 @@ public void makeBidsShouldNotSetApexRendererUrlToMetaRendererUrlWhenVideoPlcmtIs final BidderCall httpCall = givenHttpCall( givenBidRequest, - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.impid("impId").price(ONE)))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.impid("impId").price(ONE)))) .build())) .build())); @@ -3408,11 +3408,11 @@ public void makeBidsShouldSetSeatToMetaSeat() throws JsonProcessingException { // given final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .seat("seat") - .bid(singletonList(givenRubiconBid(bid -> bid.price(ONE)))) + .bid(singletonList(givenMagniteBid(bid -> bid.price(ONE)))) .build())) .build())); @@ -3439,10 +3439,10 @@ public void makeBidsShouldSetBidExtRpAdvidToMetaAdvertiserId() throws JsonProces final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.ext(givenBidExt)))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.ext(givenBidExt)))) .build())) .build())); @@ -3465,10 +3465,10 @@ public void makeBidsShouldSetBidAdomainToMetaAdvertiserDomains() throws JsonProc // given final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.adomain(List.of("A", "B"))))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.adomain(List.of("A", "B"))))) .build())) .build())); @@ -3492,11 +3492,11 @@ public void makeBidsShouldSetSeatBuyerToMetaNetworkId() throws JsonProcessingExc // given final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .buyer("123") - .bid(singletonList(givenRubiconBid(bid -> bid.price(ONE)))) + .bid(singletonList(givenMagniteBid(bid -> bid.price(ONE)))) .build())) .build())); @@ -3520,11 +3520,11 @@ public void makeBidsShouldNotSetNegativeSeatBuyerToMetaNetworkId() throws JsonPr // given final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .buyer("-123") - .bid(singletonList(givenRubiconBid(bid -> bid.price(ONE)))) + .bid(singletonList(givenMagniteBid(bid -> bid.price(ONE)))) .build())) .build())); @@ -3544,11 +3544,11 @@ public void makeBidsShouldNotSetZeroSeatBuyerToMetaNetworkId() throws JsonProces // given final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .buyer("0") - .bid(singletonList(givenRubiconBid(bid -> bid.price(ONE)))) + .bid(singletonList(givenMagniteBid(bid -> bid.price(ONE)))) .build())) .build())); @@ -3568,11 +3568,11 @@ public void makeBidsShouldTolerateWithNotParsibleBuyerValue() throws JsonProcess // given final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .buyer("canNotBeParsed") - .bid(singletonList(givenRubiconBid(bid -> bid.price(ONE)))) + .bid(singletonList(givenMagniteBid(bid -> bid.price(ONE)))) .build())) .build())); @@ -3592,11 +3592,11 @@ public void makeBidsShouldTolerateWithNotIntegerBuyerValue() throws JsonProcessi // given final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .buyer("123.2") - .bid(singletonList(givenRubiconBid(bid -> bid.price(ONE)))) + .bid(singletonList(givenMagniteBid(bid -> bid.price(ONE)))) .build())) .build())); @@ -3618,11 +3618,11 @@ public void makeBidsShouldRemoveBidsWithNotParsedExtAndAddError() throws JsonPro invalidBidExt.set("prebid", mapper.createArrayNode()); final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .buyer("123") - .bid(singletonList(givenRubiconBid(bid -> bid.id("789").price(ONE).ext(invalidBidExt)))) + .bid(singletonList(givenMagniteBid(bid -> bid.id("789").price(ONE).ext(invalidBidExt)))) .build())) .build())); @@ -3726,21 +3726,21 @@ public void makeBidsShouldReturnVideoBidIfRequestImpHasVideo() throws JsonProces @Test public void makeBidsShouldNotReduceBidderAmountForBidsWithSameImpId() throws JsonProcessingException { // given - final RubiconBid firstBid = RubiconBid.builder() + final MagniteBid firstBid = MagniteBid.builder() .id("firstBidId") .impid("impId") .price(ONE) .build(); - final RubiconBid secondBid = RubiconBid.builder() + final MagniteBid secondBid = MagniteBid.builder() .id("secondBidId") .impid("impId") .price(ONE) .build(); - final String bidResponse = mapper.writeValueAsString(RubiconBidResponse.builder() + final String bidResponse = mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() + .seatbid(singletonList(MagniteSeatBid.builder() .bid(Arrays.asList(firstBid, secondBid)) .build())) .build()); @@ -3749,8 +3749,8 @@ public void makeBidsShouldNotReduceBidderAmountForBidsWithSameImpId() throws Jso givenBidRequest(builder -> builder .id("impId") .video(Video.builder().build()) - .ext(mapper.valueToTree(RubiconImpExt.builder() - .rp(RubiconImpExtRp.of(null, null, null, null, "pbBidId")) + .ext(mapper.valueToTree(MagniteImpExt.builder() + .rp(MagniteImpExtRp.of(null, null, null, null, "pbBidId")) .build()))), bidResponse); final BidRequest bidRequest = givenBidRequest( @@ -3805,10 +3805,10 @@ public void makeBidsShouldReturnBidWithOverriddenCpmFromImp() throws JsonProcess mapper.createObjectNode().put("cpmoverride", 5.55))))) // will be ignored .build()); - final ExtPrebid extImp = ExtPrebid.of( + final ExtPrebid extImp = ExtPrebid.of( null, - ExtImpRubicon.builder() - .debug(ExtImpRubiconDebug.of(4.44f)) + ExtImpMagnite.builder() + .debug(ExtImpMagniteDebug.of(4.44f)) .build()); // when @@ -3830,13 +3830,13 @@ public void makeBidsShouldReturnBidWithBidIdFieldFromImpExtRpPbBidId() throws Js // given final BidderCall httpCall = givenHttpCall(givenBidRequest(imp -> imp .id("impId") - .ext(mapper.valueToTree(RubiconImpExt.builder() - .rp(RubiconImpExtRp.of(null, null, null, null, "pbBidId")) + .ext(mapper.valueToTree(MagniteImpExt.builder() + .rp(MagniteImpExtRp.of(null, null, null, null, "pbBidId")) .build()))), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .bidid("bidid1") // returned bidid from XAPI - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(RubiconBid.builder().id("0").impid("impId").price(ONE).build())) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(MagniteBid.builder().id("0").impid("impId").price(ONE).build())) .build())) .build())); @@ -3857,13 +3857,13 @@ public void makeBidsShouldReturnBidWithBidIdReturnedFromXAPIWhenImpCanNotBeMatch // given final BidderCall httpCall = givenHttpCall(givenBidRequest(imp -> imp .id("impId") - .ext(mapper.valueToTree(RubiconImpExt.builder() - .rp(RubiconImpExtRp.of(null, null, null, null, "pbBidId")) + .ext(mapper.valueToTree(MagniteImpExt.builder() + .rp(MagniteImpExtRp.of(null, null, null, null, "pbBidId")) .build()))), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .bidid("bid_response_bidId") // returned bidid from XAPI - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(RubiconBid.builder().id("bidId").impid("impId2").price(ONE).build())) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(MagniteBid.builder().id("bidId").impid("impId2").price(ONE).build())) .build())) .build())); @@ -3883,10 +3883,10 @@ public void makeBidsShouldReturnNativeBidIfNativeIsPresent() throws JsonProcessi // given final BidderCall httpCall = givenHttpCall( givenBidRequest(bidRequestBuilder -> bidRequestBuilder.xNative(Native.builder().build())), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .bidid("bidid1") // returned bidid from XAPI - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(RubiconBid.builder().id("non-zero").price(ONE).build())) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(MagniteBid.builder().id("non-zero").price(ONE).build())) .build())) .build())); @@ -3903,7 +3903,7 @@ public void makeBidsShouldReturnNativeBidIfNativeIsPresent() throws JsonProcessi @Test public void makeBidsShouldReturnBidWithCurrencyFromBidResponse() throws JsonProcessingException { // given - target = new RubiconBidder( + target = new MagniteBidder( BIDDER_NAME, ENDPOINT_URL, DEFAULT_TK_X_INT, @@ -3920,10 +3920,10 @@ public void makeBidsShouldReturnBidWithCurrencyFromBidResponse() throws JsonProc jacksonMapper); final BidderCall httpCall = givenHttpCall(givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() + mapper.writeValueAsString(MagniteBidResponse.builder() .cur("EUR") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(RubiconBid.builder().id("bidid1").price(ONE).build())) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(MagniteBid.builder().id("bidid1").price(ONE).build())) .build())) .build())); @@ -3951,9 +3951,9 @@ public void makeBidsShouldReturnBidMetaFromRequest() throws JsonProcessingExcept final BidderCall httpCall = givenHttpCall( givenBidRequest(identity()), - mapper.writeValueAsString(RubiconBidResponse.builder() - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bid -> bid.ext(requestNode).price(ONE)))) + mapper.writeValueAsString(MagniteBidResponse.builder() + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bid -> bid.ext(requestNode).price(ONE)))) .build())) .build())); @@ -3998,8 +3998,8 @@ public void extractTargetingShouldReturnEmptyMapForNullTargeting() { @Test public void extractTargetingShouldIgnoreEmptyTargetingValuesList() { // given - final ObjectNode extBidBidder = mapper.valueToTree(RubiconTargetingExt.of( - RubiconTargetingExtRp.of(singletonList(RubiconTargeting.of("rpfl_1001", emptyList()))))); + final ObjectNode extBidBidder = mapper.valueToTree(MagniteTargetingExt.of( + MagniteTargetingExtRp.of(singletonList(MagniteTargeting.of("rpfl_1001", emptyList()))))); // when and then assertThat(target.extractTargeting(extBidBidder)).isEmpty(); @@ -4008,9 +4008,9 @@ public void extractTargetingShouldIgnoreEmptyTargetingValuesList() { @Test public void extractTargetingShouldReturnNotEmptyTargetingMap() { // given - final ObjectNode extBidBidder = mapper.valueToTree(RubiconTargetingExt.of( - RubiconTargetingExtRp.of(singletonList( - RubiconTargeting.of("rpfl_1001", asList("2_tier0100", "3_tier0100")))))); + final ObjectNode extBidBidder = mapper.valueToTree(MagniteTargetingExt.of( + MagniteTargetingExtRp.of(singletonList( + MagniteTargeting.of("rpfl_1001", asList("2_tier0100", "3_tier0100")))))); // when and then assertThat(target.extractTargeting(extBidBidder)).containsOnly(entry("rpfl_1001", "2_tier0100")); @@ -4018,7 +4018,7 @@ public void extractTargetingShouldReturnNotEmptyTargetingMap() { private static BidRequest givenBidRequest(Function bidRequestCustomizer, Function impCustomizer, - Function extCustomizer) { + Function extCustomizer) { return bidRequestCustomizer.apply(BidRequest.builder() .imp(singletonList(givenImp(impCustomizer, extCustomizer)))) .build(); @@ -4029,15 +4029,15 @@ private static BidRequest givenBidRequest(Function impCu } private static BidRequest givenBidRequest(Function impCustomizer, - Function extCustomizer) { + Function extCustomizer) { return givenBidRequest(identity(), impCustomizer, extCustomizer); } private static Imp givenImp(Function impCustomizer, - Function extCustomizer) { + Function extCustomizer) { return impCustomizer.apply(Imp.builder() .ext(mapper.valueToTree(ExtPrebid.of( - null, extCustomizer.apply(ExtImpRubicon.builder()).build())))) + null, extCustomizer.apply(ExtImpMagnite.builder()).build())))) .build(); } @@ -4089,12 +4089,12 @@ private static BidderCall givenHttpCall(BidRequest bidRequest, Strin null); } - private static String givenBidResponse(UnaryOperator bidCustomizer) + private static String givenBidResponse(UnaryOperator bidCustomizer) throws JsonProcessingException { - return mapper.writeValueAsString(RubiconBidResponse.builder() + return mapper.writeValueAsString(MagniteBidResponse.builder() .cur("USD") - .seatbid(singletonList(RubiconSeatBid.builder() - .bid(singletonList(givenRubiconBid(bidCustomizer))) + .seatbid(singletonList(MagniteSeatBid.builder() + .bid(singletonList(givenMagniteBid(bidCustomizer))) .build())) .build()); } @@ -4103,8 +4103,8 @@ private static String givenBidResponse(BigDecimal price) throws JsonProcessingEx return givenBidResponse(bidBuilder -> bidBuilder.price(price)); } - private static RubiconBid givenRubiconBid(UnaryOperator bidCustomizer) { - return bidCustomizer.apply(RubiconBid.builder()).build(); + private static MagniteBid givenMagniteBid(UnaryOperator bidCustomizer) { + return bidCustomizer.apply(MagniteBid.builder()).build(); } private static ObjectNode givenImpExtRpTarget() { diff --git a/src/test/java/org/prebid/server/it/ApplicationTest.java b/src/test/java/org/prebid/server/it/ApplicationTest.java index 54e550e93f7..001737f9fba 100644 --- a/src/test/java/org/prebid/server/it/ApplicationTest.java +++ b/src/test/java/org/prebid/server/it/ApplicationTest.java @@ -518,7 +518,7 @@ public void infoBiddersShouldReturnBaseAdaptersBidderNames() throws IOException public void infoBidderDetailsShouldReturnMetadataForBidder() throws IOException { given(SPEC) .when() - .get("/info/bidders/rubicon") + .get("/info/bidders/magnite") .then() .assertThat() .body(Matchers.equalTo(jsonFrom("info-bidders/test-info-bidder-details-response.json"))); diff --git a/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java b/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java index 9c207aa17bf..cc47c8a376b 100644 --- a/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java +++ b/src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java @@ -16,7 +16,7 @@ import org.prebid.server.proto.openrtb.ext.request.beachfront.ExtImpBeachfront; import org.prebid.server.proto.openrtb.ext.request.eplanning.ExtImpEplanning; import org.prebid.server.proto.openrtb.ext.request.openx.ExtImpOpenx; -import org.prebid.server.proto.openrtb.ext.request.rubicon.ExtImpRubicon; +import org.prebid.server.proto.openrtb.ext.request.magnite.ExtImpMagnite; import org.prebid.server.proto.openrtb.ext.request.sovrn.ExtImpSovrn; import org.prebid.server.spring.config.bidder.model.CompressionType; import org.prebid.server.spring.config.bidder.model.Ortb; @@ -39,7 +39,7 @@ @ExtendWith(MockitoExtension.class) public class BidderParamValidatorTest extends VertxTest { - private static final String RUBICON = "rubicon"; + private static final String MAGNITE = "magnite"; private static final String APPNEXUS = "appnexus"; private static final String APPNEXUS_ALIAS = "appnexusAlias"; private static final String SOVRN = "sovrn"; @@ -59,7 +59,7 @@ public class BidderParamValidatorTest extends VertxTest { @BeforeEach public void setUp() { given(bidderCatalog.names()).willReturn(new HashSet<>(asList( - RUBICON, + MAGNITE, APPNEXUS, APPNEXUS_ALIAS, SOVRN, @@ -97,26 +97,26 @@ public void createShouldFailOnInvalidSchemaFile() { } @Test - public void validateShouldNotReturnValidationMessagesWhenRubiconImpExtIsOkIgnoringCase() { + public void validateShouldNotReturnValidationMessagesWhenMagniteImpExtIsOkIgnoringCase() { // given - final ExtImpRubicon ext = ExtImpRubicon.builder().accountId(1).siteId(2).zoneId(3).build(); + final ExtImpMagnite ext = ExtImpMagnite.builder().accountId(1).siteId(2).zoneId(3).build(); final JsonNode node = mapper.convertValue(ext, JsonNode.class); // when - final Set messages = bidderParamValidator.validate("rUBIcon", node); + final Set messages = bidderParamValidator.validate("MAGnite", node); // then assertThat(messages).isEmpty(); } @Test - public void validateShouldReturnValidationMessagesWhenRubiconImpExtNotValid() { + public void validateShouldReturnValidationMessagesWhenMagniteImpExtNotValid() { // given - final ExtImpRubicon ext = ExtImpRubicon.builder().siteId(2).zoneId(3).build(); + final ExtImpMagnite ext = ExtImpMagnite.builder().siteId(2).zoneId(3).build(); final JsonNode node = mapper.convertValue(ext, JsonNode.class); - final Set messages = bidderParamValidator.validate(RUBICON, node); + final Set messages = bidderParamValidator.validate(MAGNITE, node); // then assertThat(messages.size()).isEqualTo(1); @@ -345,7 +345,7 @@ public void validateShouldReturnValidationMessagesWhenBeachfrontExtNotValid() { @Test public void schemaShouldReturnSchemasString() throws IOException { // given - given(bidderCatalog.names()).willReturn(new HashSet<>(asList("test-rubicon", "test-appnexus"))); + given(bidderCatalog.names()).willReturn(new HashSet<>(asList("test-magnite", "test-appnexus"))); bidderParamValidator = BidderParamValidator.create( bidderCatalog, "org/prebid/server/validation/schema/valid", jacksonMapper); diff --git a/src/test/resources/org/prebid/server/it/info-bidders/test-info-bidder-details-response.json b/src/test/resources/org/prebid/server/it/info-bidders/test-info-bidder-details-response.json index a9434806156..b682ccc253d 100644 --- a/src/test/resources/org/prebid/server/it/info-bidders/test-info-bidder-details-response.json +++ b/src/test/resources/org/prebid/server/it/info-bidders/test-info-bidder-details-response.json @@ -2,7 +2,7 @@ "status":"ACTIVE", "usesHttps": false, "maintainer": { - "email": "header-bidding@rubiconproject.com" + "email": "header-bidding@magnite.com" }, "capabilities": { "app": { diff --git a/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json index 37492413f7b..9c6f756a5c9 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/magnite/test-magnite-bid-request.json @@ -20,7 +20,7 @@ "http://www.example.com" ], "pbs_version": "{{ pbs.java.version }}", - "pbs_login": "rubicon_user", + "pbs_login": "magnite_user", "pbs_url": "http://localhost:8080" }, "track": { diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json index 37492413f7b..9c6f756a5c9 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json @@ -20,7 +20,7 @@ "http://www.example.com" ], "pbs_version": "{{ pbs.java.version }}", - "pbs_login": "rubicon_user", + "pbs_login": "magnite_user", "pbs_url": "http://localhost:8080" }, "track": { 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 8c73beb8da8..780fa391f0f 100644 --- a/src/test/resources/org/prebid/server/it/test-application.properties +++ b/src/test/resources/org/prebid/server/it/test-application.properties @@ -490,14 +490,14 @@ adapters.roulax.enabled=true adapters.roulax.endpoint=http://localhost:8090/roulax-exchange adapters.rtbhouse.enabled=true adapters.rtbhouse.endpoint=http://localhost:8090/rtbhouse-exchange -adapters.rubicon.enabled=true -adapters.rubicon.endpoint=http://localhost:8090/rubicon-exchange -adapters.rubicon.aliases.magnite.enabled=true -adapters.rubicon.aliases.magnite.endpoint=http://localhost:8090/magnite-exchange -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.magnite.enabled=true +adapters.magnite.endpoint=http://localhost:8090/magnite-exchange +adapters.magnite.aliases.rubicon.enabled=true +adapters.magnite.aliases.rubicon.endpoint=http://localhost:8090/rubicon-exchange +adapters.magnite.XAPI.Username=magnite_user +adapters.magnite.XAPI.Password=magnite_password +adapters.magnite.usersync.redirect.url=http://localhost:8090/rubicon-usersync?gdpr={gdpr}&gdpr_consent={gdpr_consent} +adapters.magnite.usersync.redirect.uid-macro=magnite-macro adapters.salunamedia.enabled=true adapters.salunamedia.endpoint=http://localhost:8090/salunamedia-exchange adapters.screencore.enabled=true diff --git a/src/test/resources/org/prebid/server/validation/schema/empty/rubicon.json b/src/test/resources/org/prebid/server/validation/schema/empty/magnite.json similarity index 100% rename from src/test/resources/org/prebid/server/validation/schema/empty/rubicon.json rename to src/test/resources/org/prebid/server/validation/schema/empty/magnite.json diff --git a/src/test/resources/org/prebid/server/validation/schema/invalid/rubicon.json b/src/test/resources/org/prebid/server/validation/schema/invalid/magnite.json similarity index 100% rename from src/test/resources/org/prebid/server/validation/schema/invalid/rubicon.json rename to src/test/resources/org/prebid/server/validation/schema/invalid/magnite.json diff --git a/src/test/resources/org/prebid/server/validation/schema/valid/test-magnite.json b/src/test/resources/org/prebid/server/validation/schema/valid/test-magnite.json new file mode 100644 index 00000000000..6af364deb08 --- /dev/null +++ b/src/test/resources/org/prebid/server/validation/schema/valid/test-magnite.json @@ -0,0 +1,3 @@ +{ + "magnite": "test" +} diff --git a/src/test/resources/org/prebid/server/validation/schema/valid/test-rubicon.json b/src/test/resources/org/prebid/server/validation/schema/valid/test-rubicon.json deleted file mode 100644 index 24f0e40b497..00000000000 --- a/src/test/resources/org/prebid/server/validation/schema/valid/test-rubicon.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "rubicon": "test" -} \ No newline at end of file diff --git a/src/test/resources/org/prebid/server/validation/schema/valid/test-schemas.json b/src/test/resources/org/prebid/server/validation/schema/valid/test-schemas.json index 8389baecb56..c0f6563279a 100644 --- a/src/test/resources/org/prebid/server/validation/schema/valid/test-schemas.json +++ b/src/test/resources/org/prebid/server/validation/schema/valid/test-schemas.json @@ -1 +1 @@ -{"test-appnexus":{"appnexus":"test"},"test-rubicon":{"rubicon":"test"}} \ No newline at end of file +{"test-appnexus":{"appnexus":"test"},"test-magnite":{"magnite":"test"}}