-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Yieldlab Adapter: add support for iab content #7413
Changes from all commits
196a5c1
92e4e45
4511d11
7e8d095
7de5c83
1ab66cc
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
import { config } from 'src/config.js'; | ||
import { expect } from 'chai' | ||
import { spec } from 'modules/yieldlabBidAdapter.js' | ||
import { newBidder } from 'src/adapters/bidderFactory.js' | ||
|
@@ -16,7 +17,22 @@ const REQUEST = { | |
'extraParam': true, | ||
'foo': 'bar' | ||
}, | ||
'extId': 'abc' | ||
'extId': 'abc', | ||
'iabContent': { | ||
'id': 'foo_id', | ||
'episode': '99', | ||
'title': 'foo_title,bar_title', | ||
'series': 'foo_series', | ||
'season': 's1', | ||
'artist': 'foo bar', | ||
'genre': 'baz', | ||
'isrc': 'CC-XXX-YY-NNNNN', | ||
'url': 'http://foo_url.de', | ||
'cat': ['cat1', 'cat2,ppp', 'cat3|||//'], | ||
'context': '7', | ||
'keywords': ['k1,', 'k2..'], | ||
'live': '0' | ||
} | ||
}, | ||
'bidderRequestId': '143346cf0f1731', | ||
'auctionId': '2e41f65424c87c', | ||
|
@@ -86,6 +102,10 @@ const REQPARAMS_GDPR = Object.assign({}, REQPARAMS, { | |
consent: 'BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA' | ||
}) | ||
|
||
const REQPARAMS_IAB_CONTENT = Object.assign({}, REQPARAMS, { | ||
iab_content: 'id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0' | ||
}) | ||
|
||
describe('yieldlabBidAdapter', function () { | ||
const adapter = newBidder(spec) | ||
|
||
|
@@ -139,6 +159,40 @@ describe('yieldlabBidAdapter', function () { | |
expect(request.url).to.include('schain=1.0,1!indirectseller.com,1,1,,,,!indirectseller2.com,2,1,,indirectseller2%20name%20with%20comma%20%2C%20and%20bang%20%21,,') | ||
}) | ||
|
||
it('passes iab_content string to bid request', function () { | ||
expect(request.url).to.include('iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0') | ||
}) | ||
|
||
const siteConfig = { | ||
'ortb2': { | ||
'site': { | ||
'content': { | ||
'id': 'id_from_config' | ||
} | ||
} | ||
} | ||
} | ||
|
||
it('generates iab_content string from bidder params', function () { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Minor, we can add a test to verify There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. hi, there's a test for this case There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks |
||
config.setConfig(siteConfig); | ||
const request = spec.buildRequests([REQUEST]) | ||
expect(request.url).to.include('iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0') | ||
config.resetConfig(); | ||
}) | ||
|
||
it('generates iab_content string from first party data if not provided in bidder params', function () { | ||
const requestWithoutIabContent = { | ||
'params': { | ||
'adslotId': '1111', | ||
'supplyId': '2222' | ||
} | ||
} | ||
config.setConfig(siteConfig); | ||
const request = spec.buildRequests([requestWithoutIabContent]) | ||
expect(request.url).to.include('iab_content=id%3Aid_from_config') | ||
config.resetConfig(); | ||
}) | ||
|
||
const refererRequest = spec.buildRequests(bidRequests, { | ||
refererInfo: { | ||
canonicalUrl: undefined, | ||
|
@@ -203,6 +257,11 @@ describe('yieldlabBidAdapter', function () { | |
expect(result[0].ad).to.include('&consent=BN5lERiOMYEdiAKAWXEND1AAAAE6DABACMA') | ||
}) | ||
|
||
it('should append iab_content to adtag', function () { | ||
const result = spec.interpretResponse({body: [RESPONSE]}, {validBidRequests: [REQUEST], queryParams: REQPARAMS_IAB_CONTENT}) | ||
expect(result[0].ad).to.include('&iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0') | ||
}) | ||
|
||
it('should get correct bid response when passing more than one size', function () { | ||
const REQUEST2 = Object.assign({}, REQUEST, { | ||
'sizes': [ | ||
|
@@ -268,5 +327,10 @@ describe('yieldlabBidAdapter', function () { | |
expect(result[0].ad).to.include('&pvid=43513f11-55a0-4a83-94e5-0ebc08f54a2c') | ||
expect(result[0].vastUrl).to.include('&pvid=43513f11-55a0-4a83-94e5-0ebc08f54a2c') | ||
}) | ||
|
||
it('should append iab_content to vastUrl', function () { | ||
const result = spec.interpretResponse({body: [VIDEO_RESPONSE]}, {validBidRequests: [VIDEO_REQUEST], queryParams: REQPARAMS_IAB_CONTENT}) | ||
expect(result[0].vastUrl).to.include('&iab_content=id%3Afoo_id%2Cepisode%3A99%2Ctitle%3Afoo_title%252Cbar_title%2Cseries%3Afoo_series%2Cseason%3As1%2Cartist%3Afoo%2520bar%2Cgenre%3Abaz%2Cisrc%3ACC-XXX-YY-NNNNN%2Curl%3Ahttp%253A%252F%252Ffoo_url.de%2Ccat%3Acat1%7Ccat2%252Cppp%7Ccat3%257C%257C%257C%252F%252F%2Ccontext%3A7%2Ckeywords%3Ak1%252C%7Ck2..%2Clive%3A0') | ||
}) | ||
}) | ||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor, seems the
ad
andvastUrl
are almost the same, we might here://
const url =
${ENDPOINT}/d/${matchedBid.id}/${bidRequest.params.supplyId}/?ts=${timestamp}${extId}${gdprApplies}${gdprConsent}${pvId}${iabContent}
//
ad:
<script src="${url}"></script>
,//
bidResponse.vastUrl = url