From 7464607195bb84b2a7b6f1e2ad3b208fe37dc336 Mon Sep 17 00:00:00 2001 From: Lev Lazinskiy Date: Wed, 8 Jun 2016 19:02:46 -0700 Subject: Add acceptance tests Basic Framework for working with Selenium with PHPUnit and Firefox. Future acceptance tests just need to extend Base.php and implement various flows that we wish to test. --- tests/acceptance/Base.php | 18 ++++++ tests/acceptance/UserAuthenticationTest.php | 86 +++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 tests/acceptance/Base.php create mode 100644 tests/acceptance/UserAuthenticationTest.php (limited to 'tests/acceptance') 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 @@ +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 @@ + '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); + + + } +} -- cgit v1.2.3