github.com/prebid/prebid-server@v0.275.0/openrtb_ext/alternatebiddercodes_test.go (about) 1 package openrtb_ext 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestAlternateBidderCodes_IsValidBidderCode(t *testing.T) { 11 type fields struct { 12 Enabled bool 13 Bidders map[string]ExtAdapterAlternateBidderCodes 14 } 15 type args struct { 16 bidder string 17 alternateBidder string 18 } 19 tests := []struct { 20 name string 21 fields fields 22 args args 23 wantIsValid bool 24 wantErr error 25 }{ 26 { 27 name: "alternateBidder is not set/blank (default non-extra bid case)", 28 wantIsValid: true, 29 }, 30 { 31 name: "alternateBidder and bidder are same (default non-extra bid case with seat's alternateBidder explicitly set)", 32 args: args{ 33 bidder: "pubmatic", 34 alternateBidder: "pubmatic", 35 }, 36 wantIsValid: true, 37 }, 38 { 39 name: "account.alternatebiddercodes config not defined (default, reject bid)", 40 args: args{ 41 bidder: "pubmatic", 42 alternateBidder: "groupm", 43 }, 44 wantIsValid: false, 45 wantErr: errors.New(`alternateBidderCodes disabled for "pubmatic", rejecting bids for "groupm"`), 46 }, 47 { 48 name: "account.alternatebiddercodes config enabled but adapter config not defined", 49 args: args{ 50 bidder: "pubmatic", 51 alternateBidder: "groupm", 52 }, 53 fields: fields{Enabled: true}, 54 wantIsValid: false, 55 wantErr: errors.New(`alternateBidderCodes not defined for adapter "pubmatic", rejecting bids for "groupm"`), 56 }, 57 { 58 name: "account.alternatebiddercodes config enabled but adapter config is not available", 59 args: args{ 60 bidder: "pubmatic", 61 alternateBidder: "groupm", 62 }, 63 fields: fields{ 64 Enabled: true, 65 Bidders: map[string]ExtAdapterAlternateBidderCodes{ 66 "appnexus": {}, 67 }, 68 }, 69 wantIsValid: false, 70 wantErr: errors.New(`alternateBidderCodes not defined for adapter "pubmatic", rejecting bids for "groupm"`), 71 }, 72 { 73 name: "account.alternatebiddercodes config enabled but adapter config is disabled", 74 args: args{ 75 bidder: "pubmatic", 76 alternateBidder: "groupm", 77 }, 78 fields: fields{ 79 Enabled: true, 80 Bidders: map[string]ExtAdapterAlternateBidderCodes{ 81 "pubmatic": {Enabled: false}, 82 }, 83 }, 84 wantIsValid: false, 85 wantErr: errors.New(`alternateBidderCodes disabled for "pubmatic", rejecting bids for "groupm"`), 86 }, 87 { 88 name: "account.alternatebiddercodes and adapter config enabled but adapter config does not have allowedBidderCodes defined", 89 args: args{ 90 bidder: "pubmatic", 91 alternateBidder: "groupm", 92 }, 93 fields: fields{ 94 Enabled: true, 95 Bidders: map[string]ExtAdapterAlternateBidderCodes{ 96 "pubmatic": {Enabled: true}, 97 }, 98 }, 99 wantIsValid: true, 100 }, 101 { 102 name: "allowedBidderCodes is *", 103 args: args{ 104 bidder: "pubmatic", 105 alternateBidder: "groupm", 106 }, 107 fields: fields{ 108 Enabled: true, 109 Bidders: map[string]ExtAdapterAlternateBidderCodes{ 110 "pubmatic": { 111 Enabled: true, 112 AllowedBidderCodes: []string{"*"}, 113 }, 114 }, 115 }, 116 wantIsValid: true, 117 }, 118 { 119 name: "allowedBidderCodes is in the list", 120 args: args{ 121 bidder: "pubmatic", 122 alternateBidder: "groupm", 123 }, 124 fields: fields{ 125 Enabled: true, 126 Bidders: map[string]ExtAdapterAlternateBidderCodes{ 127 "pubmatic": { 128 Enabled: true, 129 AllowedBidderCodes: []string{"groupm"}, 130 }, 131 }, 132 }, 133 wantIsValid: true, 134 }, 135 { 136 name: "allowedBidderCodes is not in the list", 137 args: args{ 138 bidder: "pubmatic", 139 alternateBidder: "groupm", 140 }, 141 fields: fields{ 142 Enabled: true, 143 Bidders: map[string]ExtAdapterAlternateBidderCodes{ 144 "pubmatic": { 145 Enabled: true, 146 AllowedBidderCodes: []string{"xyz"}, 147 }, 148 }, 149 }, 150 wantIsValid: false, 151 wantErr: errors.New(`invalid biddercode "groupm" sent by adapter "pubmatic"`), 152 }, 153 { 154 name: "account.alternatebiddercodes and adapter config enabled but adapter config has allowedBidderCodes list empty", 155 args: args{ 156 bidder: "pubmatic", 157 alternateBidder: "groupm", 158 }, 159 fields: fields{ 160 Enabled: true, 161 Bidders: map[string]ExtAdapterAlternateBidderCodes{ 162 "pubmatic": {Enabled: true, AllowedBidderCodes: []string{}}, 163 }, 164 }, 165 wantIsValid: false, 166 wantErr: errors.New(`invalid biddercode "groupm" sent by adapter "pubmatic"`), 167 }, 168 } 169 for _, tt := range tests { 170 t.Run(tt.name, func(t *testing.T) { 171 a := &ExtAlternateBidderCodes{ 172 Enabled: tt.fields.Enabled, 173 Bidders: tt.fields.Bidders, 174 } 175 gotIsValid, gotErr := a.IsValidBidderCode(tt.args.bidder, tt.args.alternateBidder) 176 assert.Equal(t, tt.wantIsValid, gotIsValid) 177 assert.Equal(t, tt.wantErr, gotErr) 178 }) 179 } 180 }