@@ -348,13 +348,254 @@ describe('Quantcast adapter', function () {
348
348
} ) ;
349
349
350
350
it ( 'propagates GDPR consent string and signal' , function ( ) {
351
- const bidderRequest = { gdprConsent : { gdprApplies : true , consentString : 'consentString' } }
351
+ const bidderRequest = {
352
+ gdprConsent : {
353
+ gdprApplies : true ,
354
+ consentString : 'consentString'
355
+ }
356
+ } ;
357
+
358
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
359
+ const parsed = JSON . parse ( requests [ 0 ] . data ) ;
360
+
361
+ expect ( parsed . gdprSignal ) . to . equal ( 1 ) ;
362
+ expect ( parsed . gdprConsent ) . to . equal ( 'consentString' ) ;
363
+ } ) ;
364
+
365
+ it ( 'allows TCF v1 request with consent for purpose 1' , function ( ) {
366
+ const bidderRequest = {
367
+ gdprConsent : {
368
+ gdprApplies : true ,
369
+ consentString : 'consentString' ,
370
+ vendorData : {
371
+ vendorConsents : {
372
+ '11' : true
373
+ } ,
374
+ purposeConsents : {
375
+ '1' : true
376
+ }
377
+ } ,
378
+ apiVersion : 1
379
+ }
380
+ } ;
381
+
382
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
383
+ const parsed = JSON . parse ( requests [ 0 ] . data ) ;
384
+
385
+ expect ( parsed . gdprSignal ) . to . equal ( 1 ) ;
386
+ expect ( parsed . gdprConsent ) . to . equal ( 'consentString' ) ;
387
+ } ) ;
388
+
389
+ it ( 'blocks TCF v1 request without vendor consent' , function ( ) {
390
+ const bidderRequest = {
391
+ gdprConsent : {
392
+ gdprApplies : true ,
393
+ consentString : 'consentString' ,
394
+ vendorData : {
395
+ vendorConsents : {
396
+ '11' : false
397
+ } ,
398
+ purposeConsents : {
399
+ '1' : true
400
+ }
401
+ } ,
402
+ apiVersion : 1
403
+ }
404
+ } ;
405
+
406
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
407
+
408
+ expect ( requests ) . to . equal ( undefined ) ;
409
+ } ) ;
410
+
411
+ it ( 'blocks TCF v1 request without consent for purpose 1' , function ( ) {
412
+ const bidderRequest = {
413
+ gdprConsent : {
414
+ gdprApplies : true ,
415
+ consentString : 'consentString' ,
416
+ vendorData : {
417
+ vendorConsents : {
418
+ '11' : true
419
+ } ,
420
+ purposeConsents : {
421
+ '1' : false
422
+ }
423
+ } ,
424
+ apiVersion : 1
425
+ }
426
+ } ;
427
+
428
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
429
+
430
+ expect ( requests ) . to . equal ( undefined ) ;
431
+ } ) ;
432
+
433
+ it ( 'allows TCF v2 request from Germany for purpose 1' , function ( ) {
434
+ const bidderRequest = {
435
+ gdprConsent : {
436
+ gdprApplies : true ,
437
+ consentString : 'consentString' ,
438
+ vendorData : {
439
+ publisherCC : 'DE' ,
440
+ purposeOneTreatment : true
441
+ } ,
442
+ apiVersion : 2
443
+ }
444
+ } ;
445
+
352
446
const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
353
447
const parsed = JSON . parse ( requests [ 0 ] . data ) ;
448
+
354
449
expect ( parsed . gdprSignal ) . to . equal ( 1 ) ;
355
450
expect ( parsed . gdprConsent ) . to . equal ( 'consentString' ) ;
356
451
} ) ;
357
452
453
+ it ( 'allows TCF v2 request when Quantcast has consent for purpose 1' , function ( ) {
454
+ const bidderRequest = {
455
+ gdprConsent : {
456
+ gdprApplies : true ,
457
+ consentString : 'consentString' ,
458
+ vendorData : {
459
+ vendor : {
460
+ consents : {
461
+ '11' : true
462
+ }
463
+ } ,
464
+ purpose : {
465
+ consents : {
466
+ '1' : true
467
+ }
468
+ }
469
+ } ,
470
+ apiVersion : 2
471
+ }
472
+ } ;
473
+
474
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
475
+ const parsed = JSON . parse ( requests [ 0 ] . data ) ;
476
+
477
+ expect ( parsed . gdprSignal ) . to . equal ( 1 ) ;
478
+ expect ( parsed . gdprConsent ) . to . equal ( 'consentString' ) ;
479
+ } ) ;
480
+
481
+ it ( 'blocks TCF v2 request when no consent for Quantcast' , function ( ) {
482
+ const bidderRequest = {
483
+ gdprConsent : {
484
+ gdprApplies : true ,
485
+ consentString : 'consentString' ,
486
+ vendorData : {
487
+ vendor : {
488
+ consents : {
489
+ '11' : false
490
+ }
491
+ } ,
492
+ purpose : {
493
+ consents : {
494
+ '1' : true
495
+ }
496
+ }
497
+ } ,
498
+ apiVersion : 2
499
+ }
500
+ } ;
501
+
502
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
503
+
504
+ expect ( requests ) . to . equal ( undefined ) ;
505
+ } ) ;
506
+
507
+ it ( 'blocks TCF v2 request when no consent for purpose 1' , function ( ) {
508
+ const bidderRequest = {
509
+ gdprConsent : {
510
+ gdprApplies : true ,
511
+ consentString : 'consentString' ,
512
+ vendorData : {
513
+ vendor : {
514
+ consents : {
515
+ '11' : true
516
+ }
517
+ } ,
518
+ purpose : {
519
+ consents : {
520
+ '1' : false
521
+ }
522
+ }
523
+ } ,
524
+ apiVersion : 2
525
+ }
526
+ } ;
527
+
528
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
529
+
530
+ expect ( requests ) . to . equal ( undefined ) ;
531
+ } ) ;
532
+
533
+ it ( 'blocks TCF v2 request when Quantcast not allowed by publisher' , function ( ) {
534
+ const bidderRequest = {
535
+ gdprConsent : {
536
+ gdprApplies : true ,
537
+ consentString : 'consentString' ,
538
+ vendorData : {
539
+ vendor : {
540
+ consents : {
541
+ '11' : true
542
+ }
543
+ } ,
544
+ purpose : {
545
+ consents : {
546
+ '1' : true
547
+ }
548
+ } ,
549
+ publisher : {
550
+ restrictions : {
551
+ '1' : {
552
+ '11' : 0
553
+ }
554
+ }
555
+ }
556
+ } ,
557
+ apiVersion : 2
558
+ }
559
+ } ;
560
+
561
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
562
+
563
+ expect ( requests ) . to . equal ( undefined ) ;
564
+ } ) ;
565
+
566
+ it ( 'blocks TCF v2 request when legitimate interest required' , function ( ) {
567
+ const bidderRequest = {
568
+ gdprConsent : {
569
+ gdprApplies : true ,
570
+ consentString : 'consentString' ,
571
+ vendorData : {
572
+ vendor : {
573
+ consents : {
574
+ '11' : true
575
+ }
576
+ } ,
577
+ purpose : {
578
+ consents : {
579
+ '1' : true
580
+ }
581
+ } ,
582
+ publisher : {
583
+ restrictions : {
584
+ '1' : {
585
+ '11' : 2
586
+ }
587
+ }
588
+ }
589
+ } ,
590
+ apiVersion : 2
591
+ }
592
+ } ;
593
+
594
+ const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
595
+
596
+ expect ( requests ) . to . equal ( undefined ) ;
597
+ } ) ;
598
+
358
599
it ( 'propagates US Privacy/CCPA consent information' , function ( ) {
359
600
const bidderRequest = { uspConsent : 'consentString' }
360
601
const requests = qcSpec . buildRequests ( [ bidRequest ] , bidderRequest ) ;
0 commit comments