- Timestamp:
- 4 Nov 2011, 18:36:27 (14 years ago)
- Location:
- main/waeup.sirp/branches/ulif-extimgstore/src/waeup/sirp/tests
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.sirp/branches/ulif-extimgstore/src/waeup/sirp/tests/test_app.py
r6593 r7002 43 43 assert result is not None 44 44 assert IFileRetrieval.providedBy(result) 45 assert isinstance(result, ImageStorageFileRetrieval)46 45 return 47 46 -
main/waeup.sirp/branches/ulif-extimgstore/src/waeup/sirp/tests/test_imagestorage.py
r6529 r7002 5 5 import unittest 6 6 from StringIO import StringIO 7 from hurry.file import HurryFile 7 8 from hurry.file.interfaces import IFileRetrieval 9 from zope.component import getUtility, provideUtility, queryUtility 8 10 from zope.component.hooks import setSite 9 11 from zope.interface.verify import verifyClass, verifyObject 12 from grokcore.site import Site 10 13 from waeup.sirp.app import University 14 from waeup.sirp.datacenter import DataCenter 11 15 from waeup.sirp.testing import FunctionalLayer, FunctionalTestCase 12 16 from waeup.sirp.image import createWAeUPImageFile 13 17 from waeup.sirp.imagestorage import ( 14 md5digest, Basket, ImageStorage, ImageStorageFileRetrieval,) 18 md5digest, Basket, ImageStorage, ImageStorageFileRetrieval, 19 FileStoreNameChooser, ExtFileStore, DefaultFileStoreHandler, 20 DefaultStorage) 21 from waeup.sirp.interfaces import ( 22 IFileStoreNameChooser, IExtFileStore, IFileStoreHandler,) 15 23 16 24 class HelperFuncsTests(unittest.TestCase): … … 287 295 return 288 296 289 def test_waeupimagefile(self):297 def DISABLEDtest_waeupimagefile(self): 290 298 # Make sure WAeUPImageFile can use our file retrieval 291 299 setSite(self.app) … … 294 302 self.assertEqual(contents, 'Hi there!') 295 303 296 def test_waeupimagefile_raw(self):304 def DISABLEDtest_waeupimagefile_raw(self): 297 305 # Make sure we can retrieve a file also if it was initialized 298 306 # with no image storage available … … 301 309 contents = myfile.file.read() 302 310 self.assertEqual(contents, 'Hi there!') 311 312 class NameChooserTests(unittest.TestCase): 313 314 def test_iface(self): 315 obj = FileStoreNameChooser(None) 316 verifyClass(IFileStoreNameChooser, FileStoreNameChooser) 317 verifyObject(IFileStoreNameChooser, obj) 318 return 319 320 class ExtFileStoreTests(unittest.TestCase): 321 # Test external file store (non-functional mode) 322 323 def setUp(self): 324 self.workdir = tempfile.mkdtemp() 325 self.root = None 326 return 327 328 def tearDown(self): 329 shutil.rmtree(self.workdir) 330 if self.root is not None: 331 shutil.rmtree(self.root) 332 return 333 334 def test_iface(self): 335 obj = ExtFileStore(None) 336 verifyClass(IExtFileStore, ExtFileStore) 337 verifyObject(IExtFileStore, obj) 338 return 339 340 def test_root_setup_wo_site(self): 341 # if no site is available we can use a temporary root 342 fs = ExtFileStore() 343 self.root = fs.root 344 self.assertTrue(isinstance(self.root, basestring)) 345 self.assertTrue(os.path.exists(self.root)) 346 return 347 348 def test_create_instance(self): 349 storage1 = ExtFileStore() 350 storage2 = ExtFileStore(root=self.workdir) 351 self.root = storage1.root 352 self.assertTrue(storage1.root is not None) 353 self.assertTrue(storage1.root != storage2.root) 354 self.assertEqual(storage2.root, self.workdir) 355 return 356 357 def test_create_file(self): 358 # We can store files 359 storage = ExtFileStore(root=self.workdir) 360 dummy_file = StringIO('sample file') 361 image_file = storage.createFile('mysample', dummy_file) 362 self.assertTrue('mysample' in os.listdir(storage.root)) 363 self.assertEqual('mysample', image_file.data) 364 return 365 366 def test_get_file(self): 367 # We can get files after having them stored 368 storage = ExtFileStore(root=self.workdir) 369 dummy_file = StringIO('sample file') 370 image_file = storage.createFile('mysample', dummy_file) 371 result = storage.getFile(image_file.data) 372 self.assertEqual(result.read(), 'sample file') 373 return 374 375 def test_extract_marker(self): 376 # file stores support extracting markers from filenames 377 storage = ExtFileStore(root=self.workdir) 378 result1 = storage.extractMarker(None) 379 result2 = storage.extractMarker('') 380 result3 = storage.extractMarker('no-marker') 381 result4 = storage.extractMarker('no-marker.txt') 382 result5 = storage.extractMarker('__MARKER__foo.jpg') 383 result6 = storage.extractMarker('__MaRkEr__foo.jpg') 384 result7 = storage.extractMarker('__THE_MARKER__foo.jpg') 385 result8 = storage.extractMarker('__A_MARK__my__foo.jpg') 386 387 self.assertEqual(result1, ('', '', '', '')) 388 self.assertEqual(result2, ('', '', '', '')) 389 self.assertEqual(result3, ('', 'no-marker', 'no-marker', '')) 390 self.assertEqual(result4, ('', 'no-marker.txt', 'no-marker', '.txt')) 391 self.assertEqual(result5, ('marker', 'foo.jpg', 'foo', '.jpg')) 392 self.assertEqual(result6, ('marker', 'foo.jpg', 'foo', '.jpg')) 393 self.assertEqual(result7, ('the_marker', 'foo.jpg', 'foo', '.jpg')) 394 self.assertEqual(result8, ('a_mark', 'my__foo.jpg', 'my__foo', '.jpg')) 395 return 396 397 class DefaultFileStoreHandlerTests(unittest.TestCase): 398 399 def test_iface(self): 400 obj = DefaultFileStoreHandler() 401 verifyClass(IFileStoreHandler, DefaultFileStoreHandler) 402 verifyObject(IFileStoreHandler, obj) 403 return 404 405 class CustomizedFileHandler(object): 406 def pathFromFileID(self, store, root, file_id): 407 """Turn filename into path to store. 408 """ 409 return os.path.join(root, file_id[12:]) 410 411 def createFile(self, store, root, file_id, filename, f): 412 path = self.pathFromFileID(store, root, file_id) 413 return f, path, HurryFile(filename, file_id) 414 415 class FunctionalExtFileStoreTests(FunctionalTestCase): 416 417 layer = FunctionalLayer 418 419 420 def setUp(self): 421 super(FunctionalExtFileStoreTests, self).setUp() 422 self.workdir = tempfile.mkdtemp() 423 self.samplefile = os.path.join(self.workdir, 'sample') 424 self.otherfile = os.path.join(self.workdir, 'other') 425 open(self.samplefile, 'wb').write('Hi there!') 426 open(self.otherfile, 'wb').write('Hi from other!') 427 self.storage = ImageStorage() 428 self.fd = open(self.samplefile, 'r') 429 self.fd2 = open(self.otherfile, 'r') 430 self.getRootFolder()['app'] = University() 431 self.app = self.getRootFolder()['app'] 432 self.app['datacenter'].setStoragePath(self.workdir) 433 # register a custom filename mangler 434 provideUtility( 435 CustomizedFileHandler(), IFileStoreHandler, name=u'mymarker') 436 return 437 438 439 def tearDown(self): 440 super(FunctionalExtFileStoreTests, self).tearDown() 441 self.fd.close() 442 self.fd2.close() 443 shutil.rmtree(self.workdir) 444 return 445 446 def test_root_setup_w_site(self): 447 # if a site is available we use it to determine the root dir 448 fs = ExtFileStore() 449 setSite(self.app) 450 self.root = fs.root 451 expected_root = os.path.join( 452 self.app['datacenter'].storage, 'media') 453 self.assertTrue(isinstance(self.root, basestring)) 454 self.assertEqual(self.root, expected_root) 455 return 456 457 def test_get_utility(self): 458 # we can get an ExtFileStore by global utility lookup 459 fs1 = getUtility(IExtFileStore) 460 fs2 = getUtility(IExtFileStore) 461 self.assertTrue(isinstance(fs1, ExtFileStore)) 462 self.assertTrue(fs1 is fs2) 463 return 464 465 def test_default_handler_create_file(self): 466 # we can use the default handler to store files 467 fs = ExtFileStore() 468 result = fs.createFile('sample.txt', StringIO('sample text')) 469 self.assertEqual(result.data, 'sample.txt') 470 self.assertTrue('sample.txt' in os.listdir(fs.root)) 471 return 472 473 def test_default_handler_get_file(self): 474 # we can get files stored by the default handler 475 fs = ExtFileStore() 476 fs.createFile('sample.txt', StringIO('sample text')) 477 result1 = fs.getFile('sample.txt') 478 result2 = fs.getFile('not-existent') 479 self.assertEqual(result1.read(), 'sample text') 480 self.assertTrue(result2 is None) 481 return 482 483 def test_customized_handler_create_file(self): 484 # we can use registered filename handlers 485 fs = ExtFileStore() 486 result = fs.createFile( 487 '__MYMARKER__sample.txt', StringIO('sample text')) 488 self.assertEqual(result.data, '__MYMARKER__sample.txt') 489 self.assertTrue('sample.txt' in os.listdir(fs.root)) 490 return 491 492 def test_customized_handler_get_file(self): 493 # we consider registered filename handlers when asking for 494 # stored files. 495 fs = ExtFileStore() 496 fs.createFile('__MYMARKER__sample.txt', StringIO('sample text')) 497 result1 = fs.getFile('__MYMARKER__sample.txt') 498 result2 = fs.getFile('__MYMARKER__not-existent') 499 result3 = fs.getFile('not-existent') 500 self.assertEqual(result1.read(), 'sample text') 501 self.assertTrue(result2 is None) 502 self.assertTrue(result3 is None) 503 return 504 505 def test_get_default_handler(self): 506 # we can get a default handler 507 result = queryUtility(IFileStoreHandler) 508 self.assertTrue( 509 isinstance(result, DefaultFileStoreHandler)) 510 return 511 512 def test_get_default_file_retrieval(self): 513 # we get a file store when requesting a file retrieval 514 result = queryUtility(IFileRetrieval) 515 self.assertTrue( 516 isinstance(result, DefaultStorage))
Note: See TracChangeset for help on using the changeset viewer.