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

Rubicon Adapter - support User ID module #3531

Merged

Conversation

idettman
Copy link
Contributor

@idettman idettman commented Feb 7, 2019

Type of change

  • Other

Description of change

Adds support for the User ID module

Isaac Dettman and others added 30 commits December 10, 2018 11:52
…ow to handle both 'value' and 'storage' existing in config
… add test for one storage type active with only one module configured to use that type
…ook due to necessary use of prebid global object affecting following tests
…ows watching the first element added to add the bid request hook
…invalid config storage type, revised commenting
Copy link
Collaborator

@harpere harpere left a comment

Choose a reason for hiding this comment

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

LGTM

@stale
Copy link

stale bot commented Feb 21, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Feb 21, 2019
@stale stale bot closed this Feb 28, 2019
@idettman idettman reopened this Apr 4, 2019
@stale stale bot removed the stale label Apr 4, 2019
@idettman idettman removed the on hold label Apr 4, 2019
@idettman idettman self-assigned this Apr 4, 2019
@idettman idettman merged commit edbe587 into prebid:master Apr 4, 2019
jacekburys-quantcast pushed a commit to jacekburys-quantcast/Prebid.js that referenced this pull request May 15, 2019
* add initial files

* add local storage and cookie browser support functions

* added additional test cases for functions related to local storage and cookie browser support

* added validate config function and first unit test

* add validate config test

* updated local storage key value to match change to requirements/spec

* updated submodule config key names to match requirements/spec

* added TODO with validation logic breakdown as well as a question on how to handle both 'value' and 'storage' existing in config

* add TODO addressing use-case: Publisher has integrated with OpenID on their own

* fixed comment

* rearranged unit tests for config functions to be grouped correctly

* added logic to valid that a submodule contains a config with a value or storage obj

* removed sinon mock of config.getConfig, replaced with obj literal definition in function arguments

* additional use cases added to validateConfig tests

* refactored init function

* refactored to remove a function and reduce number of iterations of submodules and configs

* add logic to pass config value obj data to adapter, also a small amount of refactoring/formatting cleanup

* added configuration examples to markdown file

* add add request bid hook to the initSubmodules function

* added requestBidBook in preparation to test mock setup/configuration. add test for one storage type active with only one module configured to use that type

* refactored requestBidHook with dependency injection for unit testing

* had to revert revision to use dependency injection in the requestBidHook due to necessary use of prebid global object affecting following tests

* created initial file for integration example

* updated integration using brett's test page.

* updated extendedBidRequestData to be a function expression, which allows watching the first element added to add the bid request hook

* removed redundant constant for enabled submodules within init submodules

* added retrieve storage value and logic to call submodule.getId if stored value does not exist

* added submodule getId fallback when storage value does not exist

* extended addUnit bid requests with universalId data, add logging for invalid config storage type, revised commenting

* add logic to set storage and pass decoded data in getId response handler

* updated initModules unit test mock data to fix broken tests from previous module additions/updates

* updated comments for consistency

* fixed module description comment

* add overrideId interface and implementation to the pubCommonId submodule

* fix to only check for override method value if submodule has a configKey set in the config

* added unit test for submodule override method implementation

* completed the pubCommonId submodule getId implementation; changed pubCommonId submodule default expires value to today + 8 years

* changed openId submodule default expires value to today + 8 years; added final todo comments, pertaining to openId submodule decode and getId methods

* fixed formatting to correct linting errors during building

* update jsdoc comments for IdSubmodule

* added jsdoc comments for overrideId submodule interface method

* changed the overrideId return value conditional to require a valid object, added a todo note to investigate using separate instance callbacks to handle multiple timers for syncDelay/auctionDelay

* add ajax request to openId submodule getId, awaiting values for request params and response structure and format for storage and structure for adding to bid requests

* updated openId submodule getId error logging and callback handling

* fix obj path access for syncDelay, updated example file with pubCommonId configured

* fix for broken unit tests resulting from update of overrideId addition to submodule interface

* replace use of built-in array find method, with import of 'core-js/library/fn/array/find', fixes/updates for integration example for module

* refactored config handling in initSubmodules to accept a plain js object opposed to a prebid Config object (this simplifies testing setup)

* created init method to wrap initSubmodules with config

* refactored module's config to watch/handle changes

* removed overrideId submodule interface, change openId to unifiedId

* update getId and decode uid data structure also updated integration example

* updated object structure for universal ids that is added to bid request, add universalID object handling to rubiconBidAdapter

* updated markdown example configuration

* fix for syncDelay, added auction end listener before setting syncDelay timer

* update to prepare universalID object if adUnits exists

* add gdpr consent data to request bids hook, warn on not found, info if found

* add test for valid gdpr consent string, exits universal id module on fail

* update gdpr consent to check gdprApplies, add cmp code to integration example. update init to use dependency injection

* implemented test for gdpr consent to store locally (purpose #1)

* added consentString decode to check for purpose #1 (user consents to have data stored locally)

* fix initSubmodule function arguments for changed signature

* changed submodule getId method signature to pass a consentData argument

* tests update with dependency container

* update spec to un-comment disabled expect statement

* in-progress DI conversion

* update to fix test missing dependency for utils

* removed getIdCallbackHandler function because it was inlined within initSubmodules. refactored dependencyContainer argument names to dependencies

* add unit test case for configurations that define invalid storage.type values (only cookie or html5 are valid)

* fixes for html5 storage in module and unit tests. temp comment-out for gdpr test in requestBid hook as it's being refactored into getId submodule methods

* fixes for html5 storage in module and unit tests. temp comment-out for gdpr test in requestBid hook as it's being refactored into getId submodule methods

* added opt_out cookie logic to init

* in-progress commit to update getId method signature with initialized consentManagement data

* changed priority to consent management module's value + 1

* updated both submodule getId functions with consent data handling.

* update hasGDPRConsent to remove unnecessary test for consentData obj since it's tested outside of function, removed utils from dependency injection

* update to move local declarations outside if block, added local var for log prefix since it was accessed more than twice

* changed log prefix to build the string locally instead of passing through getIdData obj

* bug fix for request bid hook priority race condition

* removed consentData prop from init dependencies obj, updated jsdoc comments removing consentData prop

* removed consentData prop from init arguments

* update integration example to test gdpr cmpApi type of 'static'

* refactor to combine request bid hooks into single hook, also other opts and formatting changes

* additions/updates to logging, additions/updates to jsdoc comments, various refactoring and formatting updates

* fixed how GDPR purpose 1 permission is checked, removed decode function and read from consentData.vendorConsents.purposeConsents[1] (key value 1 is for "purpose 1")

* fix for hasGDPRConsent functions, changed object prop accessor name from 'consentData.vendorConsent' to 'consentData.vendorData'

* small changes to log messages and code formatting

* changed submodule property configKey to configName for consistency with the submodule config property name

* updated logging message text and small format change

* updated jsdoc comment to reduce line length

* formatting fix and jsdoc update

* reverted changes to support universal id in rubiconBidAdapter, will open a separate PR for the adapter code changes.

* added logging messages to catch statements

* fix unit tests using the document cookie

* fix to extra module name in log message

* changed function return type array to undefined on invalid config

* moved encodeURIComponenent and decodeURIComponenent into setCookie and getCookie

* refactor to resolve issues creating certain unit tests

* add tests for config variations, small fixes for issues found writing tests

* removed debug console.log statements

* removed set initializedSubmodules value in init

* fix to remove test cookie from spec, updated example with submodule config value object

* added tests checking that config submodule props create correct number of submodules

* added test for syncDelay config update

* fixes for LGTM and imports for src are now relative

* formatting fix semicolon

* test reverted to debug circleci failure

* changed request bids hook priority to load after consentManagement

* test to resolve circle ci errors

* test to resolve circle ci errors

* fixed name camel case error

* changed unifiedid decode test property name from pubcid to ttid

* added universal id support to bid adapter

* added unit test for universal id support in bid adapter

* optimized last unit test added

* add initial files

* add local storage and cookie browser support functions

* added additional test cases for functions related to local storage and cookie browser support

* added validate config function and first unit test

* add validate config test

* updated local storage key value to match change to requirements/spec

* updated submodule config key names to match requirements/spec

* added TODO with validation logic breakdown as well as a question on how to handle both 'value' and 'storage' existing in config

* add TODO addressing use-case: Publisher has integrated with OpenID on their own

* fixed comment

* rearranged unit tests for config functions to be grouped correctly

* added logic to valid that a submodule contains a config with a value or storage obj

* removed sinon mock of config.getConfig, replaced with obj literal definition in function arguments

* additional use cases added to validateConfig tests

* refactored init function

* refactored to remove a function and reduce number of iterations of submodules and configs

* add logic to pass config value obj data to adapter, also a small amount of refactoring/formatting cleanup

* added configuration examples to markdown file

* add add request bid hook to the initSubmodules function

* added requestBidBook in preparation to test mock setup/configuration. add test for one storage type active with only one module configured to use that type

* refactored requestBidHook with dependency injection for unit testing

* had to revert revision to use dependency injection in the requestBidHook due to necessary use of prebid global object affecting following tests

* created initial file for integration example

* updated integration using brett's test page.

* updated extendedBidRequestData to be a function expression, which allows watching the first element added to add the bid request hook

* removed redundant constant for enabled submodules within init submodules

* added retrieve storage value and logic to call submodule.getId if stored value does not exist

* added submodule getId fallback when storage value does not exist

* extended addUnit bid requests with universalId data, add logging for invalid config storage type, revised commenting

* add logic to set storage and pass decoded data in getId response handler

* updated initModules unit test mock data to fix broken tests from previous module additions/updates

* updated comments for consistency

* fixed module description comment

* add overrideId interface and implementation to the pubCommonId submodule

* fix to only check for override method value if submodule has a configKey set in the config

* added unit test for submodule override method implementation

* completed the pubCommonId submodule getId implementation; changed pubCommonId submodule default expires value to today + 8 years

* changed openId submodule default expires value to today + 8 years; added final todo comments, pertaining to openId submodule decode and getId methods

* fixed formatting to correct linting errors during building

* update jsdoc comments for IdSubmodule

* added jsdoc comments for overrideId submodule interface method

* changed the overrideId return value conditional to require a valid object, added a todo note to investigate using separate instance callbacks to handle multiple timers for syncDelay/auctionDelay

* add ajax request to openId submodule getId, awaiting values for request params and response structure and format for storage and structure for adding to bid requests

* updated openId submodule getId error logging and callback handling

* fix obj path access for syncDelay, updated example file with pubCommonId configured

* fix for broken unit tests resulting from update of overrideId addition to submodule interface

* replace use of built-in array find method, with import of 'core-js/library/fn/array/find', fixes/updates for integration example for module

* refactored config handling in initSubmodules to accept a plain js object opposed to a prebid Config object (this simplifies testing setup)

* created init method to wrap initSubmodules with config

* refactored module's config to watch/handle changes

* removed overrideId submodule interface, change openId to unifiedId

* update getId and decode uid data structure also updated integration example

* updated object structure for universal ids that is added to bid request, add universalID object handling to rubiconBidAdapter

* updated markdown example configuration

* fix for syncDelay, added auction end listener before setting syncDelay timer

* update to prepare universalID object if adUnits exists

* add gdpr consent data to request bids hook, warn on not found, info if found

* add test for valid gdpr consent string, exits universal id module on fail

* update gdpr consent to check gdprApplies, add cmp code to integration example. update init to use dependency injection

* implemented test for gdpr consent to store locally (purpose #1)

* added consentString decode to check for purpose #1 (user consents to have data stored locally)

* fix initSubmodule function arguments for changed signature

* changed submodule getId method signature to pass a consentData argument

* tests update with dependency container

* update spec to un-comment disabled expect statement

* in-progress DI conversion

* update to fix test missing dependency for utils

* removed getIdCallbackHandler function because it was inlined within initSubmodules. refactored dependencyContainer argument names to dependencies

* add unit test case for configurations that define invalid storage.type values (only cookie or html5 are valid)

* fixes for html5 storage in module and unit tests. temp comment-out for gdpr test in requestBid hook as it's being refactored into getId submodule methods

* fixes for html5 storage in module and unit tests. temp comment-out for gdpr test in requestBid hook as it's being refactored into getId submodule methods

* added opt_out cookie logic to init

* in-progress commit to update getId method signature with initialized consentManagement data

* changed priority to consent management module's value + 1

* updated both submodule getId functions with consent data handling.

* update hasGDPRConsent to remove unnecessary test for consentData obj since it's tested outside of function, removed utils from dependency injection

* update to move local declarations outside if block, added local var for log prefix since it was accessed more than twice

* changed log prefix to build the string locally instead of passing through getIdData obj

* bug fix for request bid hook priority race condition

* removed consentData prop from init dependencies obj, updated jsdoc comments removing consentData prop

* removed consentData prop from init arguments

* update integration example to test gdpr cmpApi type of 'static'

* refactor to combine request bid hooks into single hook, also other opts and formatting changes

* additions/updates to logging, additions/updates to jsdoc comments, various refactoring and formatting updates

* fixed how GDPR purpose 1 permission is checked, removed decode function and read from consentData.vendorConsents.purposeConsents[1] (key value 1 is for "purpose 1")

* fix for hasGDPRConsent functions, changed object prop accessor name from 'consentData.vendorConsent' to 'consentData.vendorData'

* small changes to log messages and code formatting

* changed submodule property configKey to configName for consistency with the submodule config property name

* updated logging message text and small format change

* updated jsdoc comment to reduce line length

* formatting fix and jsdoc update

* reverted changes to support universal id in rubiconBidAdapter, will open a separate PR for the adapter code changes.

* added logging messages to catch statements

* fix unit tests using the document cookie

* fix to extra module name in log message

* changed function return type array to undefined on invalid config

* moved encodeURIComponenent and decodeURIComponenent into setCookie and getCookie

* refactor to resolve issues creating certain unit tests

* add tests for config variations, small fixes for issues found writing tests

* removed debug console.log statements

* removed set initializedSubmodules value in init

* fix to remove test cookie from spec, updated example with submodule config value object

* added tests checking that config submodule props create correct number of submodules

* added test for syncDelay config update

* fixes for LGTM and imports for src are now relative

* formatting fix semicolon

* test reverted to debug circleci failure

* changed request bids hook priority to load after consentManagement

* test to resolve circle ci errors

* test to resolve circle ci errors

* fixed name camel case error

* changed unifiedid decode test property name from pubcid to ttid

* added universal id support to bid adapter

* added unit test for universal id support in bid adapter

* optimized last unit test added

* renamed universalID to userId

* removed file from universal id branch
@idettman idettman deleted the rubicon-adapter-universal-id-support branch June 5, 2019 23:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants