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 138 139 140
|
<?php
use Egulias\EmailValidator\EmailValidator;
class Swift_Mime_EmbeddedFileAcceptanceTest extends \PHPUnit\Framework\TestCase
{
private $contentEncoder;
private $cache;
private $headers;
private $emailValidator;
private $idGenerator;
protected function setUp(): void
{
$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->emailValidator = new EmailValidator();
$this->idGenerator = new Swift_Mime_IdGenerator('example.com');
$this->headers = new Swift_Mime_SimpleHeaderSet(
new Swift_Mime_SimpleHeaderFactory($headerEncoder, $paramEncoder, $this->emailValidator)
);
}
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-ID: <foo@bar>'."\r\n".
'Content-Disposition: inline'."\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-ID: <'.$id.'>'."\r\n".
'Content-Disposition: attachment'."\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-ID: <'.$id.'>'."\r\n".
'Content-Disposition: inline; filename=foo.pdf'."\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-ID: <'.$id.'>'."\r\n".
'Content-Disposition: inline; size=12340'."\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-ID: <'.$id.'>'."\r\n".
'Content-Disposition: inline; filename=foo.pdf; size=12340'."\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-ID: <'.$id.'>'."\r\n".
'Content-Disposition: inline; filename=foo.pdf; size=12340'."\r\n".
"\r\n".
base64_encode('abcd'),
$file->toString()
);
}
protected function createEmbeddedFile()
{
$entity = new Swift_Mime_EmbeddedFile(
$this->headers,
$this->contentEncoder,
$this->cache,
$this->idGenerator
);
return $entity;
}
}
|