From 9528fac617bef5406adedb70e6904d445ce2fe56 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Mar 13 2017 07:54:46 +0000 Subject: Make getting a project be case insensitive And adjust the test ensuring we cannot create a project with a different case from an existing project. Fixes https://pagure.io/pagure/issue/2026 --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 1160ef4..8fd0df6 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -2012,11 +2012,16 @@ def get_project(session, name, user=None, namespace=None): query = session.query( model.Project ).filter( - model.Project.name == name - ).filter( - model.Project.namespace == namespace + func.lower(model.Project.name) == name.lower() ) + if namespace: + query = query.filter( + func.lower(model.Project.namespace) == namespace.lower() + ) + else: + query = query.filter(model.Project.namespace == namespace) + if user is not None: query = query.filter( model.User.user == user diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index a773f7f..5ea48f4 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -927,6 +927,23 @@ class PagureLibtests(tests.Modeltests): self.session.commit() self.assertEqual(msg, 'Project "testproject" created') + # Try creating an existing project using a different case + self.assertRaises( + pagure.exceptions.PagureException, + pagure.lib.new_project, + session=self.session, + user='pingou', + name='TestProject', + blacklist=[], + allowed_prefix=[], + gitfolder=gitfolder, + docfolder=docfolder, + ticketfolder=ticketfolder, + requestfolder=requestfolder, + description='description for testproject', + parent_id=None, + ) + repo = pagure.lib.get_project(self.session, 'testproject') self.assertEqual(repo.path, 'testproject.git')