__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.148: ~ $
<?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/>.

namespace core_course;

use context_user;
use context_course;
use ReflectionMethod;
use core_cache\definition;
use core_course\cache\course_image;

/**
 * Functional test for class course_image
 *
 * @package    core
 * @subpackage course
 * @author     Dmitrii Metelkin <dmitriim@catalyst-au.net>
 * @copyright  2021 Catalyst IT
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
final class course_image_cache_test extends \advanced_testcase {

    /**
     * Initial setup.
     */
    protected function setUp(): void {
        global $CFG;

        parent::setUp();
        $this->resetAfterTest();
        $this->setAdminUser();

        // Allow multiple overview files.
        $CFG->courseoverviewfileslimit = 3;
    }

    /**
     * Helper method to create a draft area for current user and fills it with fake files
     *
     * @param array $files array of files that need to be added to filearea, filename => filecontents
     * @return int draftid for the filearea
     */
    protected function fill_draft_area(array $files): int {
        global $USER;

        $draftid = file_get_unused_draft_itemid();
        foreach ($files as $filename => $filecontents) {
            // Add actual file there.
            $filerecord = [
                'component' => 'user',
                'filearea' => 'draft',
                'contextid' => context_user::instance($USER->id)->id, 'itemid' => $draftid,
                'filename' => $filename, 'filepath' => '/'
            ];
            $fs = get_file_storage();
            $fs->create_file_from_string($filerecord, $filecontents);
        }
        return $draftid;
    }

    /**
     * A helper method to generate expected file URL.
     *
     * @param \stdClass $course Course object.
     * @param string $filename File name.
     * @return string
     */
    protected function build_expected_course_image_url(\stdClass $course, string $filename): string {
        $contextid = context_course::instance($course->id)->id;
        return 'https://www.example.com/moodle/pluginfile.php/' . $contextid. '/course/overviewfiles/' . $filename;
    }

    /**
     * Test exception if try to get an image for non existing course.
     */
    public function test_getting_data_if_course_is_not_exist(): void {
        $this->expectException('dml_missing_record_exception');
        $this->expectExceptionMessageMatches("/Can't find data record in database table course./");
        $this->assertFalse(\cache::make('core', 'course_image')->get(999));
    }

    /**
     * Test get_image_url_from_overview_files when no summary files in the course.
     */
    public function test_get_image_url_from_overview_files_return_null_if_no_summary_files_in_the_course(): void {
        $method = new ReflectionMethod(course_image::class, 'get_image_url_from_overview_files');
        $cache = course_image::get_instance_for_cache(new definition());

        // Create course without files.
        $course = $this->getDataGenerator()->create_course();
        $this->assertNull($method->invokeArgs($cache, [$course]));
    }

    /**
     * Test get_image_url_from_overview_files when no summary images in the course.
     */
    public function test_get_image_url_from_overview_files_returns_null_if_no_summary_images_in_the_course(): void {
        $method = new ReflectionMethod(course_image::class, 'get_image_url_from_overview_files');
        $cache = course_image::get_instance_for_cache(new definition());

        // Create course without image files.
        $draftid2 = $this->fill_draft_area(['filename2.zip' => 'Test file contents2']);
        $course2 = $this->getDataGenerator()->create_course(['overviewfiles_filemanager' => $draftid2]);
        $this->assertNull($method->invokeArgs($cache, [$course2]));
    }

    /**
     * Test get_image_url_from_overview_files when no summary images in the course.
     */
    public function test_get_image_url_from_overview_files_returns_url_if_there_is_a_summary_image(): void {
        $method = new ReflectionMethod(course_image::class, 'get_image_url_from_overview_files');
        $cache = course_image::get_instance_for_cache(new definition());

        // Create course without one image.
        $draftid1 = $this->fill_draft_area([
            'filename1.jpg' => file_get_contents(self::get_fixture_path(__NAMESPACE__, 'image.jpg')),
        ]);
        $course1 = $this->getDataGenerator()->create_course(['overviewfiles_filemanager' => $draftid1]);
        $expected = $this->build_expected_course_image_url($course1, 'filename1.jpg');
        $this->assertEquals($expected, $method->invokeArgs($cache, [$course1]));
    }

    /**
     * Test get_image_url_from_overview_files when several summary images in the course.
     */
    public function test_get_image_url_from_overview_files_returns_url_of_the_first_image_if_there_are_many_summary_images(): void {
        $method = new ReflectionMethod(course_image::class, 'get_image_url_from_overview_files');
        $cache = course_image::get_instance_for_cache(new definition());

        // Create course with two image files.
        $draftid1 = $this->fill_draft_area([
            'filename1.jpg' => file_get_contents(self::get_fixture_path(__NAMESPACE__, 'image.jpg')),
            'filename2.jpg' => file_get_contents(self::get_fixture_path(__NAMESPACE__, 'image.jpg')),
        ]);
        $course1 = $this->getDataGenerator()->create_course(['overviewfiles_filemanager' => $draftid1]);

        $expected = $this->build_expected_course_image_url($course1, 'filename1.jpg');
        $this->assertEquals($expected, $method->invokeArgs($cache, [$course1]));
    }

    /**
     * Test get_image_url_from_overview_files when several summary files in the course.
     */
    public function test_get_image_url_from_overview_files_returns_url_of_the_first_image_if_there_are_many_summary_files(): void {
        $method = new ReflectionMethod(course_image::class, 'get_image_url_from_overview_files');
        $cache = course_image::get_instance_for_cache(new definition());

        // Create course with two image files and one zip file.
        $draftid1 = $this->fill_draft_area([
            'filename1.zip' => 'Test file contents2',
            'filename2.jpg' => file_get_contents(self::get_fixture_path(__NAMESPACE__, 'image.jpg')),
            'filename3.jpg' => file_get_contents(self::get_fixture_path(__NAMESPACE__, 'image.jpg')),
        ]);
        $course1 = $this->getDataGenerator()->create_course(['overviewfiles_filemanager' => $draftid1]);

        $expected = $this->build_expected_course_image_url($course1, 'filename2.jpg');
        $this->assertEquals($expected, $method->invokeArgs($cache, [$course1]));
    }

}

Filemanager

Name Type Size Permission Actions
analytics Folder 0755
backup Folder 0755
behat Folder 0755
event Folder 0755
fixtures Folder 0755
privacy Folder 0755
reportbuilder Folder 0755
search Folder 0755
task Folder 0755
backup_restore_activity_test.php File 5.19 KB 0644
caching_content_item_readonly_repository_test.php File 3.56 KB 0644
category_hooks_test.php File 9.42 KB 0644
category_test.php File 72.54 KB 0644
content_item_readonly_repository_test.php File 4.83 KB 0644
content_item_test.php File 2.9 KB 0644
course_delete_modules_test.php File 5.06 KB 0644
course_format_function_test.php File 3.53 KB 0644
course_image_cache_test.php File 7.26 KB 0644
course_summary_exporter_test.php File 2.67 KB 0644
courselib_test.php File 316.95 KB 0644
courserequest_test.php File 7.3 KB 0644
coverage.php File 1.15 KB 0644
customfield_test.php File 7.19 KB 0644
exporters_content_item_test.php File 5.8 KB 0644
exporters_content_items_test.php File 2.72 KB 0644
externallib_test.php File 196.6 KB 0644
management_helper_test.php File 65.18 KB 0644
modlib_test.php File 18.52 KB 0644
services_content_item_service_test.php File 12.52 KB 0644
targets_test.php File 26.75 KB 0644
Filemanager