diff --git a/analytics/pubmatic/logger.go b/analytics/pubmatic/logger.go index 569740069c0..979a9612aa6 100644 --- a/analytics/pubmatic/logger.go +++ b/analytics/pubmatic/logger.go @@ -414,25 +414,30 @@ func getPartnerRecordsByImp(ao analytics.AuctionObject, rCtx *models.RequestCtx) } pr := PartnerRecord{ - PartnerID: partnerID, // prebid biddercode - BidderCode: seat, // pubmatic biddercode: pubmatic2 - Latency1: rCtx.BidderResponseTimeMillis[seat], // it is set inside auctionresponsehook for all bidders - KGPV: kgpv, - KGPSV: kgpsv, - BidID: utils.GetOriginalBidId(bid.ID), - OrigBidID: utils.GetOriginalBidId(bid.ID), - DefaultBidStatus: 0, // this will be always 0 , decide whether to drop this field in future - ServerSide: 1, - MatchedImpression: rCtx.MatchedImpression[seat], - OriginalCPM: models.GetGrossEcpm(bidExt.OriginalBidCPM), - OriginalCur: bidExt.OriginalBidCur, - DealID: bid.DealID, - Nbr: nbr, - Adformat: adFormat, - NetECPM: tracker.Tracker.PartnerInfo.NetECPM, - GrossECPM: tracker.Tracker.PartnerInfo.GrossECPM, - PartnerSize: tracker.Tracker.PartnerInfo.AdSize, - ADomain: tracker.Tracker.PartnerInfo.Advertiser, + PartnerID: partnerID, // prebid biddercode + BidderCode: seat, // pubmatic biddercode: pubmatic2 + Latency1: rCtx.BidderResponseTimeMillis[seat], // it is set inside auctionresponsehook for all bidders + KGPV: kgpv, + KGPSV: kgpsv, + BidID: utils.GetOriginalBidId(bid.ID), + OrigBidID: utils.GetOriginalBidId(bid.ID), + DefaultBidStatus: 0, // this will be always 0 , decide whether to drop this field in future + ServerSide: 1, + MatchedImpression: rCtx.MatchedImpression[seat], + OriginalCPM: models.GetGrossEcpm(bidExt.OriginalBidCPM), + OriginalCur: bidExt.OriginalBidCur, + DealID: bid.DealID, + Nbr: nbr, + Adformat: adFormat, + NetECPM: tracker.Tracker.PartnerInfo.NetECPM, + GrossECPM: tracker.Tracker.PartnerInfo.GrossECPM, + PartnerSize: tracker.Tracker.PartnerInfo.AdSize, + ADomain: tracker.Tracker.PartnerInfo.Advertiser, + MultiBidMultiFloorFlag: tracker.Tracker.PartnerInfo.MultiBidMultiFloorFlag, + } + + if pr.MultiBidMultiFloorFlag == 0 && bidExt.MultiBidMultiFloorValue > 0 { + pr.MultiBidMultiFloorFlag = 1 } if pr.NetECPM == 0 { diff --git a/analytics/pubmatic/logger_test.go b/analytics/pubmatic/logger_test.go index 65d2e6d048e..72001e92346 100644 --- a/analytics/pubmatic/logger_test.go +++ b/analytics/pubmatic/logger_test.go @@ -695,15 +695,16 @@ func TestGetPartnerRecordsByImpForTracker(t *testing.T) { "bid-id-1": { Tracker: models.Tracker{ PartnerInfo: models.Partner{ - Adformat: models.Native, - KGPV: "kgpv", - NetECPM: 10, - GrossECPM: 12, - AdSize: "15x15", - FloorValue: 1, - FloorRuleValue: 2, - Advertiser: "sony.com", - PriceBucket: "10.00", + Adformat: models.Native, + KGPV: "kgpv", + NetECPM: 10, + GrossECPM: 12, + AdSize: "15x15", + FloorValue: 1, + FloorRuleValue: 2, + Advertiser: "sony.com", + PriceBucket: "10.00", + MultiBidMultiFloorFlag: 1, }, LoggerData: models.LoggerData{ KGPSV: "kgpsv", @@ -728,23 +729,24 @@ func TestGetPartnerRecordsByImpForTracker(t *testing.T) { partners: map[string][]PartnerRecord{ "imp1": { { - PartnerID: "pubmatic", - BidderCode: "pubmatic", - PartnerSize: "15x15", - BidID: "bid-id-1", - OrigBidID: "bid-id-1", - DealID: "-1", - ServerSide: 1, - OriginalCur: "USD", - Adformat: models.Native, - NetECPM: 10, - GrossECPM: 12, - FloorValue: 1, - FloorRuleValue: 2, - ADomain: "sony.com", - KGPV: "kgpv", - KGPSV: "kgpsv", - PriceBucket: "10.00", + PartnerID: "pubmatic", + BidderCode: "pubmatic", + PartnerSize: "15x15", + BidID: "bid-id-1", + OrigBidID: "bid-id-1", + DealID: "-1", + ServerSide: 1, + OriginalCur: "USD", + Adformat: models.Native, + NetECPM: 10, + GrossECPM: 12, + FloorValue: 1, + FloorRuleValue: 2, + ADomain: "sony.com", + KGPV: "kgpv", + KGPSV: "kgpsv", + PriceBucket: "10.00", + MultiBidMultiFloorFlag: 1, }, }, }, @@ -1029,6 +1031,7 @@ func TestGetPartnerRecordsByImpForDefaultBids(t *testing.T) { }, }, }, + TagID: "adunit_1234", }, }, }, diff --git a/analytics/pubmatic/record.go b/analytics/pubmatic/record.go index ebdd1a5f9d3..0f8e2692f6d 100644 --- a/analytics/pubmatic/record.go +++ b/analytics/pubmatic/record.go @@ -144,10 +144,11 @@ type PartnerRecord struct { OriginalCur string `json:"ocry"` MetaData *MetaData `json:"md,omitempty"` - FloorValue float64 `json:"fv,omitempty"` - FloorRuleValue float64 `json:"frv,omitempty"` - Nbr *openrtb3.NoBidReason `json:"nbr,omitempty"` // NonBR reason code - PriceBucket string `json:"pb,omitempty"` + FloorValue float64 `json:"fv,omitempty"` + FloorRuleValue float64 `json:"frv,omitempty"` + Nbr *openrtb3.NoBidReason `json:"nbr,omitempty"` // NonBR reason code + PriceBucket string `json:"pb,omitempty"` + MultiBidMultiFloorFlag int `json:"mbmf,omitempty"` } type MetaData struct { diff --git a/modules/pubmatic/openwrap/adapters/bidders.go b/modules/pubmatic/openwrap/adapters/bidders.go index 678dc601ec8..d8feb482c81 100644 --- a/modules/pubmatic/openwrap/adapters/bidders.go +++ b/modules/pubmatic/openwrap/adapters/bidders.go @@ -730,3 +730,22 @@ func builderAidem(params BidderParameters) (json.RawMessage, error) { return jsonStr.Bytes(), nil } + +func builderCompass(params BidderParameters) (json.RawMessage, error) { + jsonStr := bytes.Buffer{} + jsonStr.WriteByte('{') + oneOf := []string{"placementId", "endpointId"} + for _, param := range oneOf { + if key, ok := getString(params.FieldMap[param]); ok { + fmt.Fprintf(&jsonStr, `"%s":"%s"`, param, key) + break + } + } + // len=0 (no mandatory params present) + if jsonStr.Len() == 1 { + return nil, fmt.Errorf(errMandatoryParameterMissingFormat, params.AdapterName, oneOf) + } + + jsonStr.WriteByte('}') + return jsonStr.Bytes(), nil +} diff --git a/modules/pubmatic/openwrap/adapters/bidders_test.go b/modules/pubmatic/openwrap/adapters/bidders_test.go index 08c01d55a5c..52783889c68 100644 --- a/modules/pubmatic/openwrap/adapters/bidders_test.go +++ b/modules/pubmatic/openwrap/adapters/bidders_test.go @@ -3119,3 +3119,50 @@ func Test_builderAidem(t *testing.T) { }) } } + +func TestBuilderCompass(t *testing.T) { + type args struct { + params BidderParameters + } + tests := []struct { + name string + args args + want json.RawMessage + wantErr bool + }{ + { + name: "Valid Scenerio (oneOf placementId or endpointId) is present-placementId", + args: args{params: BidderParameters{FieldMap: JSONObject{"placementId": "dbdsfh"}}}, + want: json.RawMessage(`{"placementId": "dbdsfh"}`), + wantErr: false, + }, + { + name: "Valid Scenerio (oneOf placementId or endpointId) is present-endpointId", + args: args{params: BidderParameters{FieldMap: JSONObject{"endpointId": "dbdsfh"}}}, + want: json.RawMessage(`{"endpointId": "dbdsfh"}`), + wantErr: false, + }, + { + name: "Valid Scenerio (oneOf placementId or endpointId), Both are present", + args: args{params: BidderParameters{FieldMap: JSONObject{"placementId": "sdhks", "endpointId": "sdjksd"}}}, + want: json.RawMessage(`{"placementId": "sdhks"}`), + wantErr: false, + }, + { + name: "Invalid Scenerio (None Of placementId or endpointId) is present", + args: args{params: BidderParameters{FieldMap: JSONObject{}}}, + want: json.RawMessage(``), + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := builderCompass(tt.args.params) + if (err != nil) != tt.wantErr { + t.Errorf("builderCompass() error = %v, wantErr %v", err, tt.wantErr) + return + } + AssertJSON(t, tt.want, got) + }) + } +} diff --git a/modules/pubmatic/openwrap/adapters/builder.go b/modules/pubmatic/openwrap/adapters/builder.go index 23ce21b68b7..c2996005017 100644 --- a/modules/pubmatic/openwrap/adapters/builder.go +++ b/modules/pubmatic/openwrap/adapters/builder.go @@ -59,6 +59,7 @@ func initBidderBuilderFactory() { string(openrtb_ext.BidderKargo): builderKargo, string(openrtb_ext.BidderPGAMSsp): builderPGAMSSP, string(openrtb_ext.BidderAidem): builderAidem, + string(openrtb_ext.BidderCompass): builderCompass, } } diff --git a/modules/pubmatic/openwrap/adapters/tests/s2s_bidders.json b/modules/pubmatic/openwrap/adapters/tests/s2s_bidders.json index 12cefbbf095..9a0d55a1bbe 100644 --- a/modules/pubmatic/openwrap/adapters/tests/s2s_bidders.json +++ b/modules/pubmatic/openwrap/adapters/tests/s2s_bidders.json @@ -136,5 +136,20 @@ "siteId":"abcdefg" } } + }, + { + "name": "compass_json_OneOf - placementId/endpointId", + "args" : { + "adapterName": "compass", + "requestJSON": { + "placementId": "123456", + "endpointId": "abcdefg" + } + }, + "want": { + "expectedJSON": { + "placementId": "123456" + } + } } ] \ No newline at end of file diff --git a/modules/pubmatic/openwrap/auctionresponsehook.go b/modules/pubmatic/openwrap/auctionresponsehook.go index 2d7ecc2a406..700af49c8b1 100644 --- a/modules/pubmatic/openwrap/auctionresponsehook.go +++ b/modules/pubmatic/openwrap/auctionresponsehook.go @@ -167,6 +167,9 @@ func (m OpenWrap) handleAuctionResponseHook( bidExt.CreativeType = models.GetCreativeType(&bid, bidExt, &impCtx) } + if bidExt.CreativeType != string(openrtb_ext.BidTypeBanner) { + bidExt.ClickTrackers = nil + } // set response netecpm and logger/tracker en revShare := models.GetRevenueShare(rctx.PartnerConfigMap[partnerID]) bidExt.NetECPM = models.ToFixed(bid.Price, models.BID_PRECISION) diff --git a/modules/pubmatic/openwrap/auctionresponsehook_test.go b/modules/pubmatic/openwrap/auctionresponsehook_test.go index 4346dc5033b..4201a4e8a59 100644 --- a/modules/pubmatic/openwrap/auctionresponsehook_test.go +++ b/modules/pubmatic/openwrap/auctionresponsehook_test.go @@ -1664,7 +1664,7 @@ func TestOpenWrapHandleAuctionResponseHook(t *testing.T) { ImpID: "Div1", Price: 5, AdM: "
", - Ext: json.RawMessage(`{"bidtype":0,"deal_channel":1,"dspid":6,"origbidcpm":8,"origbidcur":"USD","ibv":true,"prebid":{"bidid":"bb57a9e3-fdc2-4772-8071-112dd7f50a6a","meta":{"adaptercode":"pubmatic","advertiserId":4098,"agencyId":4098,"demandSource":"6","mediaType":"banner","networkId":6},"targeting":{"hb_bidder_pubmatic":"pubmatic","hb_deal_pubmatic":"PUBDEAL1","hb_pb_pubmatic":"8.00","hb_size_pubmatic":"728x90"},"type":"banner","video":{"duration":0,"primary_category":"","vasttagid":""}}}`), + Ext: json.RawMessage(`{"bidtype":0,"deal_channel":1,"dspid":6,"origbidcpm":8,"origbidcur":"USD","ibv":true,"prebid":{"bidid":"bb57a9e3-fdc2-4772-8071-112dd7f50a6a","meta":{"adaptercode":"pubmatic","advertiserId":4098,"agencyId":4098,"demandSource":"6","mediaType":"banner","networkId":6},"targeting":{"hb_bidder_pubmatic":"pubmatic","hb_deal_pubmatic":"PUBDEAL1","hb_pb_pubmatic":"8.00","hb_size_pubmatic":"728x90"},"type":"banner","video":{"duration":0,"primary_category":"","vasttagid":""}},"clicktrackers":["http://clicktracker1.com","http://clicktracker2.com"]}`), }, }, Seat: "pubmatic", @@ -1691,7 +1691,7 @@ func TestOpenWrapHandleAuctionResponseHook(t *testing.T) { DebugMessages: []string{`[{"PubID":5890,"ProfileID":0,"DisplayID":0,"VersionID":0,"DisplayVersionID":0,"SSAuction":0,"SummaryDisable":0,"SSAI":"","PartnerConfigMap":{"-1":{"displayVersionId":"1","refreshInterval":"30","rev_share":"0.5"},"123":{"bidderCode":"pubmatic","kgp":"_AU_@_W_x_H_","partnerId":"123","prebidPartnerName":"pubmatic","serverSideEnabled":"1","timeout":"200"}},"SupportDeals":false,"Platform":"web","LoggerImpressionID":"","ClientConfigFlag":1,"IP":"","TMax":0,"IsTestRequest":0,"ABTestConfig":0,"ABTestConfigApplied":0,"IsCTVRequest":false,"TrackerEndpoint":"","VideoErrorTrackerEndpoint":"","UA":"","Cookies":"","UidCookie":null,"KADUSERCookie":null,"ParsedUidCookie":null,"OriginCookie":"","Debug":true,"Trace":false,"PageURL":"","StartTime":0,"DevicePlatform":0,"Trackers":{"bid-id-1":{"Tracker":{"PubID":5890,"PageURL":"","Timestamp":0,"IID":"","ProfileID":"0","VersionID":"0","SlotID":"","Adunit":"","PartnerInfo":{"PartnerID":"pubmatic","BidderCode":"pubmatic","KGPV":"","GrossECPM":0,"NetECPM":0,"BidID":"bb57a9e3-fdc2-4772-8071-112dd7f50a6a","OrigBidID":"bid-id-1","AdSize":"0x0","AdDuration":0,"Adformat":"banner","ServerSide":1,"Advertiser":"","FloorValue":0,"FloorRuleValue":0,"DealID":"-1"},"RewardedInventory":0,"SURL":"","Platform":0,"SSAI":"","AdPodSlot":0,"TestGroup":0,"Origin":"","FloorSkippedFlag":null,"FloorModelVersion":"","FloorSource":null,"FloorType":0,"CustomDimensions":"","LoggerData":{"KGPSV":"","FloorProvider":"","FloorFetchStatus":null}},"TrackerURL":"https:?adv=\u0026af=banner\u0026aps=0\u0026au=\u0026bc=pubmatic\u0026bidid=bb57a9e3-fdc2-4772-8071-112dd7f50a6a\u0026di=-1\u0026eg=0\u0026en=0\u0026ft=0\u0026iid=\u0026kgpv=\u0026orig=\u0026origbidid=bid-id-1\u0026pdvid=0\u0026pid=0\u0026plt=0\u0026pn=pubmatic\u0026psz=0x0\u0026pubid=5890\u0026purl=\u0026sl=1\u0026slot=\u0026ss=1\u0026tgid=0\u0026tst=0","ErrorURL":"","Price":5,"PriceModel":"CPM","PriceCurrency":""}},"PrebidBidderCode":null,"ImpBidCtx":{"Div1":{"ImpID":"","TagID":"","Div":"","SlotName":"","AdUnitName":"","Secure":0,"BidFloor":0,"BidFloorCur":"","IsRewardInventory":null,"Banner":true,"Video":{"mimes":null},"Native":null,"IncomingSlots":null,"Type":"video","Bidders":{"pubmatic":{"PartnerID":123,"PrebidBidderCode":"pubmatic","MatchedSlot":"","KGP":"","KGPV":"","IsRegex":false,"Params":null,"VASTTagFlag":false,"VASTTagFlags":null}},"NonMapped":null,"NewExt":null,"BidCtx":{"bid-id-1":{"prebid":{"meta":{"adaptercode":"pubmatic","advertiserId":4098,"agencyId":4098,"demandSource":"6","mediaType":"banner","networkId":6},"type":"banner","bidid":"bb57a9e3-fdc2-4772-8071-112dd7f50a6a"},"refreshInterval":30,"crtype":"banner","dspid":6,"netecpm":5,"origbidcpm":8,"origbidcur":"USD","EG":0,"EN":0}},"BannerAdUnitCtx":{"MatchedSlot":"","IsRegex":false,"MatchedRegex":"","SelectedSlotAdUnitConfig":null,"AppliedSlotAdUnitConfig":null,"UsingDefaultConfig":false,"AllowedConnectionTypes":null},"VideoAdUnitCtx":{"MatchedSlot":"","IsRegex":false,"MatchedRegex":"","SelectedSlotAdUnitConfig":null,"AppliedSlotAdUnitConfig":null,"UsingDefaultConfig":false,"AllowedConnectionTypes":null},"BidderError":"","IsAdPodRequest":false}},"Aliases":null,"NewReqExt":null,"ResponseExt":{"responsetimemillis":{"pubmatic":8}},"MarketPlaceBidders":null,"AdapterThrottleMap":null,"AdUnitConfig":null,"Source":"","Origin":"","SendAllBids":false,"WinningBids":{"Div1":{"ID":"bid-id-1","NetEcpm":5,"BidDealTierSatisfied":false,"Nbr":null}},"DroppedBids":null,"DefaultBids":{},"SeatNonBids":{},"BidderResponseTimeMillis":{"pubmatic":8},"Endpoint":"","PubIDStr":"5890","ProfileIDStr":"","MetricsEngine":{},"ReturnAllBidStatus":true,"Sshb":"","DCName":"","CachePutMiss":0,"MatchedImpression":{"pubmatic":0},"CustomDimensions":null}]`}, }, err: nil, - bidResponse: json.RawMessage(`{"id":"12345","seatbid":[{"bid":[{"id":"bid-id-1","impid":"Div1","price":5,"adm":"\u003cimg src=\"http://ads.pubmatic.com/AdTag/728x90.png\"\u003e\u003c/img\u003e\u003cdiv style=\"position:absolute;left:0px;top:0px;visibility:hidden;\"\u003e\u003cimg src=\"https://t.pubmatic.com/wt?adv=\u0026af=banner\u0026aps=0\u0026au=%2F43743431%2FDMDemo\u0026bc=appnexus\u0026bidid=4033c510-6d67-4af6-b53f-682ff1a580c3\u0026di=-1\u0026eg=14\u0026en=14\u0026frv=1.57\u0026ft=0\u0026fv=1.57\u0026iid=429d469d-8cfb-495a-9f0c-5f48aa0ede40\u0026kgpv=\u0026orig=ebay.com\u0026origbidid=718825584\u0026pdvid=1\u0026pid=22503\u0026plt=1\u0026pn=appnexus\u0026psz=728x90\u0026pubid=5890\u0026purl=http%3A%2F%2Febay.com%2Finte%2Fautomation%2Fs2s_activation%2Fbanner-with-gdpr-pubmatic-denied-defaultbidder.html%3Fprofileid%3D22503%26pwtv%3D1%26pwtvc%3D1%26appnexus_banner_fixedbid%3D14%26fixedbid%3D1%26debug%3D1\u0026sl=1\u0026slot=%2F43743431%2FDMDemo\u0026ss=1\u0026tgid=0\u0026tst=1704357774\"\u003e\u003c/div\u003e\u003cdiv style=\"position:absolute;left:0px;top:0px;visibility:hidden;\"\u003e\u003cimg src=\"https:?adv=\u0026af=banner\u0026aps=0\u0026au=\u0026bc=pubmatic\u0026bidid=bb57a9e3-fdc2-4772-8071-112dd7f50a6a\u0026di=-1\u0026eg=0\u0026en=0\u0026ft=0\u0026iid=\u0026kgpv=\u0026orig=\u0026origbidid=bid-id-1\u0026pdvid=0\u0026pid=0\u0026plt=0\u0026pn=pubmatic\u0026psz=0x0\u0026pubid=5890\u0026purl=\u0026sl=1\u0026slot=\u0026ss=1\u0026tgid=0\u0026tst=0\"\u003e\u003c/div\u003e","ext":{"prebid":{"meta":{"adaptercode":"pubmatic","advertiserId":4098,"agencyId":4098,"demandSource":"6","mediaType":"banner","networkId":6},"type":"banner","bidid":"bb57a9e3-fdc2-4772-8071-112dd7f50a6a"},"refreshInterval":30,"crtype":"banner","dspid":6,"netecpm":5,"origbidcpm":8,"origbidcur":"USD","ibv":true}}],"seat":"pubmatic"}],"ext":{"responsetimemillis":{"pubmatic":8},"matchedimpression":{"pubmatic":0}}}`), + bidResponse: json.RawMessage(`{"id":"12345","seatbid":[{"bid":[{"id":"bid-id-1","impid":"Div1","price":5,"adm":"\u003cimg src=\"http://ads.pubmatic.com/AdTag/728x90.png\"\u003e\u003c/img\u003e\u003cdiv style=\"position:absolute;left:0px;top:0px;visibility:hidden;\"\u003e\u003cimg src=\"https://t.pubmatic.com/wt?adv=\u0026af=banner\u0026aps=0\u0026au=%2F43743431%2FDMDemo\u0026bc=appnexus\u0026bidid=4033c510-6d67-4af6-b53f-682ff1a580c3\u0026di=-1\u0026eg=14\u0026en=14\u0026frv=1.57\u0026ft=0\u0026fv=1.57\u0026iid=429d469d-8cfb-495a-9f0c-5f48aa0ede40\u0026kgpv=\u0026orig=ebay.com\u0026origbidid=718825584\u0026pdvid=1\u0026pid=22503\u0026plt=1\u0026pn=appnexus\u0026psz=728x90\u0026pubid=5890\u0026purl=http%3A%2F%2Febay.com%2Finte%2Fautomation%2Fs2s_activation%2Fbanner-with-gdpr-pubmatic-denied-defaultbidder.html%3Fprofileid%3D22503%26pwtv%3D1%26pwtvc%3D1%26appnexus_banner_fixedbid%3D14%26fixedbid%3D1%26debug%3D1\u0026sl=1\u0026slot=%2F43743431%2FDMDemo\u0026ss=1\u0026tgid=0\u0026tst=1704357774\"\u003e\u003c/div\u003e\u003cdiv style=\"position:absolute;left:0px;top:0px;visibility:hidden;\"\u003e\u003cimg src=\"https:?adv=\u0026af=banner\u0026aps=0\u0026au=\u0026bc=pubmatic\u0026bidid=bb57a9e3-fdc2-4772-8071-112dd7f50a6a\u0026di=-1\u0026eg=0\u0026en=0\u0026ft=0\u0026iid=\u0026kgpv=\u0026orig=\u0026origbidid=bid-id-1\u0026pdvid=0\u0026pid=0\u0026plt=0\u0026pn=pubmatic\u0026psz=0x0\u0026pubid=5890\u0026purl=\u0026sl=1\u0026slot=\u0026ss=1\u0026tgid=0\u0026tst=0\"\u003e\u003c/div\u003e","ext":{"prebid":{"meta":{"adaptercode":"pubmatic","advertiserId":4098,"agencyId":4098,"demandSource":"6","mediaType":"banner","networkId":6},"type":"banner","bidid":"bb57a9e3-fdc2-4772-8071-112dd7f50a6a"},"refreshInterval":30,"crtype":"banner","dspid":6,"netecpm":5,"origbidcpm":8,"origbidcur":"USD","ibv":true,"clicktrackers":["http://clicktracker1.com","http://clicktracker2.com"]}}],"seat":"pubmatic"}],"ext":{"responsetimemillis":{"pubmatic":8},"matchedimpression":{"pubmatic":0}}}`), }, }, { @@ -1761,7 +1761,7 @@ func TestOpenWrapHandleAuctionResponseHook(t *testing.T) { ImpID: "Div1", Price: 5, AdM: "