From d306f96750386a239d8b05a65d640a2ad825b044 Mon Sep 17 00:00:00 2001 From: Ankit Agarwal Date: Fri, 21 Jun 2013 10:47:38 +0800 Subject: [PATCH] MDL-40250 phpunit: Add unit tests for core_files_external::upload() --- files/tests/externallib_test.php | 127 +++++++++++++++++++++++++++++++ phpunit.xml.dist | 1 + 2 files changed, 128 insertions(+) create mode 100644 files/tests/externallib_test.php diff --git a/files/tests/externallib_test.php b/files/tests/externallib_test.php new file mode 100644 index 00000000000..385aa140cfd --- /dev/null +++ b/files/tests/externallib_test.php @@ -0,0 +1,127 @@ +. + + +/** + * PHPunit tests for external files API. + * + * @package core_files + * @category external + * @copyright 2013 Ankit Agarwal + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @since Moodle 2.6 + */ +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/webservice/tests/helpers.php'); +require_once($CFG->dirroot . '/files/externallib.php'); + +class test_external_files extends advanced_testcase { + + /* + * Test core_files_external::upload(). + */ + + public function test_upload() { + global $USER; + + $this->resetAfterTest(); + $this->setAdminUser(); + $context = context_user::instance($USER->id); + $contextid = $context->id; + $component = "user"; + $filearea = "private"; + $itemid = 0; + $filepath = "/"; + $filename = "Simple.txt"; + $filecontent = base64_encode("Let us create a nice simple file"); + $browser = get_file_browser(); + + // Make sure no file exists. + $file = $browser->get_file_info($context, $component, $filearea, $itemid, $filepath, $filename); + $this->assertEmpty($file); + + // Call the api to create a file. + core_files_external::upload($contextid, $component, $filearea, $itemid, $filepath, $filename, $filecontent); + + // Make sure the file was created. + $file = $browser->get_file_info($context, $component, $filearea, $itemid, $filepath, $filename); + $this->assertNotEmpty($file); + + // Make sure no file exists. + $itemid = 2; + $filename = "Simple2.txt"; + $file = $browser->get_file_info($context, $component, $filearea, $itemid, $filepath, $filename); + $this->assertEmpty($file); + + // Call the api to create a file. + $fileinfo = core_files_external::upload($contextid, $component, $filearea, $itemid, $filepath, $filename, $filecontent); + + // Make sure itemid is always set to 0. + $this->assertEquals(0, $fileinfo['itemid']); + + // Make sure the same file cannot be created again. + $this->setExpectedException("moodle_exception"); + core_files_external::upload($contextid, $component, $filearea, $itemid, $filepath, $filename, $filecontent); + } + + /* + * Make sure only user component is allowed in core_files_external::upload(). + */ + public function test_upload_param_component() { + global $USER; + + $this->resetAfterTest(); + $this->setAdminUser(); + $context = context_user::instance($USER->id); + $contextid = $context->id; + $component = "backup"; + $filearea = "private"; + $itemid = 0; + $filepath = "/"; + $filename = "Simple3.txt"; + $filecontent = base64_encode("Let us create a nice simple file"); + + // Make sure exception is thrown. + $this->setExpectedException("coding_exception"); + core_files_external::upload($contextid, $component, $filearea, $itemid, $filepath, $filename, $filecontent); + } + + /* + * Make sure only private area is allowed in core_files_external::upload(). + */ + public function test_upload_param_area() { + global $USER; + + $this->resetAfterTest(); + $this->setAdminUser(); + $context = context_user::instance($USER->id); + $contextid = $context->id; + $component = "user"; + $filearea = "draft"; + $itemid = 0; + $filepath = "/"; + $filename = "Simple4.txt"; + $filecontent = base64_encode("Let us create a nice simple file"); + + // Make sure exception is thrown. + $this->setExpectedException("coding_exception"); + core_files_external::upload($contextid, $component, $filearea, $itemid, $filepath, $filename, $filecontent); + } + +} \ No newline at end of file diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 60714307283..16f8f305003 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -38,6 +38,7 @@ lib/filestorage/tests + files/tests lib/grade/tests