From patchwork Sun Apr 22 01:59:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emil Velikov via arch-projects X-Patchwork-Id: 496 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 5238E3741E0D for ; Sun, 22 Apr 2018 01:59:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED=0.1, DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_MED=-2.3 autolearn=ham autolearn_force=no version=3.4.1 X-Spam-BL-Results: [127.0.0.10] [127.0.9.2] [127.0.0.10] Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Sun, 22 Apr 2018 01:59:29 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 02FF59FCD5506; Sun, 22 Apr 2018 01:59:22 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [IPv6:2a01:4f8:160:3033::2]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS; Sun, 22 Apr 2018 01:59:21 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 54C862C7AD; Sun, 22 Apr 2018 01:59:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1524362360; bh=hXRhc9Zi1ZZQYqhw/BsT6lmEdEFk8BrEJy1pmM1Ks8k=; h=Date:In-Reply-To:References:To:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc; b=StwbUEcu12/ceaH3lCmu82wRGNHi8qhdGbBcaY9gRUD6FxrDuiO0gQcDGgn5zIXRg t41Q7dWD+O+KRedJLGDndYDw53uiqa4smptk/GCLCGm+UwgFS1K5T1mu9Yj05bYLqA tgYft/C8etRJOA7QWKHgzUsnd5KkYulvAQghbSMfqZiAbJgC/6SxlmSA+ehJS8K+g0 bNxU7aRF6TskvXwU6jtbzgnlIV3aR6JQNLOHhkrIAG/4CG0iqZ6UEijToTTngebEL+ LMJuaRpuJ8kwHqJ3IfdmcOeOLdsh4z56QlPOMWbBqdFZ/O2J0cs46J5DS34RN2uwnT Azf3wTE7UY5fxP7Yf9GfFpLvrgFaOK6mxaUsnIuoATuQesMWEDYZAE6BcVwJJvmyHl A/DD9JJmZ+sgs0HLqczbTjwQOcJI0kMbQKQKIy0rFy2afEdgcdbLXMTBFzYVHZke2k 8FGnErd3643PKaqCsKzFPYQw5QTGFFTGvLKiJHbzfoa8TKh70+rpukn/oXQWJNbDd0 udNm+FYvZbuErXOL2ybWSqmD+TuOuzV7nZoslvdbfCuNQckqFpTMisk2AYekJUKJSZ gJTdNxwpqwpFzsH4vovfoS3rH4/ET2/SA7g1S4/NOIY63M1U6UFQhPeYuC+DqUu/f8 t+gSqgQR5GO+ox1kc5ybK0sw= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 8C6FB2C6B5 for ; Sun, 22 Apr 2018 01:59:18 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by luna.archlinux.org (Postfix) with ESMTPS for ; Sun, 22 Apr 2018 01:59:18 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 177939FCD54FA for ; Sun, 22 Apr 2018 01:59:11 +0000 (UTC) Received: from genki.is (genki.is [159.203.135.224]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS for ; Sun, 22 Apr 2018 01:59:10 +0000 (UTC) Received: from localhost (c-73-47-239-165.hsd1.nh.comcast.net [73.47.239.165]) by genki.is (Postfix) with ESMTPSA id B6F6641D5A; Sun, 22 Apr 2018 01:59:06 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 genki.is B6F6641D5A Date: Sat, 21 Apr 2018 21:59:09 -0400 Message-Id: In-Reply-To: References: To: arch-projects@archlinux.org Subject: [arch-projects] [archweb] [PATCH 1/2] mirrorlist: Accept GET parameters as filters X-BeenThere: arch-projects@archlinux.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: Arch Linux projects development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Genki Sky via arch-projects Reply-To: Arch Linux projects development discussion Cc: =?unknown-8bit?q?Genki_Sky_=3Csky=40genki=2Eis=3E=2C_Johannes_L=C3=B6thb?= =?unknown-8bit?q?erg_=3Cjohannes=40kyriasis=2Ecom=3E?= Errors-To: arch-projects-bounces@archlinux.org Sender: "arch-projects" This fixes a regression. Originally request.REQUEST was used, but django 1.9 removed this. In its stead, request.POST was used unconditionally. However, this results in any GET request returning *all* mirrors, rather than filtering as requested in the parameters. This patch uses POST or GET based on the request method. This fixes the behavior of the [mirror-filter-form], and any scripts depending on the generated URL format. Accordingly, make test_mirrorlist_filter() test both the success and failure cases, rather than just success. [mirror-filter-form]: https://www.archlinux.org/mirrorlist/ Signed-off-by: Genki Sky --- mirrors/tests/__init__.py | 11 ++++++----- mirrors/tests/test_mirrorlist.py | 16 ++++++++++++++-- mirrors/views/mirrorlist.py | 3 ++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/mirrors/tests/__init__.py b/mirrors/tests/__init__.py index fb6c10d..a1d3c2c 100644 --- a/mirrors/tests/__init__.py +++ b/mirrors/tests/__init__.py @@ -1,12 +1,13 @@ from mirrors.models import MirrorUrl, MirrorProtocol, Mirror -def create_mirror_url(): - mirror = Mirror.objects.create(name='mirror1', +def create_mirror_url(name='mirror1', country='US', + protocol='http', url='https://archlinux.org'): + mirror = Mirror.objects.create(name=name, admin_email='admin@archlinux.org') - mirror_protocol = MirrorProtocol.objects.create(protocol='http') - mirror_url = MirrorUrl.objects.create(url='https://archlinux.org', + mirror_protocol = MirrorProtocol.objects.create(protocol=protocol) + mirror_url = MirrorUrl.objects.create(url=url, protocol=mirror_protocol, mirror=mirror, - country='US') + country=country) return mirror_url diff --git a/mirrors/tests/test_mirrorlist.py b/mirrors/tests/test_mirrorlist.py index 5590a96..1ad3d8d 100644 --- a/mirrors/tests/test_mirrorlist.py +++ b/mirrors/tests/test_mirrorlist.py @@ -30,9 +30,21 @@ def test_mirrorlist_all_https(self): # TODO: test 200 case def test_mirrorlist_filter(self): - response = self.client.get('/mirrorlist/?country=all&protocol=http&ip_version=4') + jp_mirror_url = create_mirror_url( + name='jp_mirror', + country='JP', + protocol='https', + url='https://wikipedia.jp') + + # First test that we correctly see the above mirror. + response = self.client.get('/mirrorlist/?country=JP&protocol=https') self.assertEqual(response.status_code, 200) - self.assertIn(self.mirror_url.hostname, response.content) + self.assertIn(jp_mirror_url.hostname, response.content) + + # Now confirm that the US mirror did not show up. + self.assertNotIn(self.mirror_url.hostname, response.content) + + jp_mirror_url.delete() def test_generate(self): response = self.client.get('/mirrorlist/?country=all&protocol=http&ip_version=4') diff --git a/mirrors/views/mirrorlist.py b/mirrors/views/mirrorlist.py index 35d59e8..45c0181 100644 --- a/mirrors/views/mirrorlist.py +++ b/mirrors/views/mirrorlist.py @@ -55,7 +55,8 @@ def as_div(self): @csrf_exempt def generate_mirrorlist(request): if request.method == 'POST' or len(request.GET) > 0: - form = MirrorlistForm(data=request.POST) + data = request.POST if request.method == 'POST' else request.GET + form = MirrorlistForm(data=data) if form.is_valid(): countries = form.cleaned_data['country'] protocols = form.cleaned_data['protocol'] From patchwork Sun Apr 22 01:59:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emil Velikov via arch-projects X-Patchwork-Id: 497 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 894C43741E21 for ; Sun, 22 Apr 2018 01:59:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED=0.1, DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_MED=-2.3 autolearn=ham autolearn_force=no version=3.4.1 X-Spam-BL-Results: [127.0.9.2] [127.0.0.10] [127.0.0.10] Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Sun, 22 Apr 2018 01:59:31 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 930489FCD5509; Sun, 22 Apr 2018 01:59:25 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [5.9.250.164]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS; Sun, 22 Apr 2018 01:59:25 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 7FE582D4C3; Sun, 22 Apr 2018 01:59:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1524362361; bh=RccS3q2LdnLkLJdUBLjSeoPc2Vit1TsvgSq9gryCjso=; h=Date:In-Reply-To:References:To:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc; b=oL04PjmDVjHbKuS2CB2QDO+S+Vz+WI0q4Pm79A+dncHj2Qb+H2NRLWaQer6xXUTIt RzCDQryWTlfQ3eT+srevv27nWQ2/bOP4OSY0/pirAC0ecmXdmFXCDXRfRZlrwUSS/I HMuug8iU6+Sg9wqqpmjR7s/2a3VEMewfb4PrPS2/yYzwmZzWGwDKtgebBhjO4M/jBY wANJvt5+ZoxE6H0ZBviLh40QAju2E8TW18pO7j09IdicEDvpVrOzeZ+oNbp0QVoaBK meT4zjZDtIf8lv95Z3qtrpyTr0uue2e+wFz1BL83mqAJZrwyOHcINdgDRWiGf1/D1b RlBGWlPV0U55hw4q8axVPNsW1qenJwRZOJJtTBJQeYfmrAwAurAm9WH3kIQPi0IzYH ZSrs9+tHqezTH1I1eNcQH7rtLXM0w+rMlb6+B6kKtdE8mPheejlkybs4EPaY6ke/Cq RM/5A35aEmKVM5aozonBCK4IAPezZSxa4jr4Rt+ftUtwgUtgfOen2MjYHBKll+xute FoSyk3mHDTvfryqaPHsDrIcgDKCmIOroC1VP1eRtJW+0xHuSTLQfZ/vNLxHkujx1E9 sbPKAVySdik7yQK4F9Z5VZweWEvWAI37ddOq101gcDRwAUdZ9ax18wT/BgYttzdiiz 07BgL07xXB/gRoW4BtDE/Mq8= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 6FA182D4C1 for ; Sun, 22 Apr 2018 01:59:19 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by luna.archlinux.org (Postfix) with ESMTPS for ; Sun, 22 Apr 2018 01:59:19 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id C425A9FCD54FC for ; Sun, 22 Apr 2018 01:59:11 +0000 (UTC) Received: from genki.is (genki.is [159.203.135.224]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS for ; Sun, 22 Apr 2018 01:59:11 +0000 (UTC) Received: from localhost (c-73-47-239-165.hsd1.nh.comcast.net [73.47.239.165]) by genki.is (Postfix) with ESMTPSA id 52C1241E6D; Sun, 22 Apr 2018 01:59:07 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 genki.is 52C1241E6D Date: Sat, 21 Apr 2018 21:59:10 -0400 Message-Id: <2d48e629e0550749e8629483b480352b7c00a4fd.1524361923.git.sky@genki.is> In-Reply-To: References: To: arch-projects@archlinux.org Subject: [arch-projects] [archweb] [PATCH 2/2] mirrorlist: Complete /all/https success test case X-BeenThere: arch-projects@archlinux.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: Arch Linux projects development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Genki Sky via arch-projects Reply-To: Arch Linux projects development discussion Cc: =?unknown-8bit?q?Genki_Sky_=3Csky=40genki=2Eis=3E=2C_Johannes_L=C3=B6thb?= =?unknown-8bit?q?erg_=3Cjohannes=40kyriasis=2Ecom=3E?= Errors-To: arch-projects-bounces@archlinux.org Sender: "arch-projects" Also, remove test_generate(), as it was testing no more than test_mirrorlist_filter() already was. Signed-off-by: Genki Sky --- mirrors/tests/test_mirrorlist.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mirrors/tests/test_mirrorlist.py b/mirrors/tests/test_mirrorlist.py index 1ad3d8d..9e20812 100644 --- a/mirrors/tests/test_mirrorlist.py +++ b/mirrors/tests/test_mirrorlist.py @@ -25,9 +25,18 @@ def test_mirrorlist_all_http(self): self.assertIn(self.mirror_url.hostname, response.content) def test_mirrorlist_all_https(self): + # First test that without any https mirrors, we get a 404. response = self.client.get('/mirrorlist/all/https/') self.assertEqual(response.status_code, 404) - # TODO: test 200 case + + # Now, after adding an HTTPS mirror, we expect to succeed. + https_mirror_url = create_mirror_url( + name='https_mirror', + protocol='https', + url='https://wikipedia.org') + response = self.client.get('/mirrorlist/all/https/') + self.assertEqual(response.status_code, 200) + https_mirror_url.delete() def test_mirrorlist_filter(self): jp_mirror_url = create_mirror_url( @@ -45,8 +54,3 @@ def test_mirrorlist_filter(self): self.assertNotIn(self.mirror_url.hostname, response.content) jp_mirror_url.delete() - - def test_generate(self): - response = self.client.get('/mirrorlist/?country=all&protocol=http&ip_version=4') - self.assertEqual(response.status_code, 200) - self.assertIn(self.mirror_url.hostname, response.content)