-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtemplate.tpl
1024 lines (979 loc) · 76.3 KB
/
template.tpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
___TERMS_OF_SERVICE___
By creating or modifying this file you agree to Google Tag Manager's Community
Template Gallery Developer Terms of Service available at
https://developers.google.com/tag-manager/gallery-tos (or such other URL as
Google may provide), as modified from time to time.
___INFO___
{
"type": "TAG",
"id": "cvt_temp_public_id",
"version": 1,
"securityGroups": [],
"displayName": "Osano Consent Manager",
"categories": ["PERSONALIZATION", "TAG_MANAGEMENT"],
"brand": {
"id": "brand_dummy",
"displayName": "",
"thumbnail": "data:image/png;base64,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AAiAAAhYnAAEgMUdCPNBAARAAARAIBoCEADRUMM9IAACIAACIGBxAhAAFncgzAcBEAABEACBaAhAAERDDfeAAAiAAAiAgMUJQABY3IEwHwRAAARAAASiIQABEA013AMCIAACIAACFicAAWBxB8J8EAABEAABEIiGAARANNRwDwiAAAiAAAhYnAAEgMUdCPNBAARAAARAIBoCEADRUMM9IAACIAACIGBxAhAAFncgzAcBEAABEACBaAhAAERDDfeAAAiAAAiAgMUJQABY3IEwHwRAAARAAASiIQABEA013AMCIAACIAACFicAAWBxB8J8EAABEAABEIiGAARANNRwDwiAAAiAAAhYnAAEgMUdCPNBAARAAARAIBoCEADRUMM9IAACIAACIGBxAhAAFncgzAcBEAABEACBaAhAAERDDfeAAAiAAAiAgMUJQABY3IEwHwRAAARAAASiIQABEA013AMCIAACIAACFicAAWBxB8J8EAABEAABEIiGAARANNRwDwiAAAiAAAhYnAAEgMUdCPNBAARAAARAIBoCEADRUMM9IAACIAACIGBxAhAAFncgzAcBEAABEACBaAhAAERDDfeAAAiAAAiAgMUJQABY3IEwHwRAAARAAASiIQABEA013AMCIAACIAACFicAAWBxB8J8EAABEAABEIiGAARANNRwDwiAAAiAAAhYnAAEgMUdCPNBAARAAARAIBoCEADRUMM9IAACIAACIGBxAhAAFncgzAcBEAABEACBaAhAAERDDfeAAAiAAAiAgMUJQABY3IEwHwRAAARAAASiIQABEA013AMCIAACIAACFicAAWBxB8J8EAABEAABEIiGAARANNRwDwiAAAiAAAhYnAAEgMUdCPNBAARAAARAIBoCEADRUMM9IAACIAACIGBxAhAAFncgzAcBEAABEACBaAhAAERDDfeAAAiAAAiAgMUJQABY3IEwHwRAAARAAASiIfD/Y1Av/lG2DPEAAAAASUVORK5CYII\u003d"
},
"description": "Adds the Osano Consent Manager to Tag Manager.\n\nNOTE: also requires a custom trigger for all scripts. See Osano documentation.",
"containerContexts": [
"WEB"
]
}
___TEMPLATE_PARAMETERS___
[
{
"type": "TEXT",
"name": "customerId",
"displayName": "Customer ID",
"simpleValueType": true,
"help": "Your Osano customer ID. In your Consent Management configuration, click the Get Code button. This is the value between the slashes right after \"cmp.osano.com\".",
"valueHint": "aBcDxYz1234567890",
"alwaysInSummary": true,
"valueValidators": [
{
"type": "NON_EMPTY"
},
{
"type": "STRING_LENGTH",
"args": [
15,
25
]
}
]
},
{
"type": "TEXT",
"name": "ccId",
"displayName": "Customer Configuration ID",
"simpleValueType": true,
"alwaysInSummary": true,
"help": "Your Osano CM configuration ID. In your Consent Management configuration, click the Get Code button. This is the value between the slashes right before \"osano.js\".",
"valueValidators": [
{
"type": "REGEX",
"args": [
"[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}"
]
}
],
"valueHint": "abcd1234-ab12-cd34-ef56-abcdef123456"
},
{
"type": "PARAM_TABLE",
"name": "regionalConsentDefaults",
"displayName": "Regional Consent Mode Defaults",
"paramTableColumns": [
{
"param": {
"type": "TEXT",
"name": "region",
"displayName": "Region Code(s)",
"simpleValueType": true,
"help": "A list of two-character country codes, separated by commas, optionally also including the two-character province code separated by a hyphen",
"valueHint": "Ex: mx, us-tx",
"valueValidators": [
{
"type": "NON_EMPTY"
},
{
"type": "REGEX",
"args": [
"^[a-zA-Z]{2}(-[a-zA-Z]{2})?(,\\s*[a-zA-Z]{2}(-[a-zA-Z]{2})?)*$"
],
"errorMessage": "Must contain two or four character country codes separated by commas (e.g., \"us-tx, mx\")"
}
]
},
"isUnique": true
},
{
"param": {
"type": "SELECT",
"name": "ad_storage",
"displayName": "ad_storage",
"macrosInSelect": false,
"selectItems": [
{
"value": "granted",
"displayValue": "On by Default"
},
{
"value": "denied",
"displayValue": "Off by Default"
}
],
"simpleValueType": true,
"notSetText": "Not Set",
"defaultValue": ""
},
"isUnique": false
},
{
"param": {
"type": "SELECT",
"name": "ad_user_data",
"displayName": "ad_user_data",
"macrosInSelect": false,
"selectItems": [
{
"value": "granted",
"displayValue": "On by Default"
},
{
"value": "denied",
"displayValue": "Off by Default"
}
],
"simpleValueType": true,
"notSetText": "Not Set",
"defaultValue": ""
},
"isUnique": false
},
{
"param": {
"type": "SELECT",
"name": "ad_personalization",
"displayName": "ad_personalization",
"macrosInSelect": false,
"selectItems": [
{
"value": "granted",
"displayValue": "On by Default"
},
{
"value": "denied",
"displayValue": "Off by Default"
}
],
"simpleValueType": true,
"notSetText": "Not Set",
"defaultValue": ""
},
"isUnique": false
},
{
"param": {
"type": "SELECT",
"name": "analytics_storage",
"displayName": "analytics_storage",
"macrosInSelect": false,
"selectItems": [
{
"value": "granted",
"displayValue": "On by Default"
},
{
"value": "denied",
"displayValue": "Off by Default"
}
],
"simpleValueType": true,
"notSetText": "Not Set",
"defaultValue": ""
},
"isUnique": false
},
{
"param": {
"type": "SELECT",
"name": "functionality_storage",
"displayName": "functionality_storage",
"macrosInSelect": false,
"selectItems": [
{
"value": "granted",
"displayValue": "On by Default"
},
{
"value": "denied",
"displayValue": "Off by Default"
}
],
"simpleValueType": true,
"notSetText": "Not Set",
"defaultValue": ""
},
"isUnique": false
},
{
"param": {
"type": "SELECT",
"name": "personalization_storage",
"displayName": "personalization_storage",
"macrosInSelect": false,
"selectItems": [
{
"value": "granted",
"displayValue": "On by Default"
},
{
"value": "denied",
"displayValue": "Off by Default"
}
],
"simpleValueType": true,
"notSetText": "Not Set",
"defaultValue": ""
},
"isUnique": false
},
{
"param": {
"type": "SELECT",
"name": "security_storage",
"displayName": "security_storage",
"macrosInSelect": false,
"selectItems": [
{
"value": "granted",
"displayValue": "On by Default"
},
{
"value": "denied",
"displayValue": "Off by Default"
}
],
"simpleValueType": true,
"notSetText": "Not Set",
"defaultValue": ""
},
"isUnique": false
}
],
"newRowButtonText": "Add Regional Consent Default"
}
]
___SANDBOXED_JS_FOR_WEB_TEMPLATE___
const DEFAULT_CONSENT = {
ESSENTIAL: 'ACCEPT',
ANALYTICs: 'DENY',
MARKETING: 'DENY',
PERSONALIZATION: 'DENY',
};
/* eslint-disable security/detect-object-injection,no-undef */
const callInWindow = require('callInWindow');
const createQueue = require('createQueue');
const getCookieValues = require('getCookieValues');
const getUrl = require('getUrl');
const gtagSet = require('gtagSet');
const injectScript = require('injectScript');
const log = require('logToConsole');
const JSON = require('JSON');
const queryPermission = require('queryPermission');
const setDefaultConsentState = require('setDefaultConsentState');
const updateConsentState = require('updateConsentState');
log('data =', data);
const COOKIE_NAME = 'osano_consentmanager';
const EVENTS = {
INIT: 'osano-cm-initialized',
CONSENT_SAVED: 'osano-cm-consent-saved',
};
const ACCEPT = 'ACCEPT';
const DENIED = 'denied';
const GRANTED = 'granted';
const consentMap = {
MARKETING: ['ad_storage', 'ad_user_data', 'ad_personalization'],
ANALYTICS: ['analytics_storage'],
ESSENTIAL: ['functionality_storage', 'security_storage'],
PERSONALIZATION: ['personalization_storage'],
};
const interpretConsent = osanoConsent => {
const consent = {};
// We're using the `consentMap` to validate props so the for-in is guarded
// eslint-disable-next-line guard-for-in
for (const category in osanoConsent) {
const acceptOrDeny = osanoConsent[category];
const storageProps = consentMap[('' + category).toUpperCase()];
if (storageProps && storageProps.length) {
const consented = ('' + acceptOrDeny).toUpperCase() === ACCEPT;
storageProps.forEach(prop => (consent[prop] = consented ? GRANTED : DENIED));
}
}
return consent;
};
const setRegionalDefaultConsents = () => {
const regionalConsentDefaults = data.regionalConsentDefaults || [];
for (const regionalDefault of regionalConsentDefaults) {
const defaultConsent = {};
for (const consentCategory in regionalDefault) {
if (regionalDefault[consentCategory]) {
defaultConsent[consentCategory] = regionalDefault[consentCategory];
}
}
defaultConsent.region = regionalDefault.region
.split(',')
.map(region => region.trim().toUpperCase())
.filter(r => !!r);
setDefaultConsentState(defaultConsent);
}
};
/* prettier-ignore */
(function () {
const defaultConsent = interpretConsent(DEFAULT_CONSENT);
defaultConsent.wait_for_update = 500;
setDefaultConsentState(defaultConsent);
setRegionalDefaultConsents();
}());
/* prettier-ignore-end */
const decrypt=(r,e)=>{r=r.toString().trim();if(0===r.length)return"";var t=require("decodeUriComponent");const n=require("encodeUriComponent"),f=require("Math"),o={0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57," ":32,"!":33,'"':34,"#":35,"$":36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,a:97,b:98,c:99,d:100,e:101,f:102,g:103,h:104,i:105,j:106,k:107,l:108,m:109,n:110,o:111,p:112,q:113,r:114,s:115,t:116,u:117,v:118,w:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126},l={32:" ",33:"!",34:'"',35:"#",36:"$",37:"%",38:"&",39:"'",40:"(",41:")",42:"*",43:"+",44:",",45:"-",46:".",47:"/",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",58:":",59:";",60:"<",61:"=",62:">",63:"?",64:"@",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",91:"[",92:"\\",93:"]",94:"^",95:"_",96:"`",97:"a",98:"b",99:"c",100:"d",101:"e",102:"f",103:"g",104:"h",105:"i",106:"j",107:"k",108:"l",109:"m",110:"n",111:"o",112:"p",113:"q",114:"r",115:"s",116:"t",117:"u",118:"v",119:"w",120:"x",121:"y",122:"z",123:"{",124:"|",125:"}",126:"~"},i={0:52,1:53,2:54,3:55,4:56,5:57,6:58,7:59,8:60,9:61,A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25,a:26,b:27,c:28,d:29,e:30,f:31,g:32,h:33,i:34,j:35,k:36,l:37,m:38,n:39,o:40,p:41,q:42,r:43,s:44,t:45,u:46,v:47,w:48,x:49,y:50,z:51,"+":62,"/":63};var p=e=>{var t=[];for(let r=0;r<e.length;r+=4)t.push(e[r+3]<<24|e[r+2]<<16|e[r+1]<<8|e[r]);return t;};return t((r=>{var e=[["~","%7E"],["'","%27"],["!","%21"],["(","%28"],[")","%29"],["%2F","/"],["%2B","+"],["%40","@"]];let t=n(r);for(let r=0;r<e.length;)if(-1===(t=t.replace(e[r][0],e[r][1])).indexOf(e[r][0]))r++;return t;})((e=>{let t="";for(let r=0;r<e.length;r++){var n=e[r];t+=[255&n,n>>>8&255,n>>>16&255,n>>>24&255].reduce((r,e)=>r+(l[e]||""),"");}return t;})(((e,t)=>{var n=e.length,r=2654435769,o=f.floor(6+52/n);let l,i=e[0],p,u,a=o*r;for(;0!==a;){u=a>>>2&3;for(let r=n-1;0<=r;r--){p=((l=e[0<r?r-1:n-1])>>>5^i<<2)+(i>>>3^l<<4)^(a^i)+(t[3&r^u]^l);i=e[r]=e[r]-p;}a=a-r;}return e;})(p((e=>{var t=[];for(let r=0;r<e.length;r+=4){var n=i[e[r]]<<18|i[e[r+1]]<<12|i[e[r+2]]<<6|i[e[r+3]];t.push(n>>16&255);t.push(n>>8&255);t.push(255&n);}var r=e.substring(e.length-2);if("="===r[1])t.pop();if("="===r[0])t.pop();return t;})(r.split("-").join("+").split("_").join("/"))),p(e.toString().slice(0,16).split("").map(r=>o[r]))))));};
/**
* Called when a visitor grants/denies consent.
* @param {Object.<string,['ACCEPT'|'DENY']>} Object containing user consent settings.
*/
const onUserConsent = consent => {
if (consent) {
updateConsentState(interpretConsent(consent));
}
};
// Check if cookie is set. If it is, run updateConsentState.
if (queryPermission('get_cookies', COOKIE_NAME) && queryPermission('get_url', 'host')) {
const userCookie = getCookieValues(COOKIE_NAME);
if (userCookie && userCookie.length) {
log('Found saved consent cookie', COOKIE_NAME, userCookie);
const decryptedConsent = decrypt(userCookie, getUrl('host'));
const osanoConsent = JSON.parse(decryptedConsent);
if (osanoConsent && osanoConsent.consent) {
onUserConsent(osanoConsent.consent);
log('Consent state updated');
} else {
log('Invalid consent string');
}
} else {
log('No Cookie to process...moving on');
}
} else {
// No permissions
log('No Cookie Permissions');
}
gtagSet('developer_id.dMzRlOT', true);
const dataLayerPush = createQueue('dataLayer');
const ccId = data.ccId || '';
const customerId = data.customerId || '';
const env = data.env || '';
const url = 'https://cmp' + env + '.osano.com/' + customerId + '/' + ccId + '/osano.js';
log('Injecting script at', url);
// If the script loaded successfully, signal success
const onSuccess = () => {
callInWindow('Osano.cm.addEventListener', EVENTS.INIT, onUserConsent);
callInWindow('Osano.cm.addEventListener', EVENTS.INIT, () => {
dataLayerPush({ event: 'osano__cm--load-success' });
});
callInWindow('Osano.cm.addEventListener', EVENTS.CONSENT_SAVED, onUserConsent);
data.gtmOnSuccess();
};
// If the script fails to load, signal failure
const onFailure = () => {
dataLayerPush({ event: 'osano__cm--load-failure' });
data.gtmOnFailure();
};
// If the URL input by the user matches the permissions set for the template,
// inject the script with the onSuccess and onFailure methods as callbacks.
if (queryPermission('inject_script', url)) {
injectScript(url, onSuccess, onFailure);
} else {
log('No Script Inject Permissions');
data.gtmOnFailure();
}
___WEB_PERMISSIONS___
[
{
"instance": {
"key": {
"publicId": "logging",
"versionId": "1"
},
"param": [
{
"key": "environments",
"value": {
"type": 1,
"string": "debug"
}
}
]
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "access_globals",
"versionId": "1"
},
"param": [
{
"key": "keys",
"value": {
"type": 2,
"listItem": [
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "key"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
},
{
"type": 1,
"string": "execute"
}
],
"mapValue": [
{
"type": 1,
"string": "Osano.cm.addEventListener"
},
{
"type": 8,
"boolean": false
},
{
"type": 8,
"boolean": false
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "key"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
},
{
"type": 1,
"string": "execute"
}
],
"mapValue": [
{
"type": 1,
"string": "dataLayer"
},
{
"type": 8,
"boolean": true
},
{
"type": 8,
"boolean": true
},
{
"type": 8,
"boolean": false
}
]
}
]
}
}
]
},
"clientAnnotations": {
"isEditedByUser": true
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "get_cookies",
"versionId": "1"
},
"param": [
{
"key": "cookieAccess",
"value": {
"type": 1,
"string": "specific"
}
},
{
"key": "cookieNames",
"value": {
"type": 2,
"listItem": [
{
"type": 1,
"string": "osano_consentmanager"
}
]
}
}
]
},
"clientAnnotations": {
"isEditedByUser": true
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "inject_script",
"versionId": "1"
},
"param": [
{
"key": "urls",
"value": {
"type": 2,
"listItem": [
{
"type": 1,
"string": "https://*.osano.com/"
}
]
}
}
]
},
"clientAnnotations": {
"isEditedByUser": true
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "access_consent",
"versionId": "1"
},
"param": [
{
"key": "consentTypes",
"value": {
"type": 2,
"listItem": [
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "ad_storage"
},
{
"type": 8,
"boolean": true
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "analytics_storage"
},
{
"type": 8,
"boolean": true
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "functionality_storage"
},
{
"type": 8,
"boolean": true
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "personalization_storage"
},
{
"type": 8,
"boolean": true
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "security_storage"
},
{
"type": 8,
"boolean": true
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "wait_for_update"
},
{
"type": 8,
"boolean": false
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "ad_user_data"
},
{
"type": 8,
"boolean": false
},
{
"type": 8,
"boolean": true
}
]
},
{
"type": 3,
"mapKey": [
{
"type": 1,
"string": "consentType"
},
{
"type": 1,
"string": "read"
},
{
"type": 1,
"string": "write"
}
],
"mapValue": [
{
"type": 1,
"string": "ad_personalization"
},
{
"type": 8,
"boolean": false
},
{
"type": 8,
"boolean": true
}
]
}
]
}
}
]
},
"clientAnnotations": {
"isEditedByUser": true
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "get_url",
"versionId": "1"
},
"param": [
{
"key": "urlParts",
"value": {
"type": 1,
"string": "specific"
}
},
{
"key": "host",
"value": {
"type": 8,
"boolean": true
}
},
{
"key": "queriesAllowed",
"value": {
"type": 1,
"string": "any"
}
}
]
},
"clientAnnotations": {
"isEditedByUser": true
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "write_data_layer",
"versionId": "1"
},
"param": [
{
"key": "keyPatterns",
"value": {
"type": 2,
"listItem": [
{
"type": 1,
"string": "developer_id.dMzRlOT"
}
]
}
}
]
},
"clientAnnotations": {
"isEditedByUser": true
},
"isRequired": true
}
]
___TESTS___
scenarios:
- name: It can decode an Osano consent string
code: |-
const mockData = {
// Mocked field values
customerId: 'customerId',
ccId: 'configId',
env: 'ci'
};
mock('queryPermission', () => true);
mock('getCookieValues', () => 'df7GrM86QPX_1od75FVPzfmy6VCRaW90pjP0V29ijeHI56mt0m0dKVk6AXEnF-0kosL0S9tYrLYnsqixTzofSh7Fl98nFOagG4MIkdUt_y-I8t79U8sQgtAvI_a6rB1QFZRKtym52mSqmNOR_Rcadrghb59LzgROlAOvfeWGBYDkgz_q4Y7aNkDVv-LnYzF6IdrpOzvKUc38UCmmAGzqQX3q_poDsvQ-HN20oTqfA-o3WdAQUYaKi4RC0vpnRb0JeJpyStrurZahoPW27rODAEfxhWUOTktbFRljyQ==');
mock('getUrl', () => 'devstatic.osano.com');
mock('injectScript', (_, onSuccess) => onSuccess());
// Call runCode to run the template's code.
runCode(mockData);
// Verify that the tag finished successfully.
assertApi('updateConsentState').wasCalledWith({"functionality_storage":"granted","security_storage":"granted","ad_storage":"granted","personalization_storage":"granted","analytics_storage":"granted","ad_user_data":"granted","ad_personalization":"granted"});
- name: It can respond to an Osano init event
code: "const mockData = {\n customerId: 'customerId',\n ccId: 'configId',\n env:\
\ 'ci'\n};\n\nconst CONSENT = {\"ESSENTIAL\":\"ACCEPT\",\"STORAGE\":\"ACCEPT\"\
,\"MARKETING\":\"ACCEPT\",\"PERSONALIZATION\":\"ACCEPT\",\"ANALYTICS\":\"DENY\"\
,\"OPT_OUT\":\"DENY\"};\n\nmock('queryPermission', () => true);\nconst initCallbacks\
\ = [];\nmock('callInWindow', function(fn) {\n if (fn === 'Osano.cm.addEventListener'\
\ && arguments[1] === 'osano-cm-initialized') {\n initCallbacks.push(arguments[2]);\n\
\ }\n});\n \nmock('injectScript', (_, onSuccess) => onSuccess());\n\nrunCode(mockData);\n\
\nlet initCallback = initCallbacks.pop();\nwhile (initCallback) {\n assertThat(initCallback).isFunction();\n\
\ initCallback(CONSENT);\n initCallback = initCallbacks.pop();\n}\n\nassertApi('updateConsentState').wasCalledWith({\"\
functionality_storage\":\"granted\",\"security_storage\":\"granted\",\"ad_storage\"\
:\"granted\",\"personalization_storage\":\"granted\",\"analytics_storage\":\"\
denied\",\"ad_user_data\":\"granted\",\"ad_personalization\":\"granted\"});\n"
- name: It can response to an Osano consent-saved event
code: "const mockData = {\n customerId: 'customerId',\n ccId: 'configId',\n env:\
\ 'ci'\n};\n\nconst CONSENT = {\"ESSENTIAL\":\"ACCEPT\",\"STORAGE\":\"DENY\",\"\
MARKETING\":\"DENY\",\"PERSONALIZATION\":\"ACCEPT\",\"ANALYTICS\":\"ACCEPT\",\"\
OPT_OUT\":\"DENY\"};\n\nmock('queryPermission', () => true);\nlet initConsent,\
\ userGivesConsent;\nmock('callInWindow', function(fn) {\n if (fn === 'Osano.cm.addEventListener')\
\ {\n if (arguments[1] === 'osano-cm-initialized') {\n initConsent = arguments[2];\n\
\ } else if (arguments[1] === 'osano-cm-consent-saved') {\n userGivesConsent\
\ = arguments[2];\n }\n }\n});\n \nmock('injectScript', (_, onSuccess)\
\ => onSuccess());\n\nrunCode(mockData);\nassertThat(initConsent).isFunction();\n\
initConsent();\nassertThat(userGivesConsent).isFunction();\nuserGivesConsent(CONSENT);\n\
\nassertApi('updateConsentState').wasCalledWith({\"functionality_storage\":\"\
granted\",\"security_storage\":\"granted\",\"ad_storage\":\"denied\",\"personalization_storage\"\
:\"granted\",\"analytics_storage\":\"granted\",\"ad_user_data\":\"denied\",\"\
ad_personalization\":\"denied\"});\n"
- name: It sets regional defaults
code: |-
const mockData = {
regionalConsentDefaults: [{
region: 'us-tx, mx',
ad_storage: 'granted',
functionality_storage: 'denied'
}, {
region: 'CA',
personalization_storage: 'granted',
security_storage: ''
}, {
region: 'gb, fr, mx',
ad_user_data: 'denied',
}]
};
runCode(mockData);
assertApi('setDefaultConsentState').wasCalledWith({
functionality_storage: "granted",
security_storage: "granted",
analytics_storage: "denied",
ad_storage: "denied",
ad_user_data: "denied",