prebid.js 7.20.0 → 7.22.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 (189) hide show
  1. package/dist/1plusXRtdProvider.js +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/adrelevantisBidAdapter.js +1 -1
  7. package/dist/adtrgtmeBidAdapter.js +1 -1
  8. package/dist/adxcgBidAdapter.js +1 -1
  9. package/dist/adyoulikeBidAdapter.js +1 -1
  10. package/dist/ajaBidAdapter.js +1 -1
  11. package/dist/amxBidAdapter.js +1 -1
  12. package/dist/amxIdSystem.js +1 -1
  13. package/dist/appierAnalyticsAdapter.js +1 -1
  14. package/dist/appnexusBidAdapter.js +1 -1
  15. package/dist/asoBidAdapter.js +1 -1
  16. package/dist/audiencerunBidAdapter.js +1 -1
  17. package/dist/axonixBidAdapter.js +1 -1
  18. package/dist/bidglassBidAdapter.js +1 -1
  19. package/dist/big-richmediaBidAdapter.js +1 -1
  20. package/dist/bluebillywigBidAdapter.js +1 -1
  21. package/dist/bridgewellBidAdapter.js +1 -1
  22. package/dist/brightMountainMediaBidAdapter.js +1 -1
  23. package/dist/brightcomBidAdapter.js +1 -1
  24. package/dist/carodaBidAdapter.js +1 -1
  25. package/dist/concertBidAdapter.js +1 -1
  26. package/dist/connectadBidAdapter.js +1 -1
  27. package/dist/consumableBidAdapter.js +1 -1
  28. package/dist/conversantBidAdapter.js +1 -1
  29. package/dist/craftBidAdapter.js +1 -1
  30. package/dist/criteoBidAdapter.js +1 -1
  31. package/dist/dacIdSystem.js +1 -1
  32. package/dist/dspxBidAdapter.js +1 -1
  33. package/dist/eplanningBidAdapter.js +1 -1
  34. package/dist/finativeBidAdapter.js +1 -1
  35. package/dist/freewheel-sspBidAdapter.js +1 -1
  36. package/dist/ftrackIdSystem.js +1 -1
  37. package/dist/glimpseBidAdapter.js +1 -1
  38. package/dist/gmosspBidAdapter.js +1 -1
  39. package/dist/goldbachBidAdapter.js +1 -1
  40. package/dist/gridBidAdapter.js +1 -1
  41. package/dist/gridNMBidAdapter.js +1 -1
  42. package/dist/gumgumBidAdapter.js +1 -1
  43. package/dist/h12mediaBidAdapter.js +1 -1
  44. package/dist/iasRtdProvider.js +1 -1
  45. package/dist/id5IdSystem.js +1 -1
  46. package/dist/impactifyBidAdapter.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/jixieBidAdapter.js +1 -1
  52. package/dist/justpremiumBidAdapter.js +1 -1
  53. package/dist/konduitAnalyticsAdapter.js +1 -1
  54. package/dist/kueezBidAdapter.js +1 -1
  55. package/dist/lassoBidAdapter.js +1 -1
  56. package/dist/lifestreetBidAdapter.js +1 -1
  57. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  58. package/dist/logicadBidAdapter.js +1 -1
  59. package/dist/loglyliftBidAdapter.js +1 -1
  60. package/dist/magniteAnalyticsAdapter.js +1 -1
  61. package/dist/malltvAnalyticsAdapter.js +1 -1
  62. package/dist/marsmediaBidAdapter.js +1 -1
  63. package/dist/mediafuseBidAdapter.js +1 -1
  64. package/dist/mediakeysBidAdapter.js +1 -1
  65. package/dist/medianetAnalyticsAdapter.js +1 -1
  66. package/dist/medianetBidAdapter.js +1 -1
  67. package/dist/mediasquareBidAdapter.js +1 -1
  68. package/dist/mgidBidAdapter.js +1 -1
  69. package/dist/minutemediaBidAdapter.js +1 -1
  70. package/dist/not-for-prod/prebid.js +127 -127
  71. package/dist/oguryBidAdapter.js +1 -1
  72. package/dist/onetagBidAdapter.js +1 -1
  73. package/dist/ooloAnalyticsAdapter.js +1 -1
  74. package/dist/outbrainBidAdapter.js +1 -1
  75. package/dist/parrableIdSystem.js +1 -1
  76. package/dist/pixfutureBidAdapter.js +1 -1
  77. package/dist/prebid-core.js +1 -1
  78. package/dist/prebidServerBidAdapter.js +1 -1
  79. package/dist/publinkIdSystem.js +1 -1
  80. package/dist/pubmaticBidAdapter.js +1 -1
  81. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  82. package/dist/pubwiseBidAdapter.js +1 -1
  83. package/dist/pulsepointBidAdapter.js +1 -1
  84. package/dist/pxyzBidAdapter.js +1 -1
  85. package/dist/quantcastBidAdapter.js +1 -1
  86. package/dist/readpeakBidAdapter.js +1 -1
  87. package/dist/relaidoBidAdapter.js +1 -1
  88. package/dist/rhythmoneBidAdapter.js +1 -1
  89. package/dist/riseBidAdapter.js +1 -1
  90. package/dist/rubiconAnalyticsAdapter.js +1 -1
  91. package/dist/rubiconBidAdapter.js +1 -1
  92. package/dist/seedingAllianceBidAdapter.js +1 -1
  93. package/dist/seedtagBidAdapter.js +1 -1
  94. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  95. package/dist/sharethroughBidAdapter.js +1 -1
  96. package/dist/shinezBidAdapter.js +1 -1
  97. package/dist/smaatoBidAdapter.js +1 -1
  98. package/dist/smartadserverBidAdapter.js +1 -1
  99. package/dist/smartxBidAdapter.js +1 -1
  100. package/dist/smilewantedBidAdapter.js +1 -1
  101. package/dist/sonobiBidAdapter.js +1 -1
  102. package/dist/sovrnAnalyticsAdapter.js +1 -1
  103. package/dist/sovrnBidAdapter.js +1 -1
  104. package/dist/sspBCBidAdapter.js +1 -1
  105. package/dist/sublimeBidAdapter.js +1 -1
  106. package/dist/synacormediaBidAdapter.js +1 -1
  107. package/dist/targetVideoBidAdapter.js +1 -1
  108. package/dist/teadsBidAdapter.js +1 -1
  109. package/dist/trionBidAdapter.js +1 -1
  110. package/dist/tripleliftBidAdapter.js +1 -1
  111. package/dist/ttdBidAdapter.js +1 -1
  112. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  113. package/dist/underdogmediaBidAdapter.js +1 -1
  114. package/dist/undertoneBidAdapter.js +1 -1
  115. package/dist/userId.js +1 -1
  116. package/dist/vidazooBidAdapter.js +1 -1
  117. package/dist/videobyteBidAdapter.js +1 -1
  118. package/dist/visxBidAdapter.js +1 -1
  119. package/dist/vuukleBidAdapter.js +1 -1
  120. package/dist/weboramaRtdProvider.js +1 -1
  121. package/dist/widespaceBidAdapter.js +1 -1
  122. package/dist/winrBidAdapter.js +1 -1
  123. package/dist/yahoosspBidAdapter.js +1 -1
  124. package/dist/yieldmoBidAdapter.js +1 -1
  125. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  126. package/dist/yieldoneBidAdapter.js +1 -1
  127. package/integrationExamples/gpt/weboramaRtdProvider_example.html +10 -51
  128. package/modules/1plusXRtdProvider.js +32 -5
  129. package/modules/33acrossBidAdapter.js +18 -11
  130. package/modules/adyoulikeBidAdapter.js +12 -6
  131. package/modules/asoBidAdapter.js +11 -6
  132. package/modules/asoBidAdapter.md +5 -6
  133. package/modules/brightcomBidAdapter.js +30 -10
  134. package/modules/dacIdSystem.js +145 -27
  135. package/modules/dacIdSystem.md +7 -2
  136. package/modules/fledgeForGpt.md +101 -23
  137. package/modules/freewheel-sspBidAdapter.js +48 -7
  138. package/modules/freewheel-sspBidAdapter.md +1 -1
  139. package/modules/ftrackIdSystem.js +28 -9
  140. package/modules/gridBidAdapter.js +1 -0
  141. package/modules/iasRtdProvider.js +21 -6
  142. package/modules/iasRtdProvider.md +1 -1
  143. package/modules/ixBidAdapter.js +9 -4
  144. package/modules/medianetAnalyticsAdapter.js +26 -22
  145. package/modules/medianetBidAdapter.js +5 -1
  146. package/modules/mediasquareBidAdapter.js +42 -3
  147. package/modules/mgidBidAdapter.js +8 -1
  148. package/modules/oguryBidAdapter.js +6 -2
  149. package/modules/prebidServerBidAdapter/index.js +1 -1
  150. package/modules/pubmaticBidAdapter.js +27 -3
  151. package/modules/pubwiseBidAdapter.js +14 -12
  152. package/modules/pulsepointBidAdapter.js +11 -6
  153. package/modules/smaatoBidAdapter.js +54 -5
  154. package/modules/smaatoBidAdapter.md +78 -0
  155. package/modules/teadsBidAdapter.js +26 -8
  156. package/modules/ttdBidAdapter.js +8 -0
  157. package/modules/userId/eids.js +7 -11
  158. package/modules/weboramaRtdProvider.js +800 -643
  159. package/modules/weboramaRtdProvider.md +32 -0
  160. package/modules/yieldoneBidAdapter.js +7 -4
  161. package/package.json +3 -3
  162. package/src/adapters/bidderFactory.js +11 -9
  163. package/src/auction.js +3 -3
  164. package/test/spec/auctionmanager_spec.js +29 -20
  165. package/test/spec/modules/1plusXRtdProvider_spec.js +30 -14
  166. package/test/spec/modules/33acrossBidAdapter_spec.js +44 -1
  167. package/test/spec/modules/adyoulikeBidAdapter_spec.js +1 -1
  168. package/test/spec/modules/asoBidAdapter_spec.js +2 -2
  169. package/test/spec/modules/brightcomBidAdapter_spec.js +94 -1
  170. package/test/spec/modules/dacIdSystem_spec.js +93 -11
  171. package/test/spec/modules/eids_spec.js +11 -7
  172. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +25 -4
  173. package/test/spec/modules/ftrackIdSystem_spec.js +200 -90
  174. package/test/spec/modules/iasRtdProvider_spec.js +57 -1
  175. package/test/spec/modules/ixBidAdapter_spec.js +12 -0
  176. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +50 -8
  177. package/test/spec/modules/medianetBidAdapter_spec.js +76 -0
  178. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -2
  179. package/test/spec/modules/mgidBidAdapter_spec.js +50 -0
  180. package/test/spec/modules/oguryBidAdapter_spec.js +33 -17
  181. package/test/spec/modules/prebidServerBidAdapter_spec.js +24 -0
  182. package/test/spec/modules/pubmaticBidAdapter_spec.js +60 -5
  183. package/test/spec/modules/pubwiseBidAdapter_spec.js +6 -4
  184. package/test/spec/modules/pulsepointBidAdapter_spec.js +123 -0
  185. package/test/spec/modules/smaatoBidAdapter_spec.js +307 -36
  186. package/test/spec/modules/teadsBidAdapter_spec.js +119 -6
  187. package/test/spec/modules/weboramaRtdProvider_spec.js +382 -0
  188. package/test/spec/modules/yieldoneBidAdapter_spec.js +2 -3
  189. package/test/spec/unit/core/bidderFactory_spec.js +0 -4
@@ -238,7 +238,7 @@ const sampleBidderBannerRequest = {
238
238
  'bidFloor': '1.00',
239
239
  'currency': 'USD',
240
240
  'adSlot': '',
241
- 'adUnit': '',
241
+ 'adUnit': 'div-gpt-ad-1460505748561-0',
242
242
  'bcat': [
243
243
  'IAB25-3',
244
244
  'IAB26-1',
@@ -535,13 +535,15 @@ describe('PubWiseAdapter', function () {
535
535
 
536
536
  describe('Handling Request Construction', function () {
537
537
  it('bid requests are not mutable', function() {
538
- let sourceBidRequest = utils.deepClone(sampleValidBidRequests)
539
- spec.buildRequests(sampleValidBidRequests, {auctinId: 'placeholder'});
538
+ let sourceBidRequest = utils.deepClone(sampleValidBidRequests);
539
+ spec.buildRequests(sampleValidBidRequests, {auctionId: 'placeholder'});
540
540
  expect(sampleValidBidRequests).to.deep.equal(sourceBidRequest, 'Should be unedited as they are used elsewhere');
541
541
  });
542
542
  it('should handle complex bidRequest', function() {
543
543
  let request = spec.buildRequests(sampleValidBidRequests, sampleBidderRequest);
544
- expect(request.bidderRequest).to.equal(sampleBidderRequest);
544
+ expect(request.bidderRequest).to.equal(sampleBidderRequest, "Bid Request Doesn't Match Sample");
545
+ expect(request.data.source.tid).to.equal(sampleBidderRequest.auctionId, 'AuctionId -> source.tid Mismatch');
546
+ expect(request.data.imp[0].ext.tid).to.equal(sampleBidderRequest.bids[0].transactionId, 'TransactionId -> ext.tid Mismatch');
545
547
  });
546
548
  it('must conform to API for buildRequests', function() {
547
549
  let request = spec.buildRequests(sampleValidBidRequests);
@@ -795,4 +795,127 @@ describe('PulsePoint Adapter Tests', function () {
795
795
  expect(ortbRequest.imp[0].video.minbitrate).to.equal(200);
796
796
  expect(ortbRequest.imp[0].video.protocols).to.eql([1, 2, 4]);
797
797
  });
798
+ it('Verify user level first party data', function () {
799
+ const bidderRequest = {
800
+ refererInfo: {
801
+ page: 'https://publisher.com/home',
802
+ ref: 'https://referrer'
803
+ },
804
+ gdprConsent: {
805
+ gdprApplies: true,
806
+ consentString: 'serialized_gpdr_data'
807
+ },
808
+ ortb2: {
809
+ user: {
810
+ yob: 1985,
811
+ gender: 'm',
812
+ ext: {
813
+ data: {
814
+ registered: true,
815
+ interests: ['cars']
816
+ }
817
+ }
818
+ }
819
+ }
820
+ };
821
+ let request = spec.buildRequests(slotConfigs, bidderRequest);
822
+ let ortbRequest = request.data;
823
+ expect(ortbRequest).to.not.equal(null);
824
+ expect(ortbRequest.user).to.not.equal(null);
825
+ expect(ortbRequest.user).to.deep.equal({
826
+ yob: 1985,
827
+ gender: 'm',
828
+ ext: {
829
+ data: {
830
+ registered: true,
831
+ interests: ['cars']
832
+ },
833
+ consent: 'serialized_gpdr_data'
834
+ }
835
+ });
836
+ });
837
+ it('Verify site level first party data', function () {
838
+ const bidderRequest = {
839
+ refererInfo: {
840
+ page: 'https://publisher.com/home',
841
+ ref: 'https://referrer'
842
+ },
843
+ ortb2: {
844
+ site: {
845
+ content: {
846
+ data: [{
847
+ name: 'www.iris.com',
848
+ ext: {
849
+ segtax: 500,
850
+ cids: ['iris_c73g5jq96mwso4d8']
851
+ }
852
+ }]
853
+ },
854
+ page: 'http://pub.com/news',
855
+ ref: 'http://google.com'
856
+ }
857
+ }
858
+ };
859
+ let request = spec.buildRequests(slotConfigs, bidderRequest);
860
+ let ortbRequest = request.data;
861
+ expect(ortbRequest).to.not.equal(null);
862
+ expect(ortbRequest.site).to.not.equal(null);
863
+ expect(ortbRequest.site).to.deep.equal({
864
+ content: {
865
+ data: [{
866
+ name: 'www.iris.com',
867
+ ext: {
868
+ segtax: 500,
869
+ cids: ['iris_c73g5jq96mwso4d8']
870
+ }
871
+ }]
872
+ },
873
+ page: 'https://publisher.com/home',
874
+ ref: 'https://referrer',
875
+ publisher: {
876
+ id: 'p10000'
877
+ }
878
+ });
879
+ });
880
+ it('Verify impression/slot level first party data', function () {
881
+ const bidderRequests = [{
882
+ placementCode: '/DfpAccount1/slot1',
883
+ mediaTypes: {
884
+ banner: {
885
+ sizes: [[1, 1]]
886
+ }
887
+ },
888
+ bidId: 'bid12345',
889
+ params: {
890
+ cp: 'p10000',
891
+ ct: 't10000',
892
+ extra_key1: 'extra_val1',
893
+ extra_key2: 12345
894
+ },
895
+ ortb2Imp: {
896
+ ext: {
897
+ data: {
898
+ pbadslot: 'homepage-top-rect',
899
+ adUnitSpecificAttribute: '123'
900
+ }
901
+ }
902
+ }
903
+ }];
904
+ let request = spec.buildRequests(bidderRequests, bidderRequest);
905
+ let ortbRequest = request.data;
906
+ expect(ortbRequest).to.not.equal(null);
907
+ expect(ortbRequest.imp).to.not.equal(null);
908
+ expect(ortbRequest.imp).to.have.lengthOf(1);
909
+ expect(ortbRequest.imp[0].ext).to.not.equal(null);
910
+ expect(ortbRequest.imp[0].ext).to.deep.equal({
911
+ prebid: {
912
+ extra_key1: 'extra_val1',
913
+ extra_key2: 12345
914
+ },
915
+ data: {
916
+ pbadslot: 'homepage-top-rect',
917
+ adUnitSpecificAttribute: '123'
918
+ }
919
+ });
920
+ });
798
921
  });
@@ -6,6 +6,7 @@ import {createEidsArray} from 'modules/userId/eids.js';
6
6
  const ADTYPE_IMG = 'Img';
7
7
  const ADTYPE_RICHMEDIA = 'Richmedia';
8
8
  const ADTYPE_VIDEO = 'Video';
9
+ const ADTYPE_NATIVE = 'Native';
9
10
 
10
11
  const REFERRER = 'http://example.com/page.html'
11
12
  const CONSENT_STRING = 'HFIDUYFIUYIUYWIPOI87392DSU'
@@ -421,7 +422,6 @@ describe('smaatoBidAdapterTest', () => {
421
422
  },
422
423
  adUnitCode: '/19968336/header-bid-tag-0',
423
424
  transactionId: 'transactionId',
424
- sizes: [[300, 50]],
425
425
  bidId: 'bidId',
426
426
  bidderRequestId: 'bidderRequestId',
427
427
  src: 'client',
@@ -793,6 +793,168 @@ describe('smaatoBidAdapterTest', () => {
793
793
  });
794
794
  });
795
795
 
796
+ describe('buildRequests for native imps', () => {
797
+ const NATIVE_OPENRTB_REQUEST = {
798
+ ver: '1.2',
799
+ assets: [
800
+ {
801
+ id: 4,
802
+ required: 1,
803
+ img: {
804
+ type: 3,
805
+ w: 150,
806
+ h: 50,
807
+ }
808
+ },
809
+ {
810
+ id: 2,
811
+ required: 1,
812
+ img: {
813
+ type: 2,
814
+ w: 50,
815
+ h: 50
816
+ }
817
+ },
818
+ {
819
+ id: 0,
820
+ required: 1,
821
+ title: {
822
+ len: 80
823
+ }
824
+ },
825
+ {
826
+ id: 1,
827
+ required: 1,
828
+ data: {
829
+ type: 1
830
+ }
831
+ },
832
+ {
833
+ id: 3,
834
+ required: 1,
835
+ data: {
836
+ type: 2
837
+ }
838
+ },
839
+ {
840
+ id: 5,
841
+ required: 1,
842
+ data: {
843
+ type: 3
844
+ }
845
+ },
846
+ {
847
+ id: 6,
848
+ required: 1,
849
+ data: {
850
+ type: 4
851
+ }
852
+ },
853
+ {
854
+ id: 7,
855
+ required: 1,
856
+ data: {
857
+ type: 5
858
+ }
859
+ },
860
+ {
861
+ id: 8,
862
+ required: 1,
863
+ data: {
864
+ type: 6
865
+ }
866
+ },
867
+ {
868
+ id: 9,
869
+ required: 1,
870
+ data: {
871
+ type: 7
872
+ }
873
+ },
874
+ {
875
+ id: 10,
876
+ required: 0,
877
+ data: {
878
+ type: 8
879
+ }
880
+ },
881
+ {
882
+ id: 11,
883
+ required: 1,
884
+ data: {
885
+ type: 9
886
+ }
887
+ },
888
+ {
889
+ id: 12,
890
+ require: 0,
891
+ data: {
892
+ type: 10
893
+ }
894
+ },
895
+ {
896
+ id: 13,
897
+ required: 0,
898
+ data: {
899
+ type: 11
900
+ }
901
+ },
902
+ {
903
+ id: 14,
904
+ required: 1,
905
+ data: {
906
+ type: 12
907
+ }
908
+ }
909
+ ]
910
+ };
911
+
912
+ const singleNativeBidRequest = {
913
+ bidder: 'smaato',
914
+ params: {
915
+ publisherId: 'publisherId',
916
+ adspaceId: 'adspaceId'
917
+ },
918
+ nativeOrtbRequest: NATIVE_OPENRTB_REQUEST,
919
+ adUnitCode: '/19968336/header-bid-tag-0',
920
+ transactionId: 'transactionId',
921
+ bidId: 'bidId',
922
+ bidderRequestId: 'bidderRequestId',
923
+ src: 'client',
924
+ bidRequestsCount: 1,
925
+ bidderRequestsCount: 1,
926
+ bidderWinsCount: 0
927
+ };
928
+
929
+ it('sends correct native imps', () => {
930
+ const reqs = spec.buildRequests([singleNativeBidRequest], defaultBidderRequest);
931
+
932
+ const req = extractPayloadOfFirstAndOnlyRequest(reqs);
933
+ expect(req.imp[0].id).to.be.equal('bidId');
934
+ expect(req.imp[0].tagid).to.be.equal('adspaceId');
935
+ expect(req.imp[0].bidfloor).to.be.undefined;
936
+ expect(req.imp[0].native.request).to.deep.equal(JSON.stringify(NATIVE_OPENRTB_REQUEST));
937
+ });
938
+
939
+ it('sends bidfloor when configured', () => {
940
+ const singleNativeBidRequestWithFloor = Object.assign({}, singleNativeBidRequest);
941
+ singleNativeBidRequestWithFloor.getFloor = function(arg) {
942
+ if (arg.currency === 'USD' &&
943
+ arg.mediaType === 'native' &&
944
+ JSON.stringify(arg.size) === JSON.stringify([150, 50])) {
945
+ return {
946
+ currency: 'USD',
947
+ floor: 0.123
948
+ }
949
+ }
950
+ }
951
+ const reqs = spec.buildRequests([singleNativeBidRequestWithFloor], defaultBidderRequest);
952
+
953
+ const req = extractPayloadOfFirstAndOnlyRequest(reqs);
954
+ expect(req.imp[0].bidfloor).to.be.equal(0.123);
955
+ });
956
+ });
957
+
796
958
  describe('in-app requests', () => {
797
959
  const LOCATION = {
798
960
  lat: 33.3,
@@ -932,50 +1094,131 @@ describe('smaatoBidAdapterTest', () => {
932
1094
  }
933
1095
  }
934
1096
 
1097
+ const NATIVE_RESPONSE = {
1098
+ ver: '1.2',
1099
+ link: {
1100
+ url: 'https://link.url',
1101
+ clicktrackers: [
1102
+ 'http://click.url/v1/click?e=prebid'
1103
+ ]
1104
+ },
1105
+ assets: [
1106
+ {
1107
+ id: 0,
1108
+ required: 1,
1109
+ title: {
1110
+ text: 'Title'
1111
+ }
1112
+ },
1113
+ {
1114
+ id: 2,
1115
+ required: 1,
1116
+ img: {
1117
+ type: 1,
1118
+ url: 'https://logo.png',
1119
+ w: 40,
1120
+ h: 40
1121
+ }
1122
+ },
1123
+ {
1124
+ id: 4,
1125
+ required: 1,
1126
+ img: {
1127
+ type: 3,
1128
+ url: 'https://main.png',
1129
+ w: 480,
1130
+ h: 320
1131
+ }
1132
+ },
1133
+ {
1134
+ id: 3,
1135
+ required: 1,
1136
+ data: {
1137
+ type: 2,
1138
+ value: 'Desc'
1139
+ }
1140
+ },
1141
+ {
1142
+ id: 14,
1143
+ required: 1,
1144
+ data: {
1145
+ type: 12,
1146
+ value: 'CTAText'
1147
+ }
1148
+ },
1149
+ {
1150
+ id: 5,
1151
+ required: 0,
1152
+ data: {
1153
+ type: 3,
1154
+ value: '2 stars'
1155
+ }
1156
+ }
1157
+ ],
1158
+ eventtrackers: [
1159
+ {
1160
+ event: 2,
1161
+ method: 1,
1162
+ url: 'https://js.url'
1163
+ },
1164
+ {
1165
+ event: 1,
1166
+ method: 1,
1167
+ url: 'http://view.url/v1/view?e=prebid'
1168
+ }
1169
+ ],
1170
+ privacy: 'https://privacy.com/'
1171
+ }
1172
+
935
1173
  const buildOpenRtbBidResponse = (adType) => {
936
1174
  let adm = '';
937
1175
 
938
1176
  switch (adType) {
939
1177
  case ADTYPE_IMG:
940
- adm = JSON.stringify({
941
- image: {
942
- img: {
943
- url: 'https://prebid/static/ad.jpg',
944
- w: 320,
945
- h: 50,
946
- ctaurl: 'https://prebid/track/ctaurl'
947
- },
948
- impressiontrackers: [
949
- 'https://prebid/track/imp/1',
950
- 'https://prebid/track/imp/2'
951
- ],
952
- clicktrackers: [
953
- 'https://prebid/track/click/1'
954
- ]
955
- }
956
- });
1178
+ adm = JSON.stringify(
1179
+ {
1180
+ image: {
1181
+ img: {
1182
+ url: 'https://prebid/static/ad.jpg',
1183
+ w: 320,
1184
+ h: 50,
1185
+ ctaurl: 'https://prebid/track/ctaurl'
1186
+ },
1187
+ impressiontrackers: [
1188
+ 'https://prebid/track/imp/1',
1189
+ 'https://prebid/track/imp/2'
1190
+ ],
1191
+ clicktrackers: [
1192
+ 'https://prebid/track/click/1'
1193
+ ]
1194
+ }
1195
+ });
957
1196
  break;
958
1197
  case ADTYPE_RICHMEDIA:
959
- adm = JSON.stringify({
960
- richmedia: {
961
- mediadata: {
962
- content: '<div><h3>RICHMEDIA CONTENT</h3></div>',
963
- w: 800,
964
- h: 600
965
- },
966
- impressiontrackers: [
967
- 'https://prebid/track/imp/1',
968
- 'https://prebid/track/imp/2'
969
- ],
970
- clicktrackers: [
971
- 'https://prebid/track/click/1'
972
- ]
973
- }
974
- });
1198
+ adm = JSON.stringify(
1199
+ {
1200
+ richmedia: {
1201
+ mediadata: {
1202
+ content: '<div><h3>RICHMEDIA CONTENT</h3></div>',
1203
+ w: 800,
1204
+ h: 600
1205
+ },
1206
+ impressiontrackers: [
1207
+ 'https://prebid/track/imp/1',
1208
+ 'https://prebid/track/imp/2'
1209
+ ],
1210
+ clicktrackers: [
1211
+ 'https://prebid/track/click/1'
1212
+ ]
1213
+ }
1214
+ });
975
1215
  break;
976
1216
  case ADTYPE_VIDEO:
977
1217
  adm = '<VAST version="2.0"></VAST>';
978
1218
  break;
1219
+ case ADTYPE_NATIVE:
1220
+ adm = JSON.stringify({ native: NATIVE_RESPONSE })
1221
+ break;
979
1222
  default:
980
1223
  throw Error('Invalid AdType');
981
1224
  }
@@ -1030,7 +1273,7 @@ describe('smaatoBidAdapterTest', () => {
1030
1273
  });
1031
1274
 
1032
1275
  describe('non ad pod', () => {
1033
- it('single image reponse', () => {
1276
+ it('single image response', () => {
1034
1277
  const bids = spec.interpretResponse(buildOpenRtbBidResponse(ADTYPE_IMG), buildBidRequest());
1035
1278
 
1036
1279
  expect(bids).to.deep.equal([
@@ -1056,7 +1299,7 @@ describe('smaatoBidAdapterTest', () => {
1056
1299
  ]);
1057
1300
  });
1058
1301
 
1059
- it('single richmedia reponse', () => {
1302
+ it('single richmedia response', () => {
1060
1303
  const bids = spec.interpretResponse(buildOpenRtbBidResponse(ADTYPE_RICHMEDIA), buildBidRequest());
1061
1304
 
1062
1305
  expect(bids).to.deep.equal([
@@ -1108,6 +1351,34 @@ describe('smaatoBidAdapterTest', () => {
1108
1351
  ]);
1109
1352
  });
1110
1353
 
1354
+ it('single native response', () => {
1355
+ const bids = spec.interpretResponse(buildOpenRtbBidResponse(ADTYPE_NATIVE), buildBidRequest());
1356
+
1357
+ expect(bids).to.deep.equal([
1358
+ {
1359
+ requestId: '226416e6e6bf41',
1360
+ cpm: 0.01,
1361
+ width: 350,
1362
+ height: 50,
1363
+ native: {
1364
+ ortb: NATIVE_RESPONSE
1365
+ },
1366
+ ttl: 300,
1367
+ creativeId: 'CR69381',
1368
+ dealId: '12345',
1369
+ netRevenue: true,
1370
+ currency: 'USD',
1371
+ mediaType: 'native',
1372
+ meta: {
1373
+ advertiserDomains: ['smaato.com'],
1374
+ agencyId: 'CM6523',
1375
+ networkName: 'smaato',
1376
+ mediaType: 'native'
1377
+ }
1378
+ }
1379
+ ]);
1380
+ });
1381
+
1111
1382
  it('ignores bid response with invalid ad type', () => {
1112
1383
  const serverResponse = buildOpenRtbBidResponse(ADTYPE_IMG);
1113
1384
  serverResponse.headers.get = (header) => {