Skip to content

Commit c9444c4

Browse files
author
ilya
committed
DATA-36551: PR issues fixed
1 parent 3006623 commit c9444c4

2 files changed

Lines changed: 176 additions & 1 deletion

File tree

extra/modules/live-intent-omni-channel-identity/src/main/java/org/prebid/server/hooks/modules/liveintent/omni/channel/identity/v1/hooks/LiveIntentOmniChannelIdentityProcessedAuctionRequestHook.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ private BidRequest maskUserPersonalInfo(BidRequest bidRequest,
123123
final Device maskedDevice = userFpdActivityMask.maskDevice(
124124
bidRequest.getDevice(), disallowTransmitUfpd, disallowTransmitGeo);
125125

126-
final Source maskedSource = disallowTransmitTid
126+
final Source maskedSource = (disallowTransmitUfpd && disallowTransmitTid)
127127
? bidRequest.getSource().toBuilder().tid(null).build()
128128
: bidRequest.getSource();
129129

extra/modules/live-intent-omni-channel-identity/src/test/java/org/prebid/server/hooks/modules/liveintent/omni/channel/identity/v1/LiveIntentOmniChannelIdentityProcessedAuctionRequestHookTest.java

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.prebid.server.hooks.modules.liveintent.omni.channel.identity.v1;
22

33
import com.iab.openrtb.request.BidRequest;
4+
import com.iab.openrtb.request.Device;
45
import com.iab.openrtb.request.Eid;
6+
import com.iab.openrtb.request.Geo;
7+
import com.iab.openrtb.request.Source;
58
import com.iab.openrtb.request.Uid;
69
import com.iab.openrtb.request.User;
710
import io.vertx.core.Future;
@@ -10,6 +13,11 @@
1013
import org.junit.jupiter.api.extension.ExtendWith;
1114
import org.mockito.Mock;
1215
import org.mockito.junit.jupiter.MockitoExtension;
16+
import org.prebid.server.activity.Activity;
17+
import org.prebid.server.activity.infrastructure.ActivityController;
18+
import org.prebid.server.activity.infrastructure.ActivityInfrastructure;
19+
import org.prebid.server.activity.infrastructure.debug.ActivityInfrastructureDebug;
20+
import org.prebid.server.auction.model.AuctionContext;
1321
import org.prebid.server.auction.privacy.enforcement.mask.UserFpdActivityMask;
1422
import org.prebid.server.hooks.execution.v1.auction.AuctionInvocationContextImpl;
1523
import org.prebid.server.hooks.execution.v1.auction.AuctionRequestPayloadImpl;
@@ -27,6 +35,7 @@
2735
import org.prebid.server.vertx.httpclient.model.HttpClientResponse;
2836

2937
import java.util.List;
38+
import java.util.Map;
3039
import java.util.concurrent.TimeoutException;
3140

3241
import static java.util.Collections.singletonList;
@@ -51,6 +60,9 @@ public class LiveIntentOmniChannelIdentityProcessedAuctionRequestHookTest {
5160
@Mock
5261
private HttpClient httpClient;
5362

63+
@Mock
64+
private ActivityInfrastructureDebug activityInfrastructureDebug;
65+
5466
@Mock(strictness = LENIENT)
5567
private LiveIntentOmniChannelProperties properties;
5668

@@ -75,6 +87,169 @@ public void creationShouldFailOnInvalidIdentityUrl() {
7587
properties, userFpdActivityMask, MAPPER, httpClient, 0.01d));
7688
}
7789

