From dac7604c2bc0eb9c166a81c29da6ad4a0632add4 Mon Sep 17 00:00:00 2001 From: pkaczmarek Date: Wed, 5 Feb 2025 12:04:10 +0100 Subject: [PATCH 1/2] CWire: add cwire.json and CwireTest.java #3693 --- src/main/resources/bidder-config/generic.yaml | 1 + .../resources/static/bidder-params/cwire.json | 36 ++++++++++ .../java/org/prebid/server/it/CwireTest.java | 35 ++++++++++ .../cwire/test-auction-cwire-request.json | 44 ++++++++++++ .../cwire/test-auction-cwire-response.json | 39 +++++++++++ .../cwire/test-cwire-bid-request.json | 67 +++++++++++++++++++ .../cwire/test-cwire-bid-response.json | 20 ++++++ .../server/it/test-application.properties | 2 + 8 files changed, 244 insertions(+) create mode 100644 src/main/resources/static/bidder-params/cwire.json create mode 100644 src/test/java/org/prebid/server/it/CwireTest.java create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-response.json create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json create mode 100644 src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-response.json diff --git a/src/main/resources/bidder-config/generic.yaml b/src/main/resources/bidder-config/generic.yaml index 06ec164dfd9..4aa01b82bbb 100644 --- a/src/main/resources/bidder-config/generic.yaml +++ b/src/main/resources/bidder-config/generic.yaml @@ -81,6 +81,7 @@ adapters: meta-info: maintainer-email: devs@cwire.com app-media-types: + - banner site-media-types: - banner supported-vendors: diff --git a/src/main/resources/static/bidder-params/cwire.json b/src/main/resources/static/bidder-params/cwire.json new file mode 100644 index 00000000000..9b6e181b81f --- /dev/null +++ b/src/main/resources/static/bidder-params/cwire.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "CWire Adapter Params", + "description": "A schema which validates params accepted by the CWire adapter", + "type": "object", + "properties": { + "placementId": { + "type": "integer", + "description": "An ID which identifies this placement of the impression" + }, + "domainId": { + "type": "integer", + "description": "An ID which identifies the site selling the impression" + }, + "pageId": { + "type": "integer", + "description": "An ID which identifies the site selling the impression (deprecated)" + }, + "cwcreative": { + "type": "string", + "description": "An CWire ID of the creative that we want to show" + }, + "cwdebug": { + "type": "boolean", + "description": "Enable CWire debug mode" + }, + "cwfeatures": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A string array of CWire features" + } + }, + "required": [] +} diff --git a/src/test/java/org/prebid/server/it/CwireTest.java b/src/test/java/org/prebid/server/it/CwireTest.java new file mode 100644 index 00000000000..5f9f74a8a86 --- /dev/null +++ b/src/test/java/org/prebid/server/it/CwireTest.java @@ -0,0 +1,35 @@ +package org.prebid.server.it; + +import io.restassured.response.Response; +import org.json.JSONException; +import org.junit.jupiter.api.Test; +import org.prebid.server.model.Endpoint; + +import java.io.IOException; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; +import static java.util.Collections.singletonList; + +public class CwireTest extends IntegrationTest { + + @Test + public void openrtb2AuctionShouldRespondWithBidsFromCwire() throws IOException, JSONException { + // given + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/cwire-exchange")) + .withRequestBody(equalToJson( + jsonFrom("openrtb2/cwire/test-cwire-bid-request.json"))) + .willReturn(aResponse().withBody( + jsonFrom("openrtb2/cwire/test-cwire-bid-response.json")))); + + // when + final Response response = responseFor("openrtb2/cwire/test-auction-cwire-request.json", + Endpoint.openrtb2_auction); + + // then + assertJsonEquals("openrtb2/cwire/test-auction-cwire-response.json", response, + singletonList("cwire")); + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json new file mode 100644 index 00000000000..ceba3eb35d4 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json @@ -0,0 +1,44 @@ +{ + "id": "tid", + "imp": [ + { + "id": "impId001", + "banner": { + "format": [ + { + "w": 300, + "h": 250 + } + ] + }, + "ext": { + "cwire": {} + } + } + ], + "device": { + "pxratio": 4.2, + "dnt": 2, + "language": "en", + "ifa": "ifaId" + }, + "site": { + "publisher": { + "id": "publisherId" + } + }, + "at": 1, + "tmax": 5000, + "cur": [ + "USD" + ], + "source": { + "fd": 1, + "tid": "tid" + }, + "regs": { + "ext": { + "gdpr": 0 + } + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-response.json b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-response.json new file mode 100644 index 00000000000..ba9923d657c --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-response.json @@ -0,0 +1,39 @@ +{ + "id": "tid", + "seatbid": [ + { + "bid": [ + { + "id": "bid001", + "impid": "impId001", + "exp": 300, + "price": 3.33, + "adm": "adm001", + "adid": "adid001", + "cid": "cid001", + "crid": "crid001", + "w": 300, + "h": 250, + "ext": { + "prebid": { + "type": "banner" + }, + "origbidcpm": 3.33 + } + } + ], + "seat": "cwire", + "group": 0 + } + ], + "cur": "USD", + "ext": { + "responsetimemillis": { + "cwire": "{{ cwire.response_time_ms }}" + }, + "prebid": { + "auctiontimestamp": 1000 + }, + "tmaxrequest": 5000 + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json new file mode 100644 index 00000000000..2608812c09e --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json @@ -0,0 +1,67 @@ +{ + "id": "tid", + "imp": [ + { + "id": "impId001", + "banner": { + "format": [ + { + "w": 300, + "h": 250 + } + ] + }, + "secure": 1, + "ext": { + "tid": "${json-unit.any-string}", + "bidder": {} + } + } + ], + "site": { + "domain": "www.example.com", + "page": "http://www.example.com", + "publisher": { + "id": "publisherId", + "domain": "example.com" + }, + "ext": { + "amp": 0 + } + }, + "device": { + "dnt": 2, + "ua": "userAgent", + "ip": "193.168.244.1", + "pxratio": 4.2, + "language": "en", + "ifa": "ifaId" + }, + "at": 1, + "tmax": "${json-unit.any-number}", + "cur": [ + "USD" + ], + "source": { + "fd": 1, + "tid": "tid" + }, + "regs": { + "ext": { + "gdpr": 0 + } + }, + "ext": { + "prebid": { + "channel": { + "name": "web" + }, + "server": { + "externalurl": "http://localhost:8080", + "gvlid": 1, + "datacenter": "local", + "endpoint": "/openrtb2/auction" + } + } + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-response.json b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-response.json new file mode 100644 index 00000000000..c31fabcb822 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-response.json @@ -0,0 +1,20 @@ +{ + "id": "tid", + "seatbid": [ + { + "bid": [ + { + "id": "bid001", + "impid": "impId001", + "price": 3.33, + "adid": "adid001", + "crid": "crid001", + "cid": "cid001", + "adm": "adm001", + "h": 250, + "w": 300 + } + ] + } + ] +} 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 2e115d00348..d5c9ad7ee79 100644 --- a/src/test/resources/org/prebid/server/it/test-application.properties +++ b/src/test/resources/org/prebid/server/it/test-application.properties @@ -8,6 +8,8 @@ adapters.generic.aliases.adrino.enabled=true adapters.generic.aliases.adrino.endpoint=http://localhost:8090/adrino-exchange adapters.generic.aliases.ccx.enabled=true adapters.generic.aliases.ccx.endpoint=http://localhost:8090/ccx-exchange +adapters.generic.aliases.cwire.enabled=true +adapters.generic.aliases.cwire.endpoint=http://localhost:8090/cwire-exchange adapters.generic.aliases.infytv.enabled=true adapters.generic.aliases.infytv.endpoint=http://localhost:8090/infytv-exchange adapters.generic.aliases.zeta_global_ssp.enabled=true From 36ec38001a3e4f68ce78ae3ec652128db57ad293 Mon Sep 17 00:00:00 2001 From: pkaczmarek Date: Mon, 10 Feb 2025 12:36:05 +0100 Subject: [PATCH 2/2] fix comments, add not req fields to test jsons --- .../openrtb2/cwire/test-auction-cwire-request.json | 12 +++++++++++- .../it/openrtb2/cwire/test-cwire-bid-request.json | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json index ceba3eb35d4..9eb18fabe5d 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-auction-cwire-request.json @@ -12,7 +12,17 @@ ] }, "ext": { - "cwire": {} + "cwire": { + "placementId": 123, + "domainId": 456, + "pageId": 789, + "cwcreative": "exampleCreativeId", + "cwdebug": false, + "cwfeatures": [ + "featureA", + "featureB" + ] + } } } ], diff --git a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json index 2608812c09e..ab6fb1b5413 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/cwire/test-cwire-bid-request.json @@ -14,7 +14,17 @@ "secure": 1, "ext": { "tid": "${json-unit.any-string}", - "bidder": {} + "bidder": { + "placementId": 123, + "domainId": 456, + "pageId": 789, + "cwcreative": "exampleCreativeId", + "cwdebug": false, + "cwfeatures": [ + "featureA", + "featureB" + ] + } } } ],