. /** * Unit tests for core_auth\digital_consent. * * @package core_auth * @copyright 2018 Mihail Geshoski * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Digital consent helper testcase. * * @package core_auth * @copyright 2018 Mihail Geshoski * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class core_auth_digital_consent_testcase extends advanced_testcase { public function test_is_age_digital_consent_verification_enabled() { global $CFG; $this->resetAfterTest(); // Age of digital consent verification is enabled. $CFG->agedigitalconsentverification = 0; $isenabled = \core_auth\digital_consent::is_age_digital_consent_verification_enabled(); $this->assertFalse($isenabled); } public function test_is_minor() { global $CFG; $this->resetAfterTest(); $agedigitalconsentmap = implode(PHP_EOL, [ '*, 16', 'AT, 14', 'CZ, 13', 'DE, 14', 'DK, 13', ]); $CFG->agedigitalconsentmap = $agedigitalconsentmap; $usercountry1 = 'DK'; $usercountry2 = 'AU'; $userage1 = 12; $userage2 = 14; $userage3 = 16; // Test country exists in agedigitalconsentmap and user age is below the particular digital minor age. $isminor = \core_auth\digital_consent::is_minor($userage1, $usercountry1); $this->assertTrue($isminor); // Test country exists in agedigitalconsentmap and user age is above the particular digital minor age. $isminor = \core_auth\digital_consent::is_minor($userage2, $usercountry1); $this->assertFalse($isminor); // Test country does not exists in agedigitalconsentmap and user age is below the particular digital minor age. $isminor = \core_auth\digital_consent::is_minor($userage2, $usercountry2); $this->assertTrue($isminor); // Test country does not exists in agedigitalconsentmap and user age is above the particular digital minor age. $isminor = \core_auth\digital_consent::is_minor($userage3, $usercountry2); $this->assertFalse($isminor); } public function test_parse_age_digital_consent_map_valid_format() { // Value of agedigitalconsentmap has a valid format. $agedigitalconsentmap = implode(PHP_EOL, [ '*, 16', 'AT, 14', 'BE, 13' ]); $ageconsentmapparsed = \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap); $this->assertEquals([ '*' => 16, 'AT' => 14, 'BE' => 13 ], $ageconsentmapparsed ); } public function test_parse_age_digital_consent_map_invalid_format_missing_spaces() { // Value of agedigitalconsentmap has an invalid format (missing space separator between values). $agedigitalconsentmap = implode(PHP_EOL, [ '*, 16', 'AT14', ]); $this->expectException('moodle_exception'); $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidcomma', 'error', 'AT14')); \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap); } public function test_parse_age_digital_consent_map_invalid_format_missing_default_value() { // Value of agedigitalconsentmap has an invalid format (missing default value). $agedigitalconsentmap = implode(PHP_EOL, [ 'BE, 16', 'AT, 14' ]); $this->expectException('moodle_exception'); $this->expectExceptionMessage(get_string('agedigitalconsentmapinvaliddefault', 'error')); \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap); } public function test_parse_age_digital_consent_map_invalid_format_invalid_country() { // Value of agedigitalconsentmap has an invalid format (invalid value for country). $agedigitalconsentmap = implode(PHP_EOL, [ '*, 16', 'TEST, 14' ]); $this->expectException('moodle_exception'); $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidcountry', 'error', 'TEST')); \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap); } public function test_parse_age_digital_consent_map_invalid_format_invalid_age_string() { // Value of agedigitalconsentmap has an invalid format (string value for age). $agedigitalconsentmap = implode(PHP_EOL, [ '*, 16', 'AT, ten' ]); $this->expectException('moodle_exception'); $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidage', 'error', 'ten')); \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap); } public function test_parse_age_digital_consent_map_invalid_format_missing_age() { // Value of agedigitalconsentmap has an invalid format (missing value for age). $agedigitalconsentmap = implode(PHP_EOL, [ '*, 16', 'AT, ' ]); $this->expectException('moodle_exception'); $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidage', 'error', '')); \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap); } public function test_parse_age_digital_consent_map_invalid_format_missing_country() { // Value of agedigitalconsentmap has an invalid format (missing value for country). $agedigitalconsentmap = implode(PHP_EOL, [ '*, 16', ', 12' ]); $this->expectException('moodle_exception'); $this->expectExceptionMessage(get_string('agedigitalconsentmapinvalidcountry', 'error', '')); \core_auth\digital_consent::parse_age_digital_consent_map($agedigitalconsentmap); } }