public function testMsgHandleUidCopy() { $path1 = './test_data/test_mailbox_' . date('Ymd_His') . '_' . uniqid('', true); $log = new Logger('test_application'); #$log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG)); $server = new Server('', 0); $server->setLog($log); $server->init(); $storage1 = new DirectoryStorage(); $storage1->setPath($path1); $server->addStorage($storage1); $client = new Client(); $client->setServer($server); $client->setId(1); $msg = $client->msgHandle('15 UID copy'); $this->assertEquals('15 NO uid failure' . Client::MSG_SEPARATOR, $msg); $client->setStatus('hasAuth', true); $msg = $client->msgHandle('15 UID copy'); $this->assertEquals('15 NO No mailbox selected.' . Client::MSG_SEPARATOR, $msg); $server->addFolder('test_dir1'); $server->addFolder('test_dir2'); $client->msgHandle('6 select test_dir1'); $msg = $client->msgHandle('15 UID copy'); $this->assertEquals('15 BAD Arguments invalid.' . Client::MSG_SEPARATOR, $msg); $msg = $client->msgHandle('15 UID copy 100001'); $this->assertEquals('15 BAD Arguments invalid.' . Client::MSG_SEPARATOR, $msg); $msg = $client->msgHandle('15 UID copy 100001 test_dir3'); $this->assertEquals('15 BAD No messages in selected mailbox.' . Client::MSG_SEPARATOR, $msg); $msg = $client->msgHandle('15 UID copy 100001 test_dir2'); $this->assertEquals('15 BAD No messages in selected mailbox.' . Client::MSG_SEPARATOR, $msg); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 1'); $message->setBody('my_body'); $server->addMail($message, 'test_dir1', array(), true); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 2'); $message->setBody('my_body'); $server->addMail($message, 'test_dir1', array(), true); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 3'); $message->setBody('my_body'); $server->addMail($message, 'test_dir1', array(), true); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 4'); $message->setBody('my_body'); $server->addMail($message, 'test_dir1', array(), true); $finder = new Finder(); $files = $finder->in($path1 . '/test_dir1')->files(); $this->assertEquals(4, count($files)); $msg = $client->msgHandle('15 UID copy 100002 test_dir2'); $this->assertEquals('15 OK COPY completed' . Client::MSG_SEPARATOR, $msg); $finder = new Finder(); $files = $finder->in($path1 . '/test_dir2')->files(); $this->assertEquals(1, count($files)); $msg = $client->msgHandle('15 UID copy 100003:100004 test_dir2'); $this->assertEquals('15 OK COPY completed' . Client::MSG_SEPARATOR, $msg); $finder = new Finder(); $files = $finder->in($path1 . '/test_dir2')->files(); $this->assertEquals(3, count($files)); $msg = $client->msgHandle('15 UID copy 1 test_dir2'); $this->assertEquals('15 OK COPY completed' . Client::MSG_SEPARATOR, $msg); $msg = $client->msgHandle('15 UID copy 100001 test_dir3'); $expect = '15 NO [TRYCREATE] Can not get folder: no subfolder named test_dir3' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $server->shutdown(); $filesystem = new Filesystem(); $filesystem->remove($path1); }