Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove invalid user EIDs and UIDs from bid request #3891

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Pubmatic-Supriya-Patil
Copy link
Contributor

This PR solves issue #3859

@Pubmatic-Supriya-Patil
Copy link
Contributor Author

Hi @bsardo @bretg
Please review this PR and let me know if any changes are required.

@bsardo bsardo self-assigned this Oct 21, 2024
@@ -35,6 +35,8 @@ const (
InvalidBidResponseDSAWarningCode
SecCookieDeprecationLenWarningCode
SecBrowsingTopicsWarningCode
InvalidUserEIDsWarningCode
InvalidUserUIDsWarningCode
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do these new warning codes match with PBS-Java? We try to keep in sync.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please help me to get those error codes. Do we have any document or PR to check new warning codes match with PBS-Java.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As per prebid-server-java/pull/3465, I understand that the same 999 warning code is being used when removing eids arrays. In the Prebid Server Go repository, 999 corresponds to UnknownErrorCode in the error codes reference. Are we intending to use UnknownErrorCode here as well?

In this PR, I introduced InvalidUserEIDsWarningCode (10013) and InvalidUserUIDsWarningCode (10014). If we are okay with a generic error code, we could use UnknownErrorCode (999). However, please confirm whether we want separate error codes for InvalidUserEIDs and InvalidUserUIDs, or if using 999 would suffice.

Kindly provide your input on this.

@@ -1,42 +0,0 @@
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of removing these tests cases, please modify them to prove the new behavior.

@@ -1296,8 +1296,14 @@ func (deps *endpointDeps) validateUser(req *openrtb_ext.RequestWrapper, aliases
// Check Universal User ID
eids := userExt.GetEid()
if eids != nil {
eidsValue := *eids
for eidIndex, eid := range eidsValue {

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick; Please remove the leading empty line.


if len(eidErrors) > 0 {
errL = append(errL, eidErrors...)
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Likely fine to keep this logic here for now. We want to separate validation from fixing in the future. We can refactor this new logic along with the rest later. Thoughts @bsardo?

validEIDs = append(validEIDs, eid)
} else {
errorsList = append(errorsList, &errortypes.Warning{
Message: fmt.Sprintf("Removed EID with empty UIDs (source: %s)", eid.Source),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please keep with the established error message format. Perhaps something like:

request.user.ext.eids[0] (source: %s) contains only empty uids and is removed from the request

expectedErrorMessages []string
}{
{
name: "Valid EID with non-empty UID",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Go test names cannot contain spaces so they are replaced with a dash character. This makes it hard to locate the failing test based on its name. Recommend using simpler test names like:

  • one-eid-one-uid-valid
  • one-eid-one-uid-empty
  • many-mixed
  • one-eid-many-uid-empty

The parent test name is within scope so it's easy to locate in source. Please apply this guidance to other tests added in this PR.

t.Run(tc.name, func(t *testing.T) {
validEIDs, errorsList := validateEIDs(tc.input)

if len(validEIDs) != len(tc.expected) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use testify assert statements where possible. This can be written as follows which will compare the contents instead of just the array lengths, yielding more concrete tests.

assert.ElementsMatch(e, tc.expected, validEIDs)

expectedValidUIDs: nil,
expectedErrors: nil,
},
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a test case for a nil input.

@bsardo
Copy link
Collaborator

bsardo commented Nov 4, 2024

Hi @Pubmatic-Supriya-Patil, can you please merge with master (no rebase) and resolve conflicts? Thanks!

@SyntaxNode
Copy link
Contributor

Thank you for contributing this feature Please address the comments and we will re-review.

@Pubmatic-Supriya-Patil
Copy link
Contributor Author

Hi @Pubmatic-Supriya-Patil, can you please merge with master (no rebase) and resolve conflicts? Thanks!

HI @bsardo I have updated branch and addressed review comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants