prebid.js 7.11.0 → 7.12.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 (170) hide show
  1. package/.github/workflows/issue_tracker.yml +1 -1
  2. package/dist/33acrossBidAdapter.js +1 -1
  3. package/dist/adagioBidAdapter.js +1 -1
  4. package/dist/adbookpspBidAdapter.js +1 -1
  5. package/dist/adgenerationBidAdapter.js +1 -1
  6. package/dist/adkernelBidAdapter.js +1 -1
  7. package/dist/adrelevantisBidAdapter.js +1 -1
  8. package/dist/adriverBidAdapter.js +1 -1
  9. package/dist/adriverIdSystem.js +1 -1
  10. package/dist/adtelligentBidAdapter.js +1 -1
  11. package/dist/adtrgtmeBidAdapter.js +1 -1
  12. package/dist/adxcgBidAdapter.js +1 -1
  13. package/dist/ajaBidAdapter.js +1 -1
  14. package/dist/alkimiBidAdapter.js +1 -1
  15. package/dist/amxBidAdapter.js +1 -1
  16. package/dist/amxIdSystem.js +1 -1
  17. package/dist/appierAnalyticsAdapter.js +1 -1
  18. package/dist/appnexusBidAdapter.js +1 -1
  19. package/dist/asoBidAdapter.js +1 -1
  20. package/dist/axonixBidAdapter.js +1 -1
  21. package/dist/betweenBidAdapter.js +1 -1
  22. package/dist/bidglassBidAdapter.js +1 -1
  23. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  24. package/dist/big-richmediaBidAdapter.js +1 -1
  25. package/dist/bridgewellBidAdapter.js +1 -1
  26. package/dist/brightMountainMediaBidAdapter.js +1 -1
  27. package/dist/concertBidAdapter.js +1 -1
  28. package/dist/connectadBidAdapter.js +1 -1
  29. package/dist/consumableBidAdapter.js +1 -1
  30. package/dist/conversantBidAdapter.js +1 -1
  31. package/dist/craftBidAdapter.js +1 -1
  32. package/dist/criteoBidAdapter.js +1 -1
  33. package/dist/dfpAdServerVideo.js +1 -1
  34. package/dist/dgkeywordRtdProvider.js +1 -1
  35. package/dist/displayioBidAdapter.js +1 -3
  36. package/dist/dspxBidAdapter.js +1 -1
  37. package/dist/eplanningBidAdapter.js +1 -1
  38. package/dist/finativeBidAdapter.js +1 -1
  39. package/dist/glimpseBidAdapter.js +1 -1
  40. package/dist/gmosspBidAdapter.js +1 -1
  41. package/dist/goldbachBidAdapter.js +1 -1
  42. package/dist/gridBidAdapter.js +1 -1
  43. package/dist/gridNMBidAdapter.js +1 -1
  44. package/dist/gumgumBidAdapter.js +1 -1
  45. package/dist/h12mediaBidAdapter.js +1 -1
  46. package/dist/id5IdSystem.js +1 -1
  47. package/dist/improvedigitalBidAdapter.js +1 -1
  48. package/dist/inmarBidAdapter.js +1 -1
  49. package/dist/insticatorBidAdapter.js +1 -1
  50. package/dist/ixBidAdapter.js +1 -1
  51. package/dist/justpremiumBidAdapter.js +1 -1
  52. package/dist/konduitAnalyticsAdapter.js +1 -1
  53. package/dist/kueezBidAdapter.js +1 -1
  54. package/dist/lassoBidAdapter.js +1 -1
  55. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  56. package/dist/logicadBidAdapter.js +1 -1
  57. package/dist/loglyliftBidAdapter.js +1 -1
  58. package/dist/malltvAnalyticsAdapter.js +1 -1
  59. package/dist/marsmediaBidAdapter.js +1 -1
  60. package/dist/mediafuseBidAdapter.js +1 -1
  61. package/dist/mediagoBidAdapter.js +1 -0
  62. package/dist/mediasquareBidAdapter.js +1 -1
  63. package/dist/mgidBidAdapter.js +1 -1
  64. package/dist/minutemediaBidAdapter.js +1 -1
  65. package/dist/nextMillenniumBidAdapter.js +1 -1
  66. package/dist/not-for-prod/prebid.js +120 -121
  67. package/dist/oguryBidAdapter.js +1 -1
  68. package/dist/onetagBidAdapter.js +1 -1
  69. package/dist/ooloAnalyticsAdapter.js +1 -1
  70. package/dist/outbrainBidAdapter.js +1 -1
  71. package/dist/parrableIdSystem.js +1 -1
  72. package/dist/pixfutureBidAdapter.js +1 -1
  73. package/dist/prebid-core.js +1 -1
  74. package/dist/publinkIdSystem.js +1 -1
  75. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  76. package/dist/pubmaticBidAdapter.js +1 -1
  77. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  78. package/dist/pxyzBidAdapter.js +1 -1
  79. package/dist/quantcastBidAdapter.js +1 -1
  80. package/dist/rasBidAdapter.js +1 -1
  81. package/dist/readpeakBidAdapter.js +1 -1
  82. package/dist/relaidoBidAdapter.js +1 -1
  83. package/dist/rhythmoneBidAdapter.js +1 -1
  84. package/dist/riseBidAdapter.js +1 -1
  85. package/dist/rubiconAnalyticsAdapter.js +1 -1
  86. package/dist/rubiconBidAdapter.js +1 -1
  87. package/dist/seedingAllianceBidAdapter.js +1 -1
  88. package/dist/seedtagBidAdapter.js +1 -1
  89. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  90. package/dist/sharethroughBidAdapter.js +1 -1
  91. package/dist/shinezBidAdapter.js +1 -1
  92. package/dist/smaatoBidAdapter.js +1 -1
  93. package/dist/smartadserverBidAdapter.js +1 -1
  94. package/dist/smartxBidAdapter.js +1 -1
  95. package/dist/smilewantedBidAdapter.js +1 -1
  96. package/dist/sonobiBidAdapter.js +1 -1
  97. package/dist/sovrnAnalyticsAdapter.js +1 -1
  98. package/dist/sovrnBidAdapter.js +1 -1
  99. package/dist/sspBCBidAdapter.js +1 -1
  100. package/dist/sublimeBidAdapter.js +1 -1
  101. package/dist/synacormediaBidAdapter.js +1 -1
  102. package/dist/tappxBidAdapter.js +1 -1
  103. package/dist/targetVideoBidAdapter.js +1 -1
  104. package/dist/teadsBidAdapter.js +1 -1
  105. package/dist/trionBidAdapter.js +1 -1
  106. package/dist/tripleliftBidAdapter.js +1 -1
  107. package/dist/ttdBidAdapter.js +1 -1
  108. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  109. package/dist/underdogmediaBidAdapter.js +1 -1
  110. package/dist/undertoneBidAdapter.js +1 -1
  111. package/dist/userId.js +1 -1
  112. package/dist/vidazooBidAdapter.js +1 -1
  113. package/dist/videobyteBidAdapter.js +1 -1
  114. package/dist/visxBidAdapter.js +1 -1
  115. package/dist/vuukleBidAdapter.js +1 -1
  116. package/dist/widespaceBidAdapter.js +1 -1
  117. package/dist/winrBidAdapter.js +1 -1
  118. package/dist/yahoosspBidAdapter.js +1 -1
  119. package/dist/yieldmoBidAdapter.js +1 -1
  120. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  121. package/modules/adkernelBidAdapter.js +28 -12
  122. package/modules/adriverBidAdapter.js +5 -12
  123. package/modules/adriverIdSystem.js +2 -1
  124. package/modules/adtelligentBidAdapter.js +2 -0
  125. package/modules/alkimiBidAdapter.js +2 -1
  126. package/modules/betweenBidAdapter.js +3 -3
  127. package/modules/bidwatchAnalyticsAdapter.js +112 -59
  128. package/modules/consumableBidAdapter.js +2 -2
  129. package/modules/criteoBidAdapter.js +19 -13
  130. package/modules/dgkeywordRtdProvider.js +9 -0
  131. package/modules/displayioBidAdapter.js +92 -97
  132. package/modules/id5IdSystem.js +160 -111
  133. package/modules/id5IdSystem.md +16 -14
  134. package/modules/improvedigitalBidAdapter.js +50 -28
  135. package/modules/ixBidAdapter.js +13 -306
  136. package/modules/mediagoBidAdapter.js +462 -0
  137. package/modules/mediagoBidAdapter.md +34 -0
  138. package/modules/nextMillenniumBidAdapter.js +25 -6
  139. package/modules/pubmaticAnalyticsAdapter.js +1 -1
  140. package/modules/rasBidAdapter.js +8 -0
  141. package/modules/rasBidAdapter.md +14 -13
  142. package/modules/sonobiBidAdapter.js +1 -0
  143. package/modules/tappxBidAdapter.js +9 -0
  144. package/package.json +1 -1
  145. package/src/adloader.js +2 -1
  146. package/src/adserver.js +0 -56
  147. package/src/auction.js +58 -15
  148. package/src/native.js +1 -0
  149. package/src/refererDetection.js +12 -1
  150. package/src/videoCache.js +8 -2
  151. package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
  152. package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
  153. package/test/spec/modules/adriverIdSystem_spec.js +3 -8
  154. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  155. package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
  156. package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
  157. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
  158. package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
  159. package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
  160. package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
  161. package/test/spec/modules/enrichmentFpdModule_spec.js +2 -1
  162. package/test/spec/modules/fpdModule_spec.js +2 -1
  163. package/test/spec/modules/id5IdSystem_spec.js +529 -172
  164. package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
  165. package/test/spec/modules/ixBidAdapter_spec.js +210 -104
  166. package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
  167. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
  168. package/test/spec/modules/rasBidAdapter_spec.js +2 -0
  169. package/test/spec/native_spec.js +144 -0
  170. package/test/spec/videoCache_spec.js +37 -7
