*/ class FileFromMemoryTest extends \PHPUnit_Framework_TestCase { public function testAddFileFromMemory() { $fileValidator = function ($files) { // Get only the attachments so the properties can be converted to a format we like $attachments = array_filter($files, function ($f) { return strpos($f['name'], 'attachment') !== false; }); // Convert resources to strings $attachments = array_map(function ($f) { return [ 'name' => $f['name'], 'contents' => fread($f['contents'], 50), 'filename' => $f['filename'], ]; }, $attachments); $this->assertContains(['name' => 'attachment[0]', 'contents' => 'File content', 'filename' => 'file1.txt'], $attachments); $this->assertContains(['name' => 'attachment[1]', 'contents' => 'File content 2', 'filename' => 'file2.txt'], $attachments); $this->assertContains(['name' => 'attachment[2]', 'contents' => 'Contents of a text file', 'filename' => 'text_file.txt'], $attachments); }; $attachments = [ ['filename' => 'file1.txt', 'fileContent' => 'File content'], ['filename' => 'file2.txt', 'fileContent' => 'File content 2'], ['filePath' => './tests/TestAssets/text_file.txt', 'remoteName' => 'text_file.txt'], ]; $mailgun = MockedMailgun::createMock($this, 'POST', 'domain/messages', [], $fileValidator); $mailgun->sendMessage('domain', [ 'from' => 'bob@example.com', 'to' => 'alice@example.com', 'subject' => 'Foo', 'text' => 'Bar', ], [ 'attachment' => $attachments, ]); } }