Skip to content

Commit

Permalink
HadronId Module: implementing user consent in backend calls (prebid#1…
Browse files Browse the repository at this point in the history
…0845)

* Implementing user consent in HadronId module

* fixing tests accepting just the start of url
  • Loading branch information
jlaso authored Dec 18, 2023
1 parent a90d6c8 commit 5f8ff5f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 6 deletions.
34 changes: 30 additions & 4 deletions modules/hadronIdSystem.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@ import {ajax} from '../src/ajax.js';
import {getStorageManager} from '../src/storageManager.js';
import {submodule} from '../src/hook.js';
import {isFn, isStr, isPlainObject, logError, logInfo} from '../src/utils.js';
import { config } from '../src/config.js';
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
import { gdprDataHandler, uspDataHandler, gppDataHandler } from '../src/adapterManager.js';

const LOG_PREFIX = '[hadronIdSystem]';
const HADRONID_LOCAL_NAME = 'auHadronId';
const MODULE_NAME = 'hadronId';
const AU_GVLID = 561;
Expand Down Expand Up @@ -42,6 +45,8 @@ const urlAddParams = (url, params) => {
return url + (url.indexOf('?') > -1 ? '&' : '?') + params
}

const isDebug = config.getConfig('debug') || false;

/** @type {Submodule} */
export const hadronIdSubmodule = {
/**
Expand Down Expand Up @@ -88,7 +93,7 @@ export const hadronIdSubmodule = {
} catch (error) {
logError(error);
}
logInfo(`Response from backend is ${responseObj}`);
logInfo(LOG_PREFIX, `Response from backend is ${response}`, responseObj);
hadronId = responseObj['hadronId'];
storage.setDataInLocalStorage(HADRONID_LOCAL_NAME, hadronId);
responseObj = {id: {hadronId}};
Expand All @@ -100,13 +105,34 @@ export const hadronIdSubmodule = {
callback();
}
};
logInfo('HadronId not found in storage, calling backend...');
const url = urlAddParams(
let url = urlAddParams(
// config.params.url and config.params.urlArg are not documented
// since their use is for debugging purposes only
paramOrDefault(config.params.url, DEFAULT_HADRON_URL_ENDPOINT, config.params.urlArg),
`partner_id=${partnerId}&_it=prebid`
`partner_id=${partnerId}&_it=prebid&t=1&src=id` // src=id => the backend was called from getId
);
if (isDebug) {
url += '&debug=1'
}
const gdprConsent = gdprDataHandler.getConsentData()
if (gdprConsent) {
url += `${gdprConsent.consentString ? '&gdprString=' + encodeURIComponent(gdprConsent.consentString) : ''}`;
url += `&gdpr=${gdprConsent.gdprApplies === true ? 1 : 0}`;
}

const usPrivacyString = uspDataHandler.getConsentData();
if (usPrivacyString) {
url += `&us_privacy=${encodeURIComponent(usPrivacyString)}`;
}

const gppConsent = gppDataHandler.getConsentData();
if (gppConsent) {
url += `${gppConsent.gppString ? '&gpp=' + encodeURIComponent(gppConsent.gppString) : ''}`;
url += `${gppConsent.applicableSections ? '&gpp_sid=' + encodeURIComponent(gppConsent.applicableSections) : ''}`;
}

logInfo(LOG_PREFIX, `hadronId not found in storage, calling home (${url})`);

ajax(url, callbacks, undefined, {method: 'GET'});
};
return {callback: resp};
Expand Down
4 changes: 2 additions & 2 deletions test/spec/modules/hadronIdSystem_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ describe('HadronIdSystem', function () {
const callback = hadronIdSubmodule.getId(config).callback;
callback(callbackSpy);
const request = server.requests[0];
expect(request.url).to.eq(`https://id.hadron.ad.gt/api/v1/pbhid?partner_id=0&_it=prebid`);
expect(request.url).to.match(/^https:\/\/id\.hadron\.ad\.gt\/api\/v1\/pbhid/);
request.respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ hadronId: 'testHadronId1' }));
expect(callbackSpy.lastCall.lastArg).to.deep.equal({ id: { hadronId: 'testHadronId1' } });
});
Expand All @@ -47,7 +47,7 @@ describe('HadronIdSystem', function () {
const callback = hadronIdSubmodule.getId(config).callback;
callback(callbackSpy);
const request = server.requests[0];
expect(request.url).to.eq('https://hadronid.publync.com/?partner_id=0&_it=prebid');
expect(request.url).to.match(/^https:\/\/hadronid\.publync\.com\//);
request.respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ hadronId: 'testHadronId1' }));
expect(callbackSpy.lastCall.lastArg).to.deep.equal({ id: { hadronId: 'testHadronId1' } });
});
Expand Down

0 comments on commit 5f8ff5f

Please sign in to comment.