Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2022-10-31 14:46:51 +0300
committerJulius Härtl <jus@bitgrid.net>2022-10-31 14:47:35 +0300
commitbfec6f5ad4c662b14d39f98a4f7ea80d55a82a47 (patch)
tree0627dbbfddf865a719eb4877e776f4374bf25b5b /tests
parent1217b37b19127305ce77340e69765c6b244c2cf3 (diff)
Add some tests for parameter validation
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/features/decks.feature19
-rw-r--r--tests/unit/Validators/StackServiceValidatorTest.php77
-rw-r--r--tests/unit/Validators/ValidatorTestBase.php57
3 files changed, 153 insertions, 0 deletions
diff --git a/tests/integration/features/decks.feature b/tests/integration/features/decks.feature
index bb141ef7..22a74bae 100644
--- a/tests/integration/features/decks.feature
+++ b/tests/integration/features/decks.feature
@@ -13,3 +13,22 @@ Feature: decks
|key|value|
|title|MyBoard|
|color|000000|
+
+ Scenario: Fail to create a board with invalid parameters
+ Given acting as user "user0"
+ When creates a board named "This is a very ong name that exceeds the maximum length of a deck board created which is longer than 100 characters" with color "ff0000"
+ Then the response should have a status code 400
+ When creates a board named "Example board" with color "invalid"
+ Then the response should have a status code 400
+
+ Scenario: Fail to create a list with invalid parameters
+ Given acting as user "user0"
+ And creates a board named "MyBoard" with color "000000"
+ When create a stack named "This is a very ong name that exceeds the maximum length of a deck board created which is longer than 100 characters"
+ Then the response should have a status code 400
+
+ Scenario: Fail to create a card with invalid parameters
+ Given acting as user "user0"
+ And creates a board named "MyBoard" with color "000000"
+ And create a stack named "ToDo"
+ When create a card named "This is a very ong name that exceeds the maximum length of a deck board created which is longer than 255 characters This is a very ong name that exceeds the maximum length of a deck board created which is longer than 255 characters This is a very ong name that exceeds the maximum length of a deck board created which is longer than 255 characters"
diff --git a/tests/unit/Validators/StackServiceValidatorTest.php b/tests/unit/Validators/StackServiceValidatorTest.php
new file mode 100644
index 00000000..052f7972
--- /dev/null
+++ b/tests/unit/Validators/StackServiceValidatorTest.php
@@ -0,0 +1,77 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+namespace OCA\Deck\Validators;
+
+use OCA\Deck\Tests\unit\Validators\ValidatorTestBase;
+
+class StackServiceValidatorTest extends ValidatorTestBase {
+ public function setUp(): void {
+ parent::setUpValidatorTest(StackServiceValidator::class);
+ }
+
+ public function testTitle() {
+ $this->assertPass([
+ 'title' => 'Short title',
+ ]);
+ $this->assertPass([
+ 'title' => str_repeat('A', 100)
+ ]);
+ $this->assertFail([
+ 'title' => str_repeat('A', 101)
+ ]);
+ $this->assertFail([
+ 'title' => '',
+ ]);
+ $this->assertFail([
+ 'title' => null,
+ ]);
+ }
+
+ public function testId() {
+ $this->assertPass([ 'id' => 1234 ]);
+ $this->assertPass([ 'id' => '1234' ]);
+ $this->assertFail([ 'id' => 'a1234' ]);
+ $this->assertFail([ 'id' => '' ]);
+ $this->assertFail([ 'id' => null ]);
+ }
+
+ public function testBoardId() {
+ $this->assertPass([ 'boardId' => 1234 ]);
+ $this->assertPass([ 'boardId' => '1234' ]);
+ $this->assertFail([ 'boardId' => 'a1234' ]);
+ $this->assertFail([ 'boardId' => '' ]);
+ $this->assertFail([ 'boardId' => null ]);
+ }
+
+ public function testOrder() {
+ $this->assertPass([ 'order' => 1234 ]);
+ $this->assertPass([ 'order' => '1234' ]);
+ $this->assertFail([ 'order' => 'a1234' ]);
+ $this->assertFail([ 'order' => '' ]);
+ $this->assertFail([ 'order' => null ]);
+ }
+}
diff --git a/tests/unit/Validators/ValidatorTestBase.php b/tests/unit/Validators/ValidatorTestBase.php
new file mode 100644
index 00000000..cce03f6e
--- /dev/null
+++ b/tests/unit/Validators/ValidatorTestBase.php
@@ -0,0 +1,57 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>
+ *
+ * @author Julius Härtl <jus@bitgrid.net>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+namespace OCA\Deck\Tests\unit\Validators;
+
+use OCA\Deck\BadRequestException;
+use OCA\Deck\Validators\BaseValidator;
+
+abstract class ValidatorTestBase extends \PHPUnit\Framework\TestCase {
+ protected BaseValidator $validator;
+
+ public function setUpValidatorTest($class = null): void {
+ parent::setUp();
+
+ $this->validator = new $class();
+ }
+
+ protected function assertPass($values) {
+ self::assertTrue($this->check($values));
+ }
+
+ protected function assertFail($values) {
+ self::assertFalse($this->check($values));
+ }
+
+ private function check($values) {
+ try {
+ $this->validator->check($values);
+ return true;
+ } catch (BadRequestException $e) {
+ return false;
+ }
+ }
+}