1 20 21 package com.methodhead.res; 22 23 import java.util.*; 24 import java.sql.*; 25 import java.io.*; 26 import junit.framework.*; 27 import org.apache.log4j.*; 28 import org.apache.commons.io.*; 29 import com.methodhead.persistable.*; 30 import com.methodhead.test.*; 31 32 public class FileManagerTest extends TestCase { 33 34 private File testDir_ = null; 35 private File testDir1_ = null; 36 private File testDir2_ = null; 37 private File testDir3_ = null; 38 private File testFile1_ = null; 39 private File testFile2_ = null; 40 private File testFile3_ = null; 41 private File testFile4_ = null; 42 43 private FileManager fileManager = null; 44 private File file = null; 45 private Directory directory = null; 46 private File[] files = null; 47 private String [] fileNames = null; 48 private Directory[] directories = null; 49 private List list = null; 50 51 static { 52 TestUtils.initLogger(); 53 TestUtils.initDb(); 54 } 55 56 public FileManagerTest( String name ) { 57 super( name ); 58 } 59 60 private void setUpFileManager() throws IOException { 61 62 testDir_ = new File( "build/testdir" ); 66 if ( testDir_.exists() ) 67 FileUtils.deleteDirectory( testDir_ ); 68 69 testDir_.mkdir(); 73 74 testDir1_ = new File( "build/testdir/testdir1" ); 86 testDir1_.mkdir(); 87 88 testFile1_ = new File( "build/testdir/testdir1/testfile1.txt" ); 89 testFile1_.createNewFile(); 90 91 testFile2_ = new File( "build/testdir/testdir1/testfile2.txt" ); 92 testFile2_.createNewFile(); 93 94 testDir2_ = new File( "build/testdir/testdir2" ); 95 testDir2_.mkdir(); 96 97 testDir3_ = new File( "build/testdir/testdir2/testdir3" ); 98 testDir3_.mkdir(); 99 100 testFile3_ = new File( "build/testdir/testdir2/testdir3/testfile3.txt" ); 101 testFile3_.createNewFile(); 102 103 testFile4_ = new File( "build/testdir/testdir2/testfile4.txt" ); 104 testFile4_.createNewFile(); 105 106 fileManager = new FileManager(); 107 fileManager.addDirectory( "Dir1", testDir1_ ); 108 fileManager.addDirectory( "Dir2", testDir2_ ); 109 } 110 111 protected void setUp() { 112 try { 114 } 115 catch ( Exception e ) { 116 fail( e.getMessage() ); 117 } 118 } 119 120 protected void tearDown() { 121 } 122 123 public void testFileForPath() { 124 try { 125 setUpFileManager(); 126 127 try { 131 fileManager.getFileForPath( "Dir1/../../passwd" ); 132 fail( "No exception thrown." ); 133 } 134 catch ( ResException e ) { 135 } 137 138 assertEquals( testDir1_, fileManager.getFileForPath( "Dir1" ) ); 139 assertEquals( testDir3_, fileManager.getFileForPath( "Dir2/testdir3" ) ); 140 assertNull( fileManager.getFileForPath( "BadDir" ) ); 141 assertNull( fileManager.getFileForPath( "Dir2/baddir" ) ); 142 } 143 catch ( Exception e ) { 144 e.printStackTrace(); 145 fail(); 146 } 147 } 148 149 public void testAddDirectory() { 150 try { 151 setUpFileManager(); 152 153 fileManager = new FileManager(); 157 158 try { 159 fileManager.addDirectory( "TestDir", new File( "testdir/foo" ) ); 160 fail( "No exception thrown." ); 161 } 162 catch ( ResException e ) { 163 } 165 166 try { 167 fileManager.addDirectory( "TestDir", testFile1_ ); 168 fail( "No exception thrown." ); 169 } 170 catch ( ResException e ) { 171 } 173 174 testDir1_.mkdir(); 178 fileManager.addDirectory( "TestDir", testDir1_ ); 179 assertEquals( 1, fileManager.directories_.keySet().size() ); 180 181 directory = ( Directory )fileManager.directories_.get( "TestDir" ); 182 assertNotNull( directory ); 183 assertEquals( "TestDir", directory.getName() ); 184 assertEquals( directory.getFile(), testDir1_ ); 185 186 try { 190 fileManager.addDirectory( "TestDir", testDir2_ ); 191 fail( "No exception thrown." ); 192 } 193 catch ( ResException e ) { 194 } 196 197 fileManager.addDirectory( "", testDir2_ ); 201 assertEquals( 2, fileManager.directories_.keySet().size() ); 202 203 directory = ( Directory )fileManager.directories_.get( "" ); 204 assertNotNull( directory ); 205 assertEquals( "", directory.getName() ); 206 assertEquals( directory.getFile(), testDir2_ ); 207 } 208 catch ( Exception e ) { 209 e.printStackTrace(); 210 fail(); 211 } 212 } 213 214 public void testGetFile() { 215 try { 216 setUpFileManager(); 217 218 file = fileManager.getFile( "Dir1", "testfile1.txt" ); 222 assertEquals( testFile1_, file ); 223 224 file = fileManager.getFile( "Dir2/testdir3", "testfile3.txt" ); 228 assertEquals( testFile3_, file ); 229 230 file = fileManager.getFile( "Dir2", "testdir3" ); 234 assertEquals( testDir3_, file ); 235 236 file = fileManager.getFile( "Dir2/testdir3", "testfile4.txt" ); 240 assertNull( file ); 241 242 assertNull( fileManager.getFile( "BadDir", "testfile1.txt" ) ); 246 assertNull( fileManager.getFile( "Dir1/BadDir", "testfile1.txt" ) ); 247 assertNull( fileManager.getFile( "Dir1", "badfile.txt" ) ); 248 } 249 catch ( Exception e ) { 250 e.printStackTrace(); 251 fail(); 252 } 253 } 254 255 public void testGetNewFile() { 256 try { 257 setUpFileManager(); 258 259 try { 263 file = fileManager.getNewFile( "Dir1", "testfile1.txt" ); 264 fail( "No exception thrown" ); 265 } 266 catch ( ResException e ) {} 267 268 file = fileManager.getNewFile( "Dir1", "testfile5.txt" ); 272 assertNotNull( file ); 273 assertTrue( !file.exists() ); 274 275 file = fileManager.getNewFile( "Dir2/testdir3", "testfile6.txt" ); 279 assertNotNull( file ); 280 assertTrue( !file.exists() ); 281 } 282 catch ( Exception e ) { 283 e.printStackTrace(); 284 fail(); 285 } 286 } 287 288 public void testGetFiles() { 289 try { 290 setUpFileManager(); 291 292 files = fileManager.getFiles( "Dir1" ); 296 assertNotNull( files ); 297 assertEquals( 2, files.length ); 298 assertEquals( testFile1_, files[ 0 ] ); 299 assertEquals( testFile2_, files[ 1 ] ); 300 301 files = fileManager.getFiles( "Dir2/testdir3" ); 305 assertNotNull( files ); 306 assertEquals( 1, files.length ); 307 assertEquals( testFile3_, files[ 0 ] ); 308 309 assertNull( fileManager.getFiles( "Dir2/testdir4" ) ); 313 assertNull( fileManager.getFiles( "Dir3" ) ); 314 } 315 catch ( Exception e ) { 316 e.printStackTrace(); 317 fail(); 318 } 319 } 320 321 public void testGetDirectories() { 322 try { 323 setUpFileManager(); 324 325 directories = fileManager.getDirectories(); 329 assertEquals( 2, directories.length ); 330 331 directory = directories[ 0 ]; 332 assertNotNull( directory ); 333 assertEquals( "Dir1", directory.getName() ); 334 assertEquals( testDir1_, directory.getFile() ); 335 336 directory = directories[ 1 ]; 337 assertNotNull( directory ); 338 assertEquals( "Dir2", directory.getName() ); 339 assertEquals( testDir2_, directory.getFile() ); 340 } 341 catch ( Exception e ) { 342 e.printStackTrace(); 343 fail(); 344 } 345 } 346 347 public void testIsDestSubdir() { 348 try { 349 setUpFileManager(); 350 351 assertTrue( fileManager.isDestSubdir( "Dir1", new String [] { "subdir1" }, "Dir1/subdir1" ) ); 355 assertTrue( fileManager.isDestSubdir( "Dir1", new String [] { "subdir1" }, "Dir1/subdir1/subdir2" ) ); 356 assertTrue( !fileManager.isDestSubdir( "Dir1", new String [] { "subdir1" }, "Dir2/subdir1" ) ); 357 assertTrue( !fileManager.isDestSubdir( "Dir1", new String [] { "subdir1" }, "Dir3" ) ); 358 } 359 catch ( Exception e ) { 360 e.printStackTrace(); 361 fail(); 362 } 363 } 364 365 public void testCanOverwrite() { 366 try { 367 setUpFileManager(); 368 369 assertTrue( fileManager.canOverwrite( null, true ) ); 373 assertTrue( fileManager.canOverwrite( null, false ) ); 374 assertTrue( !fileManager.canOverwrite( testDir1_, true ) ); 375 assertTrue( !fileManager.canOverwrite( testDir1_, false ) ); 376 assertTrue( fileManager.canOverwrite( testFile1_, false ) ); 377 assertTrue( !fileManager.canOverwrite( testFile1_, true ) ); 378 379 assertTrue( fileManager.canOverwrite( testFile1_, null ) ); 380 assertTrue( fileManager.canOverwrite( testDir1_, null ) ); 381 assertTrue( fileManager.canOverwrite( testFile1_, testFile2_ ) ); 382 assertTrue( !fileManager.canOverwrite( testFile1_, testDir1_ ) ); 383 assertTrue( !fileManager.canOverwrite( testDir1_, testDir2_ ) ); 384 assertTrue( !fileManager.canOverwrite( testDir1_, testFile1_ ) ); 385 } 386 catch ( Exception e ) { 387 e.printStackTrace(); 388 fail(); 389 } 390 } 391 392 public void testValidateMove() { 393 try { 394 setUpFileManager(); 395 396 File dupDir = new File( "build/testdir/testdir1/testdir3" ); 400 dupDir.mkdir(); 401 402 File dupFile2 = new File( "build/testdir/testdir1/testfile3.txt" ); 403 dupFile2.mkdir(); 404 405 assertNull( fileManager.validateMove( "Dir1", new String [] { "testfile1.txt" }, "Dir2", "testfile1.txt" ) ); 409 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt" }, "Dir3", "testfile1.txt" ) ); 410 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt" }, "Dir3/../../etc", "testfile1.txt" ) ); 411 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt" }, "", "testfile1.txt" ) ); 412 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt" }, "Dir2/baddir", "testfile1.txt" ) ); 413 assertEquals( FileManager.VALIDATE_SUBDIROFSELF, fileManager.validateMove( "Dir2", new String [] { "testdir3" }, "Dir2/testdir3", "testdir3" ) ); 414 assertEquals( FileManager.VALIDATE_INVALIDDESTNAME, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt" }, "Dir2", "" ) ); 415 assertEquals( FileManager.VALIDATE_CANTOVERWRITE, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt" }, "Dir2", "testdir3" ) ); 416 417 assertNull( fileManager.validateMove( "Dir1", new String [] { "testfile1.txt", "testfile2.txt" }, "Dir2", "" ) ); 421 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt", "testfile2.txt" }, "Dir3", "" ) ); 422 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt", "testfile2.txt" }, "Dir3/../../etc", "testfile1.txt" ) ); 423 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt", "testfile2.txt" }, "", "testfile1.txt" ) ); 424 assertEquals( FileManager.VALIDATE_INVALIDDESTPATH, fileManager.validateMove( "Dir1", new String [] { "testfile1.txt", "testfile2.txt" }, "Dir2/baddir", "testfile1.txt" ) ); 425 assertEquals( FileManager.VALIDATE_SUBDIROFSELF, fileManager.validateMove( "Dir2", new String [] { "testdir3", "testfile4.txt" }, "Dir2/testdir3", "testdir3" ) ); 426 assertEquals( FileManager.VALIDATE_CANTOVERWRITE, fileManager.validateMove( "Dir1", new String [] { "testdir3", "testfile1.txt" }, "Dir2", "" ) ); 427 } 428 catch ( Exception e ) { 429 e.printStackTrace(); 430 fail(); 431 } 432 } 433 434 public void testValidateCreate() { 435 try { 436 setUpFileManager(); 437 438 assertNull( fileManager.validateCreate( "Dir1", "testfile1.txt", false ) ); 442 assertEquals( FileManager.VALIDATE_CANTOVERWRITE, fileManager.validateCreate( "Dir1", "testfile1.txt", true ) ); 443 444 assertEquals( FileManager.VALIDATE_CANTOVERWRITE, fileManager.validateCreate( "Dir2", "testdir3", false ) ); 448 assertEquals( FileManager.VALIDATE_CANTOVERWRITE, fileManager.validateCreate( "Dir2", "testdir3", true ) ); 449 } 450 catch ( Exception e ) { 451 e.printStackTrace(); 452 fail(); 453 } 454 } 455 456 public void testFindOverwriteFiles() { 457 try { 458 setUpFileManager(); 459 460 File dupFile = new File( "build/testdir/testdir1/testfile4.txt" ); 464 dupFile.createNewFile(); 465 466 assertNull( fileManager.findOverwriteFiles( "Dir1", new String [] { "testfile1.txt" }, "Dir2", "testfile1.txt" ) ); 470 471 fileNames = fileManager.findOverwriteFiles( "Dir1", new String [] { "testfile1.txt" }, "Dir2", "testfile4.txt" ); 475 assertNotNull( fileNames ); 476 assertEquals( 1, fileNames.length ); 477 assertEquals( "testfile4.txt", fileNames[ 0 ] ); 478 479 fileNames = fileManager.findOverwriteFiles( "Dir1", new String [] { "testfile1.txt", "testfile4.txt" }, "Dir2", "" ); 483 assertNotNull( fileNames ); 484 assertEquals( 1, fileNames.length ); 485 assertEquals( "testfile4.txt", fileNames[ 0 ] ); 486 } 487 catch ( Exception e ) { 488 e.printStackTrace(); 489 fail(); 490 } 491 } 492 493 public void testMoveSingle() { 494 try { 495 setUpFileManager(); 496 497 fileManager.move( "Dir1", new String [] { "testfile1.txt" }, "Dir2", "newtestfile1.txt" ); 501 assertTrue( !testFile1_.exists() ); 502 503 file = new File( "build/testdir/testdir2/newtestfile1.txt" ); 504 assertTrue( file.exists() ); 505 assertTrue( file.isFile() ); 506 } 507 catch ( Exception e ) { 508 e.printStackTrace(); 509 fail(); 510 } 511 } 512 513 public void testMoveSet() { 514 try { 515 setUpFileManager(); 516 517 fileManager.move( "Dir1", new String [] { "testfile1.txt", "testfile2.txt" }, "Dir2", "newtestfile1.txt" ); 521 assertTrue( !testFile1_.exists() ); 522 assertTrue( !testFile2_.exists() ); 523 524 file = new File( "build/testdir/testdir2/testfile1.txt" ); 525 assertTrue( file.exists() ); 526 assertTrue( file.isFile() ); 527 528 file = new File( "build/testdir/testdir2/testfile2.txt" ); 529 assertTrue( file.exists() ); 530 assertTrue( file.isFile() ); 531 } 532 catch ( Exception e ) { 533 e.printStackTrace(); 534 fail(); 535 } 536 } 537 538 public void testCopyFile() { 539 try { 540 setUpFileManager(); 541 542 file = new File( "build/testdir/testdir1/newtestfile1.txt" ); 546 FileManager.copyFile( testFile1_, file ); 547 assertTrue( testFile1_.exists() ); 548 assertTrue( file.exists() ); 549 assertTrue( file.isFile() ); 550 551 file = new File( "build/testdir/testdir2/newtestdir3" ); 555 FileManager.copyFile( testDir3_, file ); 556 assertTrue( testDir3_.exists() ); 557 assertTrue( testDir3_.isDirectory() ); 558 assertTrue( file.exists() ); 559 assertTrue( file.isDirectory() ); 560 561 file = new File( "build/testdir/testdir2/newtestdir3/testfile3.txt" ); 562 assertTrue( file.exists() ); 563 assertTrue( file.isFile() ); 564 } 565 catch ( Exception e ) { 566 e.printStackTrace(); 567 fail(); 568 } 569 } 570 571 public void testCopy() { 572 try { 573 setUpFileManager(); 574 575 fileManager.copy( "Dir1", new String [] { "testfile1.txt" }, "Dir2", "newtestfile1.txt" ); 579 assertTrue( testFile1_.exists() ); 580 581 file = new File( "build/testdir/testdir2/newtestfile1.txt" ); 582 assertTrue( file.exists() ); 583 assertTrue( file.isFile() ); 584 585 fileManager.copy( "Dir2", new String [] { "testdir3" }, "Dir1", "newtestdir3" ); 589 assertTrue( testDir3_.exists() ); 590 591 file = new File( "build/testdir/testdir1/newtestdir3" ); 592 assertTrue( file.exists() ); 593 assertTrue( file.isDirectory() ); 594 595 file = new File( "build/testdir/testdir1/newtestdir3/testfile3.txt" ); 596 assertTrue( file.exists() ); 597 assertTrue( file.isFile() ); 598 } 599 catch ( Exception e ) { 600 e.printStackTrace(); 601 fail(); 602 } 603 } 604 605 public void testDelete() { 606 try { 607 608 setUpFileManager(); 612 613 try { 614 fileManager.delete( "Dir1", new String [] { "badfile.txt" } ); 615 fail( "No exception thrown." ); 616 } 617 catch ( Exception e ) {} 618 619 try { 620 fileManager.delete( "Dir3", new String [] { "badfile.txt" } ); 621 fail( "No exception thrown." ); 622 } 623 catch ( Exception e ) {} 624 625 try { 629 fileManager.delete( "Dir1", new String [] { "" } ); 630 fail( "No exception thrown." ); 631 } 632 catch ( Exception e ) {} 633 634 setUpFileManager(); 638 639 fileManager.delete( "Dir1", new String [] { "testfile1.txt" } ); 640 assertTrue( !testFile1_.exists() ); 641 642 setUpFileManager(); 646 647 fileManager.delete( "Dir2", new String [] { "testdir3" } ); 648 assertTrue( !testDir3_.exists() ); 649 assertTrue( !testFile3_.exists() ); 650 651 setUpFileManager(); 655 656 fileManager.delete( "Dir2", new String [] { "testdir3", "testfile4.txt" } ); 657 assertTrue( !testDir3_.exists() ); 658 assertTrue( !testFile3_.exists() ); 659 assertTrue( !testFile4_.exists() ); 660 } 661 catch ( Exception e ) { 662 e.printStackTrace(); 663 fail(); 664 } 665 } 666 667 public void testCreate() { 668 try { 669 670 setUpFileManager(); 674 fileManager.create( "Dir1", "testfile5.txt", false ); 675 676 file = new File( testDir1_, "testfile5.txt" ); 677 assertTrue( file.exists() ); 678 assertTrue( file.isFile() ); 679 680 fileManager.create( "Dir1", "testdir4", true ); 684 685 file = new File( testDir1_, "testdir4" ); 686 assertTrue( file.exists() ); 687 assertTrue( file.isDirectory() ); 688 689 fileManager.create( "Dir1", "testfile5.txt", new ByteArrayInputStream( "This is a test".getBytes() ) ); 693 file = new File( testDir1_, "testfile5.txt" ); 694 assertTrue( file.exists() ); 695 assertTrue( file.isFile() ); 696 assertEquals( "This is a test", FileUtils.readFileToString( file, "ISO-8859-1" ) ); 697 } 698 catch ( Exception e ) { 699 e.printStackTrace(); 700 fail(); 701 } 702 } 703 } 704 | Popular Tags |