Skip to content

Commit

Permalink
Added unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
VeronikaSolovei9 committed Sep 14, 2023
1 parent b85dc81 commit 330af18
Show file tree
Hide file tree
Showing 2 changed files with 308 additions and 37 deletions.
1 change: 0 additions & 1 deletion privacy/scrubber.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ func ScrubTID(reqWrapper *openrtb_ext.RequestWrapper) {
reqWrapper.Source.TID = ""
}
impWrapper := reqWrapper.GetImp()
//do we need to copy imps?
for ind, imp := range impWrapper {
impExt := scrubExtIDs(imp.Ext, "tid")
impWrapper[ind].Ext = impExt
Expand Down
344 changes: 308 additions & 36 deletions privacy/scrubber_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,317 @@ import (
"testing"

"github.com/prebid/openrtb/v19/openrtb2"
"github.com/prebid/prebid-server/openrtb_ext"
"github.com/stretchr/testify/assert"
)

func TestScrubDeviceIDs(t *testing.T) {
testCases := []struct {
name string
deviceIn *openrtb2.Device
expectedDevice *openrtb2.Device
}{
{
name: "all",
deviceIn: &openrtb2.Device{DIDMD5: "MD5", DIDSHA1: "SHA1", DPIDMD5: "MD5", DPIDSHA1: "SHA1", IFA: "IFA", MACMD5: "MD5", MACSHA1: "SHA1"},
expectedDevice: &openrtb2.Device{DIDMD5: "", DIDSHA1: "", DPIDMD5: "", DPIDSHA1: "", IFA: "", MACMD5: "", MACSHA1: ""},
},
{
name: "nil",
deviceIn: nil,
expectedDevice: nil,
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{Device: test.deviceIn}}
ScrubDeviceIDs(brw)
brw.RebuildRequest()
assert.Equal(t, test.expectedDevice, brw.Device)
})
}
}

func TestScrubUserIDs(t *testing.T) {
testCases := []struct {
name string
userIn *openrtb2.User
expectedUser *openrtb2.User
}{
{
name: "all",
userIn: &openrtb2.User{Data: []openrtb2.Data{}, ID: "ID", BuyerUID: "bID", Yob: 2000, Gender: "M", Keywords: "keywords", KwArray: nil},
expectedUser: &openrtb2.User{Data: nil, ID: "", BuyerUID: "", Yob: 0, Gender: "", Keywords: "", KwArray: nil},
},
{
name: "nil",
userIn: nil,
expectedUser: nil,
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{User: test.userIn}}
ScrubUserIDs(brw)
brw.RebuildRequest()
assert.Equal(t, test.expectedUser, brw.User)
})
}
}

func TestScrubUserDemographics(t *testing.T) {
testCases := []struct {
name string
userIn *openrtb2.User
expectedUser *openrtb2.User
}{
{
name: "all",
userIn: &openrtb2.User{ID: "ID", BuyerUID: "bID", Yob: 2000, Gender: "M"},
expectedUser: &openrtb2.User{ID: "", BuyerUID: "", Yob: 0, Gender: ""},
},
{
name: "nil",
userIn: nil,
expectedUser: nil,
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{User: test.userIn}}
ScrubUserDemographics(brw)
brw.RebuildRequest()
assert.Equal(t, test.expectedUser, brw.User)
})
}
}

func TestScrubUserExt(t *testing.T) {
testCases := []struct {
name string
userIn *openrtb2.User
fieldName string
expectedUser *openrtb2.User
}{
{
name: "nil_ext",
userIn: &openrtb2.User{ID: "ID", Ext: nil},
expectedUser: &openrtb2.User{ID: "ID", Ext: nil},
},
{
name: "empty_ext",
userIn: &openrtb2.User{ID: "ID", Ext: json.RawMessage(`{}`)},
expectedUser: &openrtb2.User{ID: "ID", Ext: json.RawMessage(`{}`)},
},
{
name: "ext_with_field",
userIn: &openrtb2.User{ID: "ID", Ext: json.RawMessage(`{"data":"123","test":1}`)},
fieldName: "data",
expectedUser: &openrtb2.User{ID: "ID", Ext: json.RawMessage(`{"test":1}`)},
},
{
name: "ext_without_field",
userIn: &openrtb2.User{ID: "ID", Ext: json.RawMessage(`{"data":"123","test":1}`)},
fieldName: "noData",
expectedUser: &openrtb2.User{ID: "ID", Ext: json.RawMessage(`{"data":"123","test":1}`)},
},
{
name: "nil",
userIn: nil,
expectedUser: nil,
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{User: test.userIn}}
ScrubUserExt(brw, test.fieldName)
brw.RebuildRequest()
assert.Equal(t, test.expectedUser, brw.User)
})
}
}

