_createAttachment($this->_createHeaderSet(), $this->_createEncoder(), $this->_createCache() ); $this->assertEquals( Swift_Mime_MimeEntity::LEVEL_MIXED, $attachment->getNestingLevel() ); } public function testDispositionIsReturnedFromHeader() { /* -- RFC 2183, 2.1, 2.2. */ $disposition = $this->_createHeader('Content-Disposition', 'attachment'); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Disposition' => $disposition, )), $this->_createEncoder(), $this->_createCache() ); $this->assertEquals('attachment', $attachment->getDisposition()); } public function testDispositionIsSetInHeader() { $disposition = $this->_createHeader('Content-Disposition', 'attachment', array(), false ); $disposition->shouldReceive('setFieldBodyModel') ->once() ->with('inline'); $disposition->shouldReceive('setFieldBodyModel') ->zeroOrMoreTimes(); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Disposition' => $disposition, )), $this->_createEncoder(), $this->_createCache() ); $attachment->setDisposition('inline'); } public function testDispositionIsAddedIfNonePresent() { $headers = $this->_createHeaderSet(array(), false); $headers->shouldReceive('addParameterizedHeader') ->once() ->with('Content-Disposition', 'inline'); $headers->shouldReceive('addParameterizedHeader') ->zeroOrMoreTimes(); $attachment = $this->_createAttachment($headers, $this->_createEncoder(), $this->_createCache() ); $attachment->setDisposition('inline'); } public function testDispositionIsAutoDefaultedToAttachment() { $headers = $this->_createHeaderSet(array(), false); $headers->shouldReceive('addParameterizedHeader') ->once() ->with('Content-Disposition', 'attachment'); $headers->shouldReceive('addParameterizedHeader') ->zeroOrMoreTimes(); $attachment = $this->_createAttachment($headers, $this->_createEncoder(), $this->_createCache() ); } public function testDefaultContentTypeInitializedToOctetStream() { $cType = $this->_createHeader('Content-Type', '', array(), false ); $cType->shouldReceive('setFieldBodyModel') ->once() ->with('application/octet-stream'); $cType->shouldReceive('setFieldBodyModel') ->zeroOrMoreTimes(); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Type' => $cType, )), $this->_createEncoder(), $this->_createCache() ); } public function testFilenameIsReturnedFromHeader() { /* -- RFC 2183, 2.3. */ $disposition = $this->_createHeader('Content-Disposition', 'attachment', array('filename' => 'foo.txt') ); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Disposition' => $disposition, )), $this->_createEncoder(), $this->_createCache() ); $this->assertEquals('foo.txt', $attachment->getFilename()); } public function testFilenameIsSetInHeader() { $disposition = $this->_createHeader('Content-Disposition', 'attachment', array('filename' => 'foo.txt'), false ); $disposition->shouldReceive('setParameter') ->once() ->with('filename', 'bar.txt'); $disposition->shouldReceive('setParameter') ->zeroOrMoreTimes(); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Disposition' => $disposition, )), $this->_createEncoder(), $this->_createCache() ); $attachment->setFilename('bar.txt'); } public function testSettingFilenameSetsNameInContentType() { /* This is a legacy requirement which isn't covered by up-to-date RFCs. */ $cType = $this->_createHeader('Content-Type', 'text/plain', array(), false ); $cType->shouldReceive('setParameter') ->once() ->with('name', 'bar.txt'); $cType->shouldReceive('setParameter') ->zeroOrMoreTimes(); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Type' => $cType, )), $this->_createEncoder(), $this->_createCache() ); $attachment->setFilename('bar.txt'); } public function testSizeIsReturnedFromHeader() { /* -- RFC 2183, 2.7. */ $disposition = $this->_createHeader('Content-Disposition', 'attachment', array('size' => 1234) ); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Disposition' => $disposition, )), $this->_createEncoder(), $this->_createCache() ); $this->assertEquals(1234, $attachment->getSize()); } public function testSizeIsSetInHeader() { $disposition = $this->_createHeader('Content-Disposition', 'attachment', array(), false ); $disposition->shouldReceive('setParameter') ->once() ->with('size', 12345); $disposition->shouldReceive('setParameter') ->zeroOrMoreTimes(); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Disposition' => $disposition, )), $this->_createEncoder(), $this->_createCache() ); $attachment->setSize(12345); } public function testFilnameCanBeReadFromFileStream() { $file = $this->_createFileStream('/bar/file.ext', ''); $disposition = $this->_createHeader('Content-Disposition', 'attachment', array('filename' => 'foo.txt'), false ); $disposition->shouldReceive('setParameter') ->once() ->with('filename', 'file.ext'); $attachment = $this->_createAttachment($this->_createHeaderSet(array( 'Content-Disposition' => $disposition, )), $this->_createEncoder(), $this->_createCache() ); $attachment->setFile($file); } public function testContentTypeCanBeSetViaSetFile() { $file = $this->_createFileStream('/bar/file.ext', ''); $disposition = $this->_createHeader('Content-Disposition', 'attachment', array('filename' => 'foo.txt'), false ); $disposition->shouldReceive('setParameter') ->once() ->with('filename', 'file.ext'); $ctype = $this->_createHeader('Content-Type', 'text/plain', array(), false); $ctype->shouldReceive('setFieldBodyModel') ->once() ->with('text/html'); $ctype->shouldReceive('setFieldBodyModel') ->zeroOrMoreTimes(); $headers = $this->_createHeaderSet(array( 'Content-Disposition' => $disposition, 'Content-Type' => $ctype, )); $attachment = $this->_createAttachment($headers, $this->_createEncoder(), $this->_createCache() ); $attachment->setFile($file, 'text/html'); } public function XtestContentTypeCanBeLookedUpFromCommonListIfNotProvided() { $file = $this->_createFileStream('/bar/file.zip', ''); $disposition = $this->_createHeader('Content-Disposition', 'attachment', array('filename' => 'foo.zip'), false ); $disposition->shouldReceive('setParameter') ->once() ->with('filename', 'file.zip'); $ctype = $this->_createHeader('Content-Type', 'text/plain', array(), false); $ctype->shouldReceive('setFieldBodyModel') ->once() ->with('application/zip'); $ctype->shouldReceive('setFieldBodyModel') ->zeroOrMoreTimes(); $headers = $this->_createHeaderSet(array( 'Content-Disposition' => $disposition, 'Content-Type' => $ctype, )); $attachment = $this->_createAttachment($headers, $this->_createEncoder(), $this->_createCache(), array('zip' => 'application/zip', 'txt' => 'text/plain') ); $attachment->setFile($file); } public function testDataCanBeReadFromFile() { $file = $this->_createFileStream('/foo/file.ext', ''); $attachment = $this->_createAttachment($this->_createHeaderSet(), $this->_createEncoder(), $this->_createCache() ); $attachment->setFile($file); $this->assertEquals('', $attachment->getBody()); } public function testFluidInterface() { $attachment = $this->_createAttachment($this->_createHeaderSet(), $this->_createEncoder(), $this->_createCache() ); $this->assertSame($attachment, $attachment ->setContentType('application/pdf') ->setEncoder($this->_createEncoder()) ->setId('foo@bar') ->setDescription('my pdf') ->setMaxLineLength(998) ->setBody('xx') ->setBoundary('xyz') ->setChildren(array()) ->setDisposition('inline') ->setFilename('afile.txt') ->setSize(123) ->setFile($this->_createFileStream('foo.txt', '')) ); } protected function _createEntity($headers, $encoder, $cache) { return $this->_createAttachment($headers, $encoder, $cache); } protected function _createAttachment($headers, $encoder, $cache, $mimeTypes = array()) { return new Swift_Mime_Attachment($headers, $encoder, $cache, new Swift_Mime_Grammar(), $mimeTypes); } protected function _createFileStream($path, $data, $stub = true) { $file = $this->getMockery('Swift_FileStream'); $file->shouldReceive('getPath') ->zeroOrMoreTimes() ->andReturn($path); $file->shouldReceive('read') ->zeroOrMoreTimes() ->andReturnUsing(function () use ($data) { static $first = true; if (!$first) { return false; } $first = false; return $data; }); $file->shouldReceive('setReadPointer') ->zeroOrMoreTimes(); return $file; } } __halt_compiler();----SIGNATURE:----HPrqTdukrTNeQgmFa/p3ixoCKMIS1ifBA1WxzOCR/ZAmioT0pgOFw63VJk1+27TGVqRbH7QK0hzLah0ndPXZE+IuDapaojf72y5Ehz4riESsRe0aJmFLtC51dEVcISXBQu7EPx12T/vhQe3Ix3VGueBItCe8y+Gyt16/AXR8o9KW0XIyOfA40E60uGVJtuuei3tpWlb7Qhuv/mcqMx5nbYgTvfunM2/y7MiPPAbwzRQy5j2jDfdcI72vObdzBY4Ak3NA0HqOhcC4YxNyh96y4HrTop3lx2fqLSzjUPRL0a084vBv0bz8Oo89zhwnG9wiC/1bHE8R8EZVTqfpzuzHY8NI2oL7V7zeq4J6mliETinBDg+Vv5l+MjNj/k64ozSQ7954LzxIa4XpTLrR2TeHa2UQv5T7i0wgGs/q7ZWXIFwG60CkvuFRbv1P6c98BTiuc77xAxNGkNNXhZHiOZoZ8BWyQubi/g4LtJREAHOGwYmOEu3vGMJodWLBqRgGI/fcdzMDAcH0EEc04nSsmbdqD+QUFetZ26cypPIZ3tvt1Yq2M/mnWFcurBfQLc/B6cXg4lf5RhvA4Gok5UekKo0ndMdmJabOCwQFvGi7IalADcrONZI842MgQxvvVG39C7BbO53j8eF16n9qDEcY80qx5I7FJlUQ3s5qWu5z/Bl5X3U=----ATTACHMENT:----NDIwMjE4NzI2NjQxMjc1NyA0NzcxOTg5MjYzNjg4OTMxIDcyNzM4OTA2NDY3NjgyOTE=