diff options
Diffstat (limited to 'server/vendor/guzzlehttp/psr7/tests/MultipartStreamTest.php')
| -rw-r--r-- | server/vendor/guzzlehttp/psr7/tests/MultipartStreamTest.php | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/server/vendor/guzzlehttp/psr7/tests/MultipartStreamTest.php b/server/vendor/guzzlehttp/psr7/tests/MultipartStreamTest.php new file mode 100644 index 0000000..61edb06 --- /dev/null +++ b/server/vendor/guzzlehttp/psr7/tests/MultipartStreamTest.php @@ -0,0 +1,214 @@ +<?php +namespace GuzzleHttp\Tests; + +use GuzzleHttp\Psr7; +use GuzzleHttp\Psr7\MultipartStream; + +class MultipartStreamTest extends \PHPUnit_Framework_TestCase +{ + public function testCreatesDefaultBoundary() + { + $b = new MultipartStream(); + $this->assertNotEmpty($b->getBoundary()); + } + + public function testCanProvideBoundary() + { + $b = new MultipartStream([], 'foo'); + $this->assertEquals('foo', $b->getBoundary()); + } + + public function testIsNotWritable() + { + $b = new MultipartStream(); + $this->assertFalse($b->isWritable()); + } + + public function testCanCreateEmptyStream() + { + $b = new MultipartStream(); + $boundary = $b->getBoundary(); + $this->assertSame("--{$boundary}--\r\n", $b->getContents()); + $this->assertSame(strlen($boundary) + 6, $b->getSize()); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testValidatesFilesArrayElement() + { + new MultipartStream([['foo' => 'bar']]); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testEnsuresFileHasName() + { + new MultipartStream([['contents' => 'bar']]); + } + + public function testSerializesFields() + { + $b = new MultipartStream([ + [ + 'name' => 'foo', + 'contents' => 'bar' + ], + [ + 'name' => 'baz', + 'contents' => 'bam' + ] + ], 'boundary'); + $this->assertEquals( + "--boundary\r\nContent-Disposition: form-data; name=\"foo\"\r\nContent-Length: 3\r\n\r\n" + . "bar\r\n--boundary\r\nContent-Disposition: form-data; name=\"baz\"\r\nContent-Length: 3" + . "\r\n\r\nbam\r\n--boundary--\r\n", (string) $b); + } + + public function testSerializesFiles() + { + $f1 = Psr7\FnStream::decorate(Psr7\stream_for('foo'), [ + 'getMetadata' => function () { + return '/foo/bar.txt'; + } + ]); + + $f2 = Psr7\FnStream::decorate(Psr7\stream_for('baz'), [ + 'getMetadata' => function () { + return '/foo/baz.jpg'; + } + ]); + + $f3 = Psr7\FnStream::decorate(Psr7\stream_for('bar'), [ + 'getMetadata' => function () { + return '/foo/bar.gif'; + } + ]); + + $b = new MultipartStream([ + [ + 'name' => 'foo', + 'contents' => $f1 + ], + [ + 'name' => 'qux', + 'contents' => $f2 + ], + [ + 'name' => 'qux', + 'contents' => $f3 + ], + ], 'boundary'); + + $expected = <<<EOT +--boundary +Content-Disposition: form-data; name="foo"; filename="bar.txt" +Content-Length: 3 +Content-Type: text/plain + +foo +--boundary +Content-Disposition: form-data; name="qux"; filename="baz.jpg" +Content-Length: 3 +Content-Type: image/jpeg + +baz +--boundary +Content-Disposition: form-data; name="qux"; filename="bar.gif" +Content-Length: 3 +Content-Type: image/gif + +bar +--boundary-- + +EOT; + + $this->assertEquals($expected, str_replace("\r", '', $b)); + } + + public function testSerializesFilesWithCustomHeaders() + { + $f1 = Psr7\FnStream::decorate(Psr7\stream_for('foo'), [ + 'getMetadata' => function () { + return '/foo/bar.txt'; + } + ]); + + $b = new MultipartStream([ + [ + 'name' => 'foo', + 'contents' => $f1, + 'headers' => [ + 'x-foo' => 'bar', + 'content-disposition' => 'custom' + ] + ] + ], 'boundary'); + + $expected = <<<EOT +--boundary +x-foo: bar +content-disposition: custom +Content-Length: 3 +Content-Type: text/plain + +foo +--boundary-- + +EOT; + + $this->assertEquals($expected, str_replace("\r", '', $b)); + } + + public function testSerializesFilesWithCustomHeadersAndMultipleValues() + { + $f1 = Psr7\FnStream::decorate(Psr7\stream_for('foo'), [ + 'getMetadata' => function () { + return '/foo/bar.txt'; + } + ]); + + $f2 = Psr7\FnStream::decorate(Psr7\stream_for('baz'), [ + 'getMetadata' => function () { + return '/foo/baz.jpg'; + } + ]); + + $b = new MultipartStream([ + [ + 'name' => 'foo', + 'contents' => $f1, + 'headers' => [ + 'x-foo' => 'bar', + 'content-disposition' => 'custom' + ] + ], + [ + 'name' => 'foo', + 'contents' => $f2, + 'headers' => ['cOntenT-Type' => 'custom'], + ] + ], 'boundary'); + + $expected = <<<EOT +--boundary +x-foo: bar +content-disposition: custom +Content-Length: 3 +Content-Type: text/plain + +foo +--boundary +cOntenT-Type: custom +Content-Disposition: form-data; name="foo"; filename="baz.jpg" +Content-Length: 3 + +baz +--boundary-- + +EOT; + + $this->assertEquals($expected, str_replace("\r", '', $b)); + } +} |