@@ -1031,7 +1031,7 @@ describe('Improve Digital Adapter Tests', function () {
1031
1031
  width: 728,
1032
1032
  height: 90,
1033
1033
  ttl: 300,
1034
- ad: '<html><body style="margin:0%"><a href="https://na-ice.360yield.com/click/wIUgWAXQ-Teg9bFreqmjvvwpXD86tInZbesBQgOtGBHqZatmIY9C1mo-1kWRx32zN2mfOxtmyaaHpr.Qh5pspzJarrsm08TtkRSeTc2mnsRuQ2MKzCTvbospesMJR28YLZ.3g06DwS6c5XOJuesd0eODk7GCqtmJ18c6CTmdWDUdDxiknLAPHVXAfvlDH5AA9utF7TNNGjaxvyMpQD51.Dt5GFjcJLnwWnGSajoSr9JfomoGenbLkabLmzylSXd1p9xyrzTmWU39FvagEOZnMb2ixlc.JDxXA1ZnaR.e7ywkwiJnDtg1Om0EJAYOmUh0oTozbXeo26iwLLZxVxV0owOHY61zhHYyHcpBakqtelYPWZcmBJEXfl5KIekB2CiLQqxCi3TKdg5FztAQY0Tf3mTmiGZev0RkeiX5fnxS8jbWSD-cCgB51PNLn0X5EEkUPkOJh9JV713OOcyDhsgaFPezUcvuD7nNrxB71aWcH6MMfk1BFQ7kSVi9WHQvauaTxrWm//https%3A%2F%2Fazerion.com" target="_blank"><img style="border: 0;" border="0" width=728 height=90 src="https://creative.360yield.com/file/241121/728x90.jpg" alt=" "/></a><img src="https://na-ice.360yield.com/imp_pixel?ic=wIUgWDjQ.pQrjtYOEKs44M3pIqNnfojBPkSd3WRdHnRawHiRiER7A-0RowzsOtOLq7MWtEFnWsRXYZZmJcZPGft0cNSs8lNOVZnXWHLDv3Dyqo8VGI4737RieGIK0DrIjlVXzFmuYeXufriRfPHVGiV-hz6VIateQ6I7.xR5O.48..ZoEGfRpIJGzqeqz12cWnFUPhBScQ6sPLlb6B1RiTpNh170OhIVfX80N2g4jn-U.xJ262ND29bBvImQsJjz29o8mmGL3TfbzUHzr.ob-ozfP9.ZHh.B5tD-M5qG9rAlIU6Q7I-zchnhv1W5OzU5mfMYy9yMLKqBemQGJA1KaiZJV79lwnDki-6PIg1v09h86eJqXYHHsUobx4Np5lMT6-5UdHXZPpR8T08b4keLREQw-lpqKum92pwUCVAYPeFdmTeKk1gUKPcaWxN8QfaQeoLJfb.88n3-vp.-aBCkxlZwXjXSd55QV.uwi-bTtFwaZjGHpNkIBG3D19kNl.Yb55Rk" alt=" " style="display:none"/><improvedigital_ad_output_information tp_id="" buyer_id="0" rtb_advertiser="" campaign_id="123159" line_item_id="320896" creative_id="510265" crid="0" placement_id="22135702"></improvedigital_ad_output_information></body></html>',
1034
+ ad: '<html><body style="margin:0%"><script>window.__razr_config = {"prebid":{"bidRequest":{"bidder":"improvedigital","params":{"placementId":1053688,"keyValues":{"testKey":["testValue"]},"bidFloor":0.05,"bidFloorCur":"eUR","size":{"w":800,"h":600}},"adUnitCode":"div-gpt-ad-1499748733608-0","transactionId":"f183e871-fbed-45f0-a427-c8a63c4c01eb","bidId":"33e9500b21129f","bidderRequestId":"2772c1e566670b","auctionId":"192721e36a0239","mediaTypes":{"banner":{"sizes":[[300,250],[160,600]]}},"sizes":[[300,250],[160,600]]},"bid":{"requestId":"33e9500b21129f","cpm":1.9200543539802946,"creativeId":"510265","currency":"EUR","dealId":320896,"meta":{"advertiserDomains":[]},"netRevenue":false,"ttl":300,"mediaType":"banner","ad":"<html><body style=\\"margin:0%\\"><a href=\\"https://na-ice.360yield.com/click/wIUgWAXQ-Teg9bFreqmjvvwpXD86tInZbesBQgOtGBHqZatmIY9C1mo-1kWRx32zN2mfOxtmyaaHpr.Qh5pspzJarrsm08TtkRSeTc2mnsRuQ2MKzCTvbospesMJR28YLZ.3g06DwS6c5XOJuesd0eODk7GCqtmJ18c6CTmdWDUdDxiknLAPHVXAfvlDH5AA9utF7TNNGjaxvyMpQD51.Dt5GFjcJLnwWnGSajoSr9JfomoGenbLkabLmzylSXd1p9xyrzTmWU39FvagEOZnMb2ixlc.JDxXA1ZnaR.e7ywkwiJnDtg1Om0EJAYOmUh0oTozbXeo26iwLLZxVxV0owOHY61zhHYyHcpBakqtelYPWZcmBJEXfl5KIekB2CiLQqxCi3TKdg5FztAQY0Tf3mTmiGZev0RkeiX5fnxS8jbWSD-cCgB51PNLn0X5EEkUPkOJh9JV713OOcyDhsgaFPezUcvuD7nNrxB71aWcH6MMfk1BFQ7kSVi9WHQvauaTxrWm//https%3A%2F%2Fazerion.com\\" target=\\"_blank\\"><img style=\\"border: 0;\\" border=\\"0\\" width=728 height=90 src=\\"https://creative.360yield.com/file/241121/728x90.jpg\\" alt=\\" \\"/></a><img src=\\"https://na-ice.360yield.com/imp_pixel?ic=wIUgWDjQ.pQrjtYOEKs44M3pIqNnfojBPkSd3WRdHnRawHiRiER7A-0RowzsOtOLq7MWtEFnWsRXYZZmJcZPGft0cNSs8lNOVZnXWHLDv3Dyqo8VGI4737RieGIK0DrIjlVXzFmuYeXufriRfPHVGiV-hz6VIateQ6I7.xR5O.48..ZoEGfRpIJGzqeqz12cWnFUPhBScQ6sPLlb6B1RiTpNh170OhIVfX80N2g4jn-U.xJ262ND29bBvImQsJjz29o8mmGL3TfbzUHzr.ob-ozfP9.ZHh.B5tD-M5qG9rAlIU6Q7I-zchnhv1W5OzU5mfMYy9yMLKqBemQGJA1KaiZJV79lwnDki-6PIg1v09h86eJqXYHHsUobx4Np5lMT6-5UdHXZPpR8T08b4keLREQw-lpqKum92pwUCVAYPeFdmTeKk1gUKPcaWxN8QfaQeoLJfb.88n3-vp.-aBCkxlZwXjXSd55QV.uwi-bTtFwaZjGHpNkIBG3D19kNl.Yb55Rk\\" alt=\\" \\" style=\\"display:none\\"/><improvedigital_ad_output_information tp_id=\\"\\" buyer_id=\\"0\\" rtb_advertiser=\\"\\" campaign_id=\\"123159\\" line_item_id=\\"320896\\" creative_id=\\"510265\\" crid=\\"0\\" placement_id=\\"22135702\\"></improvedigital_ad_output_information></body></html>","width":728,"height":90}}};</script><a href="https://na-ice.360yield.com/click/wIUgWAXQ-Teg9bFreqmjvvwpXD86tInZbesBQgOtGBHqZatmIY9C1mo-1kWRx32zN2mfOxtmyaaHpr.Qh5pspzJarrsm08TtkRSeTc2mnsRuQ2MKzCTvbospesMJR28YLZ.3g06DwS6c5XOJuesd0eODk7GCqtmJ18c6CTmdWDUdDxiknLAPHVXAfvlDH5AA9utF7TNNGjaxvyMpQD51.Dt5GFjcJLnwWnGSajoSr9JfomoGenbLkabLmzylSXd1p9xyrzTmWU39FvagEOZnMb2ixlc.JDxXA1ZnaR.e7ywkwiJnDtg1Om0EJAYOmUh0oTozbXeo26iwLLZxVxV0owOHY61zhHYyHcpBakqtelYPWZcmBJEXfl5KIekB2CiLQqxCi3TKdg5FztAQY0Tf3mTmiGZev0RkeiX5fnxS8jbWSD-cCgB51PNLn0X5EEkUPkOJh9JV713OOcyDhsgaFPezUcvuD7nNrxB71aWcH6MMfk1BFQ7kSVi9WHQvauaTxrWm//https%3A%2F%2Fazerion.com" target="_blank"><img style="border: 0;" border="0" width=728 height=90 src="https://creative.360yield.com/file/241121/728x90.jpg" alt=" "/></a><img src="https://na-ice.360yield.com/imp_pixel?ic=wIUgWDjQ.pQrjtYOEKs44M3pIqNnfojBPkSd3WRdHnRawHiRiER7A-0RowzsOtOLq7MWtEFnWsRXYZZmJcZPGft0cNSs8lNOVZnXWHLDv3Dyqo8VGI4737RieGIK0DrIjlVXzFmuYeXufriRfPHVGiV-hz6VIateQ6I7.xR5O.48..ZoEGfRpIJGzqeqz12cWnFUPhBScQ6sPLlb6B1RiTpNh170OhIVfX80N2g4jn-U.xJ262ND29bBvImQsJjz29o8mmGL3TfbzUHzr.ob-ozfP9.ZHh.B5tD-M5qG9rAlIU6Q7I-zchnhv1W5OzU5mfMYy9yMLKqBemQGJA1KaiZJV79lwnDki-6PIg1v09h86eJqXYHHsUobx4Np5lMT6-5UdHXZPpR8T08b4keLREQw-lpqKum92pwUCVAYPeFdmTeKk1gUKPcaWxN8QfaQeoLJfb.88n3-vp.-aBCkxlZwXjXSd55QV.uwi-bTtFwaZjGHpNkIBG3D19kNl.Yb55Rk" alt=" " style="display:none"/><improvedigital_ad_output_information tp_id="" buyer_id="0" rtb_advertiser="" campaign_id="123159" line_item_id="320896" creative_id="510265" crid="0" placement_id="22135702"></improvedigital_ad_output_information></body></html>',
1035
1035
  creativeId: '510265',
1036
1036
  dealId: 320896,
1037
1037
  netRevenue: false,
@@ -1042,6 +1042,12 @@ describe('Improve Digital Adapter Tests', function () {
1042
1042
  }
1043
1043
  ];
1044
1044
 
1045
+ const multiFormatExpectedBid = [
1046
+ Object.assign({}, expectedBid[0], {
1047
+ ad: '<html><body style="margin:0%"><script>window.__razr_config = {"prebid":{"bidRequest":{"bidder":"improvedigital","params":{"placementId":1053688},"adUnitCode":"div-gpt-ad-1499748733608-0","transactionId":"f183e871-fbed-45f0-a427-c8a63c4c01eb","bidId":"33e9500b21129f","bidderRequestId":"2772c1e566670b","auctionId":"192721e36a0239","mediaTypes":{"banner":{"sizes":[[300,250],[160,600]]},"native":{},"video":{"context":"outstream","playerSize":[640,480]}},"sizes":[[300,250],[160,600]],"nativeParams":{"body":{"required":true}}},"bid":{"requestId":"33e9500b21129f","cpm":1.9200543539802946,"creativeId":"510265","currency":"EUR","dealId":320896,"meta":{"advertiserDomains":[]},"netRevenue":false,"ttl":300,"mediaType":"banner","ad":"<html><body style=\\"margin:0%\\"><a href=\\"https://na-ice.360yield.com/click/wIUgWAXQ-Teg9bFreqmjvvwpXD86tInZbesBQgOtGBHqZatmIY9C1mo-1kWRx32zN2mfOxtmyaaHpr.Qh5pspzJarrsm08TtkRSeTc2mnsRuQ2MKzCTvbospesMJR28YLZ.3g06DwS6c5XOJuesd0eODk7GCqtmJ18c6CTmdWDUdDxiknLAPHVXAfvlDH5AA9utF7TNNGjaxvyMpQD51.Dt5GFjcJLnwWnGSajoSr9JfomoGenbLkabLmzylSXd1p9xyrzTmWU39FvagEOZnMb2ixlc.JDxXA1ZnaR.e7ywkwiJnDtg1Om0EJAYOmUh0oTozbXeo26iwLLZxVxV0owOHY61zhHYyHcpBakqtelYPWZcmBJEXfl5KIekB2CiLQqxCi3TKdg5FztAQY0Tf3mTmiGZev0RkeiX5fnxS8jbWSD-cCgB51PNLn0X5EEkUPkOJh9JV713OOcyDhsgaFPezUcvuD7nNrxB71aWcH6MMfk1BFQ7kSVi9WHQvauaTxrWm//https%3A%2F%2Fazerion.com\\" target=\\"_blank\\"><img style=\\"border: 0;\\" border=\\"0\\" width=728 height=90 src=\\"https://creative.360yield.com/file/241121/728x90.jpg\\" alt=\\" \\"/></a><img src=\\"https://na-ice.360yield.com/imp_pixel?ic=wIUgWDjQ.pQrjtYOEKs44M3pIqNnfojBPkSd3WRdHnRawHiRiER7A-0RowzsOtOLq7MWtEFnWsRXYZZmJcZPGft0cNSs8lNOVZnXWHLDv3Dyqo8VGI4737RieGIK0DrIjlVXzFmuYeXufriRfPHVGiV-hz6VIateQ6I7.xR5O.48..ZoEGfRpIJGzqeqz12cWnFUPhBScQ6sPLlb6B1RiTpNh170OhIVfX80N2g4jn-U.xJ262ND29bBvImQsJjz29o8mmGL3TfbzUHzr.ob-ozfP9.ZHh.B5tD-M5qG9rAlIU6Q7I-zchnhv1W5OzU5mfMYy9yMLKqBemQGJA1KaiZJV79lwnDki-6PIg1v09h86eJqXYHHsUobx4Np5lMT6-5UdHXZPpR8T08b4keLREQw-lpqKum92pwUCVAYPeFdmTeKk1gUKPcaWxN8QfaQeoLJfb.88n3-vp.-aBCkxlZwXjXSd55QV.uwi-bTtFwaZjGHpNkIBG3D19kNl.Yb55Rk\\" alt=\\" \\" style=\\"display:none\\"/><improvedigital_ad_output_information tp_id=\\"\\" buyer_id=\\"0\\" rtb_advertiser=\\"\\" campaign_id=\\"123159\\" line_item_id=\\"320896\\" creative_id=\\"510265\\" crid=\\"0\\" placement_id=\\"22135702\\"></improvedigital_ad_output_information></body></html>","width":728,"height":90}}};</script><a href="https://na-ice.360yield.com/click/wIUgWAXQ-Teg9bFreqmjvvwpXD86tInZbesBQgOtGBHqZatmIY9C1mo-1kWRx32zN2mfOxtmyaaHpr.Qh5pspzJarrsm08TtkRSeTc2mnsRuQ2MKzCTvbospesMJR28YLZ.3g06DwS6c5XOJuesd0eODk7GCqtmJ18c6CTmdWDUdDxiknLAPHVXAfvlDH5AA9utF7TNNGjaxvyMpQD51.Dt5GFjcJLnwWnGSajoSr9JfomoGenbLkabLmzylSXd1p9xyrzTmWU39FvagEOZnMb2ixlc.JDxXA1ZnaR.e7ywkwiJnDtg1Om0EJAYOmUh0oTozbXeo26iwLLZxVxV0owOHY61zhHYyHcpBakqtelYPWZcmBJEXfl5KIekB2CiLQqxCi3TKdg5FztAQY0Tf3mTmiGZev0RkeiX5fnxS8jbWSD-cCgB51PNLn0X5EEkUPkOJh9JV713OOcyDhsgaFPezUcvuD7nNrxB71aWcH6MMfk1BFQ7kSVi9WHQvauaTxrWm//https%3A%2F%2Fazerion.com" target="_blank"><img style="border: 0;" border="0" width=728 height=90 src="https://creative.360yield.com/file/241121/728x90.jpg" alt=" "/></a><img src="https://na-ice.360yield.com/imp_pixel?ic=wIUgWDjQ.pQrjtYOEKs44M3pIqNnfojBPkSd3WRdHnRawHiRiER7A-0RowzsOtOLq7MWtEFnWsRXYZZmJcZPGft0cNSs8lNOVZnXWHLDv3Dyqo8VGI4737RieGIK0DrIjlVXzFmuYeXufriRfPHVGiV-hz6VIateQ6I7.xR5O.48..ZoEGfRpIJGzqeqz12cWnFUPhBScQ6sPLlb6B1RiTpNh170OhIVfX80N2g4jn-U.xJ262ND29bBvImQsJjz29o8mmGL3TfbzUHzr.ob-ozfP9.ZHh.B5tD-M5qG9rAlIU6Q7I-zchnhv1W5OzU5mfMYy9yMLKqBemQGJA1KaiZJV79lwnDki-6PIg1v09h86eJqXYHHsUobx4Np5lMT6-5UdHXZPpR8T08b4keLREQw-lpqKum92pwUCVAYPeFdmTeKk1gUKPcaWxN8QfaQeoLJfb.88n3-vp.-aBCkxlZwXjXSd55QV.uwi-bTtFwaZjGHpNkIBG3D19kNl.Yb55Rk" alt=" " style="display:none"/><improvedigital_ad_output_information tp_id="" buyer_id="0" rtb_advertiser="" campaign_id="123159" line_item_id="320896" creative_id="510265" crid="0" placement_id="22135702"></improvedigital_ad_output_information></body></html>'
1048
+ })
1049
+ ];
1050
+
1045
1051
  const expectedTwoBids = [
1046
1052
  expectedBid[0],
1047
1053
  {
@@ -1051,7 +1057,7 @@ describe('Improve Digital Adapter Tests', function () {
1051
1057
  width: 300,
1052
1058
  height: 250,
1053
1059
  ttl: 300,
1054
- ad: '<html><body style="margin:0%"><a href="https://na-ice.360yield.com/click/.2RC3VhfEsdhtcsRiT8bWksMTmBbkfnj1AaD3C6Bht.Bp85KK5vjzZvJMpigI4ECdhllWuzbk2UhQt8VEGq1tg8m1OEot7Gs94PplWYs2ESdXpGAPFHiqdbZstOOhfiWL4D.k6lXfgNmbRhpL.SktYeEAiRaOZHQAX.22IEQ0swRnEdNyjHXYEkNIgpvMLqkZTv.JYM.iW9NwyJLIqk4Djh8X301iRLxexGBTl7-.n93WbkSCVY6uwdXSzoQrtK1r3fTrS34rdgpqFt6ZIBLKWI2ByLM2.aQqfvev5BCMOeyEKY8CcSg9SoDiPyQsvcz9bTckLtqs3AD3Qu8I.2rGn1NID7ljgg6-dERrorPK9A5XK67Pv34UqUe2xILQ6wvi52dX4p5d3yxsI9BMfnxzkn7MullVJdn-NiSB2rTe2MFozJc5G1nEwtpsMwZpBxl00PCcMsyETtaKbhqa3Gq5nCuce4AEhL6109IrZscUUzBMSKLSX16HlFfmPZ.gDnWCI3lO35UbGdL7lKjbT9mHYQ-//http%3A%2F%2Fblah.com" target="_blank"><img style="border: 0;" border="0" width=300 height=250 src="https://creative.360yield.com/file/238052/test_ads-300x250.jpg" alt=" "/></a><img src="https://na-ice.360yield.com/imp_pixel?ic=.2RC3VqxeCtOU3G5i6Wejh69dm5JnKlRXeieMtJA63nfGMyuFoWTTjSU5PfHLg2PtnmDRFgHJgGE19QyjAGj6ZQVy0iUk-HF-.zsAlx.7Fx3m5fPE7RIYw.kjy-BvuprFqfU-qlm03KTks6zVLDSIspuxemNQ1HBhq6QZSm9qqAVY-1XS-KbImfb.fll3VvhJXy7Ru.KstgDfAJwt5vYxVab6efvjAIhOrrv6uXaywFVTtu9-gK5pKgIkdixxuYE2jLUyEh9GiRyRCH0jhhUVUmSfrjE4OuTq-7TmCYXQQ5Vk9AqOV.JybF8d35IeyAbF2aywwdZA2SGGEGeYIoOy.7D8TpuVqXxvnUyeKXlCfmzXcJs27W2sKGUTfpWc-TyhAOHKzwqrxP-QN5D1QRCXFWgAm.rwUBguE-oL1Q7NOaCsaRwINRwvQrastWNFUDEYzrB32NL-wIkILdh9e96JwhKiwGwJ1VqH.6RDDutUi9CLreYQl348exTfqL44Ia5VTLn7e0rA6s9V1tg55V7TX36" alt=" " style="display:none"/><improvedigital_ad_output_information tp_id="" buyer_id="0" rtb_advertiser="" campaign_id="123159" line_item_id="320896" creative_id="479163" crid="0" placement_id="22135702"></improvedigital_ad_output_information></body></html>',
1060
+ ad: '<html><body style="margin:0%"><script>window.__razr_config = {"prebid":{"bidRequest":{"bidder":"improvedigital","params":{"placementId":1053688,"keyValues":{"testKey":["testValue"]},"bidFloor":0.05,"bidFloorCur":"eUR","size":{"w":800,"h":600}},"adUnitCode":"div-gpt-ad-1499748733608-0","transactionId":"f183e871-fbed-45f0-a427-c8a63c4c01eb","bidId":"33e9500b21129f","bidderRequestId":"2772c1e566670b","auctionId":"192721e36a0239","mediaTypes":{"banner":{"sizes":[[300,250],[160,600]]}},"sizes":[[300,250],[160,600]]},"bid":{"requestId":"33e9500b21129f","cpm":1.9200543539802946,"creativeId":"479163","currency":"EUR","dealId":320896,"meta":{"advertiserDomains":[]},"netRevenue":false,"ttl":300,"mediaType":"banner","ad":"<html><body style=\\"margin:0%\\"><a href=\\"https://na-ice.360yield.com/click/.2RC3VhfEsdhtcsRiT8bWksMTmBbkfnj1AaD3C6Bht.Bp85KK5vjzZvJMpigI4ECdhllWuzbk2UhQt8VEGq1tg8m1OEot7Gs94PplWYs2ESdXpGAPFHiqdbZstOOhfiWL4D.k6lXfgNmbRhpL.SktYeEAiRaOZHQAX.22IEQ0swRnEdNyjHXYEkNIgpvMLqkZTv.JYM.iW9NwyJLIqk4Djh8X301iRLxexGBTl7-.n93WbkSCVY6uwdXSzoQrtK1r3fTrS34rdgpqFt6ZIBLKWI2ByLM2.aQqfvev5BCMOeyEKY8CcSg9SoDiPyQsvcz9bTckLtqs3AD3Qu8I.2rGn1NID7ljgg6-dERrorPK9A5XK67Pv34UqUe2xILQ6wvi52dX4p5d3yxsI9BMfnxzkn7MullVJdn-NiSB2rTe2MFozJc5G1nEwtpsMwZpBxl00PCcMsyETtaKbhqa3Gq5nCuce4AEhL6109IrZscUUzBMSKLSX16HlFfmPZ.gDnWCI3lO35UbGdL7lKjbT9mHYQ-//http%3A%2F%2Fblah.com\\" target=\\"_blank\\"><img style=\\"border: 0;\\" border=\\"0\\" width=300 height=250 src=\\"https://creative.360yield.com/file/238052/test_ads-300x250.jpg\\" alt=\\" \\"/></a><img src=\\"https://na-ice.360yield.com/imp_pixel?ic=.2RC3VqxeCtOU3G5i6Wejh69dm5JnKlRXeieMtJA63nfGMyuFoWTTjSU5PfHLg2PtnmDRFgHJgGE19QyjAGj6ZQVy0iUk-HF-.zsAlx.7Fx3m5fPE7RIYw.kjy-BvuprFqfU-qlm03KTks6zVLDSIspuxemNQ1HBhq6QZSm9qqAVY-1XS-KbImfb.fll3VvhJXy7Ru.KstgDfAJwt5vYxVab6efvjAIhOrrv6uXaywFVTtu9-gK5pKgIkdixxuYE2jLUyEh9GiRyRCH0jhhUVUmSfrjE4OuTq-7TmCYXQQ5Vk9AqOV.JybF8d35IeyAbF2aywwdZA2SGGEGeYIoOy.7D8TpuVqXxvnUyeKXlCfmzXcJs27W2sKGUTfpWc-TyhAOHKzwqrxP-QN5D1QRCXFWgAm.rwUBguE-oL1Q7NOaCsaRwINRwvQrastWNFUDEYzrB32NL-wIkILdh9e96JwhKiwGwJ1VqH.6RDDutUi9CLreYQl348exTfqL44Ia5VTLn7e0rA6s9V1tg55V7TX36\\" alt=\\" \\" style=\\"display:none\\"/><improvedigital_ad_output_information tp_id=\\"\\" buyer_id=\\"0\\" rtb_advertiser=\\"\\" campaign_id=\\"123159\\" line_item_id=\\"320896\\" creative_id=\\"479163\\" crid=\\"0\\" placement_id=\\"22135702\\"></improvedigital_ad_output_information></body></html>","width":300,"height":250}}};</script><a href="https://na-ice.360yield.com/click/.2RC3VhfEsdhtcsRiT8bWksMTmBbkfnj1AaD3C6Bht.Bp85KK5vjzZvJMpigI4ECdhllWuzbk2UhQt8VEGq1tg8m1OEot7Gs94PplWYs2ESdXpGAPFHiqdbZstOOhfiWL4D.k6lXfgNmbRhpL.SktYeEAiRaOZHQAX.22IEQ0swRnEdNyjHXYEkNIgpvMLqkZTv.JYM.iW9NwyJLIqk4Djh8X301iRLxexGBTl7-.n93WbkSCVY6uwdXSzoQrtK1r3fTrS34rdgpqFt6ZIBLKWI2ByLM2.aQqfvev5BCMOeyEKY8CcSg9SoDiPyQsvcz9bTckLtqs3AD3Qu8I.2rGn1NID7ljgg6-dERrorPK9A5XK67Pv34UqUe2xILQ6wvi52dX4p5d3yxsI9BMfnxzkn7MullVJdn-NiSB2rTe2MFozJc5G1nEwtpsMwZpBxl00PCcMsyETtaKbhqa3Gq5nCuce4AEhL6109IrZscUUzBMSKLSX16HlFfmPZ.gDnWCI3lO35UbGdL7lKjbT9mHYQ-//http%3A%2F%2Fblah.com" target="_blank"><img style="border: 0;" border="0" width=300 height=250 src="https://creative.360yield.com/file/238052/test_ads-300x250.jpg" alt=" "/></a><img src="https://na-ice.360yield.com/imp_pixel?ic=.2RC3VqxeCtOU3G5i6Wejh69dm5JnKlRXeieMtJA63nfGMyuFoWTTjSU5PfHLg2PtnmDRFgHJgGE19QyjAGj6ZQVy0iUk-HF-.zsAlx.7Fx3m5fPE7RIYw.kjy-BvuprFqfU-qlm03KTks6zVLDSIspuxemNQ1HBhq6QZSm9qqAVY-1XS-KbImfb.fll3VvhJXy7Ru.KstgDfAJwt5vYxVab6efvjAIhOrrv6uXaywFVTtu9-gK5pKgIkdixxuYE2jLUyEh9GiRyRCH0jhhUVUmSfrjE4OuTq-7TmCYXQQ5Vk9AqOV.JybF8d35IeyAbF2aywwdZA2SGGEGeYIoOy.7D8TpuVqXxvnUyeKXlCfmzXcJs27W2sKGUTfpWc-TyhAOHKzwqrxP-QN5D1QRCXFWgAm.rwUBguE-oL1Q7NOaCsaRwINRwvQrastWNFUDEYzrB32NL-wIkILdh9e96JwhKiwGwJ1VqH.6RDDutUi9CLreYQl348exTfqL44Ia5VTLn7e0rA6s9V1tg55V7TX36" alt=" " style="display:none"/><improvedigital_ad_output_information tp_id="" buyer_id="0" rtb_advertiser="" campaign_id="123159" line_item_id="320896" creative_id="479163" crid="0" placement_id="22135702"></improvedigital_ad_output_information></body></html>',
1055
1061
  creativeId: '479163',
1056
1062
  dealId: 320896,
1057
1063
  netRevenue: false,
@@ -1091,7 +1097,7 @@ describe('Improve Digital Adapter Tests', function () {
1091
1097
 
1092
1098
  it('should return a well-formed display bid for multi-format ad unit', function () {
1093
1099
  const bids = spec.interpretResponse(serverResponse, {bidderRequest: multiFormatBidderRequest});
1094
- expect(bids).to.deep.equal(expectedBid);
1100
+ expect(bids).to.deep.equal(multiFormatExpectedBid);
1095
1101
  });
1096
1102
 
1097
1103
  it('should return two bids', function () {
@@ -1233,16 +1239,6 @@ describe('Improve Digital Adapter Tests', function () {
1233
1239
  bids = spec.interpretResponse(videoResponse, {bidderRequest: multiFormatBidderRequest});
1234
1240
  expect(bids[0].mediaType).to.equal(VIDEO);
1235
1241
  });
1236
-
1237
- it('should not affect non-RAZR bids', function () {
1238
- const bids = spec.interpretResponse(serverResponse, {bidderRequest});
1239
- expect(bids[0].renderer).to.not.exist;
1240
- });
1241
-
1242
- it('should detect RAZR bids', function () {
1243
- const bids = spec.interpretResponse(serverResponseRazr, {bidderRequest});
1244
- expect(bids[0].renderer).to.exist;
1245
- });
1246
1242
  });
1247
1243
 
1248
1244
  describe('getUserSyncs', function () {
@@ -10,7 +10,6 @@ describe('IndexexchangeAdapter', function () {
10
10
  const IX_SECURE_ENDPOINT = 'https://htlb.casalemedia.com/openrtb/pbjs';
11
11
  const VIDEO_ENDPOINT_VERSION = 8.1;
12
12
  const BANNER_ENDPOINT_VERSION = 7.2;
13
- const NATIVE_ENDPOINT_VERSION = undefined;
14
13
 
15
14
  const SAMPLE_SCHAIN = {
16
15
  'ver': '1.0',
@@ -378,6 +377,7 @@ describe('IndexexchangeAdapter', function () {
378
377
  required: false
379
378
  },
380
379
  title: {
380
+ len: 25,
381
381
  required: true
382
382
  },
383
383
  body: {
@@ -387,13 +387,20 @@ describe('IndexexchangeAdapter', function () {
387
387
  required: true
388
388
  },
389
389
  video: {
390
- required: false
390
+ required: false,
391
+ mimes: ['video/mp4', 'video/webm'],
392
+ minduration: 0,
393
+ maxduration: 120,
394
+ protocols: [2, 3, 5, 6]
391
395
  },
392
396
  sponsoredBy: {
393
397
  required: true
394
398
  }
395
399
  }
396
400
  },
401
+ nativeOrtbRequest: {
402
+ assets: [{id: 0, required: 0, img: {type: 1}}, {id: 1, required: 1, title: {len: 140}}, {id: 2, required: 1, data: {type: 2}}, {id: 3, required: 1, img: {type: 3}}, {id: 4, required: false, video: {mimes: ['video/mp4', 'video/webm'], minduration: 0, maxduration: 120, protocols: [2, 3, 5, 6]}}]
403
+ },
397
404
  adUnitCode: 'div-gpt-ad-1460505748563-0',
398
405
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47231',
399
406
  bidId: '1a2b3c4f',
@@ -432,6 +439,9 @@ describe('IndexexchangeAdapter', function () {
432
439
  }
433
440
  }
434
441
  },
442
+ nativeOrtbRequest: {
443
+ assets: [{id: 0, required: 0, img: {type: 1}}, {id: 1, required: 1, title: {len: 140}}, {id: 2, required: 1, data: {type: 2}}, {id: 3, required: 1, img: {type: 3}}, {id: 4, required: false, video: {mimes: ['video/mp4', 'video/webm'], minduration: 0, maxduration: 120, protocols: [2, 3, 5, 6]}}]
444
+ },
435
445
  adUnitCode: 'div-gpt-ad-1460505748562-0',
436
446
  transactionId: '173f49a8-7549-4218-a23c-e7ba59b47230',
437
447
  bidId: '1a2b3c4e',
@@ -442,7 +452,7 @@ describe('IndexexchangeAdapter', function () {
442
452
  ];
443
453
 
444
454
  const DEFAULT_NATIVE_IMP = {
445
- request: '{"assets":[{"required":0,"img":{"type":1},"id":201},{"required":1,"title":{"len":25},"id":100},{"required":1,"data":{"type":2},"id":402},{"required":1,"img":{"type":3},"id":203},{"required":0,"video":{"mimes":["video/mp4","video/webm"],"minduration":0,"maxduration":120,"protocols":[2,3,5,6]},"id":300},{"required":1,"data":{"type":1},"id":401}],"ver":"1.2","eventtrackers":[{"event":1,"methods":[1,2]}],"privacy":1}',
455
+ request: '{"assets":[{"id":0,"required":0,"img":{"type":1}},{"id":1,"required":1,"title":{"len":140}},{"id":2,"required":1,"data":{"type":2}},{"id":3,"required":1,"img":{"type":3}},{"id":4,"required":false,"video":{"mimes":["video/mp4","video/webm"],"minduration":0,"maxduration":120,"protocols":[2,3,5,6]}}],"eventtrackers":[{"event":1,"methods":[1,2]}],"privacy":1}',
446
456
  ver: '1.2'
447
457
  }
448
458
 
@@ -588,7 +598,7 @@ describe('IndexexchangeAdapter', function () {
588
598
  advbrandid: 303325,
589
599
  advbrand: 'OECTA'
590
600
  },
591
- adm: '{"native":{"ver":"1.2","assets":[{"id":201,"img":{"url":"https://cdn.liftoff.io/customers/1209/creatives/2501-icon-250x250.png","w":250,"h":250}},{"id":203,"img":{"url":"https://cdn.liftoff.io/customers/5a9cab9cc6/image/lambda_png/a0355879b06c09b09232.png","w":1200,"h":627}},{"id":401,"data":{"value":"autodoc.co.uk"}},{"id":402,"data":{"value":"Les pièces automobiles dont vous avez besoin, toujours sous la main."}},{"id":100,"title":{"text":"Autodoc"}},{"id":300,"video":{"vasttag":"<VAST>blah</VAST>"}}],"link":{"url":"https://play.google.com/store/apps/details?id=de.autodoc.gmbh","clicktrackers":["https://click.liftoff.io/v1/campaign_click/blah"]},"eventtrackers":[{"event":1,"method":1,"url":"https://impression-europe.liftoff.io/index/impression"},{"event":1,"method":1,"url":"https://a701.casalemedia.com/impression/v1"}],"privacy":"https://privacy.link.com"}}'
601
+ adm: '{"native":{"ver":"1.2","assets":[{"id":0,"img":{"url":"https://cdn.liftoff.io/customers/1209/creatives/2501-icon-250x250.png","w":250,"h":250}},{"id":1,"img":{"url":"https://cdn.liftoff.io/customers/5a9cab9cc6/image/lambda_png/a0355879b06c09b09232.png","w":1200,"h":627}},{"id":2,"data":{"value":"autodoc.co.uk"}},{"id":3,"data":{"value":"Les pièces automobiles dont vous avez besoin, toujours sous la main."}},{"id":4,"title":{"text":"Autodoc"}},{"id":5,"video":{"vasttag":"<VAST>blah</VAST>"}}],"link":{"url":"https://play.google.com/store/apps/details?id=de.autodoc.gmbh","clicktrackers":["https://click.liftoff.io/v1/campaign_click/blah"]},"eventtrackers":[{"event":1,"method":1,"url":"https://impression-europe.liftoff.io/index/impression"},{"event":1,"method":1,"url":"https://a701.casalemedia.com/impression/v1"}],"privacy":"https://privacy.link.com"}}'
592
602
  }
593
603
  ],
594
604
  seat: '3970'
@@ -864,7 +874,7 @@ describe('IndexexchangeAdapter', function () {
864
874
  expect(spec.isBidRequestValid(bid)).to.equal(true);
865
875
  });
866
876
 
867
- it('should return true when required params found for a banner or video ad', function () {
877
+ it('should return true when required params found for a banner, video or native ad', function () {
868
878
  expect(spec.isBidRequestValid(DEFAULT_BANNER_VALID_BID[0])).to.equal(true);
869
879
  expect(spec.isBidRequestValid(DEFAULT_VIDEO_VALID_BID[0])).to.equal(true);
870
880
  expect(spec.isBidRequestValid(DEFAULT_NATIVE_VALID_BID[0])).to.equal(true);
@@ -1064,15 +1074,12 @@ describe('IndexexchangeAdapter', function () {
1064
1074
  expect(spec.isBidRequestValid(bid)).to.equal(false);
1065
1075
  });
1066
1076
 
1067
- it('should fail when native contains unrecongized properties', function () {
1077
+ it('should fail if native openRTB object contains no valid assets', function () {
1068
1078
  let bid = utils.deepClone(DEFAULT_NATIVE_VALID_BID[0]);
1069
- bid.mediaTypes.native.test = {}
1079
+ bid.nativeOrtbRequest = {}
1070
1080
  expect(spec.isBidRequestValid(bid)).to.be.false;
1071
- });
1072
1081
 
1073
- it('should fail if native mediaTypes should contains no valid assets', function () {
1074
- let bid = utils.deepClone(DEFAULT_NATIVE_VALID_BID[0]);
1075
- bid.mediaTypes.native = {}
1082
+ bid.nativeOrtbRequest = {assets: []}
1076
1083
  expect(spec.isBidRequestValid(bid)).to.be.false;
1077
1084
  });
1078
1085
  });
@@ -2145,7 +2152,7 @@ describe('IndexexchangeAdapter', function () {
2145
2152
  it('should have native request', () => {
2146
2153
  const nativeImpression = JSON.parse(request[1].data.r).imp[0];
2147
2154
 
2148
- expect(request[1].data.v).to.equal(NATIVE_ENDPOINT_VERSION);
2155
+ expect(request[1].data.hasOwnProperty('v')).to.equal(false);
2149
2156
  expect(nativeImpression.id).to.equal(DEFAULT_NATIVE_VALID_BID[0].bidId);
2150
2157
  expect(nativeImpression.native).to.deep.equal(DEFAULT_NATIVE_IMP);
2151
2158
  });
@@ -2491,7 +2498,7 @@ describe('IndexexchangeAdapter', function () {
2491
2498
  const request = spec.buildRequests(DEFAULT_NATIVE_VALID_BID, DEFAULT_OPTION);
2492
2499
  const query = request[0].data;
2493
2500
 
2494
- expect(query.v).to.equal(NATIVE_ENDPOINT_VERSION);
2501
+ expect(query.hasOwnProperty('v')).to.equal(false);
2495
2502
  expect(query.s).to.equal(DEFAULT_NATIVE_VALID_BID[0].params.siteId);
2496
2503
  expect(query.r).to.exist;
2497
2504
  expect(query.ac).to.equal('j');
@@ -2516,92 +2523,148 @@ describe('IndexexchangeAdapter', function () {
2516
2523
  const request = spec.buildRequests(DEFAULT_NATIVE_VALID_BID, DEFAULT_OPTION);
2517
2524
  const nativeImpression = JSON.parse(request[0].data.r).imp[0];
2518
2525
 
2519
- expect(request[0].data.v).to.equal(NATIVE_ENDPOINT_VERSION);
2526
+ expect(request[0].data.hasOwnProperty('v')).to.equal(false);
2520
2527
  expect(nativeImpression.id).to.equal(DEFAULT_NATIVE_VALID_BID[0].bidId);
2521
2528
  expect(nativeImpression.native).to.deep.equal(DEFAULT_NATIVE_IMP);
2522
2529
  });
2523
2530
 
2524
2531
  it('should build request with given asset properties', function() {
2525
2532
  let bid = utils.deepClone(DEFAULT_NATIVE_VALID_BID)
2526
- bid[0].mediaTypes.native = {
2527
- title: {
2528
- len: 200
2529
- },
2530
- video: {
2531
- mimes: [
2532
- 'javascript'
2533
- ],
2534
- minduration: 10,
2535
- maxduration: 60,
2536
- protocols: [1]
2537
- }
2533
+ bid[0].nativeOrtbRequest = {
2534
+ assets: [{id: 0, required: 0, title: {len: 140}}, {id: 1, required: 0, video: {mimes: ['javascript'], minduration: 10, maxduration: 60, protocols: [1]}}]
2538
2535
  }
2539
2536
  const request = spec.buildRequests(bid, DEFAULT_OPTION);
2540
2537
  const nativeImpression = JSON.parse(request[0].data.r).imp[0];
2541
- expect(nativeImpression.native).to.deep.equal({request: '{"assets":[{"required":0,"title":{"len":200},"id":100},{"required":0,"video":{"mimes":["javascript"],"minduration":10,"maxduration":60,"protocols":[1]},"id":300}],"ver":"1.2","eventtrackers":[{"event":1,"methods":[1,2]}],"privacy":1}', ver: '1.2'});
2538
+ expect(nativeImpression.native).to.deep.equal({request: '{"assets":[{"id":0,"required":0,"title":{"len":140}},{"id":1,"required":0,"video":{"mimes":["javascript"],"minduration":10,"maxduration":60,"protocols":[1]}}],"eventtrackers":[{"event":1,"methods":[1,2]}],"privacy":1}', ver: '1.2'});
2542
2539
  });
2543
2540
 
2544
2541
  it('should build request with all possible Prebid asset properties', function() {
2545
2542
  let bid = utils.deepClone(DEFAULT_NATIVE_VALID_BID)
2546
- bid[0].mediaTypes.native = {
2547
- title: {
2548
- required: false
2549
- },
2550
- body: {
2551
- required: false
2552
- },
2553
- body2: {
2554
- required: false
2555
- },
2556
- sponsoredBy: {
2557
- required: false
2558
- },
2559
- icon: {
2560
- required: false
2561
- },
2562
- image: {
2563
- required: false
2564
- },
2565
- clickUrl: {
2566
- required: false
2567
- },
2568
- displayUrl: {
2569
- required: false
2570
- },
2571
- privacyLink: {
2572
- required: false
2573
- },
2574
- privacyIcon: {
2575
- required: false
2576
- },
2577
- cta: {
2578
- required: false
2579
- },
2580
- rating: {
2581
- required: false
2582
- },
2583
- downloads: {
2584
- required: false
2585
- },
2586
- likes: {
2587
- required: false
2588
- },
2589
- price: {
2590
- required: false
2591
- },
2592
- salePrice: {
2593
- required: false
2594
- },
2595
- address: {
2596
- required: false
2597
- },
2598
- phone: {
2599
- required: false
2600
- },
2543
+ bid[0].nativeOrtbRequest = {
2544
+ 'ver': '1.2',
2545
+ 'assets': [
2546
+ {
2547
+ 'id': 0,
2548
+ 'required': 0,
2549
+ 'title': {
2550
+ 'len': 140
2551
+ }
2552
+ },
2553
+ {
2554
+ 'id': 1,
2555
+ 'required': 0,
2556
+ 'data': {
2557
+ 'type': 2
2558
+ }
2559
+ },
2560
+ {
2561
+ 'id': 2,
2562
+ 'required': 0,
2563
+ 'data': {
2564
+ 'type': 10
2565
+ }
2566
+ },
2567
+ {
2568
+ 'id': 3,
2569
+ 'required': 0,
2570
+ 'data': {
2571
+ 'type': 1
2572
+ }
2573
+ },
2574
+ {
2575
+ 'id': 4,
2576
+ 'required': 0,
2577
+ 'img': {
2578
+ 'type': 1
2579
+ }
2580
+ },
2581
+ {
2582
+ 'id': 5,
2583
+ 'required': 0,
2584
+ 'img': {
2585
+ 'type': 3
2586
+ }
2587
+ },
2588
+ {
2589
+ 'id': 6,
2590
+ 'required': 0
2591
+ },
2592
+ {
2593
+ 'id': 7,
2594
+ 'required': 0,
2595
+ 'data': {
2596
+ 'type': 11
2597
+ }
2598
+ },
2599
+ {
2600
+ 'id': 8,
2601
+ 'required': 0
2602
+ },
2603
+ {
2604
+ 'id': 9,
2605
+ 'required': 0
2606
+ },
2607
+ {
2608
+ 'id': 10,
2609
+ 'required': 0,
2610
+ 'data': {
2611
+ 'type': 12
2612
+ }
2613
+ },
2614
+ {
2615
+ 'id': 11,
2616
+ 'required': 0,
2617
+ 'data': {
2618
+ 'type': 3
2619
+ }
2620
+ },
2621
+ {
2622
+ 'id': 12,
2623
+ 'required': 0,
2624
+ 'data': {
2625
+ 'type': 5
2626
+ }
2627
+ },
2628
+ {
2629
+ 'id': 13,
2630
+ 'required': 0,
2631
+ 'data': {
2632
+ 'type': 4
2633
+ }
2634
+ },
2635
+ {
2636
+ 'id': 14,
2637
+ 'required': 0,
2638
+ 'data': {
2639
+ 'type': 6
2640
+ }
2641
+ },
2642
+ {
2643
+ 'id': 15,
2644
+ 'required': 0,
2645
+ 'data': {
2646
+ 'type': 7
2647
+ }
2648
+ },
2649
+ {
2650
+ 'id': 16,
2651
+ 'required': 0,
2652
+ 'data': {
2653
+ 'type': 9
2654
+ }
2655
+ },
2656
+ {
2657
+ 'id': 17,
2658
+ 'required': 0,
2659
+ 'data': {
2660
+ 'type': 8
2661
+ }
2662
+ }
2663
+ ]
2601
2664
  }
2602
2665
  const request = spec.buildRequests(bid, DEFAULT_OPTION);
2603
2666
  const nativeImpression = JSON.parse(request[0].data.r).imp[0];
2604
- expect(nativeImpression.native).to.deep.equal({request: '{"assets":[{"required":0,"title":{"len":25},"id":100},{"required":0,"data":{"type":2},"id":402},{"required":0,"data":{"type":10},"id":410},{"required":0,"data":{"type":1},"id":401},{"required":0,"img":{"type":1},"id":201},{"required":0,"img":{"type":3},"id":203},{"required":0,"data":{"type":11},"id":411},{"required":0,"data":{"type":12},"id":412},{"required":0,"data":{"type":3},"id":403},{"required":0,"data":{"type":5},"id":405},{"required":0,"data":{"type":4},"id":404},{"required":0,"data":{"type":6},"id":406},{"required":0,"data":{"type":7},"id":407},{"required":0,"data":{"type":9},"id":409},{"required":0,"data":{"type":8},"id":408}],"ver":"1.2","eventtrackers":[{"event":1,"methods":[1,2]}],"privacy":1}', ver: '1.2'});
2667
+ expect(nativeImpression.native).to.deep.equal({request: '{"ver":"1.2","assets":[{"id":0,"required":0,"title":{"len":140}},{"id":1,"required":0,"data":{"type":2}},{"id":2,"required":0,"data":{"type":10}},{"id":3,"required":0,"data":{"type":1}},{"id":4,"required":0,"img":{"type":1}},{"id":5,"required":0,"img":{"type":3}},{"id":6,"required":0},{"id":7,"required":0,"data":{"type":11}},{"id":8,"required":0},{"id":9,"required":0},{"id":10,"required":0,"data":{"type":12}},{"id":11,"required":0,"data":{"type":3}},{"id":12,"required":0,"data":{"type":5}},{"id":13,"required":0,"data":{"type":4}},{"id":14,"required":0,"data":{"type":6}},{"id":15,"required":0,"data":{"type":7}},{"id":16,"required":0,"data":{"type":9}},{"id":17,"required":0,"data":{"type":8}}],"eventtrackers":[{"event":1,"methods":[1,2]}],"privacy":1}', ver: '1.2'});
2605
2668
  })
2606
2669
  });
2607
2670
 
@@ -3091,27 +3154,70 @@ describe('IndexexchangeAdapter', function () {
3091
3154
  advertiserDomains: ['www.abc.com']
3092
3155
  },
3093
3156
  native: {
3094
- body: 'Les pièces automobiles dont vous avez besoin, toujours sous la main.',
3095
- clickUrl: 'https://play.google.com/store/apps/details?id=de.autodoc.gmbh',
3096
- icon: {
3097
- height: 250,
3098
- width: 250,
3099
- url: 'https://cdn.liftoff.io/customers/1209/creatives/2501-icon-250x250.png'
3100
- },
3101
- image: {
3102
- height: 627,
3103
- width: 1200,
3104
- url: 'https://cdn.liftoff.io/customers/5a9cab9cc6/image/lambda_png/a0355879b06c09b09232.png'
3105
- },
3106
- impressionTrackers: [
3107
- 'https://click.liftoff.io/v1/campaign_click/blah',
3108
- 'https://impression-europe.liftoff.io/index/impression',
3109
- 'https://a701.casalemedia.com/impression/v1'
3110
- ],
3111
- privacyLink: 'https://privacy.link.com',
3112
- sponsoredBy: 'autodoc.co.uk',
3113
- title: 'Autodoc',
3114
- video: '<VAST>blah</VAST>'
3157
+ ortb: {
3158
+ assets: [
3159
+ {
3160
+ 'id': 0,
3161
+ 'img': {
3162
+ 'h': 250,
3163
+ 'url': 'https://cdn.liftoff.io/customers/1209/creatives/2501-icon-250x250.png',
3164
+ 'w': 250
3165
+ }
3166
+ },
3167
+ {
3168
+ 'id': 1,
3169
+ 'img': {
3170
+ 'h': 627,
3171
+ 'url': 'https://cdn.liftoff.io/customers/5a9cab9cc6/image/lambda_png/a0355879b06c09b09232.png',
3172
+ 'w': 1200
3173
+ }
3174
+ },
3175
+ {
3176
+ 'data': {
3177
+ 'value': 'autodoc.co.uk'
3178
+ },
3179
+ 'id': 2
3180
+ },
3181
+ {
3182
+ 'data': {
3183
+ 'value': 'Les pièces automobiles dont vous avez besoin, toujours sous la main.'
3184
+ },
3185
+ 'id': 3
3186
+ },
3187
+ {
3188
+ 'id': 4,
3189
+ 'title': {
3190
+ 'text': 'Autodoc'
3191
+ }
3192
+ },
3193
+ {
3194
+ 'id': 5,
3195
+ 'video': {
3196
+ 'vasttag': '<VAST>blah</VAST>'
3197
+ }
3198
+ }
3199
+ ],
3200
+ 'eventtrackers': [
3201
+ {
3202
+ 'event': 1,
3203
+ 'method': 1,
3204
+ 'url': 'https://impression-europe.liftoff.io/index/impression'
3205
+ },
3206
+ {
3207
+ 'event': 1,
3208
+ 'method': 1,
3209
+ 'url': 'https://a701.casalemedia.com/impression/v1'
3210
+ }
3211
+ ],
3212
+ 'link': {
3213
+ 'clicktrackers': [
3214
+ 'https://click.liftoff.io/v1/campaign_click/blah'
3215
+ ],
3216
+ 'url': 'https://play.google.com/store/apps/details?id=de.autodoc.gmbh'
3217
+ },
3218
+ 'privacy': 'https://privacy.link.com',
3219
+ 'ver': '1.2'
3220
+ }
3115
3221
  },
3116
3222
  ttl: 3600
3117
3223
  }
@@ -0,0 +1,97 @@
1
+ import { expect } from 'chai';
2
+ import { spec } from 'modules/mediagoBidAdapter.js';
3
+
4
+ describe('mediago:BidAdapterTests', function () {
5
+ let bidRequestData = {
6
+ bidderCode: 'mediago',
7
+ auctionId: '7fae02a9-0195-472f-ba94-708d3bc2c0d9',
8
+ bidderRequestId: '4fec04e87ad785',
9
+ bids: [
10
+ {
11
+ bidder: 'mediago',
12
+ params: {
13
+ token: '85a6b01e41ac36d49744fad726e3655d',
14
+ bidfloor: 0.01,
15
+ },
16
+ mediaTypes: {
17
+ banner: {
18
+ sizes: [[300, 250]],
19
+ },
20
+ },
21
+ adUnitCode: 'regular_iframe',
22
+ transactionId: '7b26fdae-96e6-4c35-a18b-218dda11397d',
23
+ sizes: [[300, 250]],
24
+ bidId: '54d73f19c9d47a', // todo
25
+ bidderRequestId: '4fec04e87ad785', // todo
26
+ auctionId: '883a346a-6d62-4adb-a600-0f3a869061d1',
27
+ src: 'client',
28
+ bidRequestsCount: 1,
29
+ bidderRequestsCount: 1,
30
+ bidderWinsCount: 0,
31
+ },
32
+ ],
33
+ };
34
+ let request = [];
35
+
36
+ it('mediago:validate_pub_params', function () {
37
+ expect(
38
+ spec.isBidRequestValid({
39
+ bidder: 'mediago',
40
+ params: {
41
+ token: ['85a6b01e41ac36d49744fad726e3655d'],
42
+ },
43
+ })
44
+ ).to.equal(true);
45
+ });
46
+
47
+ it('mediago:validate_generated_params', function () {
48
+ request = spec.buildRequests(bidRequestData.bids, bidRequestData);
49
+ let req_data = JSON.parse(request.data);
50
+ expect(req_data.imp).to.have.lengthOf(1);
51
+ });
52
+
53
+ it('mediago:validate_response_params', function () {
54
+ let adm = "<link rel=\"stylesheet\" href=\"https://cdn.mediago.io/js/style/style_banner_300*250.css\"><div id=\"mgcontainer-99afea272c2b0e8626489674ddb7a0bb\" class=\"mediago-placement imgTopTitleBottom\" style=\"position:relative;width:298px;height:248px;overflow:hidden\"><a href=\"https://trace.mediago.io/api/bidder/track?tn=39934c2bda4debbe4c680be1dd02f5d3&price=djUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk&evt=102&rid=6e28cfaf115a354ea1ad8e1304d6d7b8&campaignid=1339145&impid=44-300x250-1&offerid=24054386&test=0&time=1660789795&cp=jZDh1xu6_QqJLlKVtCkiHIP_TER6gL9jeTrlHCBoxOM&clickid=44_6e28cfaf115a354ea1ad8e1304d6d7b8_44-300x250-1&acid=599&trackingid=99afea272c2b0e8626489674ddb7a0bb&uid=a865b9ae-fa9e-4c09-8204-2db99ac7c8f7&jt=2&url=oxZA2i2aUVY76Xy2t3HffaK_ZtBDsgFwFc_Nbnw-bz3yCxmoUyZvATKnFc9ZkUfT1eQizhtczCwDzjHwwwDgTehUnp1EwdY4g1LRcuOwlRpXnVTt3zPQdaVx5nVDw25by7lQ0q469LCv2eEFDTAv_FOuVT32WiOx_ArOIlxCnDGpjPLUNyxm3cTZFGOJn4B7&bm=2&la=en&cn=us&cid=3998296&info=Si3oM-qfCbw2iZRYs01BkUWyH6c5CQWHrA8CQLE0VHcXAcf4ljY9dyLzQ4vAlTWd6-j_ou4ySor3e70Ll7wlKiiauQKaUkZqNoTizHm73C4FK8DYJSTP3VkhJV8RzrYk&sid=128__110__1__12__28__38__163__96__58__24__47__99&sp=djUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk&scp=zK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg&acu=USD&scu=USD&sgcp=zK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg&gprice=djUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk&gcp=zK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg&ah=&pb=&de=wjh.popin.cc&cat=&iv=0\" target=\"_blank\" class=\"mediago-placement-track\" style=\"display: inline-block;\"><img alt=\"Ranger's spot giant lion - vet is shocked when looking at the ultrasound\" src=\"https://d2cli4kgl5uxre.cloudfront.net/ML/ff32b6f9b3bbc45c00b78b6674a2952e__scv1__300x175.png\" style=\"height:70%;width:100%;border-width:0;border:none;\"><h3 class=\"title\" style=\"font-size:16px;\">Ranger's spot giant lion - vet is shocked when looking at the ultrasound</h3></a><span class=\"source\"><a class=\"sourcename\" href=\"//www.mediago.io\" target=\"_blank\"><span>Ad</span> </a><a class=\"mgmgsrcnameadslabelurl\" href=\"//www.mediago.io/privacy\" target=\"_blank\"><span>soo-healthy</span></a></span></div>";
55
+ let temp = '%3Cscr';
56
+ temp += 'ipt%3E';
57
+ temp += '!function()%7B%22use%20strict%22%3Bfunction%20f(t)%7Breturn(f%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol.iterator%3Ffunction(t)%7Breturn%20typeof%20t%7D%3Afunction(t)%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t.constructor%3D%3D%3DSymbol%26%26t!%3D%3DSymbol.prototype%3F%22symbol%22%3Atypeof%20t%7D)(t)%7Dfunction%20l(t)%7Bvar%20e%3D0%3Carguments.length%26%26void%200!%3D%3Dt%3Ft%3A%7B%7D%3Btry%7Be.random_t%3D(new%20Date).getTime()%2Cg(function(t)%7Bvar%20e%3D1%3Carguments.length%26%26void%200!%3D%3Darguments%5B1%5D%3Farguments%5B1%5D%3A%22%22%3Bif(%22object%22!%3D%3Df(t))return%20e%3Bvar%20n%3Dfunction(t)%7Bfor(var%20e%2Cn%3D%5B%5D%2Co%3D0%2Ci%3DObject.keys(t)%3Bo%3Ci.length%3Bo%2B%2B)e%3Di%5Bo%5D%2Cn.push(%22%22.concat(e%2C%22%3D%22).concat(t%5Be%5D))%3Breturn%20n%7D(t).join(%22%26%22)%2Co%3De.indexOf(%22%23%22)%2Ci%3De%2Ct%3D%22%22%3Breturn-1!%3D%3Do%26%26(i%3De.slice(0%2Co)%2Ct%3De.slice(o))%2Cn%26%26(i%26%26-1!%3D%3Di.indexOf(%22%3F%22)%3Fi%2B%3D%22%26%22%2Bn%3Ai%2B%3D%22%3F%22%2Bn)%2Ci%2Bt%7D(e%2C%22https%3A%2F%2Ftrace.mediago.io%2Fapi%2Flog%2Ftrack%22))%7Dcatch(t)%7B%7D%7Dfunction%20g(t%2Ce%2Cn)%7B(t%3Dt%3Ft.split(%22%3B%3B%3B%22)%3A%5B%5D).map(function(t)%7Btry%7B0%3C%3Dt.indexOf(%22%2Fapi%2Fbidder%2Ftrack%22)%26%26n%26%26(t%2B%3D%22%26inIframe%3D%22.concat(!(!self.frameElement%7C%7C%22IFRAME%22!%3Dself.frameElement.tagName)%7C%7Cwindow.frames.length!%3Dparent.frames.length%7C%7Cself!%3Dtop)%2Ct%2B%3D%22%26pos_x%3D%22.concat(n.left%2C%22%26pos_y%3D%22).concat(n.top%2C%22%26page_w%3D%22).concat(n.page_width%2C%22%26page_h%3D%22).concat(n.page_height))%7Dcatch(t)%7Bl(%7Btn%3As%2Cwinloss%3A1%2Cfe%3A2%2Cpos_err_c%3A1002%2Cpos_err_m%3At.toString()%7D)%7Dvar%20e%3Dnew%20Image%3Be.src%3Dt%2Ce.style.display%3D%22none%22%2Ce.style.visibility%3D%22hidden%22%2Ce.width%3D0%2Ce.height%3D0%2Cdocument.body.appendChild(e)%7D)%7Dvar%20d%3D%5B%22https%3A%2F%2Ftrace.mediago.io%2Fapi%2Fbidder%2Ftrack%3Ftn%3D39934c2bda4debbe4c680be1dd02f5d3%26price%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26evt%3D101%26rid%3D6e28cfaf115a354ea1ad8e1304d6d7b8%26campaignid%3D1339145%26impid%3D44-300x250-1%26offerid%3D24054386%26test%3D0%26time%3D1660789795%26cp%3DjZDh1xu6_QqJLlKVtCkiHIP_TER6gL9jeTrlHCBoxOM%26acid%3D599%26trackingid%3D99afea272c2b0e8626489674ddb7a0bb%26uid%3Da865b9ae-fa9e-4c09-8204-2db99ac7c8f7%26bm%3D2%26la%3Den%26cn%3Dus%26cid%3D3998296%26info%3DSi3oM-qfCbw2iZRYs01BkUWyH6c5CQWHrA8CQLE0VHcXAcf4ljY9dyLzQ4vAlTWd6-j_ou4ySor3e70Ll7wlKiiauQKaUkZqNoTizHm73C4FK8DYJSTP3VkhJV8RzrYk%26sid%3D128__110__1__12__28__38__163__96__58__24__47__99%26sp%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26scp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26acu%3DUSD%26scu%3DUSD%26sgcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26gprice%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26gcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26ah%3D%26de%3Dwjh.popin.cc%26iv%3D0%22%2C%22%24%7BITRACKER2%7D%22%2C%22%24%7BITRACKER3%7D%22%2C%22%24%7BITRACKER4%7D%22%2C%22%24%7BITRACKER5%7D%22%2C%22%24%7BITRACKER6%7D%22%5D%2Cp%3D%5B%22https%3A%2F%2Ftrace.mediago.io%2Fapi%2Fbidder%2Ftrack%3Ftn%3D39934c2bda4debbe4c680be1dd02f5d3%26price%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26evt%3D104%26rid%3D6e28cfaf115a354ea1ad8e1304d6d7b8%26campaignid%3D1339145%26impid%3D44-300x250-1%26offerid%3D24054386%26test%3D0%26time%3D1660789795%26cp%3DjZDh1xu6_QqJLlKVtCkiHIP_TER6gL9jeTrlHCBoxOM%26acid%3D599%26trackingid%3D99afea272c2b0e8626489674ddb7a0bb%26uid%3Da865b9ae-fa9e-4c09-8204-2db99ac7c8f7%26sid%3D128__110__1__12__28__38__163__96__58__24__47__99%26format%3D%26crid%3Dff32b6f9b3bbc45c00b78b6674a2952e%26bm%3D2%26la%3Den%26cn%3Dus%26cid%3D3998296%26info%3DSi3oM-qfCbw2iZRYs01BkUWyH6c5CQWHrA8CQLE0VHcXAcf4ljY9dyLzQ4vAlTWd6-j_ou4ySor3e70Ll7wlKiiauQKaUkZqNoTizHm73C4FK8DYJSTP3VkhJV8RzrYk%26sp%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26scp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26acu%3DUSD%26scu%3DUSD%26sgcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26gprice%3DdjUJcggeuWWfbm28q4WXHdgMFkO28DrGw49FnubQ0Bk%26gcp%3DzK0DRYY1UV-syqSpmcMYBpOebtoQJV9ZEJT0JFqbTQg%26ah%3D%26de%3Dwjh.popin.cc%26iv%3D0%22%2C%22%24%7BVTRACKER2%7D%22%2C%22%24%7BVTRACKER3%7D%22%2C%22%24%7BVTRACKER4%7D%22%2C%22%24%7BVTRACKER5%7D%22%2C%22%24%7BVTRACKER6%7D%22%5D%2Cs%3D%22f9f2b1ef23fe2759c2cad0953029a94b%22%2Cn%3Ddocument.getElementById(%22mgcontainer-99afea272c2b0e8626489674ddb7a0bb%22)%3Bn%26%26function()%7Bvar%20a%3Dn.getElementsByClassName(%22mediago-placement-track%22)%3Bif(a%26%26a.length)%7Bvar%20t%2Ce%3Dfunction(t)%7Bvar%20e%2Cn%2Co%2Ci%2Cc%2Cr%3B%22object%22%3D%3D%3Df(r%3Da%5Bt%5D)%26%26(e%3Dfunction(t)%7Btry%7Bvar%20e%3Dt.getBoundingClientRect()%2Cn%3De%26%26e.top%7C%7C-1%2Co%3De%26%26e.left%7C%7C-1%2Ci%3Ddocument.body.scrollWidth%7C%7C-1%2Ce%3Ddocument.body.scrollHeight%7C%7C-1%3Breturn%7Btop%3An.toFixed(0)%2Cleft%3Ao.toFixed(0)%2Cpage_width%3Ai%2Cpage_height%3Ae%7D%7Dcatch(o)%7Breturn%20l(%7Btn%3As%2Cwinloss%3A1%2Cfe%3A2%2Cpos_err_c%3A1001%2Cpos_err_m%3Ao.toString()%7D)%2C%7Btop%3A%22-1%22%2Cleft%3A%22-1%22%2Cpage_width%3A%22-1%22%2Cpage_height%3A%22-1%22%7D%7D%7D(r)%2C(n%3Dd%5Bt%5D)%26%26g(n%2C0%2Ce)%2Co%3Dp%5Bt%5D%2Ci%3D!1%2C(c%3Dfunction()%7BsetTimeout(function()%7Bvar%20t%2Ce%3B!i%26%26(t%3Dr%2Ce%3Dwindow.innerHeight%7C%7Cdocument.documentElement.clientHeight%7C%7Cdocument.body.clientHeight%2C(t.getBoundingClientRect()%26%26t.getBoundingClientRect().top)%3C%3De-.75*(t.offsetHeight%7C%7Ct.clientHeight))%3F(i%3D!0%2Co%26%26g(o))%3Ac()%7D%2C500)%7D)())%7D%3Bfor(t%20in%20a)e(t)%7D%7D()%7D()';
58
+ temp += '%3B%3C%2Fscri';
59
+ temp += 'pt%3E';
60
+ adm += decodeURIComponent(temp);
61
+ let serverResponse = {
62
+ body: {
63
+ id: 'mgprebidjs_0b6572fc-ceba-418f-b6fd-33b41ad0ac8a',
64
+ seatbid: [
65
+ {
66
+ bid: [
67
+ {
68
+ id: '6e28cfaf115a354ea1ad8e1304d6d7b8',
69
+ impid: '1',
70
+ price: 0.087581,
71
+ adm: adm,
72
+ cid: '1339145',
73
+ crid: 'ff32b6f9b3bbc45c00b78b6674a2952e',
74
+ w: 300,
75
+ h: 250,
76
+ },
77
+ ],
78
+ },
79
+ ],
80
+ cur: 'USD',
81
+ },
82
+ };
83
+
84
+ let bids = spec.interpretResponse(serverResponse);
85
+ // console.log({
86
+ // bids
87
+ // });
88
+ expect(bids).to.have.lengthOf(1);
89
+
90
+ let bid = bids[0];
91
+
92
+ expect(bid.creativeId).to.equal('ff32b6f9b3bbc45c00b78b6674a2952e');
93
+ expect(bid.width).to.equal(300);
94
+ expect(bid.height).to.equal(250);
95
+ expect(bid.currency).to.equal('USD');
96
+ });
97
+ });