Skip to content

Commit a3475ba

Browse files
Use a hard-alias schema if present (prebid#3739)
1 parent a6ac83b commit a3475ba

File tree

4 files changed

+46
-10
lines changed

4 files changed

+46
-10
lines changed

src/main/java/org/prebid/server/validation/BidderParamValidator.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.networknt.schema.SpecVersion;
88
import com.networknt.schema.ValidationMessage;
99
import org.apache.commons.collections4.map.CaseInsensitiveMap;
10-
import org.apache.commons.lang3.ObjectUtils;
1110
import org.apache.commons.lang3.StringUtils;
1211
import org.prebid.server.bidder.BidderCatalog;
1312
import org.prebid.server.json.EncodeException;
@@ -88,7 +87,7 @@ public static BidderParamValidator create(BidderCatalog bidderCatalog,
8887
final Map<String, JsonNode> bidderRawSchemas = new LinkedHashMap<>();
8988

9089
bidderCatalog.names().forEach(bidder -> bidderRawSchemas.put(
91-
bidder, createSchemaNode(schemaDirectory, maybeResolveAlias(bidderCatalog, bidder), mapper)));
90+
bidder, createSchemaNode(bidderCatalog, schemaDirectory, bidder, mapper)));
9291

9392
return new BidderParamValidator(toBidderSchemas(bidderRawSchemas), toSchemas(bidderRawSchemas, mapper));
9493
}
@@ -120,8 +119,20 @@ private static JsonSchema toBidderSchema(JsonNode schema, String bidder) {
120119
return result;
121120
}
122121

123-
private static String maybeResolveAlias(BidderCatalog bidderCatalog, String bidder) {
124-
return ObjectUtils.defaultIfNull(bidderCatalog.bidderInfoByName(bidder).getAliasOf(), bidder);
122+
private static JsonNode createSchemaNode(BidderCatalog bidderCatalog,
123+
String schemaDirectory,
124+
String bidder,
125+
JacksonMapper mapper) {
126+
127+
try {
128+
return createSchemaNode(schemaDirectory, bidder, mapper);
129+
} catch (IllegalArgumentException e) {
130+
final String parentBidder = bidderCatalog.bidderInfoByName(bidder).getAliasOf();
131+
if (parentBidder != null) {
132+
return createSchemaNode(schemaDirectory, parentBidder, mapper);
133+
}
134+
throw e;
135+
}
125136
}
126137

127138
private static JsonNode createSchemaNode(String schemaDirectory, String bidder, JacksonMapper mapper) {

src/test/java/org/prebid/server/bidder/adtrgtme/AdtrgtmeBidderTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.prebid.server.bidder.model.HttpResponse;
2222
import org.prebid.server.bidder.model.Result;
2323
import org.prebid.server.proto.openrtb.ext.ExtPrebid;
24-
import org.prebid.server.proto.openrtb.ext.request.adrino.ExtImpAdrino;
2524
import org.prebid.server.proto.openrtb.ext.request.adtrgtme.ExtImpAdtrgtme;
2625
import org.prebid.server.util.HttpUtil;
2726

@@ -129,9 +128,9 @@ public void makeHttpRequestsShouldSplitRequestIntoMultipleRequests() {
129128
// given
130129
final BidRequest bidRequest = BidRequest.builder().site(Site.builder().id("site_id").build())
131130
.imp(asList(givenImp(impBuilder -> impBuilder.xNative(Native.builder().build())
132-
.ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpAdrino.of("test"))))),
131+
.ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpAdtrgtme.of(1))))),
133132
givenImp(impBuilder -> impBuilder.xNative(Native.builder().build())
134-
.ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpAdrino.of("test"))))))).build();
133+
.ext(mapper.valueToTree(ExtPrebid.of(null, ExtImpAdtrgtme.of(1))))))).build();
135134

136135
// when
137136
final Result<List<HttpRequest<BidRequest>>> result = target.makeHttpRequests(bidRequest);

