summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/acceptance.xml13
-rw-r--r--tests/acceptance/Base.php18
-rw-r--r--tests/acceptance/UserAuthenticationTest.php86
3 files changed, 117 insertions, 0 deletions
diff --git a/tests/acceptance.xml b/tests/acceptance.xml
new file mode 100644
index 00000000..a161f9ec
--- /dev/null
+++ b/tests/acceptance.xml
@@ -0,0 +1,13 @@
+<phpunit stopOnError="true" stopOnFailure="true" colors="true">
+ <testsuites>
+ <testsuite name="Kanboard">
+ <directory>acceptance</directory>
+ </testsuite>
+ </testsuites>
+ <php>
+ <const name="SELENIUM_HOST" value="localhost" />
+ <const name="SELENIUM_PORT" value="4444" />
+ <const name="DEFAULT_BROWSER" value="firefox" />
+ <const name="KANBOARD_APP_URL" value="http://localhost:8001" />
+ </php>
+</phpunit>
diff --git a/tests/acceptance/Base.php b/tests/acceptance/Base.php
new file mode 100644
index 00000000..e8684a9b
--- /dev/null
+++ b/tests/acceptance/Base.php
@@ -0,0 +1,18 @@
+<?php
+
+class Base extends PHPUnit_Extensions_Selenium2TestCase
+{
+
+ public function setUp()
+ {
+ $this->setHost(SELENIUM_HOST);
+ $this->setPort((integer) SELENIUM_PORT);
+ $this->setBrowserUrl(KANBOARD_APP_URL);
+ $this->setBrowser(DEFAULT_BROWSER);
+ }
+
+ public function tearDown()
+ {
+ $this->stop();
+ }
+}
diff --git a/tests/acceptance/UserAuthenticationTest.php b/tests/acceptance/UserAuthenticationTest.php
new file mode 100644
index 00000000..3313e050
--- /dev/null
+++ b/tests/acceptance/UserAuthenticationTest.php
@@ -0,0 +1,86 @@
+<?php
+
+require_once __DIR__.'/Base.php';
+
+class UserAuthenticationTest extends Base
+{
+
+ public function validLoginInputsProvider()
+ {
+ $inputs[] = [
+ [
+ 'username' => 'admin',
+ 'password' => 'admin',
+ ]
+ ];
+
+ return $inputs;
+ }
+
+ public function invalidLoginInputsProvider()
+ {
+ $inputs[] = [
+ [
+ 'username' => 'wrong_username',
+ 'password' => 'wrong_password',
+ ]
+ ];
+
+ return $inputs;
+ }
+
+ /**
+ * @dataProvider validLoginInputsProvider
+ */
+ public function testValidLogin(array $inputs)
+ {
+ $this->url('/');
+ $this->assertContains('Login', $this->title());
+
+ $form = $this->byTag('form');
+ foreach ($inputs as $input => $value) {
+ $form->byName($input)->value($value);
+ }
+ $form->submit();
+
+ $content = $this->byClassName('sidebar')->text();
+ $this->assertContains($inputs['username'], $content);
+ }
+
+ /**
+ * @dataProvider invalidLoginInputsProvider
+ */
+ public function testInvalidLogin(array $inputs)
+ {
+ $this->url('/');
+
+ // Test wrong username with correct password
+ $form = $this->byTag('form');
+ $form->byName('username')->value($inputs['username']);
+ $form->byName('password')->value('admin');
+ $form->submit();
+
+ $content = $this->byTag('body')->text();
+ $this->assertContains('Bad username or password', $content);
+
+ // Test wrong password with correct username
+ $form = $this->byTag('form');
+ $form->byName('username')->value('admin');
+ $form->byName('password')->value($inputs['password']);
+ $form->submit();
+
+ $content = $this->byTag('body')->text();
+ $this->assertContains('Bad username or password', $content);
+
+ // Test wrong username and password
+ $form = $this->byTag('form');
+ $form->byName('username')->value($inputs['username']);
+ $form->byName('password')->value($inputs['password']);
+ $form->submit();
+
+ $content = $this->byTag('body')->text();
+ $this->assertContains('Bad username or password', $content);
+
+
+ }
+}