1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
use org\bovigo\vfs\vfsStream, |
4
|
|
|
org\bovigo\vfs\vfsStreamDirectory; |
5
|
|
|
|
6
|
|
|
require_once 'include/utils/file_utils.php'; |
7
|
|
|
class file_utilsTest extends PHPUnit_Framework_TestCase |
8
|
|
|
{ |
9
|
|
|
|
10
|
|
|
public function setUp() { |
11
|
|
|
$this->rootFs = org\bovigo\vfs\vfsStream::setup('root'); |
12
|
|
|
$this->rootFs->addChild(org\bovigo\vfs\vfsStream::newDirectory('testDir')); |
13
|
|
|
$this->rootFs->addChild(org\bovigo\vfs\vfsStream::newFile('test.txt')->withContent("Hello world!")); |
14
|
|
|
} |
15
|
|
|
|
16
|
|
|
|
17
|
|
|
public function testclean_path() |
18
|
|
|
{ |
19
|
|
|
//execute the method and test if it returns expected values |
20
|
|
|
|
21
|
|
|
//invalid path |
22
|
|
|
$expected = ""; |
23
|
|
|
$path = ""; |
24
|
|
|
$actual = clean_path($path); |
25
|
|
|
$this->assertSame($expected,$actual); |
26
|
|
|
|
27
|
|
|
|
28
|
|
|
//a simple valid path |
29
|
|
|
$expected = "/SuiteCRM-develop/include/utils"; |
30
|
|
|
$path = '\SuiteCRM-develop\include\utils'; |
31
|
|
|
$actual = clean_path($path); |
32
|
|
|
$this->assertSame($expected,$actual); |
33
|
|
|
|
34
|
|
|
|
35
|
|
|
//valid network path |
36
|
|
|
$expected = "//SuiteCRM-develop/include/utils"; |
37
|
|
|
$path = "\\\\/SuiteCRM-develop/include/utils"; |
38
|
|
|
$actual = clean_path($path); |
39
|
|
|
$this->assertSame($expected,$actual); |
40
|
|
|
|
41
|
|
|
|
42
|
|
|
$expected = "/SuiteCRM-develop/include/utils"; |
43
|
|
|
$path = "/SuiteCRM-develop/./include/utils"; |
44
|
|
|
$actual = clean_path($path); |
45
|
|
|
$this->assertSame($expected,$actual); |
46
|
|
|
|
47
|
|
|
$expected = "/SuiteCRM-develop/include/utils"; |
48
|
|
|
$path = "/SuiteCRM-develop//include/utils"; |
49
|
|
|
$actual = clean_path($path); |
50
|
|
|
$this->assertSame($expected,$actual); |
51
|
|
|
|
52
|
|
|
|
53
|
|
|
|
54
|
|
|
} |
55
|
|
|
|
56
|
|
|
public function testcreate_cache_directory() |
57
|
|
|
{ |
58
|
|
|
//execute the method and test if it created file/dir exists |
59
|
|
|
|
60
|
|
|
$cache_dir = rtrim($GLOBALS['sugar_config']['cache_dir'], '/\\'); |
61
|
|
|
$file = "Test/"; |
62
|
|
|
|
63
|
|
|
if ( $this->rootFs->hasChild($file) == true) |
64
|
|
|
rmdir($cache_dir . "/" . $file); |
65
|
|
|
|
66
|
|
|
$actual = create_cache_directory($file); |
67
|
|
|
$this->assertFileExists($actual); |
68
|
|
|
|
69
|
|
|
if ( $this->rootFs->hasChild($file) == true) |
70
|
|
|
rmdir($cache_dir . "/" . $file); |
71
|
|
|
|
72
|
|
|
} |
73
|
|
|
|
74
|
|
|
public function testget_module_dir_list() |
75
|
|
|
{ |
76
|
|
|
//execute the method and test if it returns expected values |
77
|
|
|
|
78
|
|
|
$expected = array ( |
79
|
|
|
'Accounts' => 'Accounts', |
80
|
|
|
'ACL' => 'ACL', |
81
|
|
|
'ACLActions' => 'ACLActions', |
82
|
|
|
'ACLRoles' => 'ACLRoles', |
83
|
|
|
'Activities' => 'Activities', |
84
|
|
|
'Administration' => 'Administration', |
85
|
|
|
'Alerts' => 'Alerts', |
86
|
|
|
'AM_ProjectTemplates' => 'AM_ProjectTemplates', |
87
|
|
|
'AM_TaskTemplates' => 'AM_TaskTemplates', |
88
|
|
|
'AOD_Index' => 'AOD_Index', |
89
|
|
|
'AOD_IndexEvent' => 'AOD_IndexEvent', |
90
|
|
|
'AOK_KnowledgeBase' => 'AOK_KnowledgeBase', |
91
|
|
|
'AOK_Knowledge_Base_Categories' => 'AOK_Knowledge_Base_Categories', |
92
|
|
|
'AOP_Case_Events' => 'AOP_Case_Events', |
93
|
|
|
'AOP_Case_Updates' => 'AOP_Case_Updates', |
94
|
|
|
'AOR_Charts' => 'AOR_Charts', |
95
|
|
|
'AOR_Conditions' => 'AOR_Conditions', |
96
|
|
|
'AOR_Fields' => 'AOR_Fields', |
97
|
|
|
'AOR_Reports' => 'AOR_Reports', |
98
|
|
|
'AOR_Scheduled_Reports' => 'AOR_Scheduled_Reports', |
99
|
|
|
'AOS_Contracts' => 'AOS_Contracts', |
100
|
|
|
'AOS_Invoices' => 'AOS_Invoices', |
101
|
|
|
'AOS_Line_Item_Groups' => 'AOS_Line_Item_Groups', |
102
|
|
|
'AOS_PDF_Templates' => 'AOS_PDF_Templates', |
103
|
|
|
'AOS_Products' => 'AOS_Products', |
104
|
|
|
'AOS_Products_Quotes' => 'AOS_Products_Quotes', |
105
|
|
|
'AOS_Product_Categories' => 'AOS_Product_Categories', |
106
|
|
|
'AOS_Quotes' => 'AOS_Quotes', |
107
|
|
|
'AOW_Actions' => 'AOW_Actions', |
108
|
|
|
'AOW_Conditions' => 'AOW_Conditions', |
109
|
|
|
'AOW_Processed' => 'AOW_Processed', |
110
|
|
|
'AOW_WorkFlow' => 'AOW_WorkFlow', |
111
|
|
|
'Audit' => 'Audit', |
112
|
|
|
'Bugs' => 'Bugs', |
113
|
|
|
'Calendar' => 'Calendar', |
114
|
|
|
'Calls' => 'Calls', |
115
|
|
|
'Calls_Reschedule' => 'Calls_Reschedule', |
116
|
|
|
'CampaignLog' => 'CampaignLog', |
117
|
|
|
'Campaigns' => 'Campaigns', |
118
|
|
|
'CampaignTrackers' => 'CampaignTrackers', |
119
|
|
|
'Cases' => 'Cases', |
120
|
|
|
'Charts' => 'Charts', |
121
|
|
|
'Configurator' => 'Configurator', |
122
|
|
|
'Connectors' => 'Connectors', |
123
|
|
|
'Contacts' => 'Contacts', |
124
|
|
|
'Currencies' => 'Currencies', |
125
|
|
|
'Delegates' => 'Delegates', |
126
|
|
|
'DocumentRevisions' => 'DocumentRevisions', |
127
|
|
|
'Documents' => 'Documents', |
128
|
|
|
'DynamicFields' => 'DynamicFields', |
129
|
|
|
'EAPM' => 'EAPM', |
130
|
|
|
'EmailAddresses' => 'EmailAddresses', |
131
|
|
|
'EmailMan' => 'EmailMan', |
132
|
|
|
'EmailMarketing' => 'EmailMarketing', |
133
|
|
|
'Emails' => 'Emails', |
134
|
|
|
'EmailTemplates' => 'EmailTemplates', |
135
|
|
|
'EmailText' => 'EmailText', |
136
|
|
|
'Employees' => 'Employees', |
137
|
|
|
'Favorites' => 'Favorites', |
138
|
|
|
'FP_events' => 'FP_events', |
139
|
|
|
'FP_Event_Locations' => 'FP_Event_Locations', |
140
|
|
|
'Groups' => 'Groups', |
141
|
|
|
'Help' => 'Help', |
142
|
|
|
'History' => 'History', |
143
|
|
|
'Home' => 'Home', |
144
|
|
|
'iCals' => 'iCals', |
145
|
|
|
'Import' => 'Import', |
146
|
|
|
'InboundEmail' => 'InboundEmail', |
147
|
|
|
'jjwg_Address_Cache' => 'jjwg_Address_Cache', |
148
|
|
|
'jjwg_Areas' => 'jjwg_Areas', |
149
|
|
|
'jjwg_Maps' => 'jjwg_Maps', |
150
|
|
|
'jjwg_Markers' => 'jjwg_Markers', |
151
|
|
|
'LabelEditor' => 'LabelEditor', |
152
|
|
|
'Leads' => 'Leads', |
153
|
|
|
'MailMerge' => 'MailMerge', |
154
|
|
|
'Meetings' => 'Meetings', |
155
|
|
|
'MergeRecords' => 'MergeRecords', |
156
|
|
|
'ModuleBuilder' => 'ModuleBuilder', |
157
|
|
|
'MySettings' => 'MySettings', |
158
|
|
|
'Notes' => 'Notes', |
159
|
|
|
'OAuthKeys' => 'OAuthKeys', |
160
|
|
|
'OAuthTokens' => 'OAuthTokens', |
161
|
|
|
'Opportunities' => 'Opportunities', |
162
|
|
|
'OptimisticLock' => 'OptimisticLock', |
163
|
|
|
'Project' => 'Project', |
164
|
|
|
'ProjectTask' => 'ProjectTask', |
165
|
|
|
'ProspectLists' => 'ProspectLists', |
166
|
|
|
'Prospects' => 'Prospects', |
167
|
|
|
'Relationships' => 'Relationships', |
168
|
|
|
'Reminders' => 'Reminders', |
169
|
|
|
'Reminders_Invitees' => 'Reminders_Invitees', |
170
|
|
|
'Releases' => 'Releases', |
171
|
|
|
'Roles' => 'Roles', |
172
|
|
|
'SavedSearch' => 'SavedSearch', |
173
|
|
|
'Schedulers' => 'Schedulers', |
174
|
|
|
'SchedulersJobs' => 'SchedulersJobs', |
175
|
|
|
'SecurityGroups' => 'SecurityGroups', |
176
|
|
|
'Studio' => 'Studio', |
177
|
|
|
'SugarFeed' => 'SugarFeed', |
178
|
|
|
'Tasks' => 'Tasks', |
179
|
|
|
'Trackers' => 'Trackers', |
180
|
|
|
'UpgradeWizard' => 'UpgradeWizard', |
181
|
|
|
'UserPreferences' => 'UserPreferences', |
182
|
|
|
'Users' => 'Users', |
183
|
|
|
'vCals' => 'vCals', |
184
|
|
|
'Versions' => 'Versions', |
185
|
|
|
); |
186
|
|
|
|
187
|
|
|
|
188
|
|
|
$actual = get_module_dir_list(); |
189
|
|
|
sort($actual); |
190
|
|
|
sort($expected); |
191
|
|
|
$this->assertSame($expected,$actual); |
192
|
|
|
|
193
|
|
|
} |
194
|
|
|
|
195
|
|
|
public function testmk_temp_dir( ) |
196
|
|
|
{ |
197
|
|
|
//execute the method and test if created dir/file exists |
198
|
|
|
|
199
|
|
|
//without prefix |
200
|
|
|
$actual = mk_temp_dir('vfs://root', '' ); |
201
|
|
|
$this->assertFileExists($actual); |
202
|
|
|
|
203
|
|
|
//with prefix |
204
|
|
|
$actual = mk_temp_dir('vfs://root', 'pfx' ); |
205
|
|
|
$this->assertFileExists($actual); |
206
|
|
|
|
207
|
|
|
} |
208
|
|
|
|
209
|
|
|
public function testremove_file_extension( ) |
210
|
|
|
{ |
211
|
|
|
//execute the method and test if it returns expected values |
212
|
|
|
|
213
|
|
|
//no file extension |
214
|
|
|
$expected = ""; |
215
|
|
|
$actual = remove_file_extension('fileNoExt'); |
216
|
|
|
$this->assertSame($expected,$actual); |
217
|
|
|
|
218
|
|
|
|
219
|
|
|
//simple file extension |
220
|
|
|
$expected = "file1"; |
221
|
|
|
$actual = remove_file_extension('file1.txt'); |
222
|
|
|
$this->assertSame($expected,$actual); |
223
|
|
|
|
224
|
|
|
|
225
|
|
|
//complex filename |
226
|
|
|
$expected = "file2.ext1"; |
227
|
|
|
$actual = remove_file_extension('file2.ext1.ext2'); |
228
|
|
|
$this->assertSame($expected,$actual); |
229
|
|
|
|
230
|
|
|
} |
231
|
|
|
|
232
|
|
|
public function testwrite_array_to_file() |
233
|
|
|
{ |
234
|
|
|
$this->markTestSkipped('write_array_to_file cannot be tested with vfsStream'); |
235
|
|
|
//execute the method and test if it returns true and verify contents |
236
|
|
|
|
237
|
|
|
$cache_dir = "vfs://root"; |
238
|
|
|
$tempArray = Array("Key1" => Array( "Key2" => "value2" , "Key3" => "value3" )); |
239
|
|
|
|
240
|
|
|
|
241
|
|
|
//without header |
242
|
|
|
$expected = "<?php\n// created: " . date('Y-m-d H:i:s') . "\n\$tempArray = array (\n 'Key1' => \n array (\n 'Key2' => 'value2',\n 'Key3' => 'value3',\n ),\n);" ; |
243
|
|
|
$actual = write_array_to_file('tempArray', $tempArray, $cache_dir . '\tempArray.txt'); |
244
|
|
|
$this->assertTrue($actual); |
245
|
|
|
$actual_contents = file_get_contents($cache_dir . '\tempArray.txt'); |
246
|
|
|
$this->assertSame($expected,$actual_contents); |
247
|
|
|
unlink($cache_dir . '\tempArray.txt'); |
248
|
|
|
|
249
|
|
|
//with header |
250
|
|
|
$expected = "test header \$tempArray = array (\n 'Key1' => \n array (\n 'Key2' => 'value2',\n 'Key3' => 'value3',\n ),\n);" ; |
251
|
|
|
$actual = write_array_to_file('tempArray', $tempArray, $cache_dir . '\tempArray.txt','w' ,'test header '); |
252
|
|
|
$this->assertTrue($actual); |
253
|
|
|
$actual_contents = file_get_contents($cache_dir . '\tempArray.txt'); |
254
|
|
|
$this->assertSame($expected,$actual_contents); |
255
|
|
|
unlink($cache_dir . '\tempArray.txt'); |
256
|
|
|
|
257
|
|
|
|
258
|
|
|
} |
259
|
|
|
|
260
|
|
|
public function testwrite_encoded_file( ) |
261
|
|
|
{ |
262
|
|
|
//execute the method and test if it created file exists |
263
|
|
|
|
264
|
|
|
$cache_dir = "vfs://root"; |
265
|
|
|
|
266
|
|
|
//without filename |
267
|
|
|
$tempArray = Array("filename" =>'soap_array.txt' , "md5" => "523ef67de860fc54794f27117dba4fac" , "data" => "some soap data" ); |
268
|
|
|
$actual = write_encoded_file( $tempArray, $cache_dir, "" ); |
269
|
|
|
$this->assertFileExists($actual); |
270
|
|
|
unlink($actual); |
271
|
|
|
|
272
|
|
|
|
273
|
|
|
//with filename |
274
|
|
|
$tempArray = Array("md5" => "523ef67de860fc54794f27117dba4fac" , "data" => "some soap data" ); |
275
|
|
|
$actual = write_encoded_file( $tempArray, $cache_dir, "soap_array.txt" ); |
276
|
|
|
$this->assertFileExists($actual); |
277
|
|
|
unlink($actual); |
278
|
|
|
|
279
|
|
|
} |
280
|
|
|
|
281
|
|
|
public function testcreate_custom_directory() |
282
|
|
|
{ |
283
|
|
|
//execute the method and test if it created file/dir exists |
284
|
|
|
|
285
|
|
|
$file = "Test/"; |
286
|
|
|
|
287
|
|
|
$vfs = $this->rootFs; |
288
|
|
|
if ( $vfs->hasChild($file) == true) |
289
|
|
|
rmdir("custom/" . $file); |
290
|
|
|
|
291
|
|
|
$actual = create_custom_directory($file); |
292
|
|
|
$this->assertFileExists($actual); |
293
|
|
|
|
294
|
|
|
if ( $vfs->hasChild($file) == true) |
295
|
|
|
rmdir("custom/" . $file); |
296
|
|
|
|
297
|
|
|
|
298
|
|
|
} |
299
|
|
|
|
300
|
|
|
|
301
|
|
|
public function testgenerateMD5array() |
302
|
|
|
{ |
303
|
|
|
//execute the method and test if it returns expected values |
304
|
|
|
|
305
|
|
|
$expected= array ( |
306
|
|
|
'data/Relationships/EmailAddressRelationship.php' => '2f04780ddd15f7b65a35c75c303ed5d7', |
307
|
|
|
'data/Relationships/M2MRelationship.php' => 'c320909b5a17d63aafa0d7497fe3c991', |
308
|
|
|
'data/Relationships/One2MBeanRelationship.php' => 'c09fe92826b4c8a3944694098de35027', |
309
|
|
|
'data/Relationships/One2MRelationship.php' => '588ad87910bd9d885fe27da77ad13e30', |
310
|
|
|
'data/Relationships/One2OneBeanRelationship.php' => '765b8785d5ca576a8530db99bdf4d411', |
311
|
|
|
'data/Relationships/One2OneRelationship.php' => '0385f7577687a402d9603ef26984257e', |
312
|
|
|
'data/Relationships/RelationshipFactory.php' => '3bd7cc6998beaf82a13808f54bff1c2d', |
313
|
|
|
'data/Relationships/SugarRelationship.php' => '8d0fa8ae0f41ac34eb5d0c04f0e02825', |
314
|
|
|
); |
315
|
|
|
|
316
|
|
|
$actual = generateMD5array('data/Relationships/'); |
317
|
|
|
$this->assertSame($expected,$actual); |
318
|
|
|
|
319
|
|
|
} |
320
|
|
|
|
321
|
|
|
|
322
|
|
|
public function testmd5DirCompare() |
323
|
|
|
{ |
324
|
|
|
//execute the method and test if it returns expected values |
325
|
|
|
|
326
|
|
|
$expected= array (); |
327
|
|
|
|
328
|
|
|
$actual = md5DirCompare('include/MVC/', 'include/MVC/',array('views')); |
329
|
|
|
$this->assertSame($expected,$actual); |
330
|
|
|
|
331
|
|
|
} |
332
|
|
|
|
333
|
|
|
|
334
|
|
|
public function testgetFiles() |
335
|
|
|
{ |
336
|
|
|
//execute the method and test if it returns expected values |
337
|
|
|
|
338
|
|
|
//test without pattern |
339
|
|
|
$expected = array ( |
340
|
|
|
'include/MVC/Controller/ControllerFactory.php', |
341
|
|
|
'include/MVC/Controller/file_access_control_map.php', |
342
|
|
|
'include/MVC/Controller/action_file_map.php', |
343
|
|
|
'include/MVC/Controller/action_view_map.php', |
344
|
|
|
'include/MVC/Controller/entry_point_registry.php', |
345
|
|
|
'include/MVC/Controller/SugarController.php', |
346
|
|
|
); |
347
|
|
|
$actual = Array(); |
348
|
|
|
getFiles($actual, 'include/MVC/Controller'); |
349
|
|
|
sort($actual); |
350
|
|
|
sort($expected); |
351
|
|
|
$this->assertSame($expected,$actual); |
352
|
|
|
|
353
|
|
|
|
354
|
|
|
|
355
|
|
|
|
356
|
|
|
//test with pattern |
357
|
|
|
$expected = array ( |
358
|
|
|
'include/MVC/Controller/action_view_map.php', |
359
|
|
|
'include/MVC/View/views/view.ajax.php', |
360
|
|
|
'include/MVC/View/views/view.ajaxui.php', |
361
|
|
|
'include/MVC/View/views/view.classic.config.php', |
362
|
|
|
'include/MVC/View/views/view.classic.php', |
363
|
|
|
'include/MVC/View/views/view.config.php', |
364
|
|
|
'include/MVC/View/views/view.detail.config.php', |
365
|
|
|
'include/MVC/View/views/view.detail.php', |
366
|
|
|
'include/MVC/View/views/view.edit.php', |
367
|
|
|
'include/MVC/View/views/view.favorites.php', |
368
|
|
|
'include/MVC/View/views/view.html.php', |
369
|
|
|
'include/MVC/View/views/view.importvcard.php', |
370
|
|
|
'include/MVC/View/views/view.importvcardsave.php', |
371
|
|
|
'include/MVC/View/views/view.json.php', |
372
|
|
|
'include/MVC/View/views/view.list.php', |
373
|
|
|
'include/MVC/View/views/view.metadata.php', |
374
|
|
|
'include/MVC/View/views/view.modulelistmenu.php', |
375
|
|
|
'include/MVC/View/views/view.multiedit.php', |
376
|
|
|
'include/MVC/View/views/view.noaccess.php', |
377
|
|
|
'include/MVC/View/views/view.popup.php', |
378
|
|
|
'include/MVC/View/views/view.quick.php', |
379
|
|
|
'include/MVC/View/views/view.quickcreate.php', |
380
|
|
|
'include/MVC/View/views/view.quickedit.php', |
381
|
|
|
'include/MVC/View/views/view.serialized.php', |
382
|
|
|
'include/MVC/View/views/view.sugarpdf.config.php', |
383
|
|
|
'include/MVC/View/views/view.sugarpdf.php', |
384
|
|
|
'include/MVC/View/views/view.vcard.php', |
385
|
|
|
'include/MVC/View/views/view.xml.php', |
386
|
|
|
); |
387
|
|
|
$actual = Array(); |
388
|
|
|
getFiles($actual, 'include/MVC','@view@'); |
389
|
|
|
sort($expected); |
390
|
|
|
sort($actual); |
391
|
|
|
$this->assertEquals($expected,$actual); |
392
|
|
|
|
393
|
|
|
} |
394
|
|
|
|
395
|
|
|
|
396
|
|
|
public function testreadfile_chunked() |
397
|
|
|
{ |
398
|
|
|
//execute the method and test if it returns expected values |
399
|
|
|
|
400
|
|
|
$expected = file_get_contents('config.php'); |
401
|
|
|
|
402
|
|
|
|
403
|
|
|
//retbytes parameter false |
404
|
|
|
ob_start(); |
405
|
|
|
$actual = readfile_chunked('config.php',false); |
406
|
|
|
$renderedContent = ob_get_contents(); |
407
|
|
|
ob_end_clean(); |
408
|
|
|
|
409
|
|
|
$this->assertTrue($actual); |
410
|
|
|
$this->assertSame($expected,$renderedContent); |
411
|
|
|
|
412
|
|
|
|
413
|
|
|
|
414
|
|
|
//retbytes parameter true/default |
415
|
|
|
ob_start(); |
416
|
|
|
$actual = readfile_chunked('config.php'); |
417
|
|
|
$renderedContent = ob_get_contents(); |
418
|
|
|
ob_end_clean(); |
419
|
|
|
|
420
|
|
|
$this->assertEquals($actual,strlen($renderedContent)); |
421
|
|
|
$this->assertSame($expected,$renderedContent); |
422
|
|
|
|
423
|
|
|
} |
424
|
|
|
|
425
|
|
|
public function testsugar_rename( ) |
426
|
|
|
{ |
427
|
|
|
//execute the method and test if it returns true/success |
428
|
|
|
|
429
|
|
|
$dir = 'vfs://root'; |
430
|
|
|
$file = "test.txt"; |
431
|
|
|
$vfs = $this->rootFs; |
432
|
|
|
if ( $vfs->hasChild($file) != true) |
433
|
|
|
write_array_to_file('', '', $dir . '/' . $file); |
434
|
|
|
|
435
|
|
|
//test with empty file names |
436
|
|
|
$actual = sugar_rename('',''); |
437
|
|
|
$this->assertFalse($actual); |
438
|
|
|
|
439
|
|
|
|
440
|
|
|
//test with valid file names |
441
|
|
|
$actual = sugar_rename($dir . '/' . $file, $dir . '/' . 'newtest.txt'); |
442
|
|
|
$this->assertTrue($actual); |
443
|
|
|
|
444
|
|
|
unlink($dir . '/' . 'newtest.txt'); |
445
|
|
|
|
446
|
|
|
} |
447
|
|
|
|
448
|
|
|
public function testfileToHash() |
449
|
|
|
{ |
450
|
|
|
//execute the method and test if it returns expected values |
451
|
|
|
|
452
|
|
|
//test with empty filename string |
453
|
|
|
$expected = "d41d8cd98f00b204e9800998ecf8427e"; |
454
|
|
|
$hash = fileToHash(""); |
455
|
|
|
$this->assertSame($expected,$hash); |
456
|
|
|
$this->assertSame("",$_SESSION['file2Hash'][$hash]); |
457
|
|
|
|
458
|
|
|
//test with valid filename |
459
|
|
|
$expected = "9e5e2527d69c009a81b8ecd730f3957e"; |
460
|
|
|
$hash = fileToHash('config.php'); |
461
|
|
|
$this->assertSame($expected,$hash); |
462
|
|
|
$this->assertSame('config.php', $_SESSION['file2Hash'][$hash]); |
463
|
|
|
|
464
|
|
|
} |
465
|
|
|
|
466
|
|
|
public function testhashToFile() |
467
|
|
|
{ |
468
|
|
|
//execute the method and test if it returns expected values |
469
|
|
|
|
470
|
|
|
//test with invalid hash. |
471
|
|
|
$actual = hashToFile(""); |
472
|
|
|
$this->assertFalse($actual); |
473
|
|
|
|
474
|
|
|
//test with a newly generated hash |
475
|
|
|
$hash = fileToHash('config.php'); |
476
|
|
|
$actual = hashToFile($hash); |
477
|
|
|
$this->assertSame('config.php', $actual); |
478
|
|
|
} |
479
|
|
|
|
480
|
|
|
|
481
|
|
|
public function testget_file_extension() |
482
|
|
|
{ |
483
|
|
|
//execute the method and test if it returns expected values |
484
|
|
|
|
485
|
|
|
$this->assertSame('', get_file_extension('')); |
486
|
|
|
$this->assertSame('txt', get_file_extension('test.txt')); |
487
|
|
|
$this->assertSame('Txt', get_file_extension('test.ext.Txt',false)); |
488
|
|
|
$this->assertSame('txt', get_file_extension('test.ext.TXT',true)); |
489
|
|
|
|
490
|
|
|
} |
491
|
|
|
|
492
|
|
|
|
493
|
|
|
public function testget_mime_content_type_from_filename() |
494
|
|
|
{ |
495
|
|
|
//execute the method and test if it returns expected values |
496
|
|
|
|
497
|
|
|
$this->assertSame('', get_mime_content_type_from_filename('') ); |
498
|
|
|
$this->assertSame('application/octet-stream', get_mime_content_type_from_filename('file.tmp') ); |
499
|
|
|
$this->assertSame('text/plain', get_mime_content_type_from_filename('file.txt') ); |
500
|
|
|
$this->assertSame('application/x-shockwave-flash', get_mime_content_type_from_filename('file.swf') ); |
501
|
|
|
$this->assertSame('video/x-flv', get_mime_content_type_from_filename('file.flv') ); |
502
|
|
|
|
503
|
|
|
} |
504
|
|
|
|
505
|
|
|
public function testcleanFileName() |
506
|
|
|
{ |
507
|
|
|
//execute the method and test if it returns expected values |
508
|
|
|
|
509
|
|
|
$this->assertSame("file.txt", cleanFileName("file<?>.txt") ); |
510
|
|
|
$this->assertSame("file_1.txt", cleanFileName("file_1<?>.txt") ); |
511
|
|
|
$this->assertSame("file.txt", cleanFileName("file.txt") ); |
512
|
|
|
} |
513
|
|
|
|
514
|
|
|
public function testcleanDirName() |
515
|
|
|
{ |
516
|
|
|
//execute the method and test if it returns expected values |
517
|
|
|
|
518
|
|
|
$this->assertSame("testDir", cleanDirName("./testDir") ); |
519
|
|
|
$this->assertSame("testDir", cleanDirName("..\\testDir") ); |
520
|
|
|
$this->assertSame("testDir", cleanDirName("\\test/Dir/") ); |
521
|
|
|
|
522
|
|
|
} |
523
|
|
|
|
524
|
|
|
} |