Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I write tests for file upload in PHP?

I'm using simpleTest to write my PHP tests. I'm writing a file upload plugin and was wondering how I may be testing it.

I would like to check that the file is correctly uploaded, in the right folder, that error are correctly returned when needed, etc.

How do I emulate a file upload (through the $_FILES variable) ? Are there any issues I should be aware of ?

like image 871
pixelastic Avatar asked Aug 04 '10 05:08

pixelastic


People also ask

How do you check if a file is uploaded PHP?

The is_uploaded_file() function in PHP is an inbuilt function which is used to check whether the specified file uploaded via HTTP POST or not. The name of the file is sent as a parameter to the is_uploaded_file() function and it returns True if the file is uploaded via HTTP POST.


1 Answers

I've found an alternate solution. I've spoofed the $_FILES array with test data, created dummy test files in the tmp/ folder (the folder is irrelevant, but I tried to stick with the default).

The problem was that is_uploaded_file and move_uploaded_file could not work with this spoofed items, because they are not really uploaded through POST. First thing I did was to wrap those functions inside my own moveUploadedFile and isUploadedFile in my plugin so I can mock them and change their return value.

The last thing was to extends the class when testing it and overwriting moveUploadedFile to use rename instead of move_uploaded_file and isUploadedFile to use file_exists instead of is_uploaded_file.

like image 162
pixelastic Avatar answered Sep 17 '22 08:09

pixelastic