Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 18... Línea 18...
18
 
18
 
Línea 19... Línea 19...
19
namespace core_reportbuilder;
19
namespace core_reportbuilder;
20
 
20
 
-
 
21
use advanced_testcase;
21
use advanced_testcase;
22
use context_system;
22
use context_system;
23
use core_reportbuilder\exception\report_access_exception;
23
use core_reportbuilder_generator;
24
use core_reportbuilder_generator;
24
use Throwable;
25
use Throwable;
Línea 31... Línea 32...
31
 * @package     core_reportbuilder
32
 * @package     core_reportbuilder
32
 * @covers      \core_reportbuilder\permission
33
 * @covers      \core_reportbuilder\permission
33
 * @copyright   2021 Paul Holden <paulh@moodle.com>
34
 * @copyright   2021 Paul Holden <paulh@moodle.com>
34
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
35
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
35
 */
36
 */
36
class permission_test extends advanced_testcase {
37
final class permission_test extends advanced_testcase {
Línea 37... Línea 38...
37
 
38
 
38
    /**
39
    /**
39
     * Test whether user can view reports list
40
     * Test whether user can view reports list
40
     */
41
     */
Línea 413... Línea 414...
413
    /**
414
    /**
414
     * Data provider for {@see test_can_create_report_limit_reached}
415
     * Data provider for {@see test_can_create_report_limit_reached}
415
     *
416
     *
416
     * @return array
417
     * @return array
417
     */
418
     */
418
    public function can_create_report_limit_reached_provider(): array {
419
    public static function can_create_report_limit_reached_provider(): array {
419
        return [
420
        return [
420
            [0, 1, true],
421
            [0, 1, true],
421
            [1, 1, false],
422
            [1, 1, false],
422
            [2, 1, true],
423
            [2, 1, true],
423
            [1, 2, false],
424
            [1, 2, false],
Línea 445... Línea 446...
445
 
446
 
446
        // Set current custom report limit, and check whether user can create reports.
447
        // Set current custom report limit, and check whether user can create reports.
447
        $CFG->customreportslimit = $customreportslimit;
448
        $CFG->customreportslimit = $customreportslimit;
448
        $this->assertEquals($expected, permission::can_create_report());
449
        $this->assertEquals($expected, permission::can_create_report());
-
 
450
    }
-
 
451
 
-
 
452
    /**
-
 
453
     * Test that user can duplicate a report
-
 
454
     */
-
 
455
    public function test_require_can_duplicate_report(): void {
-
 
456
        global $DB, $CFG;
-
 
457
 
-
 
458
        $this->resetAfterTest();
-
 
459
 
-
 
460
        $user = $this->getDataGenerator()->create_user();
-
 
461
        $this->setUser($user);
-
 
462
 
-
 
463
        $userrole = $DB->get_field('role', 'id', ['shortname' => 'user']);
-
 
464
        assign_capability('moodle/reportbuilder:edit', CAP_ALLOW, $userrole, context_system::instance());
-
 
465
 
-
 
466
        /** @var core_reportbuilder_generator $generator */
-
 
467
        $generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
-
 
468
 
-
 
469
        // Confirm user can duplicate their own report.
-
 
470
        $reportuser = $generator->create_report(['name' => 'User', 'source' => users::class]);
-
 
471
        permission::require_can_duplicate_report($reportuser);
-
 
472
 
-
 
473
        // Create a report by another user, confirm current user cannot duplicate it without proper permission.
-
 
474
        $reportadmin = $generator->create_report(['name' => 'Admin', 'source' => users::class, 'usercreated' => get_admin()->id]);
-
 
475
        try {
-
 
476
            permission::require_can_duplicate_report($reportadmin);
-
 
477
            $this->fail('Exception expected');
-
 
478
        } catch (report_access_exception $e) {
-
 
479
            $this->assertStringContainsString('You cannot duplicate this report', $e->getMessage());
-
 
480
        }
-
 
481
 
-
 
482
        assign_capability('moodle/reportbuilder:editall', CAP_ALLOW, $userrole, context_system::instance());
-
 
483
        permission::require_can_duplicate_report($reportadmin);
-
 
484
 
-
 
485
        // Set current custom report limit, and check whether user can duplicate the report.
-
 
486
        $CFG->customreportslimit = 1;
-
 
487
        $this->expectException(report_access_exception::class);
-
 
488
        $this->expectExceptionMessage('You cannot duplicate this report');
-
 
489
        permission::require_can_duplicate_report($reportuser);
449
    }
490
    }