func TestScrubEids(t *testing.T) {
testCases := []struct {
name string
userIn *openrtb2.User
expectedUser *openrtb2.User
}{
{
name: "eids",
userIn: &openrtb2.User{ID: "ID", EIDs: []openrtb2.EID{}},
expectedUser: &openrtb2.User{ID: "ID", EIDs: nil},
},
{
name: "nil_eids",
userIn: &openrtb2.User{ID: "ID", EIDs: nil},
expectedUser: &openrtb2.User{ID: "ID", EIDs: nil},
},
{
name: "nil",
userIn: nil,
expectedUser: nil,
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{User: test.userIn}}
ScrubEids(brw)
brw.RebuildRequest()
assert.Equal(t, test.expectedUser, brw.User)
})
}
}

func TestScrubTID(t *testing.T) {
testCases := []struct {
name string
sourceIn *openrtb2.Source
impIn []openrtb2.Imp
expectedSource *openrtb2.Source
expectedImp []openrtb2.Imp
}{
{
name: "nil",
sourceIn: nil,
expectedSource: nil,
},
{
name: "nil_imp_ext",
sourceIn: &openrtb2.Source{TID: "tid"},
impIn: []openrtb2.Imp{{ID: "impID", Ext: nil}},
expectedSource: &openrtb2.Source{TID: ""},
expectedImp: []openrtb2.Imp{{ID: "impID", Ext: nil}},
},
{
name: "empty_imp_ext",
sourceIn: &openrtb2.Source{TID: "tid"},
impIn: []openrtb2.Imp{{ID: "impID", Ext: json.RawMessage(`{}`)}},
expectedSource: &openrtb2.Source{TID: ""},
expectedImp: []openrtb2.Imp{{ID: "impID", Ext: json.RawMessage(`{}`)}},
},
{
name: "ext_with_tid",
sourceIn: &openrtb2.Source{TID: "tid"},
impIn: []openrtb2.Imp{{ID: "impID", Ext: json.RawMessage(`{"tid":"123","test":1}`)}},
expectedSource: &openrtb2.Source{TID: ""},
expectedImp: []openrtb2.Imp{{ID: "impID", Ext: json.RawMessage(`{"test":1}`)}},
},
{
name: "ext_without_tid",
sourceIn: &openrtb2.Source{TID: "tid"},
impIn: []openrtb2.Imp{{ID: "impID", Ext: json.RawMessage(`{"data":"123","test":1}`)}},
expectedSource: &openrtb2.Source{TID: ""},
expectedImp: []openrtb2.Imp{{ID: "impID", Ext: json.RawMessage(`{"data":"123","test":1}`)}},
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{Source: test.sourceIn, Imp: test.impIn}}
ScrubTID(brw)
brw.RebuildRequest()
assert.Equal(t, test.expectedSource, brw.Source)
assert.Equal(t, test.expectedImp, brw.Imp)
})
}
}

func TestScrubGEO(t *testing.T) {
testCases := []struct {
name string
userIn *openrtb2.User
expectedUser *openrtb2.User
deviceIn *openrtb2.Device
expectedDevice *openrtb2.Device
}{
{
name: "nil",
userIn: nil,
expectedUser: nil,
deviceIn: nil,
expectedDevice: nil,
},
{
name: "nil_user_geo",
userIn: &openrtb2.User{ID: "ID", Geo: nil},
expectedUser: &openrtb2.User{ID: "ID", Geo: nil},
deviceIn: &openrtb2.Device{Geo: &openrtb2.Geo{Lat: 123.123}},
expectedDevice: &openrtb2.Device{Geo: &openrtb2.Geo{Lat: 123.12}},
},
{
name: "with_device_geo",
userIn: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{Lat: 123.123}},
expectedUser: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{Lat: 123.12}},
deviceIn: &openrtb2.Device{},
expectedDevice: &openrtb2.Device{},
},
{
name: "with_geo",
userIn: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{Lat: 123.123}},
expectedUser: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{Lat: 123.12}},
deviceIn: &openrtb2.Device{Geo: &openrtb2.Geo{Lat: 123.123}},
expectedDevice: &openrtb2.Device{Geo: &openrtb2.Geo{Lat: 123.12}},
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{User: test.userIn, Device: test.deviceIn}}
ScrubGEO(brw)
brw.RebuildRequest()
assert.Equal(t, test.expectedUser, brw.User)
assert.Equal(t, test.expectedDevice, brw.Device)
})
}
}

func TestScrubGeoFull(t *testing.T) {
testCases := []struct {
name string
userIn *openrtb2.User
expectedUser *openrtb2.User
deviceIn *openrtb2.Device
expectedDevice *openrtb2.Device
}{
{
name: "nil",
userIn: nil,
expectedUser: nil,
deviceIn: nil,
expectedDevice: nil,
},
{
name: "nil_user_geo",
userIn: &openrtb2.User{ID: "ID", Geo: nil},
expectedUser: &openrtb2.User{ID: "ID", Geo: nil},
deviceIn: &openrtb2.Device{Geo: &openrtb2.Geo{Lat: 123.123}},
expectedDevice: &openrtb2.Device{Geo: &openrtb2.Geo{}},
},
{
name: "with_device_geo",
userIn: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{Lat: 123.123}},
expectedUser: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{}},
deviceIn: &openrtb2.Device{},
expectedDevice: &openrtb2.Device{},
},
{
name: "with_geo",
userIn: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{Lat: 123.123}},
expectedUser: &openrtb2.User{ID: "ID", Geo: &openrtb2.Geo{}},
deviceIn: &openrtb2.Device{Geo: &openrtb2.Geo{Lat: 123.123}},
expectedDevice: &openrtb2.Device{Geo: &openrtb2.Geo{}},
},
}
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
brw := &openrtb_ext.RequestWrapper{BidRequest: &openrtb2.BidRequest{User: test.userIn, Device: test.deviceIn}}
ScrubGeoFull(brw)
brw.RebuildRequest()
assert.Equal(t, test.expectedUser, brw.User)
assert.Equal(t, test.expectedDevice, brw.Device)
})
}
}

func TestScrubIP(t *testing.T) {
testCases := []struct {
IP string
Expand Down Expand Up @@ -63,42 +371,6 @@ func TestScrubIP(t *testing.T) {
bits: 128,
maskBits: 96,
},
{
IP: "2001:1db8:0000:0000:0000:ff00:0042:8329",
cleanedIP: "2001:1db8::ff00:42:0",
bits: 128,
maskBits: 112,
},
{
IP: "2001:1db8:0000:0000:0000:ff00:0042:0",
cleanedIP: "2001:1db8::ff00:42:0",
bits: 128,
maskBits: 112,
},
{
IP: "127.0.0.1",
cleanedIP: "127.0.0.0",
bits: 32,
maskBits: 24,
},
{
IP: "0.0.0.0",
cleanedIP: "0.0.0.0",
bits: 32,
maskBits: 24,
},
{
IP: "192.127.111.134",
cleanedIP: "192.127.111.0",
bits: 32,
maskBits: 24,
},
{
IP: "192.127.111.0",
cleanedIP: "192.127.111.0",
bits: 32,
maskBits: 24,
},
}
for _, test := range testCases {
t.Run(test.IP, func(t *testing.T) {
Expand Down

0 comments on commit 330af18

Please sign in to comment.