summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2015-09-03 12:12:10 +0200
committerJoas Schilling <nickvergessen@owncloud.com>2015-09-08 09:01:01 +0200
commitacf8149f17fb940c9c9ce1519869a1de34ef6a84 (patch)
tree2de35632bdd3ed5b0ba8affce270160a84abb8dd
parent0d154595f81e9c181a73ee44650fffe78bccc002 (diff)
downloadnextcloud-server-acf8149f17fb940c9c9ce1519869a1de34ef6a84.tar.gz
nextcloud-server-acf8149f17fb940c9c9ce1519869a1de34ef6a84.zip
Add tests for Action
-rw-r--r--lib/private/notification/action.php2
-rw-r--r--lib/public/notification/iaction.php2
-rw-r--r--tests/lib/notification/actiontest.php232
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());
+ }
+}