PageRenderTime 42ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/aws/aws-sdk-php/tests/Aws/Tests/S3/Sync/UploadSyncBuilderTest.php

https://github.com/lslucas/105fm
PHP | 132 lines | 101 code | 13 blank | 18 comment | 0 complexity | 7439c0ff831346f6ad6bbb1891eec052 MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License").
  6. * You may not use this file except in compliance with the License.
  7. * A copy of the License is located at
  8. *
  9. * http://aws.amazon.com/apache2.0
  10. *
  11. * or in the "license" file accompanying this file. This file is distributed
  12. * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  13. * express or implied. See the License for the specific language governing
  14. * permissions and limitations under the License.
  15. */
  16. namespace Aws\Tests\S3\Sync;
  17. use Aws\S3\Model\AcpBuilder;
  18. use Aws\S3\Sync\UploadSyncBuilder;
  19. /**
  20. * @covers Aws\S3\Sync\UploadSyncBuilder
  21. * @covers Aws\S3\Sync\UploadSync
  22. */
  23. class UploadSyncBuilderTest extends \Guzzle\Tests\GuzzleTestCase
  24. {
  25. protected function getPreparedClient()
  26. {
  27. $client = $this->getServiceBuilder()->get('s3', true);
  28. $this->setMockResponse($client, array('s3/list_objects_empty'));
  29. return $client;
  30. }
  31. public function testUploadsFromDirectory()
  32. {
  33. $b = UploadSyncBuilder::getInstance()
  34. ->uploadFromDirectory(__DIR__)->setBucket('foo')->setClient($this->getPreparedClient())->build();
  35. $i = $this->readAttribute($b, 'options')->get('iterator');
  36. $this->assertInstanceOf('Aws\S3\Sync\ChangedFilesIterator', $i);
  37. $this->assertInstanceOf('\NoRewindIterator', $i->getInnerIterator());
  38. $i = $i->getInnerIterator()->getInnerIterator();
  39. $this->assertInstanceOf('Guzzle\Iterator\FilterIterator', $i);
  40. $this->assertInstanceOf('RecursiveIteratorIterator', $i->getInnerIterator());
  41. $filenames = array_filter(iterator_to_array($i), function ($f) { return (string) $f; });
  42. $this->assertContains(__FILE__, $filenames);
  43. }
  44. public function testUploadsFromGlob()
  45. {
  46. $b = UploadSyncBuilder::getInstance()
  47. ->uploadFromGlob(__DIR__ . '/*.php')->setBucket('foo')->setClient($this->getPreparedClient())->build();
  48. $i = $this->readAttribute($b, 'options')->get('iterator');
  49. $this->assertInstanceOf('Aws\S3\Sync\ChangedFilesIterator', $i);
  50. $this->assertInstanceOf('\NoRewindIterator', $i->getInnerIterator());
  51. $i = $i->getInnerIterator()->getInnerIterator();
  52. $this->assertInstanceOf('Guzzle\Iterator\FilterIterator', $i);
  53. $this->assertInstanceOf('GlobIterator', $i->getInnerIterator());
  54. $filenames = array_filter(iterator_to_array($i), function ($f) { return (string) $f; });
  55. $this->assertContains(__FILE__, $filenames);
  56. }
  57. public function testCanSetAclOnPutObject()
  58. {
  59. $client = $this->getServiceBuilder()->get('s3', true);
  60. $this->setMockResponse($client, array('s3/list_objects_empty', 's3/head_success'));
  61. $i = new \ArrayIterator(array(new \SplFileInfo(__FILE__)));
  62. $out = fopen('php://temp', 'r+');
  63. $b = UploadSyncBuilder::getInstance()
  64. ->setBaseDir(__DIR__)
  65. ->setSourceIterator($i)
  66. ->setBucket('foo')
  67. ->setClient($client)
  68. ->enableDebugOutput($out)
  69. ->setAcl('public-read')
  70. ->build();
  71. $b->transfer();
  72. $requests = $this->getMockedRequests();
  73. $this->assertCount(2, $requests);
  74. $put = $requests[1];
  75. $this->assertEquals('PUT', $put->getMethod());
  76. $this->assertEquals('/UploadSyncBuilderTest.php', $put->getResource());
  77. $this->assertEquals('public-read', $put->getHeader('x-amz-acl'));
  78. $this->assertEquals('foo.s3.amazonaws.com', $put->getHost());
  79. $this->assertNotNull($put->getHeader('Content-MD5'));
  80. rewind($out);
  81. $this->assertContains('Uploading ' . __FILE__ . ' -> UploadSyncBuilderTest.php (', stream_get_contents($out));
  82. }
  83. public function testCanSetAcpOnMultipartUploadsAndEmitsDebug()
  84. {
  85. $client = $this->getServiceBuilder()->get('s3', true);
  86. $this->setMockResponse($client, array(
  87. 's3/list_objects_empty',
  88. 's3/initiate_multipart_upload',
  89. 's3/upload_part',
  90. 's3/complete_multipart_upload'
  91. ));
  92. $out = fopen('php://temp', 'r+');
  93. UploadSyncBuilder::getInstance()
  94. ->setBucket('foo')
  95. ->setClient($client)
  96. ->setBaseDir(__DIR__)
  97. ->enableDebugOutput($out)
  98. ->setSourceIterator(new \ArrayIterator(array(new \SplFileInfo(__FILE__))))
  99. ->setMultipartUploadSize(filesize(__FILE__) - 1)
  100. ->setAcp(AcpBuilder::newInstance()->setOwner('123')->addGrantForEmail('READ_ACP', 'foo@baz.com')->build())
  101. ->build()
  102. ->transfer();
  103. $requests = $this->getMockedRequests();
  104. $this->assertCount(4, $requests);
  105. $this->assertEquals('POST', $requests[1]->getMethod());
  106. $this->assertContains('?uploads', $requests[1]->getResource());
  107. $this->assertNotNull($requests[1]->getHeader('x-amz-grant-read-acp'));
  108. $this->assertEquals('PUT', $requests[2]->getMethod());
  109. $this->assertEquals('POST', $requests[3]->getMethod());
  110. $this->assertContains('uploadId=', $requests[3]->getResource());
  111. rewind($out);
  112. $contents = stream_get_contents($out);
  113. $this->assertContains(
  114. 'Beginning multipart upload: ' . __FILE__ . ' -> UploadSyncBuilderTest.php (',
  115. $contents
  116. );
  117. $this->assertContains('- Part 1 (', $contents);
  118. }
  119. }