1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
<?php
class Swift_Mime_EmbeddedFileAcceptanceTest extends \PHPUnit_Framework_TestCase
{
private $_contentEncoder;
private $_cache;
private $_grammar;
private $_headers;
public function setUp()
{
$this->_cache = new Swift_KeyCache_ArrayKeyCache(
new Swift_KeyCache_SimpleKeyCacheInputStream()
);
$factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
$this->_contentEncoder = new Swift_Mime_ContentEncoder_Base64ContentEncoder();
$headerEncoder = new Swift_Mime_HeaderEncoder_QpHeaderEncoder(
new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
);
$paramEncoder = new Swift_Encoder_Rfc2231Encoder(
new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8')
);
$this->_grammar = new Swift_Mime_Grammar();
$this->_headers = new Swift_Mime_SimpleHeaderSet(
new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->_grammar)
);
}
public function testContentIdIsSetInHeader()
{
$file = $this->_createEmbeddedFile();
$file->setContentType('application/pdf');
$file->setId('foo@bar');
$this->assertEquals(
'Content-Type: application/pdf'."\r\n".
'Content-Transfer-Encoding: base64'."\r\n".
'Content-Disposition: inline'."\r\n".
'Content-ID: <foo@bar>'."\r\n",
$file->toString()
);
}
public function testDispositionIsSetInHeader()
{
$file = $this->_createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setDisposition('attachment');
$this->assertEquals(
'Content-Type: application/pdf'."\r\n".
'Content-Transfer-Encoding: base64'."\r\n".
'Content-Disposition: attachment'."\r\n".
'Content-ID: <'.$id.'>'."\r\n",
$file->toString()
);
}
public function testFilenameIsSetInHeader()
{
$file = $this->_createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setFilename('foo.pdf');
$this->assertEquals(
'Content-Type: application/pdf; name=foo.pdf'."\r\n".
'Content-Transfer-Encoding: base64'."\r\n".
'Content-Disposition: inline; filename=foo.pdf'."\r\n".
'Content-ID: <'.$id.'>'."\r\n",
$file->toString()
);
}
public function testSizeIsSetInHeader()
{
$file = $this->_createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setSize(12340);
$this->assertEquals(
'Content-Type: application/pdf'."\r\n".
'Content-Transfer-Encoding: base64'."\r\n".
'Content-Disposition: inline; size=12340'."\r\n".
'Content-ID: <'.$id.'>'."\r\n",
$file->toString()
);
}
public function testMultipleParametersInHeader()
{
$file = $this->_createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setFilename('foo.pdf');
$file->setSize(12340);
$this->assertEquals(
'Content-Type: application/pdf; name=foo.pdf'."\r\n".
'Content-Transfer-Encoding: base64'."\r\n".
'Content-Disposition: inline; filename=foo.pdf; size=12340'."\r\n".
'Content-ID: <'.$id.'>'."\r\n",
$file->toString()
);
}
public function testEndToEnd()
{
$file = $this->_createEmbeddedFile();
$id = $file->getId();
$file->setContentType('application/pdf');
$file->setFilename('foo.pdf');
$file->setSize(12340);
$file->setBody('abcd');
$this->assertEquals(
'Content-Type: application/pdf; name=foo.pdf'."\r\n".
'Content-Transfer-Encoding: base64'."\r\n".
'Content-Disposition: inline; filename=foo.pdf; size=12340'."\r\n".
'Content-ID: <'.$id.'>'."\r\n".
"\r\n".
base64_encode('abcd'),
$file->toString()
);
}
// -- Private helpers
protected function _createEmbeddedFile()
{
$entity = new Swift_Mime_EmbeddedFile(
$this->_headers,
$this->_contentEncoder,
$this->_cache,
$this->_grammar
);
return $entity;
}
}
|