You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.8 KiB

<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Metadata registry tests.
*
* @package tool_dataprivacy
* @copyright 2018 Adrian Greeve <adriangreeve.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
/**
* Metadata registry tests.
*
* @package tool_dataprivacy
* @copyright 2018 Adrian Greeve <adriangreeve.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class tool_dataprivacy_metadata_registry_testcase extends advanced_testcase {
/**
* Fetch the meta data and return it in a form that we can easily unit test.
*
* @return array the meta data.
*/
protected function get_meta_data() {
$metadataregistry = new \tool_dataprivacy\metadata_registry();
$data = $metadataregistry->get_registry_metadata();
$newdata = [];
foreach ($data as $value) {
$additional = [];
foreach ($value['plugins'] as $moredata) {
$additional[$moredata['raw_component']] = $moredata;
}
$newdata[$value['plugin_type_raw']] = $additional;
}
return $newdata;
}
/**
* Test that we can fetch metadata about users for the whole system and that it matches the system count.
*/
public function test_get_registry_metadata_count() {
$data = $this->get_meta_data();
$plugintypes = \core_component::get_plugin_types();
// Check that we have the correct number of plugin types.
$plugincount = count($plugintypes) + 1; // Plus one for core.
$this->assertEquals($plugincount, count($data));
// Check that each plugin count matches.
foreach ($plugintypes as $plugintype => $notused) {
$plugins = \core_component::get_plugin_list($plugintype);
$this->assertEquals(count($plugins), count($data[$plugintype]));
}
// Let's check core subsystems.
// The Privacy API adds an extra component in the form of 'core'.
$coresubsystems = \core_component::get_core_subsystems();
$this->assertEquals(count($coresubsystems) + 1, count($data['core']));
}
/**
* Check that the expected null provider information is returned.
*/
public function test_get_registry_metadata_null_provider_details() {
$data = $this->get_meta_data();
// Check details of core privacy (a null privder) are correct.
$coreprivacy = $data['core']['core_privacy'];
$this->assertEquals(1, $coreprivacy['compliant']);
$this->assertNotEmpty($coreprivacy['nullprovider']);
}
/**
* Check that the expected privacy provider information is returned.
*/
public function test_get_registry_metadata_provider_details() {
$data = $this->get_meta_data();
// Check details of core rating (a normal provider) are correct.
$corerating = $data['core']['core_rating'];
$this->assertEquals(1, $corerating['compliant']);
$this->assertNotEmpty($corerating['metadata']);
$this->assertEquals('database_table', $corerating['metadata'][0]['type']);
$this->assertNotEmpty($corerating['metadata'][0]['fields']);
}
}