From e5bffbf40ff59614cea1b5f3f662d91cf8e63323 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Mon, 7 Sep 2015 11:35:31 +0200
Subject: [PATCH] [ticket/13904] Improve test coverage of base upload type
 class

PHPBB3-13904
---
 tests/files/types_base_test.php | 93 +++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)
 create mode 100644 tests/files/types_base_test.php

diff --git a/tests/files/types_base_test.php b/tests/files/types_base_test.php
new file mode 100644
index 0000000000..dc82ee2639
--- /dev/null
+++ b/tests/files/types_base_test.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ *
+ * This file is part of the phpBB Forum Software package.
+ *
+ * @copyright (c) phpBB Limited <https://www.phpbb.com>
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * For full copyright and license information, please see
+ * the docs/CREDITS.txt file.
+ *
+ */
+
+class phpbb_files_types_base_test extends phpbb_test_case
+{
+	private $path;
+
+	private $filesystem;
+
+	/** @var \Symfony\Component\DependencyInjection\ContainerInterface */
+	protected $container;
+
+	/** @var \phpbb\files\factory */
+	protected $factory;
+
+	/** @var \bantu\IniGetWrapper\IniGetWrapper */
+	protected $php_ini;
+
+	/** @var \phpbb\language\language */
+	protected $language;
+
+	/** @var \phpbb\request\request_interface */
+	protected $request;
+
+	/** @var string phpBB root path */
+	protected $phpbb_root_path;
+
+	protected function setUp()
+	{
+		global $phpbb_root_path, $phpEx;
+
+		$this->request = $this->getMock('\phpbb\request\request');
+
+		$this->filesystem = new \phpbb\filesystem\filesystem();
+		$this->language = new \phpbb\language\language(new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx));
+		$this->php_ini = new \bantu\IniGetWrapper\IniGetWrapper;
+
+		$this->container = new phpbb_mock_container_builder($phpbb_root_path, $phpEx);
+		$this->container->set('files.filespec', new \phpbb\files\filespec(
+			$this->filesystem,
+			$this->language,
+			$this->php_ini,
+			new \fastImageSize\fastImageSize(),
+			$phpbb_root_path,
+			new \phpbb\mimetype\guesser(array(
+				'mimetype.extension_guesser' => new \phpbb\mimetype\extension_guesser(),
+			))));
+		$this->factory = new \phpbb\files\factory($this->container);
+
+		$this->path = __DIR__ . '/fixture/';
+		$this->phpbb_root_path = $phpbb_root_path;
+	}
+
+	public function data_check_upload_size()
+	{
+		return array(
+			array('foo', '500KB', array()),
+			array('none', '500KB', array('PHP_SIZE_OVERRUN')),
+			array('none', '', array('PHP_SIZE_NA')),
+		);
+	}
+
+	/**
+	 * @dataProvider data_check_upload_size
+	 */
+	public function test_check_upload_size($filename, $max_filesize, $expected)
+	{
+		$php_ini = $this->getMock('\bantu\IniGetWrapper\IniGetWrapper');
+		$php_ini->expects($this->any())
+			->method('getString')
+			->willReturn($max_filesize);
+		$type_form = new \phpbb\files\types\local($this->factory, $this->language, $php_ini, $this->request);
+		$file = $this->getMockBuilder('\phpbb\files\filespec')
+			->disableOriginalConstructor()
+			->getMock();
+		$file->expects($this->any())
+			->method('get')
+			->willReturn($filename);
+		$type_form->check_upload_size($file);
+
+		$this->assertSame($expected, $file->error);
+	}
+}