diff options
-rw-r--r-- | app/Model/File.php | 2 | ||||
-rw-r--r-- | app/Schema/Mysql.php | 7 | ||||
-rw-r--r-- | tests/units/FileTest.php | 31 |
3 files changed, 38 insertions, 2 deletions
diff --git a/app/Model/File.php b/app/Model/File.php index fe417d48..cb1e4792 100644 --- a/app/Model/File.php +++ b/app/Model/File.php @@ -92,7 +92,7 @@ class File extends Base return $this->db->table(self::TABLE)->save(array( 'task_id' => $task_id, - 'name' => $name, + 'name' => substr($name, 0, 255), 'path' => $path, 'is_image' => $is_image ? '1' : '0', 'size' => $size, diff --git a/app/Schema/Mysql.php b/app/Schema/Mysql.php index aa611a6e..a65525c8 100644 --- a/app/Schema/Mysql.php +++ b/app/Schema/Mysql.php @@ -6,7 +6,12 @@ use PDO; use Core\Security; use Model\Link; -const VERSION = 71; +const VERSION = 72; + +function version_72($pdo) +{ + $pdo->exec('ALTER TABLE files MODIFY name VARCHAR(255)'); +} function version_71($pdo) { diff --git a/tests/units/FileTest.php b/tests/units/FileTest.php new file mode 100644 index 00000000..5e882fdb --- /dev/null +++ b/tests/units/FileTest.php @@ -0,0 +1,31 @@ +<?php + +require_once __DIR__.'/Base.php'; + +use Model\Task; +use Model\File; +use Model\TaskCreation; +use Model\Project; + +class FileTest extends Base +{ + public function testCreationFileNameTooLong() + { + $p = new Project($this->container); + $f = new File($this->container); + $tc = new TaskCreation($this->container); + + $this->assertEquals(1, $p->create(array('name' => 'test'))); + $this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'test'))); + + $this->assertTrue($f->create(1, 'test', '/tmp/foo', false, 10)); + $this->assertTrue($f->create(1, str_repeat('a', 1000), '/tmp/foo', false, 10)); + + $files = $f->getAll(1); + $this->assertNotEmpty($files); + $this->assertCount(2, $files); + + $this->assertEquals(str_repeat('a', 255), $files[0]['name']); + $this->assertEquals('test', $files[1]['name']); + } +} |