[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#847555: tracker.debian.org: Functional testing suite seems broken



Raphael Hertzog <hertzog@debian.org> writes:

> On Fri, 09 Dec 2016, efkin wrote:
>> I looked for the driver but it was not on stable/main so went for
>> chromedriver. And the situation improved considireously. Then realized
>> that improper method was used for closing the driver, leading to
>> undesired spwaning of driver processes.
>
> Thanks, I applied your patches. But while you say that the situation
> improved, I still see failures (both on jessie and on stretch/sid). Do you
> plan to look into those failures?

I'm on it! Just attached some patches that should fix most part of
functional_test suite:

$  python manage.py test functional_tests

Creating test database for alias 'default'...
Destroying old test database 'default'...
................................
----------------------------------------------------------------------
Ran 32 tests in 611.289s


-- 
efkin.

>From 04a9814bd0d91ee32ad924d063c976c9638b67f8 Mon Sep 17 00:00:00 2001
From: efkin <efkin@riseup.net>
Date: Fri, 9 Dec 2016 15:45:48 +0100
Subject: [PATCH 1/5] Update session hash after password change

Since Django >= 1.7 SessionAuthenticationMiddleware invalidates
session after password change.
---
 django_email_accounts/views.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/django_email_accounts/views.py b/django_email_accounts/views.py
index 084f35e..5bb2a17 100644
--- a/django_email_accounts/views.py
+++ b/django_email_accounts/views.py
@@ -14,6 +14,7 @@ from django.contrib import messages
 from django.contrib.auth import authenticate
 from django.contrib.auth import login
 from django.contrib.auth import logout
+from django.contrib.auth import update_session_auth_hash
 from django.utils.decorators import method_decorator
 from django.shortcuts import render
 from django.shortcuts import get_object_or_404
@@ -273,6 +274,7 @@ class PasswordChangeView(LoginRequiredMixin, MessageMixin, FormView):
 
     def form_valid(self, form, *args, **kwargs):
         form.save()
+        update_session_auth_hash(self.request, form.user)
         return super(PasswordChangeView, self).form_valid(form, *args, **kwargs)
 
 
-- 
2.1.4

>From 8314bcb7a0ed162c07ccf078c1d181440f297e4b Mon Sep 17 00:00:00 2001
From: efkin <efkin@riseup.net>
Date: Fri, 9 Dec 2016 16:55:09 +0100
Subject: [PATCH 2/5] Add missing Architecture test fixture

With this fixture, RepositoryAdminTest.test_respository_add()
can be executed smoothly.
---
 distro_tracker/core/fixtures/repository-architectures-test-fixture.json | 1 +
 functional_tests/tests.py                                               | 2 ++
 2 files changed, 3 insertions(+)
 create mode 100644 distro_tracker/core/fixtures/repository-architectures-test-fixture.json

diff --git a/distro_tracker/core/fixtures/repository-architectures-test-fixture.json b/distro_tracker/core/fixtures/repository-architectures-test-fixture.json
new file mode 100644
index 0000000..c2f9140
--- /dev/null
+++ b/distro_tracker/core/fixtures/repository-architectures-test-fixture.json
@@ -0,0 +1 @@
+[{"fields": {"name": "amd64"}, "model": "core.architecture", "pk": 1}, {"fields": {"name": "armel"}, "model": "core.architecture", "pk": 2}, {"fields": {"name": "armhf"}, "model": "core.architecture", "pk": 3}, {"fields": {"name": "hurd-i386"}, "model": "core.architecture", "pk": 4}, {"fields": {"name": "i386"}, "model": "core.architecture", "pk": 5}, {"fields": {"name": "ia64"}, "model": "core.architecture", "pk": 6}, {"fields": {"name": "kfreebsd-amd64"}, "model": "core.architecture", "pk": 7}, {"fields": {"name": "kfreebsd-i386"}, "model": "core.architecture", "pk": 8}, {"fields": {"name": "mips"}, "model": "core.architecture", "pk": 9}, {"fields": {"name": "mipsel"}, "model": "core.architecture", "pk": 10}, {"fields": {"name": "powerpc"}, "model": "core.architecture", "pk": 11}, {"fields": {"name": "s390"}, "model": "core.architecture", "pk": 12}, {"fields": {"name": "s390x"}, "model": "core.architecture", "pk": 13}, {"fields": {"name": "sparc"}, "model": "core.architecture", "pk": 14}, {"fields": {"name": "all"}, "model": "core.architecture", "pk": 15}, {"fields": {"name": "any"}, "model": "core.architecture", "pk": 16}, {"fields": {"name": "alpha"}, "model": "core.architecture", "pk": 17}, {"fields": {"name": "arm"}, "model": "core.architecture", "pk": 18}, {"fields": {"name": "arm64"}, "model": "core.architecture", "pk": 19}, {"fields": {"name": "armeb"}, "model": "core.architecture", "pk": 20}, {"fields": {"name": "avr32"}, "model": "core.architecture", "pk": 21}, {"fields": {"name": "hppa"}, "model": "core.architecture", "pk": 22}, {"fields": {"name": "m32r"}, "model": "core.architecture", "pk": 23}, {"fields": {"name": "m68k"}, "model": "core.architecture", "pk": 24}, {"fields": {"name": "mips64"}, "model": "core.architecture", "pk": 25}, {"fields": {"name": "mips64el"}, "model": "core.architecture", "pk": 26}, {"fields": {"name": "mipsn32"}, "model": "core.architecture", "pk": 27}, {"fields": {"name": "mipsn32el"}, "model": "core.architecture", "pk": 28}, {"fields": {"name": "or1k"}, "model": "core.architecture", "pk": 29}, {"fields": {"name": "powerpcel"}, "model": "core.architecture", "pk": 30}, {"fields": {"name": "powerpcspe"}, "model": "core.architecture", "pk": 31}, {"fields": {"name": "ppc64"}, "model": "core.architecture", "pk": 32}, {"fields": {"name": "ppc64el"}, "model": "core.architecture", "pk": 33}, {"fields": {"name": "sh3"}, "model": "core.architecture", "pk": 34}, {"fields": {"name": "sh3eb"}, "model": "core.architecture", "pk": 35}, {"fields": {"name": "sh4"}, "model": "core.architecture", "pk": 36}, {"fields": {"name": "sh4eb"}, "model": "core.architecture", "pk": 37}, {"fields": {"name": "sparc64"}, "model": "core.architecture", "pk": 38}, {"fields": {"name": "x32"}, "model": "core.architecture", "pk": 39}]
\ No newline at end of file
diff --git a/functional_tests/tests.py b/functional_tests/tests.py
index 37dbf0a..008a292 100644
--- a/functional_tests/tests.py
+++ b/functional_tests/tests.py
@@ -13,6 +13,7 @@ Functional tests for Distro Tracker.
 """
 from __future__ import unicode_literals
 from distro_tracker.test import LiveServerTestCase
+from django.core.management import call_command
 from django.core.urlresolvers import reverse
 from django.contrib.auth import get_user_model
 from django.core import mail
@@ -331,6 +332,7 @@ class RepositoryAdminTest(SeleniumTestCase):
             main_email='admin',
             password='admin'
         )
+        call_command('loaddata', 'distro_tracker/core/fixtures/repository-architectures-test-fixture.json', verbosity=0)
 
     def login_to_admin(self, username='admin', password='admin'):
         """
-- 
2.1.4

>From a8678c86979f85525a5c9002cd5591cfe600e76b Mon Sep 17 00:00:00 2001
From: efkin <efkin@riseup.net>
Date: Fri, 9 Dec 2016 17:11:39 +0100
Subject: [PATCH 3/5] Fix wrong URL

It was causing Timeout Error on test suite execution.
---
 functional_tests/tests.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/functional_tests/tests.py b/functional_tests/tests.py
index 008a292..074ec16 100644
--- a/functional_tests/tests.py
+++ b/functional_tests/tests.py
@@ -749,7 +749,7 @@ class UserRegistrationTest(UserAccountsTestMixin, SeleniumTestCase):
         self.send_enter('id_password')
 
         # The user goes to the package page
-        self.get_page('/' + package_name)
+        self.get_page('/pkg/' + package_name)
         # The page shows a link to log out.
         self.assert_in_page_body('Log out')
         # The user selects the link to log out.
@@ -781,7 +781,7 @@ class SubscribeToPackageTest(UserAccountsTestMixin, SeleniumTestCase):
         # The user first logs in
         self.log_in()
         # The user opens a package page
-        self.get_page('/' + self.package.name)
+        self.get_page('/pkg/' + self.package.name)
 
         # The page shows a button allowing them to subscribe to the package.
         self.assert_element_with_id_in_page('subscribe-button')
@@ -811,7 +811,7 @@ class SubscribeToPackageTest(UserAccountsTestMixin, SeleniumTestCase):
         package.
         """
         # The user opens the package page
-        self.get_page('/' + self.package.name)
+        self.get_page('/pkg/' + self.package.name)
         # ...and tries subscribing to the package
         self.get_element_by_id('subscribe-not-logged-in-button').click()
         # ...only to find himself redirected to the log in page.
-- 
2.1.4

>From fb362272b4bf470a0c95356830f4d404cf108825 Mon Sep 17 00:00:00 2001
From: efkin <efkin@riseup.net>
Date: Fri, 9 Dec 2016 17:41:17 +0100
Subject: [PATCH 4/5] Fix too short await time

This caused a Timeout Error on test suite execution.
---
 functional_tests/tests.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/functional_tests/tests.py b/functional_tests/tests.py
index 074ec16..76b7f5a 100644
--- a/functional_tests/tests.py
+++ b/functional_tests/tests.py
@@ -792,7 +792,7 @@ class SubscribeToPackageTest(UserAccountsTestMixin, SeleniumTestCase):
         # The subscribe button is no longer found in the page
         button = self.get_element_by_id('subscribe-button')
         # === Give the page a chance to refresh ===
-        wait = ui.WebDriverWait(self.browser, 1)
+        wait = ui.WebDriverWait(self.browser, 2)
         wait.until(lambda browser: not button.is_displayed())
         self.assertFalse(button.is_displayed())
 
-- 
2.1.4

>From fba692e2e68e44745da137da10104fa1544016a9 Mon Sep 17 00:00:00 2001
From: efkin <efkin@riseup.net>
Date: Fri, 9 Dec 2016 19:07:28 +0100
Subject: [PATCH 5/5] Add missing html id tag

It was violating SubscribeToPackageTest class.
---
 distro_tracker/accounts/templates/accounts/subscriptions.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/distro_tracker/accounts/templates/accounts/subscriptions.html b/distro_tracker/accounts/templates/accounts/subscriptions.html
index ac52d67..0ce1c16 100644
--- a/distro_tracker/accounts/templates/accounts/subscriptions.html
+++ b/distro_tracker/accounts/templates/accounts/subscriptions.html
@@ -190,7 +190,7 @@
 		</div>
 		<div class="col-sm-9">
 		    <input type="hidden" value="{% url 'dtracker-accounts-subscriptions' %}" name="next">
-		    <input class="form-control package-completion" type="text" name="package" placeholder="Choose package...">
+		    <input id="package-search-input" class="form-control package-completion" type="text" name="package" placeholder="Choose package...">
 		</div>
             </div>
 	    <div class="form-group row">
-- 
2.1.4


Reply to: