@@ -11,6 +11,12 @@ let events = require('src/events');
11
11
let ajax = require ( 'src/ajax' ) ;
12
12
let utils = require ( 'src/utils' ) ;
13
13
14
+ const DEFAULT_USER_AGENT = window . navigator . userAgent ;
15
+ const MOBILE_USER_AGENT = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1' ;
16
+ const setUADefault = ( ) => { window . navigator . __defineGetter__ ( 'userAgent' , function ( ) { return DEFAULT_USER_AGENT } ) } ;
17
+ const setUAMobile = ( ) => { window . navigator . __defineGetter__ ( 'userAgent' , function ( ) { return MOBILE_USER_AGENT } ) } ;
18
+ const setUANull = ( ) => { window . navigator . __defineGetter__ ( 'userAgent' , function ( ) { return null } ) } ;
19
+
14
20
const {
15
21
EVENTS : {
16
22
AUCTION_INIT ,
@@ -247,6 +253,7 @@ describe('pubmatic analytics adapter', function () {
247
253
let clock ;
248
254
249
255
beforeEach ( function ( ) {
256
+ setUADefault ( ) ;
250
257
sandbox = sinon . sandbox . create ( ) ;
251
258
252
259
xhr = sandbox . useFakeXMLHttpRequest ( ) ;
@@ -643,6 +650,7 @@ describe('pubmatic analytics adapter', function () {
643
650
} ) ;
644
651
645
652
it ( 'Logger: currency conversion check' , function ( ) {
653
+ setUANull ( ) ;
646
654
setConfig ( {
647
655
adServerCurrency : 'JPY' ,
648
656
rates : {
@@ -695,6 +703,111 @@ describe('pubmatic analytics adapter', function () {
695
703
expect ( data . s [ 1 ] . ps [ 0 ] . af ) . to . equal ( 'banner' ) ;
696
704
expect ( data . s [ 1 ] . ps [ 0 ] . ocpm ) . to . equal ( 100 ) ;
697
705
expect ( data . s [ 1 ] . ps [ 0 ] . ocry ) . to . equal ( 'JPY' ) ;
706
+ expect ( data . dvc ) . to . deep . equal ( { 'plt' : 3 } ) ;
707
+ } ) ;
708
+
709
+ it ( 'Logger: regexPattern in bid.params' , function ( ) {
710
+ setUAMobile ( ) ;
711
+ const BID_REQUESTED_COPY = utils . deepClone ( MOCK . BID_REQUESTED ) ;
712
+ BID_REQUESTED_COPY . bids [ 1 ] . params . regexPattern = '*' ;
713
+ events . emit ( AUCTION_INIT , MOCK . AUCTION_INIT ) ;
714
+ events . emit ( BID_REQUESTED , BID_REQUESTED_COPY ) ;
715
+ events . emit ( BID_RESPONSE , MOCK . BID_RESPONSE [ 0 ] ) ;
716
+ events . emit ( BID_RESPONSE , BID2 ) ;
717
+ events . emit ( BIDDER_DONE , MOCK . BIDDER_DONE ) ;
718
+ events . emit ( AUCTION_END , MOCK . AUCTION_END ) ;
719
+ events . emit ( SET_TARGETING , MOCK . SET_TARGETING ) ;
720
+ events . emit ( BID_WON , MOCK . BID_WON [ 0 ] ) ;
721
+ events . emit ( BID_WON , MOCK . BID_WON [ 1 ] ) ;
722
+
723
+ clock . tick ( 2000 + 1000 ) ;
724
+ expect ( requests . length ) . to . equal ( 3 ) ; // 1 logger and 2 win-tracker
725
+ let request = requests [ 2 ] ; // logger is executed late, trackers execute first
726
+ expect ( request . url ) . to . equal ( 'https://t.pubmatic.com/wl?pubid=9999' ) ;
727
+ let data = getLoggerJsonFromRequest ( request . requestBody ) ;
728
+ expect ( data . s [ 1 ] . sn ) . to . equal ( '/19968336/header-bid-tag-1' ) ;
729
+ expect ( data . s [ 1 ] . sz ) . to . deep . equal ( [ '1000x300' , '970x250' , '728x90' ] ) ;
730
+ expect ( data . s [ 1 ] . ps ) . to . be . an ( 'array' ) ;
731
+ expect ( data . s [ 1 ] . ps . length ) . to . equal ( 1 ) ;
732
+ expect ( data . s [ 1 ] . ps [ 0 ] . pn ) . to . equal ( 'pubmatic' ) ;
733
+ expect ( data . s [ 1 ] . ps [ 0 ] . bidid ) . to . equal ( '3bd4ebb1c900e2' ) ;
734
+ expect ( data . s [ 1 ] . ps [ 0 ] . db ) . to . equal ( 0 ) ;
735
+ expect ( data . s [ 1 ] . ps [ 0 ] . kgpv ) . to . equal ( '*' ) ;
736
+ expect ( data . s [ 1 ] . ps [ 0 ] . kgpsv ) . to . equal ( 'this-is-a-kgpv' ) ;
737
+ expect ( data . s [ 1 ] . ps [ 0 ] . psz ) . to . equal ( '728x90' ) ;
738
+ expect ( data . s [ 1 ] . ps [ 0 ] . eg ) . to . equal ( 1.52 ) ;
739
+ expect ( data . s [ 1 ] . ps [ 0 ] . en ) . to . equal ( 1.52 ) ;
740
+ expect ( data . s [ 1 ] . ps [ 0 ] . di ) . to . equal ( 'the-deal-id' ) ;
741
+ expect ( data . s [ 1 ] . ps [ 0 ] . dc ) . to . equal ( 'PMP' ) ;
742
+ expect ( data . s [ 1 ] . ps [ 0 ] . mi ) . to . equal ( 'matched-impression' ) ;
743
+ expect ( data . s [ 1 ] . ps [ 0 ] . l1 ) . to . equal ( 3214 ) ;
744
+ expect ( data . s [ 1 ] . ps [ 0 ] . l2 ) . to . equal ( 0 ) ;
745
+ expect ( data . s [ 1 ] . ps [ 0 ] . ss ) . to . equal ( 1 ) ;
746
+ expect ( data . s [ 1 ] . ps [ 0 ] . t ) . to . equal ( 0 ) ;
747
+ expect ( data . s [ 1 ] . ps [ 0 ] . wb ) . to . equal ( 0 ) ; // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
748
+ expect ( data . s [ 1 ] . ps [ 0 ] . af ) . to . equal ( 'banner' ) ;
749
+ expect ( data . s [ 1 ] . ps [ 0 ] . ocpm ) . to . equal ( 1.52 ) ;
750
+ expect ( data . s [ 1 ] . ps [ 0 ] . ocry ) . to . equal ( 'USD' ) ;
751
+ expect ( data . dvc ) . to . deep . equal ( { 'plt' : 2 } ) ;
752
+ // respective tracker slot
753
+ let firstTracker = requests [ 1 ] . url ;
754
+ expect ( firstTracker . split ( '?' ) [ 0 ] ) . to . equal ( 'https://t.pubmatic.com/wt' ) ;
755
+ data = { } ;
756
+ firstTracker . split ( '?' ) [ 1 ] . split ( '&' ) . map ( e => e . split ( '=' ) ) . forEach ( e => data [ e [ 0 ] ] = e [ 1 ] ) ;
757
+ expect ( data . kgpv ) . to . equal ( '*' ) ;
758
+ } ) ;
759
+
760
+ it ( 'Logger: regexPattern in bid.bidResponse' , function ( ) {
761
+ const BID2_COPY = utils . deepClone ( BID2 ) ;
762
+ BID2_COPY . regexPattern = '*' ;
763
+ events . emit ( AUCTION_INIT , MOCK . AUCTION_INIT ) ;
764
+ events . emit ( AUCTION_INIT , MOCK . AUCTION_INIT ) ;
765
+ events . emit ( BID_REQUESTED , MOCK . BID_REQUESTED ) ;
766
+ events . emit ( BID_RESPONSE , MOCK . BID_RESPONSE [ 0 ] ) ;
767
+ events . emit ( BID_RESPONSE , BID2_COPY ) ;
768
+ events . emit ( BIDDER_DONE , MOCK . BIDDER_DONE ) ;
769
+ events . emit ( AUCTION_END , MOCK . AUCTION_END ) ;
770
+ events . emit ( SET_TARGETING , MOCK . SET_TARGETING ) ;
771
+ events . emit ( BID_WON , MOCK . BID_WON [ 0 ] ) ;
772
+ events . emit ( BID_WON , Object . assign ( { } , BID2_COPY , {
773
+ 'status' : 'rendered'
774
+ } ) ) ;
775
+
776
+ clock . tick ( 2000 + 1000 ) ;
777
+ expect ( requests . length ) . to . equal ( 3 ) ; // 1 logger and 2 win-tracker
778
+ let request = requests [ 2 ] ; // logger is executed late, trackers execute first
779
+ expect ( request . url ) . to . equal ( 'https://t.pubmatic.com/wl?pubid=9999' ) ;
780
+ let data = getLoggerJsonFromRequest ( request . requestBody ) ;
781
+ expect ( data . s [ 1 ] . sn ) . to . equal ( '/19968336/header-bid-tag-1' ) ;
782
+ expect ( data . s [ 1 ] . sz ) . to . deep . equal ( [ '1000x300' , '970x250' , '728x90' ] ) ;
783
+ expect ( data . s [ 1 ] . ps ) . to . be . an ( 'array' ) ;
784
+ expect ( data . s [ 1 ] . ps . length ) . to . equal ( 1 ) ;
785
+ expect ( data . s [ 1 ] . ps [ 0 ] . pn ) . to . equal ( 'pubmatic' ) ;
786
+ expect ( data . s [ 1 ] . ps [ 0 ] . bidid ) . to . equal ( '3bd4ebb1c900e2' ) ;
787
+ expect ( data . s [ 1 ] . ps [ 0 ] . db ) . to . equal ( 0 ) ;
788
+ expect ( data . s [ 1 ] . ps [ 0 ] . kgpv ) . to . equal ( '*' ) ;
789
+ expect ( data . s [ 1 ] . ps [ 0 ] . kgpsv ) . to . equal ( 'this-is-a-kgpv' ) ;
790
+ expect ( data . s [ 1 ] . ps [ 0 ] . psz ) . to . equal ( '728x90' ) ;
791
+ expect ( data . s [ 1 ] . ps [ 0 ] . eg ) . to . equal ( 1.52 ) ;
792
+ expect ( data . s [ 1 ] . ps [ 0 ] . en ) . to . equal ( 1.52 ) ;
793
+ expect ( data . s [ 1 ] . ps [ 0 ] . di ) . to . equal ( 'the-deal-id' ) ;
794
+ expect ( data . s [ 1 ] . ps [ 0 ] . dc ) . to . equal ( 'PMP' ) ;
795
+ expect ( data . s [ 1 ] . ps [ 0 ] . mi ) . to . equal ( 'matched-impression' ) ;
796
+ expect ( data . s [ 1 ] . ps [ 0 ] . l1 ) . to . equal ( 3214 ) ;
797
+ expect ( data . s [ 1 ] . ps [ 0 ] . l2 ) . to . equal ( 0 ) ;
798
+ expect ( data . s [ 1 ] . ps [ 0 ] . ss ) . to . equal ( 1 ) ;
799
+ expect ( data . s [ 1 ] . ps [ 0 ] . t ) . to . equal ( 0 ) ;
800
+ expect ( data . s [ 1 ] . ps [ 0 ] . wb ) . to . equal ( 0 ) ; // bidPriceUSD is not getting set as currency module is not added, so unable to set wb to 1
801
+ expect ( data . s [ 1 ] . ps [ 0 ] . af ) . to . equal ( 'banner' ) ;
802
+ expect ( data . s [ 1 ] . ps [ 0 ] . ocpm ) . to . equal ( 1.52 ) ;
803
+ expect ( data . s [ 1 ] . ps [ 0 ] . ocry ) . to . equal ( 'USD' ) ;
804
+ expect ( data . dvc ) . to . deep . equal ( { 'plt' : 1 } ) ;
805
+ // respective tracker slot
806
+ let firstTracker = requests [ 1 ] . url ;
807
+ expect ( firstTracker . split ( '?' ) [ 0 ] ) . to . equal ( 'https://t.pubmatic.com/wt' ) ;
808
+ data = { } ;
809
+ firstTracker . split ( '?' ) [ 1 ] . split ( '&' ) . map ( e => e . split ( '=' ) ) . forEach ( e => data [ e [ 0 ] ] = e [ 1 ] ) ;
810
+ expect ( data . kgpv ) . to . equal ( '*' ) ;
698
811
} ) ;
699
812
700
813
it ( 'Logger: regexPattern in bid.params' , function ( ) {
0 commit comments