github.com/prebid/prebid-server@v0.275.0/adapters/suntContent/suntContent_test.go (about) 1 package suntContent 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/prebid/openrtb/v19/openrtb2" 8 "github.com/prebid/prebid-server/adapters" 9 "github.com/prebid/prebid-server/adapters/adapterstest" 10 "github.com/prebid/prebid-server/config" 11 "github.com/prebid/prebid-server/openrtb_ext" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestJsonSamples(t *testing.T) { 16 bidder, buildErr := Builder(openrtb_ext.BidderSuntContent, config.Adapter{ 17 Endpoint: "https://mockup.suntcontent.com/", 18 }, config.Server{ExternalUrl: "http://hosturl.com", GvlID: 1, DataCenter: "2"}) 19 if buildErr != nil { 20 t.Fatalf("Builder returned unexpected error %v", buildErr) 21 } 22 23 adapterstest.RunJSONBidderTest(t, "suntContenttest", bidder) 24 } 25 26 func TestResolvePriceMacro(t *testing.T) { 27 adm := `{"link":{"url":"https://some_url.com/abc123?wp=${AUCTION_PRICE}"}` 28 want := `{"link":{"url":"https://some_url.com/abc123?wp=12.34"}` 29 30 bid := openrtb2.Bid{AdM: adm, Price: 12.34} 31 resolvePriceMacro(&bid) 32 33 if bid.AdM != want { 34 t.Fatalf("want: %v, got: %v", want, bid.AdM) 35 } 36 } 37 38 func TestGetMediaTypeForBid(t *testing.T) { 39 tests := []struct { 40 name string 41 want openrtb_ext.BidType 42 invalidJSON bool 43 wantErr bool 44 wantErrContain string 45 bidType openrtb_ext.BidType 46 }{ 47 { 48 name: "native", 49 want: openrtb_ext.BidTypeNative, 50 invalidJSON: false, 51 wantErr: false, 52 wantErrContain: "", 53 bidType: "native", 54 }, 55 { 56 name: "banner", 57 want: openrtb_ext.BidTypeBanner, 58 invalidJSON: false, 59 wantErr: false, 60 wantErrContain: "", 61 bidType: "banner", 62 }, 63 { 64 name: "video", 65 want: openrtb_ext.BidTypeVideo, 66 invalidJSON: false, 67 wantErr: false, 68 wantErrContain: "", 69 bidType: "video", 70 }, 71 { 72 name: "audio", 73 want: openrtb_ext.BidTypeAudio, 74 invalidJSON: false, 75 wantErr: false, 76 wantErrContain: "", 77 bidType: "audio", 78 }, 79 { 80 name: "empty type", 81 want: "", 82 invalidJSON: false, 83 wantErr: true, 84 wantErrContain: "invalid BidType", 85 bidType: "", 86 }, 87 { 88 name: "invalid type", 89 want: "", 90 invalidJSON: false, 91 wantErr: true, 92 wantErrContain: "invalid BidType", 93 bidType: "invalid", 94 }, 95 { 96 name: "invalid json", 97 want: "", 98 invalidJSON: true, 99 wantErr: true, 100 wantErrContain: "bid.Ext.Prebid is empty", 101 bidType: "", 102 }, 103 } 104 105 for _, test := range tests { 106 var bid openrtb2.SeatBid 107 var extBid openrtb_ext.ExtBid 108 109 var bidExtJsonString string 110 if test.invalidJSON { 111 bidExtJsonString = `{"x_prebid": {"type":""}}` 112 } else { 113 bidExtJsonString = `{"prebid": {"type":"` + string(test.bidType) + `"}}` 114 } 115 116 if err := bid.Ext.UnmarshalJSON([]byte(bidExtJsonString)); err != nil { 117 t.Fatalf("unexpected error %v", err) 118 } 119 120 if err := json.Unmarshal(bid.Ext, &extBid); err != nil { 121 t.Fatalf("could not unmarshal extBid: %v", err) 122 } 123 124 got, gotErr := getMediaTypeForBid(bid.Ext) 125 assert.Equal(t, test.want, got) 126 127 if test.wantErr { 128 if gotErr != nil { 129 assert.Contains(t, gotErr.Error(), test.wantErrContain) 130 continue 131 } 132 t.Fatalf("wantErr: %v, gotErr: %v", test.wantErr, gotErr) 133 } 134 } 135 } 136 137 func TestAddTagID(t *testing.T) { 138 tests := []struct { 139 name string 140 want string 141 data string 142 wantErr bool 143 }{ 144 {"regular case", "abc123", "abc123", false}, 145 {"nil case", "", "", false}, 146 {"unmarshal err case", "", "", true}, 147 } 148 149 for _, test := range tests { 150 extSA, err := json.Marshal(openrtb_ext.ImpExtSuntContent{AdUnitID: test.data}) 151 if err != nil { 152 t.Fatalf("unexpected error %v", err) 153 } 154 155 extBidder, err := json.Marshal(adapters.ExtImpBidder{Bidder: extSA}) 156 if err != nil { 157 t.Fatalf("unexpected error %v", err) 158 } 159 160 if test.wantErr { 161 extBidder = []byte{} 162 } 163 164 ortbImp := openrtb2.Imp{Ext: extBidder} 165 166 if err := addTagID(&ortbImp); err != nil { 167 if test.wantErr { 168 continue 169 } 170 t.Fatalf("unexpected error %v", err) 171 } 172 173 if test.want != ortbImp.TagID { 174 t.Fatalf("want: %v, got: %v", test.want, ortbImp.TagID) 175 } 176 } 177 } 178 179 func TestCurExists(t *testing.T) { 180 tests := []struct { 181 name string 182 cur string 183 data []string 184 want bool 185 }{ 186 {"no eur", "EUR", []string{"USD"}, false}, 187 {"eur exists", "EUR", []string{"USD", "EUR"}, true}, 188 } 189 190 for _, test := range tests { 191 got := curExists(test.data, test.cur) 192 assert.Equal(t, test.want, got) 193 } 194 }