public function testStore() { $driver = new Horde_Kolab_Storage_Stub_Driver('user'); $driver->setMessage('INBOX', 1, file_get_contents(__DIR__ . '/../../../../fixtures/note.eml')); $factory = new Horde_Kolab_Format_Factory(); $writer = new Horde_Kolab_Storage_Object_Writer_Format($factory); $object = new Horde_Kolab_Storage_Object(); $object->setDriver($driver); $folder = $this->getMock('Horde_Kolab_Storage_Folder'); $folder->expects($this->once())->method('getPath')->will($this->returnValue('INBOX')); $folder->expects($this->once())->method('getType')->will($this->returnValue('note')); $structure = $driver->fetchComplete('INBOX', 1); $object->load(1, $folder, $writer, $structure[1]); $object->setData(array('summary' => 'NEW', 'description' => 'test', 'uid' => 'ABC1234')); $object->save($writer); $result = $driver->messages['INBOX'][2]; $result = preg_replace(array('/=20/', '/Date: .*/', '/boundary=".*"/', '/--=_.*/', '/<creation-date>[^<]*/', '/<last-modification-date>[^<]*/', '/\\r\\n/', '/=\\n/'), array(' ', 'Date: ', 'boundary=""', '--=_', '<creation-date>', '<last-modification-date>', "\n", ''), $result); $this->assertEquals('From: user To: user Date: Subject: ABC1234 User-Agent: Horde::Kolab::Storage v@version@ MIME-Version: 1.0 X-Kolab-Type: application/x-vnd.kolab.note Content-Type: multipart/mixed; boundary=""; name="Kolab Groupware Data" Content-Disposition: attachment; filename="Kolab Groupware Data" This message is in MIME format. --=_ Content-Type: text/plain; charset=utf-8; name="Kolab Groupware Information" Content-Disposition: inline; filename="Kolab Groupware Information" This is a Kolab Groupware object. To view this object you will need an email client that understands the Kolab Groupware format. For a list of such email clients please visit http://www.kolab.org/content/kolab-clients --=_ Content-Type: application/x-vnd.kolab.note; name=kolab.xml Content-Disposition: inline; x-kolab-type=xml; filename=kolab.xml <?xml version="1.0" encoding="UTF-8"?> <note version="1.0"> <uid>ABC1234</uid> <body/> <categories/> <creation-date></creation-date> <last-modification-date></last-modification-date> <sensitivity>public</sensitivity> <product-id>Horde_Kolab_Format_Xml-@version@ (api version: 2)</product-id> <summary>NEW</summary> <x-test>other client</x-test> <background-color>#000000</background-color> <foreground-color>#ffff00</foreground-color> </note> --=_ ', $result); }
/** * @expectedException Horde_Kolab_Storage_Object_Exception */ public function testSaveException() { $data = $this->getMock('Horde_Kolab_Storage_Object_Writer'); $this->driver->expects($this->once())->method('fetchComplete')->will($this->returnValue(array(new Horde_Mime_Headers(), $this->getMultipartMimeMessage('application/x-vnd.kolab.event')))); $this->driver->expects($this->once())->method('appendMessage')->will($this->returnValue(false)); $object = new Horde_Kolab_Storage_Object(); $this->folder->expects($this->once())->method('getType')->will($this->returnValue('event')); $this->folder->expects($this->once())->method('getPath')->will($this->returnValue('INBOX/Calendar')); $object->setDriver($this->driver); $object->load('1', $this->folder, $data, $this->getMultipartMimeMessage('application/x-vnd.kolab.event')); $object->save($data); }