diff --git a/adservertargeting/respdataprocessor_test.go b/adservertargeting/respdataprocessor_test.go index 15e015cc0e7..3490233d15a 100644 --- a/adservertargeting/respdataprocessor_test.go +++ b/adservertargeting/respdataprocessor_test.go @@ -6,6 +6,8 @@ import ( "github.com/prebid/openrtb/v17/openrtb3" "github.com/prebid/prebid-server/openrtb_ext" "github.com/stretchr/testify/assert" + "reflect" + "strings" "testing" ) @@ -559,3 +561,30 @@ func TestGetRespData(t *testing.T) { } } + +func TestResponseObjectStructure(t *testing.T) { + // in case BidResponse format will change in next versions this test will show the error + // current implementation is up to date with OpenRTB 2.5 and OpenRTB 2.6 formats + fieldsToCheck := map[string]reflect.Kind{ + "id": reflect.String, + "bidid": reflect.String, + "cur": reflect.String, + "customdata": reflect.String, + "nbr": reflect.Pointer, + } + + tt := reflect.TypeOf(openrtb2.BidResponse{}) + fields := reflect.VisibleFields(tt) + + for fieldName, fieldType := range fieldsToCheck { + fieldFound := false + for _, field := range fields { + if fieldName == strings.ToLower(field.Name) { + fieldFound = true + assert.Equal(t, fieldType, field.Type.Kind(), "incorrect type for field: %s", fieldName) + break + } + } + assert.True(t, fieldFound, "field %s is not found in bidResponse object", fieldName) + } +}