src/test/java/org/prebid/server/it/ApplicationTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ public void biddersParamsShouldReturnBidderSchemas() throws JSONException, IOExc
451451
final Map<String, JsonNode> expectedMap = CollectionUtils.union(bidders, aliases.keySet()).stream()
452452
.collect(Collectors.toMap(
453453
Function.identity(),
454-
bidderName -> jsonSchemaToJsonNode(aliases.getOrDefault(bidderName, bidderName))));
454+
bidderName -> jsonSchemaToJsonNode(bidderName, aliases)));
455455

456456
assertThat(responseAsMap.keySet()).hasSameElementsAs(expectedMap.keySet());
457457
assertThat(responseAsMap).containsAllEntriesOf(expectedMap);
@@ -693,6 +693,14 @@ private static Map<String, String> getBidderAliasesFromConfigFiles() throws IOEx
693693
return Collections.emptyMap();
694694
}
695695

696+
private static JsonNode jsonSchemaToJsonNode(String bidderName, Map<String, String> aliases) {
697+
try {
698+
return jsonSchemaToJsonNode(bidderName);
699+
} catch (IllegalArgumentException e) {
700+
return jsonSchemaToJsonNode(aliases.getOrDefault(bidderName, bidderName));
701+
}
702+
}
703+
696704
private static JsonNode jsonSchemaToJsonNode(String bidderName) {
697705
final String path = "static/bidder-params/" + bidderName + ".json";
698706
try {

src/test/java/org/prebid/server/validation/BidderParamValidatorTest.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.prebid.server.VertxTest;
1010
import org.prebid.server.bidder.BidderCatalog;
1111
import org.prebid.server.bidder.BidderInfo;
12+
import org.prebid.server.proto.openrtb.ext.request.adrino.ExtImpAdrino;
1213
import org.prebid.server.proto.openrtb.ext.request.adtelligent.ExtImpAdtelligent;
1314
import org.prebid.server.proto.openrtb.ext.request.appnexus.ExtImpAppnexus;
1415
import org.prebid.server.proto.openrtb.ext.request.audiencenetwork.ExtImpAudienceNetwork;
@@ -33,6 +34,7 @@
3334
import static org.mockito.ArgumentMatchers.anyString;
3435
import static org.mockito.ArgumentMatchers.eq;
3536
import static org.mockito.BDDMockito.given;
37+
import static org.mockito.Mock.Strictness.LENIENT;
3638

3739
@ExtendWith(MockitoExtension.class)
3840
public class BidderParamValidatorTest extends VertxTest {
@@ -47,8 +49,9 @@ public class BidderParamValidatorTest extends VertxTest {
4749
private static final String EPLANNING = "eplanning";
4850
private static final String BEACHFRONT = "beachfront";
4951
private static final String VISX = "visx";
52+
private static final String ADRINO = "adrino";
5053

51-
@Mock
54+
@Mock(strictness = LENIENT)
5255
private BidderCatalog bidderCatalog;
5356

5457
private BidderParamValidator bidderParamValidator;
@@ -65,7 +68,8 @@ public void setUp() {
6568
OPENX,
6669
EPLANNING,
6770
BEACHFRONT,
68-
VISX)));
71+
VISX,
72+
ADRINO)));
6973
given(bidderCatalog.bidderInfoByName(anyString())).willReturn(givenBidderInfo());
7074
given(bidderCatalog.bidderInfoByName(eq(APPNEXUS_ALIAS))).willReturn(givenBidderInfo(APPNEXUS));
7175

@@ -381,6 +385,20 @@ public void validateShouldReturnNoValidationMessagesWhenVisxUidValid() {
381385
assertThat(messagesIntegerUid).isEmpty();
382386
}
383387

388+
@Test
389+
public void validateShouldReturnValidationMessagesWhenAdrinoImpExtNotValid() {
390+
// given
391+
final ExtImpAdrino ext = ExtImpAdrino.of(null);
392+
393+
final JsonNode node = mapper.convertValue(ext, JsonNode.class);
394+
395+
// when
396+
final Set<String> messages = bidderParamValidator.validate(ADRINO, node);
397+
398+
// then
399+
assertThat(messages.size()).isEqualTo(1);
400+
}
401+
384402
private static BidderInfo givenBidderInfo(String aliasOf) {
385403
return BidderInfo.create(
386404
true,

0 commit comments

Comments
 (0)