diff --git a/pagure/ui/fork.py b/pagure/ui/fork.py
index 9b9a7b9..e4217fe 100644
--- a/pagure/ui/fork.py
+++ b/pagure/ui/fork.py
@@ -1520,7 +1520,9 @@ def fork_edit_file(
flask.abort(400)
if pagure.lib._get_project(
- flask.g.session, repo.name, user=flask.g.fas_user.username):
+ flask.g.session, repo.name,
+ namespace=repo.namespace,
+ user=flask.g.fas_user.username):
flask.flash('You had already forked this project')
return flask.redirect(flask.url_for(
'ui_ns.edit_file',
diff --git a/tests/test_pagure_flask_ui_fork.py b/tests/test_pagure_flask_ui_fork.py
index 468496e..8669474 100644
--- a/tests/test_pagure_flask_ui_fork.py
+++ b/tests/test_pagure_flask_ui_fork.py
@@ -3073,6 +3073,30 @@ index 0000000..2a552bb
'',
output_text)
+ # Check for edit panel- Fork already done
+ output = self.app.post('fork_edit/test/edit/master/f/sources',
+ data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ output_text = output.get_data(as_text=True)
+ self.assertIn(
+ '
Edit - test - Pagure',
+ output_text)
+ self.assertIn(
+ '\n You had already forked '
+ 'this project', output_text)
+ self.assertIn(
+ ' View Upstream',
+ output_text)
+ self.assertIn(
+ ''
+ ' master'
+ ''
+ ' sources',
+ output_text)
+ self.assertIn(
+ '',
+ output_text)
+
# View what's supposed to be an image
output = self.app.post('fork_edit/test/edit/master/f/test.jpg',
data=data, follow_redirects=True)
@@ -3104,6 +3128,133 @@ index 0000000..2a552bb
'Edit in your fork\n \n',
output.get_data(as_text=True))
+ @patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
+ def test_fork_edit_file_namespace(self):
+ """ Test the fork_edit file endpoint on a namespaced project. """
+
+ tests.create_projects(self.session)
+ for folder in ['docs', 'tickets', 'requests', 'repos']:
+ tests.create_projects_git(
+ os.path.join(self.path, folder), bare=True)
+
+ # User not logged in
+ output = self.app.post(
+ 'fork_edit/somenamespace/test3/edit/master/f/sources')
+ self.assertEqual(output.status_code, 302)
+
+ user = tests.FakeUser()
+ user.username = 'pingou'
+ with tests.user_set(self.app.application, user):
+ # Invalid request
+ output = self.app.post(
+ 'fork_edit/somenamespace/test3/edit/master/f/sources')
+ self.assertEqual(output.status_code, 400)
+
+ output = self.app.get('/new/')
+ self.assertEqual(output.status_code, 200)
+ self.assertIn('Create new Project', output.get_data(as_text=True))
+
+ csrf_token = self.get_csrf(output=output)
+
+ data = {
+ 'csrf_token': csrf_token,
+ }
+
+ # No files can be found since they are not added
+ output = self.app.post(
+ 'fork_edit/somenamespace/test3/edit/master/f/sources',
+ data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 404)
+
+ user = tests.FakeUser()
+ user.username = 'foo'
+ with tests.user_set(self.app.application, user):
+
+ data = {
+ 'csrf_token': csrf_token,
+ }
+
+ # Invalid request
+ output = self.app.post(
+ 'fork_edit/somenamespace/test3/edit/master/f/sources',
+ follow_redirects=True)
+ self.assertEqual(output.status_code, 400)
+
+ # Add content to the repo
+ tests.add_content_git_repo(os.path.join(
+ pagure.config.config['GIT_FOLDER'],
+ 'somenamespace', 'test3.git'))
+
+ tests.add_readme_git_repo(os.path.join(
+ pagure.config.config['GIT_FOLDER'],
+ 'somenamespace', 'test3.git'))
+
+ tests.add_binary_git_repo(
+ os.path.join(
+ pagure.config.config['GIT_FOLDER'],
+ 'somenamespace', 'test3.git'), 'test.jpg')
+
+ # Check if button exists
+ output = self.app.get('/somenamespace/test3/blob/master/f/sources')
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ 'Fork and Edit\n \n',
+ output.get_data(as_text=True))
+
+ # Check fork-edit doesn't show for binary files
+ output = self.app.get('/somenamespace/test3/blob/master/f/test.jpg')
+ self.assertEqual(output.status_code, 200)
+ self.assertNotIn(
+ 'Fork and Edit\n \n',
+ output.get_data(as_text=True))
+
+ # Check for edit panel
+ output = self.app.post(
+ 'fork_edit/somenamespace/test3/edit/master/f/sources',
+ data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ output_text = output.get_data(as_text=True)
+ self.assertIn(
+ 'Edit - somenamespace/test3 - Pagure',
+ output_text)
+ self.assertIn(
+ ' View Upstream',
+ output_text)
+ self.assertIn(
+ ''
+ ' master'
+ ''
+ ' sources',
+ output_text)
+ self.assertIn(
+ '',
+ output_text)
+
+ # Check for edit panel - while the project was already forked
+ output = self.app.post(
+ 'fork_edit/somenamespace/test3/edit/master/f/sources',
+ data=data, follow_redirects=True)
+ self.assertEqual(output.status_code, 200)
+ output_text = output.get_data(as_text=True)
+ self.assertIn(
+ 'Edit - somenamespace/test3 - Pagure',
+ output_text)
+ self.assertIn(
+ '\n You had already forked '
+ 'this project', output_text)
+ self.assertIn(
+ ' View Upstream',
+ output_text)
+ self.assertIn(
+ ''
+ ' master'
+ ''
+ ' sources',
+ output_text)
+ self.assertIn(
+ '',
+ output_text)
+
@patch('pagure.lib.notify.send_email')
def test_fork_without_main_repo(self, send_email):
""" Test the fork without the main repo. """