Skip to content

Commit 4993d1e

Browse files
committed
set domain to unknown if not defined and add a warning
1 parent 8fc2270 commit 4993d1e

File tree

3 files changed

+112
-10
lines changed

3 files changed

+112
-10
lines changed

adapters/sparteo/sparteo.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package sparteo
22

33
import (
44
"fmt"
5-
"log"
65
"net/http"
76
"net/url"
87
"strings"
@@ -79,6 +78,12 @@ func (a *adapter) MakeRequests(req *openrtb2.BidRequest, reqInfo *adapters.Extra
7978
}
8079

8180
domain := extractDomain(&request)
81+
if strings.TrimSpace(domain) == "" {
82+
errs = append(errs, &errortypes.BadInput{
83+
Message: "Domain not found. Missing at least one of this fields: site.domain, site.page, app.domain.",
84+
})
85+
domain = "unknown"
86+
}
8287

8388
var bundle string
8489
if request.App != nil {
@@ -138,7 +143,11 @@ func (a *adapter) MakeRequests(req *openrtb2.BidRequest, reqInfo *adapters.Extra
138143
} else if request.App != nil {
139144
pub = ensurePublisher(&request.App.Publisher)
140145
pubExt = "app.publisher.ext"
141-
}
146+
} else {
147+
request.Site = &openrtb2.Site{}
148+
pub = ensurePublisher(&request.Site.Publisher)
149+
pubExt = "site.publisher.ext"
150+
}
142151

143152
ext, err := updatePublisherExtension(&pub.Ext, networkID, pubExt)
144153
if err != nil {
@@ -233,7 +242,6 @@ func extractDomain(req *openrtb2.BidRequest) string {
233242
}
234243

235244
func ensurePublisher(p **openrtb2.Publisher) *openrtb2.Publisher {
236-
log.Println("ensurePublisher", p)
237245
if *p == nil {
238246
*p = &openrtb2.Publisher{}
239247
}
@@ -251,8 +259,6 @@ func updatePublisherExtension(targetExt *jsonutil.RawMessage, networkID, fieldPa
251259
pubExt = make(map[string]interface{})
252260
}
253261

254-
log.Println("updatePublisherExtension", pubExt)
255-
256262
params, ok := pubExt["params"].(map[string]interface{})
257263
if !ok {
258264
params = make(map[string]interface{})

adapters/sparteo/sparteo_test.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ package sparteo
33
import (
44
"bytes"
55
"encoding/json"
6+
"errors"
67
"testing"
78

89
"github.com/prebid/openrtb/v20/openrtb2"
910
"github.com/prebid/prebid-server/v3/adapters"
1011
"github.com/prebid/prebid-server/v3/adapters/adapterstest"
1112
"github.com/prebid/prebid-server/v3/config"
13+
"github.com/prebid/prebid-server/v3/errortypes"
1214
"github.com/prebid/prebid-server/v3/openrtb_ext"
1315
"github.com/stretchr/testify/assert"
1416
"github.com/stretchr/testify/require"
@@ -515,3 +517,99 @@ func TestMakeRequests_UpdatePublisherExtension_PrefersSiteOverApp(t *testing.T)
515517
assert.False(t, appOk, "app.publisher.ext should not contain networkId when site exists")
516518
}
517519
}
520+
521+
// TestMakeRequests_DomainMissing_WarnsAndUsesUnknown verifies that when no domain can be resolved the domain macro is replaced by unknown
522+
func TestMakeRequests_DomainMissing_WarnsAndUsesUnknown(t *testing.T) {
523+
endpoint := "https://bid-test.sparteo.com/s2s-auction?network_id={{.NetworkId}}&domain={{.Domain}}"
524+
525+
bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
526+
require.NoError(t, err)
527+
528+
in := &openrtb2.BidRequest{
529+
ID: "req-domain-missing",
530+
Imp: []openrtb2.Imp{
531+
{ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
532+
},
533+
}
534+
535+
reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
536+
537+
require.Len(t, reqs, 1)
538+
require.Len(t, errs, 1)
539+
540+
assert.Equal(t,
541+
"https://bid-test.sparteo.com/s2s-auction?network_id=networkID&domain=unknown",
542+
reqs[0].Uri,
543+
)
544+
545+
var badInput *errortypes.BadInput
546+
require.True(t, errors.As(errs[0], &badInput))
547+
assert.Contains(t, badInput.Error(), "Domain not found")
548+
}
549+
550+
// TestMakeRequests_AppBundle_WithMissingDomain_WarnsAndUsesUnknown verifies that when an app is present with a bundle but without a resolvable domain
551+
func TestMakeRequests_AppBundle_WithMissingDomain_WarnsAndUsesUnknown(t *testing.T) {
552+
endpoint := "https://bid-test.sparteo.com/s2s-auction?network_id={{.NetworkId}}&domain={{.Domain}}{{if .Bundle}}&bundle={{.Bundle}}{{end}}"
553+
554+
bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
555+
require.NoError(t, err)
556+
557+
in := &openrtb2.BidRequest{
558+
ID: "req-app-bundle-no-domain",
559+
Site: nil,
560+
App: &openrtb2.App{
561+
Domain: "",
562+
Bundle: "com.sparteo.app",
563+
Publisher: &openrtb2.Publisher{},
564+
},
565+
Imp: []openrtb2.Imp{
566+
{ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
567+
},
568+
}
569+
570+
reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
571+
572+
require.Len(t, reqs, 1)
573+
require.Len(t, errs, 1)
574+
575+
assert.Equal(t,
576+
"https://bid-test.sparteo.com/s2s-auction?network_id=networkID&domain=unknown&bundle=com.sparteo.app",
577+
reqs[0].Uri,
578+
)
579+
580+
var badInput *errortypes.BadInput
581+
require.True(t, errors.As(errs[0], &badInput))
582+
assert.Contains(t, badInput.Error(), "Domain not found")
583+
}
584+
585+
// TestMakeRequests_SitePageLiteralNull_TreatedAsMissingDomain verifies that a literal "null" value in site.page is treated as an unknown domain.
586+
func TestMakeRequests_SitePageLiteralNull_TreatedAsMissingDomain(t *testing.T) {
587+
endpoint := "https://bid-test.sparteo.com/s2s-auction?network_id={{.NetworkId}}&domain={{.Domain}}"
588+
589+
bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
590+
require.NoError(t, err)
591+
592+
in := &openrtb2.BidRequest{
593+
ID: "req-page-null",
594+
Site: &openrtb2.Site{
595+
Domain: "",
596+
Page: "null",
597+
},
598+
Imp: []openrtb2.Imp{
599+
{ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
600+
},
601+
}
602+
603+
reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
604+
605+
require.Len(t, reqs, 1)
606+
require.Len(t, errs, 1)
607+
assert.Equal(t,
608+
"https://bid-test.sparteo.com/s2s-auction?network_id=networkID&domain=unknown",
609+
reqs[0].Uri,
610+
)
611+
612+
var badInput *errortypes.BadInput
613+
require.True(t, errors.As(errs[0], &badInput))
614+
assert.Contains(t, badInput.Error(), "Domain not found")
615+
}

static/bidder-info/sparteo.yaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,12 @@ capabilities:
77
mediaTypes:
88
- banner
99
- video
10-
- native
1110
site:
1211
mediaTypes:
1312
- banner
1413
- video
15-
- native
16-
endpoint: "https://bid.sparteo.com/s2s-auction?network_id={{.NetworkId}}&domain={{.Domain}}{{if .Bundle}}&bundle={{.Bundle}}{{end}}"
14+
endpoint: "http://host.docker.internal:3006/s2s-auction?network_id={{.NetworkId}}&domain={{.Domain}}{{if .Bundle}}&bundle={{.Bundle}}{{end}}"
1715
userSync:
1816
iframe:
19-
url: "https://sync.sparteo.com/s2s_sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirect_url={{.RedirectURL}}"
20-
supportCors: true
17+
url: "https://localhost:8843/s2s_sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirect_url={{.RedirectURL}}"
18+
supportCors: true

0 commit comments

Comments
 (0)