| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 | 
							- <?php
 - 
 - require_once 'Swift/Mime/MimeEntity.php';
 - require_once 'Swift/Mime/Attachment.php';
 - require_once 'Swift/Mime/AbstractMimeEntityTest.php';
 - require_once 'Swift/FileStream.php';
 - require_once 'Swift/Mime/Grammar.php';
 - 
 - class Swift_Mime_AttachmentTest extends Swift_Mime_AbstractMimeEntityTest
 - {
 -   
 -   public function testNestingLevelIsAttachment()
 -   {
 -     $attachment = $this->_createAttachment($this->_createHeaderSet(),
 -       $this->_createEncoder(), $this->_createCache()
 -       );
 -     $this->assertEqual(
 -       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->assertEqual('attachment', $attachment->getDisposition());
 -   }
 -   
 -   public function testDispositionIsSetInHeader()
 -   {
 -     $disposition = $this->_createHeader('Content-Disposition', 'attachment',
 -       array(), false
 -       );
 -     $this->_checking(Expectations::create()
 -       -> one($disposition)->setFieldBodyModel('inline')
 -       -> ignoring($disposition)
 -       );
 -     $attachment = $this->_createAttachment($this->_createHeaderSet(array(
 -       'Content-Disposition' => $disposition)),
 -       $this->_createEncoder(), $this->_createCache()
 -       );
 -     $attachment->setDisposition('inline');
 -   }
 -   
 -   public function testDispositionIsAddedIfNonePresent()
 -   {
 -     $headers = $this->_createHeaderSet(array(), false);
 -     $this->_checking(Expectations::create()
 -       -> one($headers)->addParameterizedHeader('Content-Disposition', 'inline')
 -       -> ignoring($headers)
 -       );
 -     $attachment = $this->_createAttachment($headers, $this->_createEncoder(),
 -       $this->_createCache()
 -       );
 -     $attachment->setDisposition('inline');
 -   }
 -   
 -   public function testDispositionIsAutoDefaultedToAttachment()
 -   {
 -     $headers = $this->_createHeaderSet(array(), false);
 -     $this->_checking(Expectations::create()
 -       -> one($headers)->addParameterizedHeader('Content-Disposition', 'attachment')
 -       -> ignoring($headers)
 -       );
 -     $attachment = $this->_createAttachment($headers, $this->_createEncoder(),
 -       $this->_createCache()
 -       );
 -   }
 -   
 -   public function testDefaultContentTypeInitializedToOctetStream()
 -   {
 -     $cType = $this->_createHeader('Content-Type', '',
 -       array(), false
 -       );
 -     $this->_checking(Expectations::create()
 -       -> one($cType)->setFieldBodyModel('application/octet-stream')
 -       -> ignoring($cType)
 -       );
 -     $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->assertEqual('foo.txt', $attachment->getFilename());
 -   }
 -   
 -   public function testFilenameIsSetInHeader()
 -   {
 -     $disposition = $this->_createHeader('Content-Disposition', 'attachment',
 -       array('filename'=>'foo.txt'), false
 -       );
 -     $this->_checking(Expectations::create()
 -       -> one($disposition)->setParameter('filename', 'bar.txt')
 -       -> ignoring($disposition)
 -       );
 -     $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
 -       );
 -     $this->_checking(Expectations::create()
 -       -> one($cType)->setParameter('name', 'bar.txt')
 -       -> ignoring($cType)
 -       );
 -     $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->assertEqual(1234, $attachment->getSize());
 -   }
 -   
 -   public function testSizeIsSetInHeader()
 -   {
 -     $disposition = $this->_createHeader('Content-Disposition', 'attachment',
 -       array(), false
 -       );
 -     $this->_checking(Expectations::create()
 -       -> one($disposition)->setParameter('size', 12345)
 -       -> ignoring($disposition)
 -       );
 -     $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
 -       );
 -     $this->_checking(Expectations::create()
 -       -> one($disposition)->setParameter('filename', 'file.ext')
 -       -> ignoring($disposition)
 -       );
 -     $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
 -       );
 -     $ctype = $this->_createHeader('Content-Type', 'text/plain', array(), false);
 -     $headers = $this->_createHeaderSet(array(
 -       'Content-Disposition' => $disposition,
 -       'Content-Type' => $ctype
 -       ));
 -     $this->_checking(Expectations::create()
 -       -> one($disposition)->setParameter('filename', 'file.ext')
 -       -> one($ctype)->setFieldBodyModel('text/html')
 -       -> ignoring($disposition)
 -       -> ignoring($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
 -       );
 -     $ctype = $this->_createHeader('Content-Type', 'text/plain', array(), false);
 -     $headers = $this->_createHeaderSet(array(
 -       'Content-Disposition' => $disposition,
 -       'Content-Type' => $ctype
 -       ));
 -     $this->_checking(Expectations::create()
 -       -> one($disposition)->setParameter('filename', 'file.zip')
 -       -> one($ctype)->setFieldBodyModel('application/zip')
 -       -> ignoring($disposition)
 -       -> ignoring($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', '<some data>');
 -     $attachment = $this->_createAttachment($this->_createHeaderSet(),
 -       $this->_createEncoder(), $this->_createCache()
 -       );
 -     $attachment->setFile($file);
 -     $this->assertEqual('<some data>', $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', ''))
 -       );
 -   }
 -   
 -   // -- Private helpers
 -   
 -   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->_mock('Swift_FileStream');
 -     $pos = $this->_mockery()->states('position')->startsAs('at start');
 -     $this->_checking(Expectations::create()
 -       -> ignoring($file)->getPath() -> returns($path)
 -       -> ignoring($file)->read(optional()) -> returns($data)
 -         -> when($pos->isNot('at end')) -> then($pos->is('at end'))
 -       -> ignoring($file)->read(optional()) -> returns(false)
 -       );
 -     if ($stub)
 -     {
 -       $this->_checking(Expectations::create()
 -         -> ignoring($file)
 -         );
 -     }
 -     return $file;
 -   }
 -   
 - }
 
 
  |