diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2016-07-22 18:24:24 +0300 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2016-08-03 13:52:41 +0300 |
commit | 5e82f2d00878ff83ccbb2858113e497c85f7e25b (patch) | |
tree | 38f5fd312ad7d9419b09474deebc13cb4862bb53 | |
parent | f2eab9fcb6ab930ed6783cda2bd763fc8860c5a4 (diff) |
increase min core version to 9.0 and remove all version hacks
-rw-r--r-- | appinfo/info.xml | 2 | ||||
-rw-r--r-- | js/app.js | 2 | ||||
-rw-r--r-- | js/templates/message-attachment.html | 2 | ||||
-rw-r--r-- | js/views/messageattachment.js | 5 | ||||
-rwxr-xr-x | lib/controller/messagescontroller.php | 84 | ||||
-rw-r--r-- | lib/controller/pagecontroller.php | 3 | ||||
-rw-r--r-- | lib/controller/proxycontroller.php | 55 | ||||
-rw-r--r-- | lib/service/htmlpurify/transformurlscheme.php | 28 | ||||
-rw-r--r-- | templates/index.php | 1 | ||||
-rw-r--r-- | tests/bootstrap.php | 6 | ||||
-rw-r--r-- | tests/controller/messagescontrollertest.php | 5 | ||||
-rw-r--r-- | tests/controller/pagecontrollertest.php | 7 | ||||
-rw-r--r-- | tests/controller/proxycontrollertest.php | 9 | ||||
-rw-r--r-- | tests/service/loggertest.php | 23 |
14 files changed, 77 insertions, 155 deletions
diff --git a/appinfo/info.xml b/appinfo/info.xml index 1154fd88f..9b6f0758b 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -10,7 +10,7 @@ <admin>https://github.com/owncloud/mail#readme</admin> </documentation> <dependencies> - <owncloud min-version="8.0" max-version="9.2" /> + <owncloud min-version="9.0" max-version="9.2" /> <php min-version="5.4" max-version="7.0" /> </dependencies> <ocsid>169914</ocsid> @@ -81,8 +81,6 @@ define(function(require) { Mail = new Mail(); Mail.on('start', function() { - this.hasDavSupport = $('#has-dav-support').val() === '1'; - this.view = new AppView(); Cache.init(); diff --git a/js/templates/message-attachment.html b/js/templates/message-attachment.html index 6171ebae9..2591d478b 100644 --- a/js/templates/message-attachment.html +++ b/js/templates/message-attachment.html @@ -5,10 +5,8 @@ <img class="attachment-icon" src="{{mimeUrl}}" /> <span class="attachment-name" title="{{fileName}} ({{humanFileSize size}})">{{fileName}} <span class="attachment-size">({{humanFileSize size}})</span></span> {{#if isCalendarEvent}} -{{#if hasDavSupport}} <button class="button icon-add attachment-import calendar" title="{{ t 'Import into calendar' }}"></button> {{/if}} -{{/if}} <button class="button icon-download attachment-download" title="{{ t 'Download attachment' }}"></button> <button class="icon-folder attachment-save-to-cloud" title="{{ t 'Save to Files' }}"></button> <div class="popovermenu bubble attachment-import-popover hidden"></div>
\ No newline at end of file diff --git a/js/views/messageattachment.js b/js/views/messageattachment.js index 33e12465f..d7ba031a3 100644 --- a/js/views/messageattachment.js +++ b/js/views/messageattachment.js @@ -44,11 +44,6 @@ define(function(require) { 'click @ui.saveToCloudButton': '_onSaveToCloud', 'click @ui.importCalendarEventButton': '_onImportCalendarEvent' }, - templateHelpers: function() { - return { - hasDavSupport: require('app').hasDavSupport - }; - }, initialize: function() { this.listenTo(Radio.ui, 'document:click', this._closeImportPopover); }, diff --git a/lib/controller/messagescontroller.php b/lib/controller/messagescontroller.php index 10d0eb566..8797ffe1b 100755 --- a/lib/controller/messagescontroller.php +++ b/lib/controller/messagescontroller.php @@ -28,6 +28,7 @@ namespace OCA\Mail\Controller; +use OC; use OCA\Mail\Http\AttachmentDownloadResponse; use OCA\Mail\Http\HtmlResponse; use OCA\Mail\Service\AccountService; @@ -42,6 +43,8 @@ use OCP\AppFramework\Http; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\TemplateResponse; +use OCP\Files\Folder; +use OCP\Files\IMimeTypeDetector; use OCP\IL10N; use OCP\IRequest; use OCP\Util; @@ -51,34 +54,25 @@ class MessagesController extends Controller { /** @var AccountService */ private $accountService; - /** - * @var string - */ + /** @var string */ private $currentUserId; - /** - * @var ContactsIntegration - */ + /** @var ContactsIntegration */ private $contactsIntegration; - /** - * @var \OCA\Mail\Service\Logger - */ + /** @var Logger */ private $logger; - /** - * @var \OCP\Files\Folder - */ + /** @var Folder */ private $userFolder; - /** - * @var IL10N - */ + /** @var IMimeTypeDetector */ + private $mimeTypeDetector; + + /** @var IL10N */ private $l10n; - /** - * @var IAccount[] - */ + /** @var IAccount[] */ private $accounts = []; /** @@ -90,6 +84,7 @@ class MessagesController extends Controller { * @param ContactsIntegration $contactsIntegration * @param Logger $logger * @param IL10N $l10n + * @param IMimeTypeDetector $mimeTypeDetector */ public function __construct($appName, IRequest $request, @@ -98,7 +93,8 @@ class MessagesController extends Controller { $userFolder, ContactsIntegration $contactsIntegration, Logger $logger, - IL10N $l10n) { + IL10N $l10n, + IMimeTypeDetector $mimeTypeDetector) { parent::__construct($appName, $request); $this->accountService = $accountService; $this->currentUserId = $UserId; @@ -106,6 +102,7 @@ class MessagesController extends Controller { $this->contactsIntegration = $contactsIntegration; $this->logger = $logger; $this->l10n = $l10n; + $this->mimeTypeDetector = $mimeTypeDetector; } /** @@ -202,7 +199,7 @@ class MessagesController extends Controller { * @param int $accountId * @param string $folderId * @param string $messageId - * @return \OCA\Mail\Http\HtmlResponse + * @return HtmlResponse|TemplateResponse */ public function getHtmlBody($accountId, $folderId, $messageId) { try { @@ -223,16 +220,13 @@ class MessagesController extends Controller { $htmlResponse = new HtmlResponse($html); // Harden the default security policy - // FIXME: Remove once ownCloud 8.1 is a requirement for the mail app - if(class_exists('\OCP\AppFramework\Http\ContentSecurityPolicy')) { - $policy = new ContentSecurityPolicy(); - $policy->allowEvalScript(false); - $policy->disallowScriptDomain('\'self\''); - $policy->disallowConnectDomain('\'self\''); - $policy->disallowFontDomain('\'self\''); - $policy->disallowMediaDomain('\'self\''); - $htmlResponse->setContentSecurityPolicy($policy); - } + $policy = new ContentSecurityPolicy(); + $policy->allowEvalScript(false); + $policy->disallowScriptDomain('\'self\''); + $policy->disallowConnectDomain('\'self\''); + $policy->disallowFontDomain('\'self\''); + $policy->disallowMediaDomain('\'self\''); + $htmlResponse->setContentSecurityPolicy($policy); // Enable caching $htmlResponse->cacheFor(60 * 60); @@ -359,7 +353,7 @@ class MessagesController extends Controller { /** * @param int $accountId - * @return \OCA\Mail\Service\IAccount + * @return IAccount */ private function getAccount($accountId) { if (!array_key_exists($accountId, $this->accounts)) { @@ -385,15 +379,15 @@ class MessagesController extends Controller { * @return callable */ private function enrichDownloadUrl($accountId, $folderId, $messageId, $attachment) { - $downloadUrl = \OCP\Util::linkToRoute('mail.messages.downloadAttachment', [ + $downloadUrl = Util::linkToRoute('mail.messages.downloadAttachment', [ 'accountId' => $accountId, 'folderId' => $folderId, 'messageId' => $messageId, 'attachmentId' => $attachment['id'], ]); - $downloadUrl = \OC::$server->getURLGenerator()->getAbsoluteURL($downloadUrl); + $downloadUrl = OC::$server->getURLGenerator()->getAbsoluteURL($downloadUrl); $attachment['downloadUrl'] = $downloadUrl; - $attachment['mimeUrl'] = $this->mimeTypeIcon($attachment['mime']); + $attachment['mimeUrl'] = $this->mimeTypeDetector->mimeTypeIcon($attachment['mime']); if ($this->attachmentIsImage($attachment)) { $attachment['isImage'] = true; @@ -434,12 +428,12 @@ class MessagesController extends Controller { * @return string */ private function buildHtmlBodyUrl($accountId, $folderId, $messageId) { - $htmlBodyUrl = \OC::$server->getURLGenerator()->linkToRoute('mail.messages.getHtmlBody', [ + $htmlBodyUrl = OC::$server->getURLGenerator()->linkToRoute('mail.messages.getHtmlBody', [ 'accountId' => $accountId, 'folderId' => $folderId, 'messageId' => $messageId, ]); - return \OC::$server->getURLGenerator()->getAbsoluteURL($htmlBodyUrl); + return OC::$server->getURLGenerator()->getAbsoluteURL($htmlBodyUrl); } /** @@ -494,22 +488,4 @@ class MessagesController extends Controller { return $json; } - /** - * Get path to the icon of a file type - * - * @todo Inject IMimeTypeDetector once core 8.2+ is supported - * - * @param string $mimeType the MIME type - */ - private function mimeTypeIcon($mimeType) { - $ocVersion = \OC::$server->getConfig()->getSystemValue('version', '0.0.0'); - if (version_compare($ocVersion, '8.2.0', '<')) { - // Version-hack for 8.1 and lower - return \OC_Helper::mimetypeIcon($mimeType); - } - /* @var IMimeTypeDetector */ - $mimeTypeDetector = \OC::$server->getMimeTypeDetector(); - return $mimeTypeDetector->mimeTypeIcon($mimeType); - } - } diff --git a/lib/controller/pagecontroller.php b/lib/controller/pagecontroller.php index d1081d700..0b5067184 100644 --- a/lib/controller/pagecontroller.php +++ b/lib/controller/pagecontroller.php @@ -77,14 +77,11 @@ class PageController extends Controller { * @return TemplateResponse renders the index page */ public function index() { - $coreVersion = $this->config->getSystemValue('version', '0.0.0'); - $hasDavSupport = (int) version_compare($coreVersion, '9.0.0', '>='); // TODO: remove DEBUG constant check once minimum oc // core version >= 8.2, see https://github.com/owncloud/core/pull/18510 $response = new TemplateResponse($this->appName, 'index', [ 'debug' => (defined('DEBUG') && DEBUG) || $this->config->getSystemValue('debug', false), 'app-version' => $this->config->getAppValue('mail', 'installed_version'), - 'has-dav-support' => $hasDavSupport, ]); // set csp rules for ownCloud 8.1 diff --git a/lib/controller/proxycontroller.php b/lib/controller/proxycontroller.php index 096ea1b58..21c7ca902 100644 --- a/lib/controller/proxycontroller.php +++ b/lib/controller/proxycontroller.php @@ -25,46 +25,45 @@ namespace OCA\Mail\Controller; use Exception; +use OC; +use OCA\Mail\Http\ProxyDownloadResponse; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Http\Client\IClientService; use OCP\IRequest; use OCP\ISession; use OCP\IURLGenerator; -use OCP\AppFramework\Controller; -use OCP\AppFramework\Http\TemplateResponse; -use OCA\Mail\Http\ProxyDownloadResponse; class ProxyController extends Controller { - /** - * @var \OCP\IURLGenerator - */ + /** @var IURLGenerator */ private $urlGenerator; - /** - * @var \OCP\ISession - */ + /** @var ISession */ private $session; - /** - * @var string - */ + /** @var IClientService */ + private $clientService; + + /** @var string */ private $referrer; - /** - * @var string - */ + /** @var string */ private $hostname; /** * @param string $appName - * @param \OCP\IRequest $request + * @param IRequest $request * @param IURLGenerator $urlGenerator - * @param \OCP\ISession $session + * @param ISession $session + * @param IClientService $clientService */ public function __construct($appName, IRequest $request, - IURLGenerator $urlGenerator, ISession $session, $referrer, $hostname) { + IURLGenerator $urlGenerator, ISession $session, IClientService $clientService, $referrer, $hostname) { parent::__construct($appName, $request); $this->urlGenerator = $urlGenerator; $this->session = $session; + $this->clientService = $clientService; $this->referrer = $referrer; $this->hostname = $hostname; } @@ -118,25 +117,9 @@ class ProxyController extends Controller { // close the session to allow parallel downloads $this->session->close(); - $content = $this->getUrlContent($src); + $client = $this->clientService->newClient(); + $content = $client->get($src); return new ProxyDownloadResponse($content, $src, 'application/octet-stream'); } - /** - * Version hack for \OCP\IHelper - * - * @todo remove version-hack once core 8.1+ is supported - * - * @param type $src - * @return type - */ - private function getUrlContent($src) { - $ocVersion = \OC::$server->getConfig()->getSystemValue('version', '0.0.0'); - if (version_compare($ocVersion, '8.2.0', '<')) { - return \OC::$server->getHTTPClientService()->newClient()->get($src); - } else { - return \OC::$server->getHelper()->getUrlContent($src); - } - } - } diff --git a/lib/service/htmlpurify/transformurlscheme.php b/lib/service/htmlpurify/transformurlscheme.php index 3fdba09a9..956558b0f 100644 --- a/lib/service/htmlpurify/transformurlscheme.php +++ b/lib/service/htmlpurify/transformurlscheme.php @@ -103,13 +103,13 @@ class TransformURLScheme extends HTMLPurifier_URIFilter { // otherwise it's an element that we send through our proxy if ($element === 'href') { $uri = new \HTMLPurifier_URI( - $this->getServerProtocol(), null, $this->getServerHost(), null, + $this->request->getServerProtocol(), null, $this->request->getServerHost(), null, $this->urlGenerator->linkToRoute('mail.proxy.redirect'), 'src=' . $originalURL, null); return $uri; } else { $uri = new \HTMLPurifier_URI( - $this->getServerProtocol(), null, $this->getServerHost(), null, + $this->request->getServerProtocol(), null, $this->request->getServerHost(), null, $this->urlGenerator->linkToRoute('mail.proxy.proxy'), 'src=' . $originalURL . '&requesttoken=' . \OC::$server->getSession()->get('requesttoken'), null); @@ -117,28 +117,4 @@ class TransformURLScheme extends HTMLPurifier_URIFilter { } } - /** - * @todo remove version-hack once core 8.1+ is supported - * @return string - */ - private function getServerProtocol() { - $ocVersion = \OC::$server->getConfig()->getSystemValue('version', '0.0.0'); - if (version_compare($ocVersion, '8.2.0', '<')) { - return Util::getServerProtocol(); - } - return $this->request->getServerProtocol(); - } - - /** - * @todo remove version-hack once core 8.1+ is supported - * @return string - */ - private function getServerHost() { - $ocVersion = \OC::$server->getConfig()->getSystemValue('version', '0.0.0'); - if (version_compare($ocVersion, '8.2.0', '<')) { - return Util::getServerHost(); - } - return $this->request->getServerHost(); - } - } diff --git a/templates/index.php b/templates/index.php index 4c122ebe1..ac0b2ed73 100644 --- a/templates/index.php +++ b/templates/index.php @@ -40,7 +40,6 @@ if ($_['debug']) { ?> <input type="hidden" id="config-installed-version" value="<?php p($_['app-version']); ?>"> -<input type="hidden" id="has-dav-support" value="<?php p($_['has-dav-support']); ?>"> <div id="user-displayname" style="display: none"><?php p(\OCP\User::getDisplayName(\OCP\User::getUser())); ?></div> diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 880b997d8..243b0c7f9 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -25,10 +25,8 @@ define('PHPUNIT_RUN', 1); require_once __DIR__.'/../../../lib/base.php'; require_once __DIR__.'/../vendor/autoload.php'; -if (version_compare(implode('.', \OCP\Util::getVersion()), '8.2', '>=')) { - \OC::$loader->addValidRoot(OC::$SERVERROOT . '/tests'); - \OC_App::loadApp('mail'); -} +\OC::$loader->addValidRoot(OC::$SERVERROOT . '/tests'); +\OC_App::loadApp('mail'); if(!class_exists('PHPUnit_Framework_TestCase')) { require_once('PHPUnit/Autoload.php'); diff --git a/tests/controller/messagescontrollertest.php b/tests/controller/messagescontrollertest.php index 74b433ded..3da817599 100644 --- a/tests/controller/messagescontrollertest.php +++ b/tests/controller/messagescontrollertest.php @@ -46,6 +46,7 @@ class MessagesControllerTest extends \Test\TestCase { private $mailbox; private $message; private $attachment; + private $mimeTypeDetector; protected function setUp() { parent::setUp(); @@ -73,6 +74,7 @@ class MessagesControllerTest extends \Test\TestCase { $this->l10n = $this->getMockBuilder('\OCP\IL10N') ->disableOriginalConstructor() ->getMock(); + $this->mimeTypeDetector = $this->getMock('OCP\Files\IMimeTypeDetector'); $this->controller = new MessagesController( $this->appName, @@ -82,7 +84,8 @@ class MessagesControllerTest extends \Test\TestCase { $this->userFolder, $this->contactIntegration, $this->logger, - $this->l10n); + $this->l10n, + $this->mimeTypeDetector); $this->account = $this->getMockBuilder('\OCA\Mail\Account') ->disableOriginalConstructor() diff --git a/tests/controller/pagecontrollertest.php b/tests/controller/pagecontrollertest.php index 21a2bf7a2..26c8f7b69 100644 --- a/tests/controller/pagecontrollertest.php +++ b/tests/controller/pagecontrollertest.php @@ -48,11 +48,7 @@ class PageControllerTest extends TestCase { } public function testIndex() { - $this->config->expects($this->at(0)) - ->method('getSystemValue') - ->with('version', '0.0.0') - ->will($this->returnValue('8.2.0')); - $this->config->expects($this->at(1)) + $this->config->expects($this->once()) ->method('getSystemValue') ->with('debug', false) ->will($this->returnValue(true)); @@ -64,7 +60,6 @@ class PageControllerTest extends TestCase { $expected = new TemplateResponse($this->appName, 'index', [ 'debug' => true, 'app-version' => '1.2.3', - 'has-dav-support' => 0, ]); // set csp rules for ownCloud 8.1 if (class_exists('OCP\AppFramework\Http\ContentSecurityPolicy')) { diff --git a/tests/controller/proxycontrollertest.php b/tests/controller/proxycontrollertest.php index ee223c1c2..4ccee76f4 100644 --- a/tests/controller/proxycontrollertest.php +++ b/tests/controller/proxycontrollertest.php @@ -31,6 +31,8 @@ class ProxyControllerTest extends TestCase { private $session; private $controller; private $hostname; + private $clientService; + private $client; protected function setUp() { parent::setUp(); @@ -45,6 +47,11 @@ class ProxyControllerTest extends TestCase { $this->session = $this->getMockBuilder('\OCP\ISession') ->disableOriginalConstructor() ->getMock(); + $this->clientService = $this->getMock('\OCP\Http\Client\IClientService'); + $this->client = $this->getMock('\OCP\Http\Client\IClient'); + $this->clientService->expects($this->any()) + ->method('getClient') + ->will($this->returnValue($this->client)); $this->hostname = 'example.com'; } @@ -78,7 +85,7 @@ class ProxyControllerTest extends TestCase { ->with('mail.page.index') ->will($this->returnValue('mail-route')); $this->controller = new ProxyController($this->appName, $this->request, - $this->urlGenerator, $this->session, $url, 'example.com'); + $this->urlGenerator, $this->session, $this->clientService, $url, 'example.com'); $expected = new TemplateResponse($this->appName, 'redirect', [ diff --git a/tests/service/loggertest.php b/tests/service/loggertest.php index 5f66c9d88..bf5ab4c35 100644 --- a/tests/service/loggertest.php +++ b/tests/service/loggertest.php @@ -19,11 +19,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ + namespace OCA\Mail\Tests\Service; +use Exception; use OCA\Mail\Service\Logger; +use Test\TestCase; -class LoggerTest extends \PHPUnit_Framework_TestCase { +class LoggerTest extends TestCase { /** * @dataProvider providesLoggerMethods @@ -35,19 +38,17 @@ class LoggerTest extends \PHPUnit_Framework_TestCase { $baseLogger->expects($this->once()) ->method($method) ->with( - $this->equalTo($param), - $this->equalTo([ + $this->equalTo($param), $this->equalTo([ 'app' => 'mail', 'key' => 'value', - ])); + ])); - $logger = new \OCA\Mail\Service\Logger('mail', $baseLogger); + $logger = new Logger('mail', $baseLogger); $logger->$method($param, ['key' => 'value']); - } + } public function providesLoggerMethods() { - - $methods = [ + return [ ['alert'], ['warning'], ['emergency'], @@ -56,12 +57,8 @@ class LoggerTest extends \PHPUnit_Framework_TestCase { ['notice'], ['info'], ['debug'], + ['logException', new Exception()], ]; - if (version_compare(implode('.', \OCP\Util::getVersion()), '8.2', '>=')) { - $methods[]= ['logException', new \Exception()]; - } - - return $methods; } } |