Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Differences Between: [Versions 310 and 401] [Versions 39 and 401]

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  namespace core_auth;
  18  
  19  /**
  20   * Digital consent helper testcase.
  21   *
  22   * @package    core_auth
  23   * @copyright  2018 Mihail Geshoski
  24   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  25   */
  26  class digital_consent_test extends \advanced_testcase {
  27  
  28      public function test_is_age_digital_consent_verification_enabled() {
  29          global $CFG;
  30          $this->resetAfterTest();
  31  
  32          // Age of digital consent verification is enabled.
  33          $CFG->agedigitalconsentverification = 0;
  34  
  35          $isenabled = \core_auth\digital_consent::is_age_digital_consent_verification_enabled();
  36          $this->assertFalse($isenabled);
  37      }
  38  
  39      public function test_is_minor() {
  40          global $CFG;
  41          $this->resetAfterTest();
  42  
  43          $agedigitalconsentmap = implode(PHP_EOL, [
  44              '*, 16',
  45              'AT, 14',
  46              'CZ, 13',
  47              'DE, 14',
  48              'DK, 13',
  49          ]);
  50          $CFG->agedigitalconsentmap = $agedigitalconsentmap;
  51  
  52          $usercountry1 = 'DK';
  53          $usercountry2 = 'AU';
  54          $userage1 = 12;
  55          $userage2 = 14;
  56          $userage3 = 16;
  57  
  58          // Test country exists in agedigitalconsentmap and user age is below the particular digital minor age.
  59          $isminor = \core_auth\digital_consent::is_minor($userage1, $usercountry1);
  60          $this->assertTrue($isminor);
  61          // Test country exists in agedigitalconsentmap and user age is above the particular digital minor age.
  62          $isminor = \core_auth\digital_consent::is_minor($userage2, $usercountry1);
  63          $this->assertFalse($isminor);
  64          // Test country does not exists in agedigitalconsentmap and user age is below the particular digital minor age.
  65          $isminor = \core_auth\digital_consent::is_minor($userage2, $usercountry2);
  66          $this->assertTrue($isminor);
  67          // Test country does not exists in agedigitalconsentmap and user age is above the particular digital minor age.
  68          $isminor = \core_auth\digital_consent::is_minor($userage3, $usercountry2);
  69          $this->assertFalse($isminor);
  70      }
  71  
  72      public function test_parse_age_digital_consent_map_valid_format() {
  73  
  74          // Value of agedigitalconsentmap has a valid format.
  75          $agedigitalconsentmap = implode(PHP_EOL, [
  76              '*, 16',
  77              'AT, 14',
  78              'BE, 13'
  79          ]);
  80  
  81          $ageconsentmapparsed = \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap);
  82  
  83          $this->assertEquals([
  84              '*' => 16,
  85              'AT' => 14,
  86              'BE' => 13
  87          ], $ageconsentmapparsed
  88          );
  89      }
  90  
  91      public function test_parse_age_digital_consent_map_invalid_format_missing_spaces() {
  92  
  93          // Value of agedigitalconsentmap has an invalid format (missing space separator between values).
  94          $agedigitalconsentmap = implode(PHP_EOL, [
  95              '*, 16',
  96              'AT14',
  97          ]);
  98  
  99          $this->expectException('moodle_exception');
 100          $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidcomma', 'error', 'AT14'));
 101  
 102          \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap);
 103      }
 104  
 105      public function test_parse_age_digital_consent_map_invalid_format_missing_default_value() {
 106  
 107          // Value of agedigitalconsentmap has an invalid format (missing default value).
 108          $agedigitalconsentmap = implode(PHP_EOL, [
 109              'BE, 16',
 110              'AT, 14'
 111          ]);
 112  
 113          $this->expectException('moodle_exception');
 114          $this->expectExceptionMessage(get_string('agedigitalconsentmapinvaliddefault', 'error'));
 115  
 116          \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap);
 117      }
 118  
 119      public function test_parse_age_digital_consent_map_invalid_format_invalid_country() {
 120  
 121          // Value of agedigitalconsentmap has an invalid format (invalid value for country).
 122          $agedigitalconsentmap = implode(PHP_EOL, [
 123              '*, 16',
 124              'TEST, 14'
 125          ]);
 126  
 127          $this->expectException('moodle_exception');
 128          $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidcountry', 'error', 'TEST'));
 129  
 130          \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap);
 131      }
 132  
 133      public function test_parse_age_digital_consent_map_invalid_format_invalid_age_string() {
 134  
 135          // Value of agedigitalconsentmap has an invalid format (string value for age).
 136          $agedigitalconsentmap = implode(PHP_EOL, [
 137              '*, 16',
 138              'AT, ten'
 139          ]);
 140  
 141          $this->expectException('moodle_exception');
 142          $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidage', 'error', 'ten'));
 143  
 144          \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap);
 145      }
 146  
 147      public function test_parse_age_digital_consent_map_invalid_format_missing_age() {
 148  
 149          // Value of agedigitalconsentmap has an invalid format (missing value for age).
 150          $agedigitalconsentmap = implode(PHP_EOL, [
 151              '*, 16',
 152              'AT, '
 153          ]);
 154  
 155          $this->expectException('moodle_exception');
 156          $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidage', 'error', ''));
 157  
 158          \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap);
 159      }
 160  
 161      public function test_parse_age_digital_consent_map_invalid_format_missing_country() {
 162  
 163          // Value of agedigitalconsentmap has an invalid format (missing value for country).
 164          $agedigitalconsentmap = implode(PHP_EOL, [
 165              '*, 16',
 166              ', 12'
 167          ]);
 168  
 169          $this->expectException('moodle_exception');
 170          $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidcountry', 'error', ''));
 171  
 172          \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap);
 173      }
 174  }