90+
@Test
91+
public void geoPassingRestrictionShouldBeRespected() {
92+
// given
93+
final Geo givenGeo = Geo.builder()
94+
.lat(52.51671856406936f)
95+
.lon(13.377639726342583f)
96+
.city("Berlin")
97+
.country("Germany")
98+
.build();
99+
final Device givenDevice = Device.builder()
100+
.geo(givenGeo)
101+
.ip("192.168.127.12")
102+
.ifa("foo")
103+
.macsha1("bar")
104+
.macmd5("baz")
105+
.dpidsha1("boo")
106+
.dpidmd5("far")
107+
.didsha1("zoo")
108+
.didmd5("goo")
109+
.build();
110+
final BidRequest givenBidRequest = BidRequest.builder().id("request").device(givenDevice).build();
111+
112+
final Geo expectedGeo = givenGeo.toBuilder()
113+
.country(null)
114+
.city(null)
115+
.lat(52.52f)
116+
.lon(13.38f)
117+
.build();
118+
final Device expectedDevice = givenDevice.toBuilder()
119+
.geo(expectedGeo)
120+
.ip("192.168.127.0")
121+
.ifa(null)
122+
.macsha1(null)
123+
.macmd5(null)
124+
.dpidsha1(null)
125+
.dpidmd5(null)
126+
.didsha1(null)
127+
.didmd5(null)
128+
.build();
129+
final BidRequest expectedBidRequest = givenBidRequest.toBuilder().device(expectedDevice).build();
130+
131+
final Eid expectedEid = Eid.builder().source("liveintent.com").build();
132+
133+
final String responseBody = MAPPER.encodeToString(IdResResponse.of(List.of(expectedEid)));
134+
given(httpClient.post(any(), any(), any(), anyLong()))
135+
.willReturn(Future.succeededFuture(HttpClientResponse.of(200, null, responseBody)));
136+
137+
final ActivityController activityController = ActivityController.of(
138+
false, List.of(), activityInfrastructureDebug);
139+
140+
final ActivityInfrastructure givenActivityInfrastructure = new ActivityInfrastructure(
141+
Map.of(Activity.TRANSMIT_TID, activityController,
142+
Activity.TRANSMIT_UFPD, activityController),
143+
activityInfrastructureDebug);
144+
145+
final AuctionInvocationContext auctionInvocationContext = AuctionInvocationContextImpl.of(
146+
null,
147+
AuctionContext.builder().activityInfrastructure(givenActivityInfrastructure).build(),
148+
false,
149+
null,
150+
null);
151+
152+
// when
153+
final InvocationResult<AuctionRequestPayload> result =
154+
target.call(AuctionRequestPayloadImpl.of(givenBidRequest), auctionInvocationContext).result();
155+
// then
156+
assertThat(result.status()).isEqualTo(InvocationStatus.success);
157+
158+
verify(httpClient).post(
159+
eq("https://test.com/idres"),
160+
argThat(headers -> headers.contains("Authorization", "Bearer auth_token", true)),
161+
eq(MAPPER.encodeToString(expectedBidRequest)),
162+
eq(5L));
163+
}
164+
165+
@Test
166+
public void tidPassingRestrictionShouldBeRespected() {
167+
// given
168+
final Source givenSource = Source.builder().tid("tid1").build();
169+
final BidRequest givenBidRequest = BidRequest.builder().id("request").source(givenSource).build();
170+
171+
final Source expectedSource = givenSource.toBuilder().tid(null).build();
172+
final BidRequest expectedBidRequest = givenBidRequest.toBuilder().source(expectedSource).build();
173+
174+
final Eid expectedEid = Eid.builder().source("liveintent.com").build();
175+
176+
final String responseBody = MAPPER.encodeToString(IdResResponse.of(List.of(expectedEid)));
177+
given(httpClient.post(any(), any(), any(), anyLong()))
178+
.willReturn(Future.succeededFuture(HttpClientResponse.of(200, null, responseBody)));
179+
180+
final ActivityController activityController = ActivityController.of(
181+
false, List.of(), activityInfrastructureDebug);
182+
183+
final ActivityInfrastructure givenActivityInfrastructure = new ActivityInfrastructure(
184+
Map.of(Activity.TRANSMIT_TID, activityController,
185+
Activity.TRANSMIT_UFPD, activityController),
186+
activityInfrastructureDebug);
187+
188+
final AuctionInvocationContext auctionInvocationContext = AuctionInvocationContextImpl.of(
189+
null,
190+
AuctionContext.builder().activityInfrastructure(givenActivityInfrastructure).build(),
191+
false,
192+
null,
193+
null);
194+
195+
// when
196+
final InvocationResult<AuctionRequestPayload> result =
197+
target.call(AuctionRequestPayloadImpl.of(givenBidRequest), auctionInvocationContext).result();
198+
// then
199+
assertThat(result.status()).isEqualTo(InvocationStatus.success);
200+
201+
verify(httpClient).post(
202+
eq("https://test.com/idres"),
203+
argThat(headers -> headers.contains("Authorization", "Bearer auth_token", true)),
204+
eq(MAPPER.encodeToString(expectedBidRequest)),
205+
eq(5L));
206+
}
207+
208+
@Test
209+
public void eidPassingRestrictionShouldBeRespected() {
210+
// given
211+
final Uid givenUid = Uid.builder().id("id1").atype(2).build();
212+
final Eid givenEid = Eid.builder().source("some.source.com").uids(singletonList(givenUid)).build();
213+
final User givenUser = User.builder().eids(singletonList(givenEid)).build();
214+
final BidRequest givenBidRequest = BidRequest.builder().id("request").user(givenUser).build();
215+
216+
final User expectedUser = givenUser.toBuilder().eids(null).build();
217+
final BidRequest expectedBidRequest = givenBidRequest.toBuilder().user(expectedUser).build();
218+
219+
final Eid expectedEid = Eid.builder().source("liveintent.com").build();
220+
221+
final String responseBody = MAPPER.encodeToString(IdResResponse.of(List.of(expectedEid)));
222+
given(httpClient.post(any(), any(), any(), anyLong()))
223+
.willReturn(Future.succeededFuture(HttpClientResponse.of(200, null, responseBody)));
224+
225+
final ActivityController activityController = ActivityController.of(
226+
false, List.of(), activityInfrastructureDebug);
227+
228+
final ActivityInfrastructure givenActivityInfrastructure = new ActivityInfrastructure(
229+
Map.of(Activity.TRANSMIT_EIDS, activityController,
230+
Activity.TRANSMIT_UFPD, activityController),
231+
activityInfrastructureDebug);
232+
233+
final AuctionInvocationContext auctionInvocationContext = AuctionInvocationContextImpl.of(
234+
null,
235+
AuctionContext.builder().activityInfrastructure(givenActivityInfrastructure).build(),
236+
false,
237+
null,
238+
null);
239+
240+
// when
241+
final InvocationResult<AuctionRequestPayload> result =
242+
target.call(AuctionRequestPayloadImpl.of(givenBidRequest), auctionInvocationContext).result();
243+
// then
244+
assertThat(result.status()).isEqualTo(InvocationStatus.success);
245+
246+
verify(httpClient).post(
247+
eq("https://test.com/idres"),
248+
argThat(headers -> headers.contains("Authorization", "Bearer auth_token", true)),
249+
eq(MAPPER.encodeToString(expectedBidRequest)),
250+
eq(5L));
251+
}
252+
78253
@Test
79254
public void callShouldEnrichUserEidsWithRequestedEids() {
80255
// given

0 commit comments

Comments
 (0)