123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace AlibabaCloud\Tea\FileForm\Tests;
- use AlibabaCloud\Tea\FileForm\FileForm;
- use AlibabaCloud\Tea\FileForm\FileForm\FileField;
- use AlibabaCloud\Tea\FileForm\FileFormStream;
- use GuzzleHttp\Psr7\Stream;
- use PHPUnit\Framework\TestCase;
- /**
- * @internal
- * @coversNothing
- */
- class FileFormTest extends TestCase
- {
- public function testFileFromStream()
- {
- $boundary = FileForm::getBoundary();
- $stream = FileForm::toFileForm([], $boundary);
- $this->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'));
- }
- }
|