GridFSTest.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace Gaufrette\Functional\Adapter;
  3. use Gaufrette\Adapter\GridFS;
  4. use Gaufrette\Filesystem;
  5. use MongoDB\Client;
  6. class GridFSTest extends FunctionalTestCase
  7. {
  8. public function setUp()
  9. {
  10. $uri = getenv('MONGO_URI');
  11. $dbname = getenv('MONGO_DBNAME');
  12. if ($uri === false || $dbname === false) {
  13. $this->markTestSkipped('Either MONGO_URI or MONGO_DBNAME env variables are not defined.');
  14. }
  15. $client = new Client($uri);
  16. $db = $client->selectDatabase($dbname);
  17. $bucket = $db->selectGridFSBucket();
  18. $bucket->drop();
  19. $this->filesystem = new Filesystem(new GridFS($bucket));
  20. }
  21. /**
  22. * @test
  23. */
  24. public function shouldListKeys()
  25. {
  26. $this->filesystem->write('foo/foobar/bar.txt', 'data');
  27. $this->filesystem->write('foo/bar/buzz.txt', 'data');
  28. $this->filesystem->write('foobarbuz.txt', 'data');
  29. $this->filesystem->write('foo', 'data');
  30. $allKeys = $this->filesystem->listKeys(' ');
  31. //empty pattern results in ->keys call
  32. $this->assertEquals(
  33. $this->filesystem->keys(),
  34. $allKeys['keys']
  35. );
  36. //these values are canonicalized to avoid wrong order or keys issue
  37. $keys = $this->filesystem->listKeys('foo');
  38. $this->assertEquals(
  39. $this->filesystem->keys(),
  40. $keys['keys'],
  41. '', 0, 10, true);
  42. $keys = $this->filesystem->listKeys('foo/foob');
  43. $this->assertEquals(
  44. array('foo/foobar/bar.txt'),
  45. $keys['keys'],
  46. '', 0, 10, true);
  47. $keys = $this->filesystem->listKeys('foo/');
  48. $this->assertEquals(
  49. array('foo/foobar/bar.txt', 'foo/bar/buzz.txt'),
  50. $keys['keys'],
  51. '', 0, 10, true);
  52. $keys = $this->filesystem->listKeys('foo');
  53. $this->assertEquals(
  54. array('foo/foobar/bar.txt', 'foo/bar/buzz.txt', 'foobarbuz.txt', 'foo'),
  55. $keys['keys'],
  56. '', 0, 10, true);
  57. $keys = $this->filesystem->listKeys('fooz');
  58. $this->assertEquals(
  59. array(),
  60. $keys['keys'],
  61. '', 0, 10, true);
  62. }
  63. /**
  64. * @test
  65. * Tests metadata written to GridFS can be retrieved after writing
  66. */
  67. public function testMetadataRetrieveAfterWrite()
  68. {
  69. //Create local copy of fileadapter
  70. $fileadpt = clone $this->filesystem->getAdapter();
  71. $this->filesystem->getAdapter()->setMetadata('metadatatest', array('testing' => true));
  72. $this->filesystem->write('metadatatest', 'test');
  73. $this->assertEquals($this->filesystem->getAdapter()->getMetadata('metadatatest'), $fileadpt->getMetadata('metadatatest'));
  74. }
  75. }