diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2015-09-03 12:12:10 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2015-09-08 09:01:01 +0200 |
commit | acf8149f17fb940c9c9ce1519869a1de34ef6a84 (patch) | |
tree | 2de35632bdd3ed5b0ba8affce270160a84abb8dd | |
parent | 0d154595f81e9c181a73ee44650fffe78bccc002 (diff) | |
download | nextcloud-server-acf8149f17fb940c9c9ce1519869a1de34ef6a84.tar.gz nextcloud-server-acf8149f17fb940c9c9ce1519869a1de34ef6a84.zip |
Add tests for Action
-rw-r--r-- | lib/private/notification/action.php | 2 | ||||
-rw-r--r-- | lib/public/notification/iaction.php | 2 | ||||
-rw-r--r-- | tests/lib/notification/actiontest.php | 232 |
3 files changed, 235 insertions, 1 deletions
diff --git a/lib/private/notification/action.php b/lib/private/notification/action.php index f0bcb23c877..7f654bf9082 100644 --- a/lib/private/notification/action.php +++ b/lib/private/notification/action.php @@ -106,7 +106,7 @@ class Action implements IAction { if (!is_string($link) || $link === '' || isset($link[256])) { throw new \InvalidArgumentException('The given link is invalid'); } - if (!in_array($requestType, ['GET', 'POST', 'PUT', 'DELETE'])) { + if (!in_array($requestType, ['GET', 'POST', 'PUT', 'DELETE'], true)) { throw new \InvalidArgumentException('The given request type is invalid'); } $this->link = $link; diff --git a/lib/public/notification/iaction.php b/lib/public/notification/iaction.php index 64b95bdb5ad..8db1eaa6543 100644 --- a/lib/public/notification/iaction.php +++ b/lib/public/notification/iaction.php @@ -97,11 +97,13 @@ interface IAction { /** * @return bool + * @since 8.2.0 */ public function isValid(); /** * @return bool + * @since 8.2.0 */ public function isValidParsed(); } diff --git a/tests/lib/notification/actiontest.php b/tests/lib/notification/actiontest.php new file mode 100644 index 00000000000..5b3f10f9ce8 --- /dev/null +++ b/tests/lib/notification/actiontest.php @@ -0,0 +1,232 @@ +<?php +/** + * @author Joas Schilling <nickvergessen@owncloud.com> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace Test\Notification; + + +use OC\Notification\Action; +use OCP\Notification\IAction; + +class ActionTest extends \Test\TestCase { + /** @var IAction */ + protected $action; + + public function setUp() { + parent::setUp(); + $this->action = new Action(); + } + + public function dataSetLabel() { + return [ + ['test1'], + ['test2'], + ]; + } + + /** + * @dataProvider dataSetLabel + * @param string $label + */ + public function testSetLabel($label) { + $this->assertSame('', $this->action->getLabel()); + $this->action->setLabel($label); + $this->assertSame($label, $this->action->getLabel()); + } + + public function dataSetLabelInvalid() { + return [ + [true], + [false], + [0], + [1], + [''], + [str_repeat('a', 33)], + [[]], + [[str_repeat('a', 33)]], + ]; + } + + /** + * @dataProvider dataSetLabelInvalid + * @param string $label + * + * @expectedException \InvalidArgumentException + */ + public function testSetLabelInvalid($label) { + $this->action->setLabel($label); + } + + public function dataSetParsedLabel() { + return [ + ['test1'], + ['test2'], + ]; + } + + /** + * @dataProvider dataSetParsedLabel + * @param string $label + */ + public function testSetParsedLabel($label) { + $this->assertSame('', $this->action->getParsedLabel()); + $this->action->setParsedLabel($label); + $this->assertSame($label, $this->action->getParsedLabel()); + } + + public function dataSetParsedLabelInvalid() { + return [ + [true], + [false], + [0], + [1], + [''], + [[]], + [[str_repeat('a', 33)]], + ]; + } + + /** + * @dataProvider dataSetParsedLabelInvalid + * @param string $label + * + * @expectedException \InvalidArgumentException + */ + public function testSetParsedLabelInvalid($label) { + $this->action->setParsedLabel($label); + } + + public function dataSetLink() { + return [ + ['test1', 'GET'], + ['test2', 'POST'], + ['test3', 'PUT'], + ['test4', 'DELETE'], + ]; + } + + /** + * @dataProvider dataSetLink + * @param string $link + * @param string $type + */ + public function testSetLink($link, $type) { + $this->assertSame('', $this->action->getLink()); + $this->action->setLink($link, $type); + $this->assertSame($link, $this->action->getLink()); + $this->assertSame($type, $this->action->getRequestType()); + } + + public function dataSetLinkInvalid() { + return [ + // Invalid link + [true, 'GET'], + [false, 'GET'], + [0, 'GET'], + [1, 'GET'], + ['', 'GET'], + [str_repeat('a', 257), 'GET'], + [[], 'GET'], + [[str_repeat('a', 257)], 'GET'], + + // Invalid type + ['url', 'notGET'], + ['url', true], + ['url', false], + ['url', 0], + ['url', 1], + ['url', []], + ['url', ['GET']], + ]; + } + + /** + * @dataProvider dataSetLinkInvalid + * @param string $link + * @param string $type + * + * @expectedException \InvalidArgumentException + */ + public function testSetLinkInvalid($link, $type) { + $this->action->setLink($link, $type); + } + + public function dataSetIcon() { + return [ + ['test1'], + ['test2'], + ]; + } + + /** + * @dataProvider dataSetIcon + * @param string $icon + */ + public function testSetIcon($icon) { + $this->assertSame('', $this->action->getIcon()); + $this->action->setIcon($icon); + $this->assertSame($icon, $this->action->getIcon()); + } + + public function dataSetIconInvalid() { + return [ + [true], + [false], + [0], + [1], + [''], + [str_repeat('a', 65)], + [[]], + [[str_repeat('a', 65)]], + ]; + } + + /** + * @dataProvider dataSetIconInvalid + * @param string $icon + * + * @expectedException \InvalidArgumentException + */ + public function testSetIconInvalid($icon) { + $this->action->setIcon($icon); + } + + public function testIsValid() { + $this->assertFalse($this->action->isValid()); + $this->assertFalse($this->action->isValidParsed()); + $this->action->setLabel('label'); + $this->assertFalse($this->action->isValid()); + $this->assertFalse($this->action->isValidParsed()); + $this->action->setLink('link', 'GET'); + $this->assertTrue($this->action->isValid()); + $this->assertFalse($this->action->isValidParsed()); + } + + public function testIsValidParsed() { + $this->assertFalse($this->action->isValid()); + $this->assertFalse($this->action->isValidParsed()); + $this->action->setParsedLabel('label'); + $this->assertFalse($this->action->isValid()); + $this->assertFalse($this->action->isValidParsed()); + $this->action->setLink('link', 'GET'); + $this->assertFalse($this->action->isValid()); + $this->assertTrue($this->action->isValidParsed()); + } +} |