0, 1 => 0, 2 => 33206, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 6, 8 => 0, 9 => 0, 10 => 0, 11 => $stBlksize, 12 => $stBlksize, 'dev' => 0, 'ino' => 0, 'mode' => 33206, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 6, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => $stBlksize, 'blocks' => $stBlksize, ], fstat($handle)); } self::assertTrue(fclose($handle)); self::assertSame('foobar', (string) $stream); } public function testStreamContext() { $stream = Psr7\Utils::streamFor('foo'); self::assertSame('foo', file_get_contents('guzzle://stream', false, StreamWrapper::createStreamContext($stream))); } public function testStreamCast() { $streams = [ StreamWrapper::getResource(Psr7\Utils::streamFor('foo')), StreamWrapper::getResource(Psr7\Utils::streamFor('bar')) ]; $write = null; $except = null; $this->assertInternalTypeGuzzle('integer', stream_select($streams, $write, $except, 0)); } public function testValidatesStream() { $stream = $this->getMockBuilder('Psr\Http\Message\StreamInterface') ->setMethods(['isReadable', 'isWritable']) ->getMockForAbstractClass(); $stream->expects(self::once()) ->method('isReadable') ->will(self::returnValue(false)); $stream->expects(self::once()) ->method('isWritable') ->will(self::returnValue(false)); $this->expectExceptionGuzzle('InvalidArgumentException'); StreamWrapper::getResource($stream); } public function testReturnsFalseWhenStreamDoesNotExist() { $this->expectWarningGuzzle(); fopen('guzzle://foo', 'r'); } public function testCanOpenReadonlyStream() { $stream = $this->getMockBuilder('Psr\Http\Message\StreamInterface') ->setMethods(['isReadable', 'isWritable']) ->getMockForAbstractClass(); $stream->expects(self::once()) ->method('isReadable') ->will(self::returnValue(false)); $stream->expects(self::once()) ->method('isWritable') ->will(self::returnValue(true)); $r = StreamWrapper::getResource($stream); $this->assertInternalTypeGuzzle('resource', $r); fclose($r); } public function testUrlStat() { StreamWrapper::register(); $stBlksize = defined('PHP_WINDOWS_VERSION_BUILD') ? -1 : 0; self::assertSame([ 0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, 9 => 0, 10 => 0, 11 => $stBlksize, 12 => $stBlksize, 'dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => $stBlksize, 'blocks' => $stBlksize, ], stat('guzzle://stream')); } public function testXmlReaderWithStream() { if (!class_exists('XMLReader')) { self::markTestSkipped('XML Reader is not available.'); } if (defined('HHVM_VERSION')) { self::markTestSkipped('This does not work on HHVM.'); } $stream = Psr7\Utils::streamFor(''); StreamWrapper::register(); libxml_set_streams_context(StreamWrapper::createStreamContext($stream)); $reader = new \XMLReader(); self::assertTrue($reader->open('guzzle://stream')); self::assertTrue($reader->read()); self::assertSame('foo', $reader->name); } public function testXmlWriterWithStream() { if (!class_exists('XMLWriter')) { self::markTestSkipped('XML Writer is not available.'); } if (defined('HHVM_VERSION')) { self::markTestSkipped('This does not work on HHVM.'); } $stream = Psr7\Utils::streamFor(fopen('php://memory', 'wb')); StreamWrapper::register(); libxml_set_streams_context(StreamWrapper::createStreamContext($stream)); $writer = new \XMLWriter(); self::assertTrue($writer->openURI('guzzle://stream')); self::assertTrue($writer->startDocument()); self::assertTrue($writer->writeElement('foo')); self::assertTrue($writer->endDocument()); $stream->rewind(); self::assertXmlStringEqualsXmlString('', (string) $stream); } }