Skip to content

Commit 3a69467

Browse files
committed
CleanOpenRTBRequest block bid request test improvements
1 parent f13710c commit 3a69467

File tree

2 files changed

+50
-25
lines changed

2 files changed

+50
-25
lines changed

exchange/exchange_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1770,7 +1770,7 @@ func newExchangeForTests(t *testing.T, filename string, expectations map[string]
17701770
me: metricsConf.NewMetricsEngine(&config.Configuration{}, openrtb_ext.CoreBidderNames()),
17711771
cache: &wellBehavedCache{},
17721772
cacheTime: 0,
1773-
gDPR: &permissionsMock{allowBidRequest: true},
1773+
gDPR: &permissionsMock{allowAllBidders: true},
17741774
currencyConverter: currency.NewRateConverter(&http.Client{}, "", time.Duration(0)),
17751775
UsersyncIfAmbiguous: privacyConfig.GDPR.UsersyncIfAmbiguous,
17761776
privacyConfig: privacyConfig,

exchange/utils_test.go

Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@ import (
1717
)
1818

1919
// permissionsMock mocks the Permissions interface for tests
20-
//
21-
// It only allows appnexus for GDPR consent
2220
type permissionsMock struct {
23-
allowBidRequest bool
21+
allowAllBidders bool
22+
allowedBidders []openrtb_ext.BidderName
2423
passGeo bool
2524
passID bool
2625
activitiesError error
@@ -35,7 +34,17 @@ func (p *permissionsMock) BidderSyncAllowed(ctx context.Context, bidder openrtb_
3534
}
3635

3736
func (p *permissionsMock) AuctionActivitiesAllowed(ctx context.Context, bidder openrtb_ext.BidderName, PublisherID string, gdpr gdpr.Signal, consent string, weakVendorEnforcement bool) (allowBidRequest bool, passGeo bool, passID bool, err error) {
38-
return p.allowBidRequest, p.passGeo, p.passID, p.activitiesError
37+
if p.allowAllBidders {
38+
return true, p.passGeo, p.passID, p.activitiesError
39+
}
40+
41+
for _, allowedBidder := range p.allowedBidders {
42+
if bidder == allowedBidder {
43+
allowBidRequest = true
44+
}
45+
}
46+
47+
return allowBidRequest, p.passGeo, p.passID, p.activitiesError
3948
}
4049

4150
func assertReq(t *testing.T, bidderRequests []BidderRequest,
@@ -467,7 +476,7 @@ func TestCleanOpenRTBRequests(t *testing.T) {
467476
}
468477

469478
for _, test := range testCases {
470-
permissions := permissionsMock{allowBidRequest: true, passGeo: true, passID: true}
479+
permissions := permissionsMock{allowAllBidders: true, passGeo: true, passID: true}
471480
bidderRequests, _, err := cleanOpenRTBRequests(context.Background(), test.req, nil, &permissions, true, privacyConfig, nil)
472481
if test.hasError {
473482
assert.NotNil(t, err, "Error shouldn't be nil")
@@ -623,7 +632,7 @@ func TestCleanOpenRTBRequestsCCPA(t *testing.T) {
623632
context.Background(),
624633
auctionReq,
625634
nil,
626-
&permissionsMock{allowBidRequest: true, passGeo: true, passID: true},
635+
&permissionsMock{allowAllBidders: true, passGeo: true, passID: true},
627636
true,
628637
privacyConfig,
629638
nil)
@@ -684,7 +693,7 @@ func TestCleanOpenRTBRequestsCCPAErrors(t *testing.T) {
684693
Enforce: true,
685694
},
686695
}
687-
permissions := permissionsMock{allowBidRequest: true, passGeo: true, passID: true}
696+
permissions := permissionsMock{allowAllBidders: true, passGeo: true, passID: true}
688697
_, _, errs := cleanOpenRTBRequests(context.Background(), auctionReq, &reqExtStruct, &permissions, true, privacyConfig, nil)
689698

690699
assert.ElementsMatch(t, []error{test.expectError}, errs, test.description)
@@ -725,7 +734,7 @@ func TestCleanOpenRTBRequestsCOPPA(t *testing.T) {
725734
UserSyncs: &emptyUsersync{},
726735
}
727736

728-
permissions := permissionsMock{allowBidRequest: true, passGeo: true, passID: true}
737+
permissions := permissionsMock{allowAllBidders: true, passGeo: true, passID: true}
729738
bidderRequests, privacyLabels, errs := cleanOpenRTBRequests(context.Background(), auctionReq, nil, &permissions, true, config.Privacy{}, nil)
730739
result := bidderRequests[0]
731740

@@ -833,7 +842,7 @@ func TestCleanOpenRTBRequestsSChain(t *testing.T) {
833842
UserSyncs: &emptyUsersync{},
834843
}
835844

836-
permissions := permissionsMock{allowBidRequest: true, passGeo: true, passID: true}
845+
permissions := permissionsMock{allowAllBidders: true, passGeo: true, passID: true}
837846
bidderRequests, _, errs := cleanOpenRTBRequests(context.Background(), auctionReq, extRequest, &permissions, true, config.Privacy{}, nil)
838847
if test.hasError == true {
839848
assert.NotNil(t, errs)
@@ -1415,7 +1424,7 @@ func TestCleanOpenRTBRequestsLMT(t *testing.T) {
14151424
},
14161425
}
14171426

1418-
permissions := permissionsMock{allowBidRequest: true, passGeo: true, passID: true}
1427+
permissions := permissionsMock{allowAllBidders: true, passGeo: true, passID: true}
14191428
results, privacyLabels, errs := cleanOpenRTBRequests(context.Background(), auctionReq, nil, &permissions, true, privacyConfig, nil)
14201429
result := results[0]
14211430

@@ -1631,7 +1640,7 @@ func TestCleanOpenRTBRequestsGDPRScrub(t *testing.T) {
16311640
context.Background(),
16321641
auctionReq,
16331642
nil,
1634-
&permissionsMock{allowBidRequest: true, passGeo: !test.gdprScrub, passID: !test.gdprScrub, activitiesError: test.permissionsError},
1643+
&permissionsMock{allowAllBidders: true, passGeo: !test.gdprScrub, passID: !test.gdprScrub, activitiesError: test.permissionsError},
16351644
test.userSyncIfAmbiguous,
16361645
privacyConfig,
16371646
nil)
@@ -1656,19 +1665,28 @@ func TestCleanOpenRTBRequestsGDPRScrub(t *testing.T) {
16561665

16571666
func TestCleanOpenRTBRequestsGDPRBlockBidRequest(t *testing.T) {
16581667
testCases := []struct {
1659-
description string
1660-
gdprBlockBidRequest bool
1661-
expectRequestsCount int
1668+
description string
1669+
gdprEnforced bool
1670+
gdprAllowedBidders []openrtb_ext.BidderName
1671+
expectedBidders []openrtb_ext.BidderName
16621672
}{
16631673
{
1664-
description: "GDPR allows bid request",
1665-
gdprBlockBidRequest: false,
1666-
expectRequestsCount: 1,
1674+
description: "gdpr enforced, one request allowed and one request blocked",
1675+
gdprEnforced: true,
1676+
gdprAllowedBidders: []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus},
1677+
expectedBidders: []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus},
1678+
},
1679+
{
1680+
description: "gdpr enforced, two requests allowed and no requests blocked",
1681+
gdprEnforced: true,
1682+
gdprAllowedBidders: []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon},
1683+
expectedBidders: []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon},
16671684
},
16681685
{
1669-
description: "GDPR blocks bid request",
1670-
gdprBlockBidRequest: true,
1671-
expectRequestsCount: 0,
1686+
description: "gdpr not enforced, two requests allowed and no requests blocked",
1687+
gdprEnforced: false,
1688+
gdprAllowedBidders: []openrtb_ext.BidderName{},
1689+
expectedBidders: []openrtb_ext.BidderName{openrtb_ext.BidderAppnexus, openrtb_ext.BidderRubicon},
16721690
},
16731691
}
16741692

@@ -1677,10 +1695,11 @@ func TestCleanOpenRTBRequestsGDPRBlockBidRequest(t *testing.T) {
16771695
req.Regs = &openrtb2.Regs{
16781696
Ext: json.RawMessage(`{"gdpr":1}`),
16791697
}
1698+
req.Imp[0].Ext = json.RawMessage(`{"appnexus": {"placementId": 1}, "rubicon": {}}`)
16801699

16811700
privacyConfig := config.Privacy{
16821701
GDPR: config.GDPR{
1683-
Enabled: true,
1702+
Enabled: test.gdprEnforced,
16841703
UsersyncIfAmbiguous: true,
16851704
TCF2: config.TCF2{
16861705
Enabled: true,
@@ -1704,13 +1723,19 @@ func TestCleanOpenRTBRequestsGDPRBlockBidRequest(t *testing.T) {
17041723
context.Background(),
17051724
auctionReq,
17061725
nil,
1707-
&permissionsMock{allowBidRequest: !test.gdprBlockBidRequest, passGeo: true, passID: true, activitiesError: nil},
1726+
&permissionsMock{allowedBidders: test.gdprAllowedBidders, passGeo: true, passID: true, activitiesError: nil},
17081727
true,
17091728
privacyConfig,
17101729
nil)
17111730

1712-
assert.Equal(t, test.expectRequestsCount, len(results), test.description)
1713-
assert.Equal(t, 0, len(errs), test.description)
1731+
// extract bidder name from each request in the results
1732+
bidders := []openrtb_ext.BidderName{}
1733+
for _, req := range results {
1734+
bidders = append(bidders, req.BidderName)
1735+
}
1736+
1737+
assert.Empty(t, errs, test.description)
1738+
assert.ElementsMatch(t, bidders, test.expectedBidders, test.description)
17141739
}
17151740
}
17161741

0 commit comments

Comments
 (0)