assertTrue($stream instanceof FileFormStream); $stream->write($boundary); $this->assertTrue(\strlen($boundary) === $stream->getSize()); } public function testSet() { $fileField = new FileField([ 'filename' => 'fake filename', 'contentType' => 'content type', 'content' => null, ]); $this->assertEquals('fake filename', $fileField->filename); $this->assertEquals('content type', $fileField->contentType); } public function testRead() { $fileField = new FileField(); $fileField->filename = 'haveContent'; $fileField->contentType = 'contentType'; $fileField->content = new Stream(fopen('data://text/plain;base64,' . base64_encode('This is file test. This sentence must be long'), 'r')); $fileFieldNoContent = new FileField(); $fileFieldNoContent->filename = 'noContent'; $fileFieldNoContent->contentType = 'contentType'; $fileFieldNoContent->content = null; $map = [ 'key' => 'value', 'testKey' => 'testValue', 'haveFile' => $fileField, 'noFile' => $fileFieldNoContent, ]; $stream = FileForm::toFileForm($map, 'testBoundary'); $result = $stream->getContents(); $target = "--testBoundary\r\nContent-Disposition: form-data; name=\"key\"\r\n\r\nvalue\r\n--testBoundary\r\nContent-Disposition: form-data; name=\"testKey\"\r\n\r\ntestValue\r\n--testBoundary\r\nContent-Disposition: form-data; name=\"haveFile\"; filename=\"haveContent\"\r\nContent-Type: contentType\r\n\r\nThis is file test. This sentence must be long\r\n--testBoundary--\r\n"; $this->assertEquals($target, $result); } public function testReadFile() { $fileField = new FileField(); $fileField->filename = 'composer.json'; $fileField->contentType = 'application/json'; $fileField->content = new Stream(fopen(__DIR__ . '/../composer.json', 'r')); $map = [ 'name' => 'json_file', 'type' => 'application/json', 'json_file' => $fileField, ]; $boundary = FileForm::getBoundary(); $fileStream = FileForm::toFileForm($map, $boundary); $this->assertTrue(false !== strpos($fileStream->getContents(), 'json_file')); } }