File size: 5,339 Bytes
e852054
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
/*!
 * Matomo - free/libre analytics platform
 *
 * @link https://matomo.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */
(function () {

    function initAnonymizedTrackers() {
        "use strict";
        initTrackers(true);
    }

    function initNotAnonymizedTrackers() {
        "use strict";
        initTrackers(false);
    }

    function initTrackers(anonymize) {
        "use strict";

        piwikUsageTracking.userId = "testuserid";

        for (var i = 0; i < piwikUsageTracking.targets.length; i++) {
            piwikUsageTracking.targets[i].useAnonymization = anonymize;
        }

        piwikUsageTracking.initialized = false;
        piwikUsageTracking.createTrackersIfNeeded();
    }

    beforeEach(initAnonymizedTrackers);

    describe('AnonymousPiwikUsageMeasurementTracking', function() {
        var anonymousDomain = 'http://anonymous.piwikdomain.org';
        var trackingDomain = piwikUsageTracking.trackingDomain;

        describe('#initialized', function() {
            it('should be initialized automatically', function() {
                expect(piwikUsageTracking.initialized).to.be.true;
                expect(piwikUsageTracking.trackers.length).to.eql(3);
            });

            it('should be initialized by createTrackers method if not initialized yet', function() {
                piwikUsageTracking.initialized = false;
                piwikUsageTracking.createTrackersIfNeeded();
                expect(piwikUsageTracking.initialized).to.be.true;
                expect(piwikUsageTracking.trackers.length).to.eql(3);
            });

            it('should be initialized by a push method', function() {
                piwikUsageTracking.initialized = false;
                _paq.push(['getTrackerUrl']);
                expect(piwikUsageTracking.initialized).to.be.true;
                expect(piwikUsageTracking.trackers.length).to.eql(3);
            });
        });


        describe('#trackers', function() {
            it('should have created multiple trackers with correct idSite, domain and custom variables', function() {
                var tracker1 = piwikUsageTracking.trackers[0];
                var tracker2 = piwikUsageTracking.trackers[1];
                var tracker3 = piwikUsageTracking.trackers[2];

                expect(tracker1.getTrackerUrl()).to.eql('http://localhost/matomo.php');
                expect(tracker1.getSiteId()).to.eql(1);
                expect(tracker1.getCustomVariable(1, 'visit')).to.eql(['Access', 'user']);

                expect(tracker2.getTrackerUrl()).to.eql('http://127.0.0.1/matomo.php');
                expect(tracker2.getSiteId()).to.eql(20);
                expect(tracker2.getCustomVariable(1, 'visit')).to.eql(['Access', 'user']);

                expect(tracker3.getTrackerUrl()).to.eql('http://localhost/matomo.php');
                expect(tracker3.getSiteId()).to.eql(33);
                expect(tracker3.getCustomVariable(1, 'visit')).to.eql(['Access', 'user']);
            });

            it('should anonymize url and referrer by default', function() {

                for (var i = 1; i < piwikUsageTracking.trackers.length; i++) {
                    var tracker = piwikUsageTracking.trackers[i];

                    var request = tracker.getRequest('');
                    expect(request).to.contain('&url=http%3A%2F%2Fdemo.matomo.org%2F%3F');
                    expect(request).to.contain('&_cvar=%7B%221%22%3A%5B%22Access%22%2C%22user%22%5D%7D');
                    expect(request).to.not.contain('urlref=');
                    expect(request).to.not.contain('uid=testuserid');
                }

            });

            it('should not anonymize url and referrer', function() {

                initNotAnonymizedTrackers();

                for (var i = 1; i < piwikUsageTracking.trackers.length; i++) {
                    var tracker = piwikUsageTracking.trackers[i];

                    var request = tracker.getRequest('');
                    expect(request).to.not.contain('&url=http%3A%2F%2Fdemo.matomo.org%2F%3F');
                    expect(request).to.contain('urlref=');
                    expect(request).to.contain('uid=testuserid');

                }

            });

        });

        describe('_paq.push', function() {
            it('should call a method with parameters on all tracker instances', function() {
                var tracker1 = piwikUsageTracking.trackers[0];
                var tracker2 = piwikUsageTracking.trackers[1];
                var tracker3 = piwikUsageTracking.trackers[2];

                _paq.push(['setCustomData', 'mykey', 'myvalue']);

                expect(tracker1.getCustomData()).to.eql({mykey: 'myvalue'});
                expect(tracker2.getCustomData()).to.eql({mykey: 'myvalue'});
                expect(tracker3.getCustomData()).to.eql({mykey: 'myvalue'});
            });

            it('should not fail when calling a non existing tracker method', function() {
                _paq.push(['setNotExisTiNGmeThod', 'mykey', 'myvalue']);
            });

            it('should call a function in the context of tracker', function() {
                _paq.push([function () {
                    expect(this.getSiteId()).to.be.at.least(1);
                }]);
            });
        });
    });
})();