Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js')
-rw-r--r--plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js267
1 files changed, 267 insertions, 0 deletions
diff --git a/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js b/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js
new file mode 100644
index 0000000000..5fff7be1d2
--- /dev/null
+++ b/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js
@@ -0,0 +1,267 @@
+/*!
+ * Piwik - free/libre analytics platform
+ *
+ * Screenshot integration tests.
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("PrivacyManager", function () {
+ this.timeout(0);
+
+ this.fixture = "Piwik\\Plugins\\PrivacyManager\\tests\\Fixtures\\MultipleSitesMultipleVisitsFixture";
+
+ var generalParams = 'idSite=1&period=day&date=2017-01-02',
+ urlBase = '?module=PrivacyManager&' + generalParams + '&action=';
+
+ before(function () {
+ testEnvironment.pluginsToLoad = ['PrivacyManager'];
+ testEnvironment.save();
+ });
+
+ function setAnonymizeStartEndDate(page)
+ {
+ // make sure tests do not fail every day
+ page.evaluate(function () {
+ $('input.anonymizeStartDate').val('2018-03-02').change();
+ $('input.anonymizeEndDate').val('2018-03-02').change();
+ });
+ }
+
+ function loadActionPage(page, action)
+ {
+ page.load(urlBase + action);
+
+ if (action === 'privacySettings') {
+ setAnonymizeStartEndDate(page);
+ }
+ }
+
+ function selectModalButton(page, button)
+ {
+ page.click('.modal.open .modal-footer a:contains('+button+')');
+ }
+
+ function findDataSubjects(page)
+ {
+ page.click('.findDataSubjects .btn');
+ }
+
+ function anonymizePastData(page)
+ {
+ page.click('.anonymizePastData .btn');
+ }
+
+ function deleteDataSubjects(page)
+ {
+ page.click('.deleteDataSubjects input');
+ }
+
+ function enterSegmentMatchValue(page, value) {
+ page.execCallback(function () {
+ page.webpage.evaluate(function (theVal) {
+ $('.metricValueBlock input').each(function (index) {
+ $(this).val(theVal).change();
+ });
+ }, value);
+ });
+ }
+
+ function selectVisitColumn(page, title)
+ {
+ page.evaluate(function () {
+ $('.selectedVisitColumns:last input.select-dropdown').click();
+ });
+ page.click('.selectedVisitColumns:last .dropdown-content li:contains(' + title + ')');
+ }
+
+ function selectActionColumn(page, title)
+ {
+ page.evaluate(function () {
+ $('.selectedActionColumns:last input.select-dropdown').click();
+ });
+ page.execCallback(function () {
+ page.webpage.evaluate(function (theTitle) {
+ $('.selectedActionColumns:last .dropdown-content li:contains(' + theTitle + ')').click();
+ }, title);
+ });
+ }
+
+ function capturePage(screenshotName, test, done) {
+ expect.screenshot(screenshotName).to.be.captureSelector('.pageWrap,#notificationContainer,.modal.open', test, done);
+ }
+
+ function captureAnonymizeLogData(screenshotName, test, done) {
+ expect.screenshot(screenshotName).to.be.captureSelector('.logDataAnonymizer,#notificationContainer,.modal.open,.logDataAnonymizer table', test, done);
+ }
+
+ function captureModal(screenshotName, test, done) {
+ expect.screenshot(screenshotName).to.be.captureSelector('.modal.open', test, done);
+ }
+
+ it('should load privacy opt out page', function (done) {
+ capturePage('users_opt_out_default', function (page) {
+ loadActionPage(page, 'usersOptOut');
+ }, done);
+ });
+
+ it('should load privacy asking for consent page', function (done) {
+ capturePage('consent_default', function (page) {
+ loadActionPage(page, 'consent');
+ }, done);
+ });
+
+ it('should load GDPR overview page', function (done) {
+ capturePage('gdpr_overview', function (page) {
+ loadActionPage(page, 'gdprOverview');
+ }, done);
+ });
+
+ it('should load privacy settings page', function (done) {
+ capturePage('privacy_settings_default', function (page) {
+ loadActionPage(page, 'privacySettings');
+ }, done);
+ });
+
+ it('should anonymize ip and visit column', function (done) {
+ captureAnonymizeLogData('anonymizelogdata_anonymizeip_and_visit_column_prefilled', function (page) {
+ page.click('[name=anonymizeIp] label');
+ page.wait(500);
+ selectVisitColumn(page, 'config_browser_name');
+ selectVisitColumn(page, 'config_cookie');
+ }, done);
+ });
+
+ it('should show a confirmation message before executing any anonymization', function (done) {
+ captureModal('anonymizelogdata_anonymizeip_and_visit_column_confirmation_message', function (page) {
+ anonymizePastData(page);
+ }, done);
+ });
+
+ it('should be able to cancel anonymization of past data', function (done) {
+ captureAnonymizeLogData('anonymizelogdata_anonymizeip_and_visit_column_cancelled', function (page) {
+ selectModalButton(page, 'No');
+ }, done);
+ });
+
+ it('should be able to confirm anonymization of past data', function (done) {
+ captureAnonymizeLogData('anonymizelogdata_anonymizeip_and_visit_column_confirmed', function (page) {
+ anonymizePastData(page);
+ selectModalButton(page, 'Yes');
+ setAnonymizeStartEndDate(page);
+ }, done);
+ });
+
+ it('should prefill anonymize location and action column', function (done) {
+ captureAnonymizeLogData('anonymizelogdata_anonymizelocation_anduserid_and_action_column_prefilled', function (page) {
+ loadActionPage(page, 'privacySettings');
+ page.click('[name=anonymizeLocation] label');
+ page.click('[name=anonymizeTheUserId] label');
+ page.wait(500);
+ selectActionColumn(page, 'time_spent_ref_action');
+ selectActionColumn(page, 'idaction_content_name');
+ }, done);
+ });
+
+ it('should confirm anonymize location and action column', function (done) {
+ captureAnonymizeLogData('anonymizelogdata_anonymizelocation_anduserid_and_action_column_confirmed', function (page) {
+ anonymizePastData(page);
+ selectModalButton(page, 'Yes');
+ page.wait(1000);
+ setAnonymizeStartEndDate(page);
+ }, done);
+ });
+
+ it('should anonymize only one site and different date pre filled', function (done) {
+ captureAnonymizeLogData('anonymizelogdata_one_site_and_custom_date_prefilled', function (page) {
+ page.click('.form-group #anonymizeSite .title');
+ page.wait(1000);
+ page.click(".form-group #anonymizeSite [title='Site 1']");
+ page.click('[name=anonymizeIp] label');
+ page.evaluate(function () {
+ $('input.anonymizeStartDate').val('2017-01-01').change();
+ $('input.anonymizeEndDate').val('2017-02-14').change();
+ });
+ }, done);
+ });
+
+ it('should anonymize only one site and different date confirmed', function (done) {
+ captureAnonymizeLogData('anonymizelogdata_one_site_and_custom_date_confirmed', function (page) {
+ anonymizePastData(page);
+ selectModalButton(page, 'Yes');
+ page.wait(1000);
+ setAnonymizeStartEndDate(page);
+ }, done);
+ });
+
+ it('should load GDPR tools page', function (done) {
+ capturePage('gdpr_tools_default', function (page) {
+ loadActionPage(page, 'gdprTools');
+ }, done);
+ });
+
+ it('should show no visitor found message', function (done) {
+ capturePage('gdpr_tools_no_visits_found', function (page) {
+ enterSegmentMatchValue(page, 'userfoobar')
+ findDataSubjects(page);
+ }, done);
+ });
+
+ it('should find visits', function (done) {
+ capturePage('gdpr_tools_visits_found', function (page) {
+ enterSegmentMatchValue(page, 'userId203');
+
+ findDataSubjects(page);
+ }, done);
+ });
+
+ it('should be able to show visitor profile', function (done) {
+ capturePage('gdpr_tools_visits_showprofile', function (page) {
+ page.click('.visitorLogTooltip:first');
+ }, done);
+ });
+
+ it('should be able to add IP to segment search with one click', function (done) {
+ capturePage('gdpr_tools_enrich_segment_by_ip', function (page) {
+ page.click('#Piwik_Popover .visitor-profile-close');
+ page.click('.visitorIp:first a');
+ }, done);
+ });
+
+ it('should be able to uncheck a visit', function (done) {
+ capturePage('gdpr_tools_uncheck_one_visit', function (page) {
+ page.click('.entityTable tbody tr:nth-child(2) .checkInclude label');
+ }, done);
+ });
+
+ it('should ask for confirmation before deleting any visit', function (done) {
+ capturePage('gdpr_tools_delete_visit_unconfirmed', function (page) {
+ deleteDataSubjects(page);
+ }, done);
+ });
+
+ it('should be able to cancel deletion and not delete any data', function (done) {
+ capturePage('gdpr_tools_delete_visit_cancelled', function (page) {
+ selectModalButton(page, 'No');
+ }, done);
+ });
+
+ it('should verify really no data deleted', function (done) {
+ capturePage('gdpr_tools_delete_visit_cancelled_verified_no_data_deleted', function (page) {
+ loadActionPage(page, 'gdprTools');
+ page.wait(1000);
+ enterSegmentMatchValue(page, 'userId203');
+ findDataSubjects(page);
+ page.click('.entityTable tbody tr:nth-child(2) .checkInclude label');
+ }, done);
+ });
+
+ it('should be able to confirm deletion and then actually delete data', function (done) {
+ capturePage('gdpr_tools_delete_visit_confirmed', function (page) {
+ deleteDataSubjects(page);
+ selectModalButton(page, 'Yes');
+ }, done);
+ });
+
+}); \ No newline at end of file