prebid.js 7.18.0 → 7.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adWMGAnalyticsAdapter.js +1 -1
  4. package/dist/adagioAnalyticsAdapter.js +1 -1
  5. package/dist/adagioBidAdapter.js +1 -1
  6. package/dist/adbookpspBidAdapter.js +1 -1
  7. package/dist/adfBidAdapter.js +1 -1
  8. package/dist/adgenerationBidAdapter.js +1 -1
  9. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  10. package/dist/adkernelBidAdapter.js +1 -1
  11. package/dist/adlooxAdServerVideo.js +1 -1
  12. package/dist/adlooxAnalyticsAdapter.js +1 -1
  13. package/dist/adlooxRtdProvider.js +1 -1
  14. package/dist/adomikAnalyticsAdapter.js +1 -1
  15. package/dist/adqueryIdSystem.js +1 -1
  16. package/dist/adrelevantisBidAdapter.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -1
  18. package/dist/adxcgAnalyticsAdapter.js +1 -1
  19. package/dist/adxcgBidAdapter.js +1 -1
  20. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  21. package/dist/ajaBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/aolBidAdapter.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/atsAnalyticsAdapter.js +1 -1
  29. package/dist/axonixBidAdapter.js +1 -1
  30. package/dist/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +1 -1
  31. package/dist/bidViewability.js +1 -1
  32. package/dist/bidglassBidAdapter.js +1 -1
  33. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  34. package/dist/big-richmediaBidAdapter.js +1 -1
  35. package/dist/bridgewellBidAdapter.js +1 -1
  36. package/dist/brightMountainMediaBidAdapter.js +1 -1
  37. package/dist/byDataAnalyticsAdapter.js +1 -1
  38. package/dist/carodaBidAdapter.js +1 -1
  39. package/dist/categoryTranslation.js +1 -1
  40. package/dist/cleanioRtdProvider.js +1 -1
  41. package/dist/colossussspBidAdapter.js +1 -1
  42. package/dist/concertAnalyticsAdapter.js +1 -1
  43. package/dist/concertBidAdapter.js +1 -1
  44. package/dist/connectIdSystem.js +1 -1
  45. package/dist/connectadBidAdapter.js +1 -1
  46. package/dist/consentManagement.js +1 -1
  47. package/dist/consentManagementUsp.js +1 -1
  48. package/dist/consumableBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -0
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/currency.js +1 -1
  54. package/dist/datablocksAnalyticsAdapter.js +1 -1
  55. package/dist/dchain.js +1 -1
  56. package/dist/debugging-standalone.js +1 -1
  57. package/dist/debugging.js +1 -1
  58. package/dist/dependencies.json +9 -0
  59. package/dist/dfpAdServerVideo.js +1 -1
  60. package/dist/dgkeywordRtdProvider.js +1 -1
  61. package/dist/dianomiBidAdapter.js +1 -1
  62. package/dist/dspxBidAdapter.js +1 -1
  63. package/dist/enrichmentFpdModule.js +1 -1
  64. package/dist/eplanningAnalyticsAdapter.js +1 -1
  65. package/dist/eplanningBidAdapter.js +1 -1
  66. package/dist/finativeBidAdapter.js +1 -1
  67. package/dist/fintezaAnalyticsAdapter.js +1 -1
  68. package/dist/fpd.js +1 -0
  69. package/dist/ftrackIdSystem.js +1 -1
  70. package/dist/gdprEnforcement.js +1 -1
  71. package/dist/glimpseBidAdapter.js +1 -1
  72. package/dist/gmosspBidAdapter.js +1 -1
  73. package/dist/goldbachBidAdapter.js +1 -1
  74. package/dist/googleAnalyticsAdapter.js +1 -1
  75. package/dist/gridBidAdapter.js +1 -1
  76. package/dist/gridNMBidAdapter.js +1 -1
  77. package/dist/gumgumBidAdapter.js +1 -1
  78. package/dist/h12mediaBidAdapter.js +1 -1
  79. package/dist/hadronAnalyticsAdapter.js +1 -1
  80. package/dist/id5AnalyticsAdapter.js +1 -1
  81. package/dist/id5IdSystem.js +1 -1
  82. package/dist/improvedigitalBidAdapter.js +1 -1
  83. package/dist/inmarBidAdapter.js +1 -1
  84. package/dist/insticatorBidAdapter.js +1 -1
  85. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  86. package/dist/ixBidAdapter.js +1 -1
  87. package/dist/justpremiumBidAdapter.js +1 -1
  88. package/dist/kargoAnalyticsAdapter.js +1 -1
  89. package/dist/kinessoIdSystem.js +1 -1
  90. package/dist/konduitAnalyticsAdapter.js +1 -1
  91. package/dist/kueezBidAdapter.js +1 -1
  92. package/dist/lassoBidAdapter.js +1 -1
  93. package/dist/lifestreetBidAdapter.js +1 -1
  94. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  95. package/dist/liveIntentIdSystem.js +1 -1
  96. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  97. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  98. package/dist/logicadBidAdapter.js +1 -1
  99. package/dist/loglyliftBidAdapter.js +1 -1
  100. package/dist/lotamePanoramaIdSystem.js +1 -1
  101. package/dist/magniteAnalyticsAdapter.js +1 -0
  102. package/dist/malltvAnalyticsAdapter.js +1 -1
  103. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  104. package/dist/marsmediaBidAdapter.js +1 -1
  105. package/dist/mass.js +1 -1
  106. package/dist/mediafuseBidAdapter.js +1 -1
  107. package/dist/mediakeysBidAdapter.js +1 -1
  108. package/dist/medianetAnalyticsAdapter.js +1 -1
  109. package/dist/mediasquareBidAdapter.js +1 -1
  110. package/dist/mgidBidAdapter.js +1 -1
  111. package/dist/minutemediaBidAdapter.js +1 -1
  112. package/dist/multibid.js +1 -1
  113. package/dist/nativoBidAdapter.js +1 -1
  114. package/dist/not-for-prod/prebid.js +198 -194
  115. package/dist/oguryBidAdapter.js +1 -1
  116. package/dist/onetagBidAdapter.js +1 -1
  117. package/dist/ooloAnalyticsAdapter.js +1 -1
  118. package/dist/openxAnalyticsAdapter.js +1 -1
  119. package/dist/optimonAnalyticsAdapter.js +1 -1
  120. package/dist/outbrainBidAdapter.js +1 -1
  121. package/dist/parrableIdSystem.js +1 -1
  122. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  123. package/dist/pixfutureBidAdapter.js +1 -1
  124. package/dist/prebid-core.js +2 -2
  125. package/dist/prebidServerBidAdapter.js +1 -1
  126. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  127. package/dist/priceFloors.js +1 -1
  128. package/dist/publinkIdSystem.js +1 -1
  129. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  130. package/dist/pubmaticBidAdapter.js +1 -1
  131. package/dist/pubperfAnalyticsAdapter.js +1 -1
  132. package/dist/pubstackAnalyticsAdapter.js +1 -1
  133. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  134. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  135. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  136. package/dist/pxyzBidAdapter.js +1 -1
  137. package/dist/quantcastBidAdapter.js +1 -1
  138. package/dist/quantcastIdSystem.js +1 -1
  139. package/dist/readpeakBidAdapter.js +1 -1
  140. package/dist/realvuAnalyticsAdapter.js +1 -1
  141. package/dist/relaidoBidAdapter.js +1 -1
  142. package/dist/relevantAnalyticsAdapter.js +1 -1
  143. package/dist/rhythmoneBidAdapter.js +1 -1
  144. package/dist/riseBidAdapter.js +1 -1
  145. package/dist/rivrAnalyticsAdapter.js +1 -1
  146. package/dist/roxotAnalyticsAdapter.js +1 -1
  147. package/dist/rtdModule.js +1 -1
  148. package/dist/rubiconAnalyticsAdapter.js +1 -1
  149. package/dist/rubiconBidAdapter.js +1 -1
  150. package/dist/s2sTesting.js +1 -1
  151. package/dist/scaleableAnalyticsAdapter.js +1 -1
  152. package/dist/schain.js +1 -1
  153. package/dist/seedingAllianceBidAdapter.js +1 -1
  154. package/dist/seedtagBidAdapter.js +1 -1
  155. package/dist/sharedIdSystem.js +1 -1
  156. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  157. package/dist/sharethroughBidAdapter.js +1 -1
  158. package/dist/shinezBidAdapter.js +1 -1
  159. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  160. package/dist/smaatoBidAdapter.js +1 -1
  161. package/dist/smartadserverBidAdapter.js +1 -1
  162. package/dist/smartxBidAdapter.js +1 -1
  163. package/dist/smilewantedBidAdapter.js +1 -1
  164. package/dist/sonobiAnalyticsAdapter.js +1 -1
  165. package/dist/sonobiBidAdapter.js +1 -1
  166. package/dist/sovrnAnalyticsAdapter.js +1 -1
  167. package/dist/sovrnBidAdapter.js +1 -1
  168. package/dist/sspBCBidAdapter.js +1 -1
  169. package/dist/staqAnalyticsAdapter.js +1 -1
  170. package/dist/sublimeBidAdapter.js +1 -1
  171. package/dist/synacormediaBidAdapter.js +1 -1
  172. package/dist/taboolaBidAdapter.js +1 -1
  173. package/dist/tapadIdSystem.js +1 -1
  174. package/dist/targetVideoBidAdapter.js +1 -1
  175. package/dist/teadsBidAdapter.js +1 -1
  176. package/dist/teadsIdSystem.js +1 -0
  177. package/dist/terceptAnalyticsAdapter.js +1 -1
  178. package/dist/trionBidAdapter.js +1 -1
  179. package/dist/tripleliftBidAdapter.js +1 -1
  180. package/dist/ttdBidAdapter.js +1 -1
  181. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  182. package/dist/underdogmediaBidAdapter.js +1 -1
  183. package/dist/undertoneBidAdapter.js +1 -1
  184. package/dist/userId.js +1 -1
  185. package/dist/vidazooBidAdapter.js +1 -1
  186. package/dist/videobyteBidAdapter.js +1 -1
  187. package/dist/visxBidAdapter.js +1 -1
  188. package/dist/vrtcalBidAdapter.js +1 -1
  189. package/dist/vuukleBidAdapter.js +1 -1
  190. package/dist/weboramaRtdProvider.js +1 -1
  191. package/dist/widespaceBidAdapter.js +1 -1
  192. package/dist/winrBidAdapter.js +1 -1
  193. package/dist/yahoosspBidAdapter.js +1 -1
  194. package/dist/yandexBidAdapter.js +1 -1
  195. package/dist/yieldmoBidAdapter.js +1 -1
  196. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  197. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  198. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  199. package/libraries/fpd/sua.js +98 -0
  200. package/modules/.submodules.json +1 -0
  201. package/modules/adfBidAdapter.js +1 -1
  202. package/modules/adkernelAdnBidAdapter.js +1 -0
  203. package/modules/adkernelBidAdapter.js +2 -2
  204. package/modules/adqueryIdSystem.js +8 -8
  205. package/modules/adxcgBidAdapter.js +1 -1
  206. package/modules/amxBidAdapter.js +1 -1
  207. package/modules/aolBidAdapter.js +25 -2
  208. package/modules/appnexusBidAdapter.js +19 -2
  209. package/modules/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +0 -0
  210. package/modules/{andBeyondMediaBidAdapter.md → beyondmediaBidAdapter.md} +1 -1
  211. package/modules/categoryTranslation.js +4 -4
  212. package/modules/cleanioRtdProvider.js +3 -4
  213. package/modules/colossussspBidAdapter.js +2 -1
  214. package/modules/connectIdSystem.js +16 -1
  215. package/modules/conversantAnalyticsAdapter.js +560 -0
  216. package/modules/conversantAnalyticsAdapter.md +47 -0
  217. package/modules/criteoBidAdapter.js +1 -1
  218. package/modules/currency.js +11 -11
  219. package/modules/dchain.js +2 -2
  220. package/modules/debugging/bidInterceptor.js +2 -2
  221. package/modules/debugging/debugging.js +10 -2
  222. package/modules/debugging/legacy.js +2 -2
  223. package/modules/dgkeywordRtdProvider.js +21 -3
  224. package/modules/dianomiBidAdapter.js +1 -1
  225. package/modules/enrichmentFpdModule.js +33 -14
  226. package/modules/eplanningBidAdapter.js +48 -2
  227. package/modules/finativeBidAdapter.js +1 -1
  228. package/modules/gridBidAdapter.js +187 -117
  229. package/modules/improvedigitalBidAdapter.js +2 -2
  230. package/modules/ixBidAdapter.js +94 -23
  231. package/modules/liveIntentIdSystem.js +39 -5
  232. package/modules/lotamePanoramaIdSystem.js +10 -6
  233. package/modules/magniteAnalyticsAdapter.js +902 -0
  234. package/modules/magniteAnalyticsAdapter.md +18 -0
  235. package/modules/mass.js +2 -2
  236. package/modules/mediakeysBidAdapter.js +6 -1
  237. package/modules/mediakeysBidAdapter.md +50 -40
  238. package/modules/multibid/index.js +5 -5
  239. package/modules/nativoBidAdapter.js +1 -1
  240. package/modules/pixfutureBidAdapter.js +46 -15
  241. package/modules/prebidServerBidAdapter/index.js +54 -19
  242. package/modules/priceFloors.js +8 -22
  243. package/modules/readpeakBidAdapter.js +1 -1
  244. package/modules/rubiconAnalyticsAdapter.js +14 -9
  245. package/modules/rubiconBidAdapter.js +2 -3
  246. package/modules/seedingAllianceBidAdapter.js +1 -1
  247. package/modules/sharethroughBidAdapter.js +1 -1
  248. package/modules/taboolaBidAdapter.js +5 -5
  249. package/modules/talkadsBidAdapter.js +1 -0
  250. package/modules/teadsIdSystem.js +234 -0
  251. package/modules/teadsIdSystem.md +22 -0
  252. package/modules/truereachBidAdapter.js +1 -0
  253. package/modules/ttdBidAdapter.js +1 -1
  254. package/modules/userId/index.js +21 -14
  255. package/modules/vrtcalBidAdapter.js +7 -1
  256. package/modules/vuukleBidAdapter.js +34 -3
  257. package/modules/yahoosspBidAdapter.js +4 -2
  258. package/modules/yandexBidAdapter.js +31 -8
  259. package/package.json +2 -2
  260. package/src/adapterManager.js +2 -4
  261. package/src/adapters/bidderFactory.js +13 -11
  262. package/src/auction.js +140 -69
  263. package/src/constants.json +8 -0
  264. package/src/cpmBucketManager.js +22 -3
  265. package/src/native.js +1 -5
  266. package/src/prebid.js +5 -6
  267. package/src/targeting.js +31 -14
  268. package/test/fixtures/fixtures.js +2 -1
  269. package/test/spec/auctionmanager_spec.js +109 -21
  270. package/test/spec/cpmBucketManager_spec.js +239 -177
  271. package/test/spec/fpd/sua_spec.js +244 -0
  272. package/test/spec/modules/adfBidAdapter_spec.js +2 -3
  273. package/test/spec/modules/adqueryIdSystem_spec.js +0 -2
  274. package/test/spec/modules/adxcgBidAdapter_spec.js +2 -3
  275. package/test/spec/modules/amxBidAdapter_spec.js +3 -2
  276. package/test/spec/modules/aolBidAdapter_spec.js +42 -9
  277. package/test/spec/modules/appnexusBidAdapter_spec.js +24 -0
  278. package/test/spec/modules/{andBeyondMediaBidAdapter_spec.js → beyondmediaBidAdapter_spec.js} +1 -1
  279. package/test/spec/modules/colossussspBidAdapter_spec.js +4 -2
  280. package/test/spec/modules/connectIdSystem_spec.js +20 -0
  281. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +963 -0
  282. package/test/spec/modules/currency_spec.js +14 -6
  283. package/test/spec/modules/debugging_mod_spec.js +9 -0
  284. package/test/spec/modules/dgkeywordRtdProvider_spec.js +83 -1
  285. package/test/spec/modules/dianomiBidAdapter_spec.js +2 -3
  286. package/test/spec/modules/enrichmentFpdModule_spec.js +50 -7
  287. package/test/spec/modules/eplanningBidAdapter_spec.js +285 -1
  288. package/test/spec/modules/fpdModule_spec.js +9 -0
  289. package/test/spec/modules/gridBidAdapter_spec.js +87 -31
  290. package/test/spec/modules/ixBidAdapter_spec.js +221 -2
  291. package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +62 -8
  292. package/test/spec/modules/liveIntentIdSystem_spec.js +62 -8
  293. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +0 -1
  294. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +1942 -0
  295. package/test/spec/modules/mediakeysBidAdapter_spec.js +20 -3
  296. package/test/spec/modules/nativoBidAdapter_spec.js +13 -2
  297. package/test/spec/modules/prebidServerBidAdapter_spec.js +202 -15
  298. package/test/spec/modules/priceFloors_spec.js +5 -5
  299. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +2 -3
  300. package/test/spec/modules/seedtagBidAdapter_spec.js +15 -18
  301. package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
  302. package/test/spec/modules/taboolaBidAdapter_spec.js +112 -13
  303. package/test/spec/modules/teadsIdSystem_spec.js +271 -0
  304. package/test/spec/modules/ttdBidAdapter_spec.js +3 -3
  305. package/test/spec/modules/userId_spec.js +39 -4
  306. package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -1
  307. package/test/spec/modules/vuukleBidAdapter_spec.js +87 -0
  308. package/test/spec/modules/yahoosspBidAdapter_spec.js +48 -1
  309. package/test/spec/modules/yandexBidAdapter_spec.js +8 -5
  310. package/test/spec/native_spec.js +5 -0
  311. package/test/spec/unit/core/bidderFactory_spec.js +66 -11
  312. package/test/spec/unit/core/targeting_spec.js +28 -9
  313. package/test/spec/unit/pbjs_api_spec.js +48 -2
@@ -1,4 +1,4 @@
1
- import { newBidder, registerBidder, preloadBidderMappingFile, storage } from 'src/adapters/bidderFactory.js';
1
+ import {newBidder, registerBidder, preloadBidderMappingFile, storage, isValid} from 'src/adapters/bidderFactory.js';
2
2
  import adapterManager from 'src/adapterManager.js';
3
3
  import * as ajax from 'src/ajax.js';
4
4
  import { expect } from 'chai';
@@ -62,6 +62,7 @@ describe('bidders created by newBidder', function () {
62
62
  };
63
63
 
64
64
  addBidResponseStub = sinon.stub();
65
+ addBidResponseStub.reject = sinon.stub();
65
66
  doneStub = sinon.stub();
66
67
  });
67
68
 
@@ -508,7 +509,7 @@ describe('bidders created by newBidder', function () {
508
509
  expect(userSyncStub.firstCall.args[2]).to.equal('usersync.com');
509
510
  });
510
511
 
511
- it('should logError when required bid response params are missing', function () {
512
+ it('should logError and reject bid when required bid response params are missing', function () {
512
513
  const bidder = newBidder(spec);
513
514
 
514
515
  const bid = {
@@ -532,9 +533,10 @@ describe('bidders created by newBidder', function () {
532
533
  bidder.callBids(MOCK_BIDS_REQUEST, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
533
534
 
534
535
  expect(logErrorSpy.calledOnce).to.equal(true);
536
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
535
537
  });
536
538
 
537
- it('should logError when required bid response params are undefined', function () {
539
+ it('should logError and reject bid when required response params are undefined', function () {
538
540
  const bidder = newBidder(spec);
539
541
 
540
542
  const bid = {
@@ -562,6 +564,7 @@ describe('bidders created by newBidder', function () {
562
564
  bidder.callBids(MOCK_BIDS_REQUEST, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
563
565
 
564
566
  expect(logErrorSpy.calledOnce).to.equal(true);
567
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
565
568
  });
566
569
 
567
570
  it('should require requestId from interpretResponse', () => {
@@ -586,6 +589,7 @@ describe('bidders created by newBidder', function () {
586
589
  bidder.callBids(MOCK_BIDS_REQUEST, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
587
590
 
588
591
  expect(addBidResponseStub.called).to.be.false;
592
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
589
593
  });
590
594
  });
591
595
 
@@ -856,6 +860,7 @@ describe('validate bid response: ', function () {
856
860
  });
857
861
 
858
862
  addBidResponseStub = sinon.stub();
863
+ addBidResponseStub.reject = sinon.stub();
859
864
  doneStub = sinon.stub();
860
865
  ajaxStub = sinon.stub(ajax, 'ajax').callsFake(function(url, callbacks) {
861
866
  const fakeResponse = sinon.stub();
@@ -954,7 +959,8 @@ describe('validate bid response: ', function () {
954
959
  spec.interpretResponse.returns(bids1);
955
960
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
956
961
 
957
- expect(addBidResponseStub.calledOnce).to.equal(false);
962
+ expect(addBidResponseStub.called).to.equal(false);
963
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
958
964
  expect(logErrorSpy.calledWithMatch('Ignoring bid: Native bid missing some required properties.')).to.equal(true);
959
965
  });
960
966
  }
@@ -1074,7 +1080,8 @@ describe('validate bid response: ', function () {
1074
1080
  spec.interpretResponse.returns(bids1);
1075
1081
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
1076
1082
 
1077
- expect(addBidResponseStub.calledOnce).to.equal(false);
1083
+ expect(addBidResponseStub.called).to.equal(false);
1084
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
1078
1085
  expect(logWarnSpy.callCount).to.equal(1);
1079
1086
  });
1080
1087
 
@@ -1085,7 +1092,8 @@ describe('validate bid response: ', function () {
1085
1092
  spec.interpretResponse.returns(bids1);
1086
1093
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
1087
1094
 
1088
- expect(addBidResponseStub.calledOnce).to.equal(false);
1095
+ expect(addBidResponseStub.called).to.equal(false);
1096
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
1089
1097
  });
1090
1098
 
1091
1099
  it('should log warning when the particular bidder is not specified in allowedAlternateBidderCodes and allowAlternateBidderCodes flag is true', function () {
@@ -1096,7 +1104,8 @@ describe('validate bid response: ', function () {
1096
1104
  spec.interpretResponse.returns(bids1);
1097
1105
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
1098
1106
 
1099
- expect(addBidResponseStub.calledOnce).to.equal(false);
1107
+ expect(addBidResponseStub.called).to.equal(false);
1108
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
1100
1109
  expect(logWarnSpy.callCount).to.equal(1);
1101
1110
  });
1102
1111
 
@@ -1147,7 +1156,8 @@ describe('validate bid response: ', function () {
1147
1156
  spec.interpretResponse.returns(bids1);
1148
1157
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
1149
1158
 
1150
- expect(addBidResponseStub.calledOnce).to.equal(false);
1159
+ expect(addBidResponseStub.called).to.equal(false);
1160
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
1151
1161
  expect(logWarnSpy.callCount).to.equal(1);
1152
1162
  });
1153
1163
 
@@ -1159,7 +1169,7 @@ describe('validate bid response: ', function () {
1159
1169
  spec.interpretResponse.returns(bids1);
1160
1170
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
1161
1171
 
1162
- expect(addBidResponseStub.calledOnce).to.equal(true);
1172
+ expect(addBidResponseStub.called).to.equal(true);
1163
1173
  expect(logWarnSpy.callCount).to.equal(0);
1164
1174
  expect(logErrorSpy.callCount).to.equal(0);
1165
1175
  });
@@ -1172,8 +1182,9 @@ describe('validate bid response: ', function () {
1172
1182
  spec.interpretResponse.returns(bids1);
1173
1183
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
1174
1184
 
1175
- expect(addBidResponseStub.calledOnce).to.equal(false);
1185
+ expect(addBidResponseStub.called).to.equal(false);
1176
1186
  expect(logWarnSpy.callCount).to.equal(1);
1187
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
1177
1188
  });
1178
1189
 
1179
1190
  it('should not accept the bid, when bidderSetting is missing for the bidder. It should fallback to standard setting and reject the bid', function () {
@@ -1183,7 +1194,8 @@ describe('validate bid response: ', function () {
1183
1194
  spec.interpretResponse.returns(bids1);
1184
1195
  bidder.callBids(bidRequest, addBidResponseStub, doneStub, ajaxStub, onTimelyResponseStub, wrappedCallback);
1185
1196
 
1186
- expect(addBidResponseStub.calledOnce).to.equal(false);
1197
+ expect(addBidResponseStub.called).to.equal(false);
1198
+ expect(addBidResponseStub.reject.calledOnce).to.be.true;
1187
1199
  expect(logWarnSpy.callCount).to.equal(1);
1188
1200
  });
1189
1201
  });
@@ -1385,3 +1397,46 @@ describe('preload mapping url hook', function() {
1385
1397
  clock.restore();
1386
1398
  });
1387
1399
  });
1400
+
1401
+ describe('bid response isValid', () => {
1402
+ describe('size check', () => {
1403
+ let req, index;
1404
+
1405
+ beforeEach(() => {
1406
+ req = {
1407
+ ...MOCK_BIDS_REQUEST.bids[0],
1408
+ mediaTypes: {
1409
+ banner: {
1410
+ sizes: [[1, 2], [3, 4]]
1411
+ }
1412
+ }
1413
+ }
1414
+ });
1415
+
1416
+ function mkResponse(width, height) {
1417
+ return {
1418
+ requestId: req.bidId,
1419
+ width,
1420
+ height,
1421
+ cpm: 1,
1422
+ ttl: 60,
1423
+ creativeId: '123',
1424
+ netRevenue: true,
1425
+ currency: 'USD',
1426
+ mediaType: 'banner',
1427
+ }
1428
+ }
1429
+
1430
+ function checkValid(bid) {
1431
+ return isValid('au', bid, {index: stubAuctionIndex({bidRequests: [req]})});
1432
+ }
1433
+
1434
+ it('should succeed when response has a size that was in request', () => {
1435
+ expect(checkValid(mkResponse(3, 4))).to.be.true;
1436
+ });
1437
+
1438
+ it('should fail when response has a size that was not in request', () => {
1439
+ expect(checkValid(mkResponse(10, 11))).to.be.false;
1440
+ });
1441
+ })
1442
+ });
@@ -6,8 +6,14 @@ import CONSTANTS from 'src/constants.json';
6
6
  import { auctionManager } from 'src/auctionManager.js';
7
7
  import * as utils from 'src/utils.js';
8
8
  import {deepClone} from 'src/utils.js';
9
+ import {createBid} from '../../../../src/bidfactory.js';
10
+ import {hook} from '../../../../src/hook.js';
9
11
 
10
- const bid1 = {
12
+ function mkBid(bid, status = CONSTANTS.STATUS.GOOD) {
13
+ return Object.assign(createBid(status), bid);
14
+ }
15
+
16
+ const sampleBid = {
11
17
  'bidderCode': 'rubicon',
12
18
  'width': '300',
13
19
  'height': '250',
@@ -39,7 +45,9 @@ const bid1 = {
39
45
  'ttl': 300
40
46
  };
41
47
 
42
- const bid2 = {
48
+ const bid1 = mkBid(sampleBid);
49
+
50
+ const bid2 = mkBid({
43
51
  'bidderCode': 'rubicon',
44
52
  'width': '300',
45
53
  'height': '250',
@@ -67,9 +75,9 @@ const bid2 = {
67
75
  'netRevenue': true,
68
76
  'currency': 'USD',
69
77
  'ttl': 300
70
- };
78
+ });
71
79
 
72
- const bid3 = {
80
+ const bid3 = mkBid({
73
81
  'bidderCode': 'rubicon',
74
82
  'width': '300',
75
83
  'height': '600',
@@ -97,9 +105,9 @@ const bid3 = {
97
105
  'netRevenue': true,
98
106
  'currency': 'USD',
99
107
  'ttl': 300
100
- };
108
+ });
101
109
 
102
- const nativeBid1 = {
110
+ const nativeBid1 = mkBid({
103
111
  'bidderCode': 'appnexus',
104
112
  'width': 0,
105
113
  'height': 0,
@@ -165,8 +173,9 @@ const nativeBid1 = {
165
173
  [CONSTANTS.NATIVE_KEYS.image]: 'http://vcdn.adnxs.com/p/creative-image/94/22/cd/0f/9422cd0f-f400-45d3-80f5-2b92629d9257.jpg',
166
174
  [CONSTANTS.NATIVE_KEYS.icon]: 'http://vcdn.adnxs.com/p/creative-image/bd/59/a6/c6/bd59a6c6-0851-411d-a16d-031475a51312.png'
167
175
  }
168
- };
169
- const nativeBid2 = {
176
+ });
177
+
178
+ const nativeBid2 = mkBid({
170
179
  'bidderCode': 'dgads',
171
180
  'width': 0,
172
181
  'height': 0,
@@ -222,7 +231,7 @@ const nativeBid2 = {
222
231
  [CONSTANTS.NATIVE_KEYS.sponsoredBy]: 'test.com',
223
232
  [CONSTANTS.NATIVE_KEYS.clickUrl]: 'http://prebid.org/'
224
233
  }
225
- };
234
+ });
226
235
 
227
236
  describe('targeting tests', function () {
228
237
  let sandbox;
@@ -231,6 +240,10 @@ describe('targeting tests', function () {
231
240
  let bidCacheFilterFunction;
232
241
  let undef;
233
242
 
243
+ before(() => {
244
+ hook.ready();
245
+ });
246
+
234
247
  beforeEach(function() {
235
248
  sandbox = sinon.sandbox.create();
236
249
 
@@ -287,6 +300,12 @@ describe('targeting tests', function () {
287
300
  bidExpiryStub.restore();
288
301
  });
289
302
 
303
+ it('should filter out NO_BID bids', () => {
304
+ bidsReceived = [mkBid(sampleBid, CONSTANTS.STATUS.NO_BID)];
305
+ const tg = targetingInstance.getAllTargeting();
306
+ expect(tg[bidsReceived[0].adUnitCode]).to.eql({});
307
+ });
308
+
290
309
  describe('when handling different adunit targeting value types', function () {
291
310
  const adUnitCode = '/123456/header-bid-tag-0';
292
311
  const adServerTargeting = {};
@@ -200,6 +200,7 @@ describe('Unit: Prebid Module', function () {
200
200
  hook.ready();
201
201
  $$PREBID_GLOBAL$$.requestBids.getHooks().remove();
202
202
  resetDebugging();
203
+ sinon.stub(filters, 'isActualBid').returns(true); // stub this out so that we can use vanilla objects as bids
203
204
  });
204
205
 
205
206
  beforeEach(function () {
@@ -216,6 +217,7 @@ describe('Unit: Prebid Module', function () {
216
217
 
217
218
  after(function() {
218
219
  auctionManager.clearAllAuctions();
220
+ filters.isActualBid.restore();
219
221
  });
220
222
 
221
223
  describe('and global adUnits', () => {
@@ -504,8 +506,8 @@ describe('Unit: Prebid Module', function () {
504
506
  'client_initiated_ad_counting': true,
505
507
  'rtb': {
506
508
  'banner': {
507
- 'width': 728,
508
- 'height': 90,
509
+ 'width': 300,
510
+ 'height': 250,
509
511
  'content': '<!-- Creative -->'
510
512
  },
511
513
  'trackers': [{
@@ -1841,6 +1843,50 @@ describe('Unit: Prebid Module', function () {
1841
1843
  .and.to.match(/[a-f0-9\-]{36}/i);
1842
1844
  });
1843
1845
 
1846
+ describe('transactionId', () => {
1847
+ let adUnit;
1848
+ beforeEach(() => {
1849
+ adUnit = {
1850
+ code: 'adUnit',
1851
+ mediaTypes: {
1852
+ banner: {
1853
+ sizes: [300, 250]
1854
+ }
1855
+ },
1856
+ bids: [
1857
+ {
1858
+ bidder: 'mock-bidder',
1859
+ }
1860
+ ]
1861
+ };
1862
+ });
1863
+ it('should be set to ortb2Imp.ext.tid, if specified', () => {
1864
+ $$PREBID_GLOBAL$$.requestBids({
1865
+ adUnits: [
1866
+ {...adUnit, ortb2Imp: {ext: {tid: 'custom-tid'}}}
1867
+ ]
1868
+ });
1869
+ sinon.assert.match(auctionArgs.adUnits[0], {
1870
+ transactionId: 'custom-tid',
1871
+ ortb2Imp: {
1872
+ ext: {
1873
+ tid: 'custom-tid'
1874
+ }
1875
+ }
1876
+ })
1877
+ });
1878
+ it('should be copied to ortb2Imp.ext.tid, if not specified', () => {
1879
+ $$PREBID_GLOBAL$$.requestBids({
1880
+ adUnits: [
1881
+ adUnit
1882
+ ]
1883
+ });
1884
+ const tid = auctionArgs.adUnits[0].transactionId;
1885
+ expect(tid).to.exist;
1886
+ expect(auctionArgs.adUnits[0].ortb2Imp.ext.tid).to.eql(tid);
1887
+ });
1888
+ });
1889
+
1844
1890
  it('should always set ortb2.ext.tid same as transactionId in adUnits', function () {
1845
1891
  $$PREBID_GLOBAL$$.requestBids({
1846
1892
  adUnits: [