* (c) Francis Besset * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace BeSimple\Tests\SoapCommon\Soap; use BeSimple\SoapCommon\Mime\MultiPart; use BeSimple\SoapCommon\Mime\Part; use BeSimple\SoapCommon\Mime\PartHeader; class MultiPartTest extends \PHPUnit_Framework_TestCase { public function testConstructor() { $mp = new MultiPart(); $this->assertEquals('1.0', $mp->getHeader('MIME-Version')); $this->assertEquals('multipart/related', $mp->getHeader('Content-Type')); $this->assertEquals('text/xml', $mp->getHeader('Content-Type', 'type')); $this->assertEquals('utf-8', $mp->getHeader('Content-Type', 'charset')); $this->assertRegExp('~urn:uuid:.*~', $mp->getHeader('Content-Type', 'boundary')); } public function testGetMimeMessage() { $mp = new MultiPart(); /* string(51) " --urn:uuid:a81ca327-591e-4656-91a1-8f177ada95b0--" */ $this->assertEquals(51, strlen($mp->getMimeMessage())); $p = new Part('test'); $mp->addPart($p, true); /* string(259) " --urn:uuid:a81ca327-591e-4656-91a1-8f177ada95b0 Content-Type: application/octet-stream; charset=utf-8 Content-Transfer-Encoding: binary Content-ID: test --urn:uuid:a81ca327-591e-4656-91a1-8f177ada95b0--" */ $this->assertEquals(259, strlen($mp->getMimeMessage())); } public function testGetMimeMessageWithHeaders() { $mp = new MultiPart(); /* string(189) "MIME-Version: 1.0 Content-Type: multipart/related; type="text/xml"; charset=utf-8; boundary="urn:uuid:231833e2-a23b-410a-862e-250524fc38f6" --urn:uuid:231833e2-a23b-410a-862e-250524fc38f6--" */ $this->assertEquals(193, strlen($mp->getMimeMessage(true))); $p = new Part('test'); $mp->addPart($p, true); /* string(452) "MIME-Version: 1.0 Content-Type: multipart/related; type="text/xml"; charset=utf-8; boundary="urn:uuid:231833e2-a23b-410a-862e-250524fc38f6"; start="" --urn:uuid:231833e2-a23b-410a-862e-250524fc38f6 Content-Type: application/octet-stream; charset=utf-8 Content-Transfer-Encoding: binary Content-ID: test --urn:uuid:231833e2-a23b-410a-862e-250524fc38f6--" */ $this->assertEquals(458, strlen($mp->getMimeMessage(true))); } public function testGetHeadersForHttp() { $mp = new MultiPart(); $result = array( 'Content-Type: multipart/related; type="text/xml"; charset=utf-8; boundary="' . $mp->getHeader('Content-Type', 'boundary') . '"', ); $this->assertEquals($result, $mp->getHeadersForHttp()); $result = array( 'Content-Type: multipart/related; type="text/xml"; charset=utf-8; boundary="' . $mp->getHeader('Content-Type', 'boundary') . '"', 'Content-Description: test', ); $mp->setHeader('Content-Description', 'test'); $this->assertEquals($result, $mp->getHeadersForHttp()); } public function testAddGetPart() { $mp = new MultiPart(); $p = new Part('test'); $p->setHeader('Content-ID', 'mycontentid'); $mp->addPart($p); $this->assertEquals($p, $mp->getPart('mycontentid')); } public function testAddGetPartWithMain() { $mp = new MultiPart(); $p = new Part('test'); $mp->addPart($p, true); $this->assertEquals($p, $mp->getPart()); } public function testGetParts() { $mp = new MultiPart(); $p1 = new Part('test'); $mp->addPart($p1, true); $p2 = new Part('test'); $mp->addPart($p2); $withoutMain = array( trim($p2->getHeader('Content-ID'),'<>') => $p2, ); $this->assertEquals($withoutMain, $mp->getParts()); $withMain = array( trim($p1->getHeader('Content-ID'),'<>') => $p1, trim($p2->getHeader('Content-ID'),'<>') => $p2, ); $this->assertEquals($withMain, $mp->getParts(true)); } }