From f1cd9335d032f3c984832d98b84d8562c74eca99 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Apr 30 2017 15:27:34 +0000 Subject: Add unit-tests checking private projects created in the UI are namespaced Signed-off-by: Pierre-Yves Chibon --- diff --git a/tests/test_pagure_flask_ui_app.py b/tests/test_pagure_flask_ui_app.py index 77522e0..93a9f5f 100644 --- a/tests/test_pagure_flask_ui_app.py +++ b/tests/test_pagure_flask_ui_app.py @@ -296,6 +296,87 @@ class PagureFlaskApptests(tests.Modeltests): self.assertTrue(os.path.exists( os.path.join(self.path, 'requests', 'project-1.git'))) + @patch.dict('pagure.APP.config', {'PRIVATE_PROJECTS': True}) + def test_new_project_private(self): + """ Test the new_project endpoint for a private project. """ + # Before + projects = pagure.lib.search_projects(self.session) + self.assertEqual(len(projects), 0) + self.assertFalse(os.path.exists( + os.path.join(self.path, 'foo', 'project#1.git'))) + self.assertFalse(os.path.exists( + os.path.join(self.path, 'tickets', 'foo', 'project#1.git'))) + self.assertFalse(os.path.exists( + os.path.join(self.path, 'docs', 'foo', 'project#1.git'))) + self.assertFalse(os.path.exists( + os.path.join(self.path, 'requests', 'foo', 'project#1.git'))) + + user = tests.FakeUser() + with tests.user_set(pagure.APP, user): + output = self.app.get('/new/') + self.assertEqual(output.status_code, 200) + self.assertIn( + u'Create new Project', output.data) + + csrf_token = output.data.split( + 'name="csrf_token" type="hidden" value="')[1].split('">')[0] + + data = { + 'description': 'Project #1', + 'private': True, + } + + output = self.app.post('/new/', data=data) + self.assertEqual(output.status_code, 200) + self.assertIn( + u'Create new Project', output.data) + self.assertIn( + u'\n This field is required. \n' + ' ', output.data) + + data['name'] = 'project-1' + output = self.app.post('/new/', data=data) + self.assertEqual(output.status_code, 200) + self.assertIn('Create new Project', output.data) + self.assertNotIn( + u'\n This field is required. \n' + ' ', output.data) + + data['csrf_token'] = csrf_token + output = self.app.post('/new/', data=data) + self.assertEqual(output.status_code, 200) + self.assertIn('Create new Project', output.data) + self.assertIn( + u'\n No user ' + '"username" found\n ', + output.data) + + user.username = 'foo' + with tests.user_set(pagure.APP, user): + data['csrf_token'] = csrf_token + output = self.app.post('/new/', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertIn( + u'
\nProject #1
', + output.data) + self.assertIn(u'

This repo is brand new!

', output.data) + self.assertIn( + u'Overview - foo/project-1 - Pagure', output.data) + + # After + projects = pagure.lib.search_projects(self.session) + self.assertEqual(len(projects), 0) + projects = pagure.lib.search_projects(self.session, private=True) + self.assertEqual(len(projects), 1) + self.assertTrue(os.path.exists( + os.path.join(self.path, 'foo', 'project-1.git'))) + self.assertTrue(os.path.exists( + os.path.join(self.path, 'tickets', 'foo', 'project-1.git'))) + self.assertTrue(os.path.exists( + os.path.join(self.path, 'docs', 'foo', 'project-1.git'))) + self.assertTrue(os.path.exists( + os.path.join(self.path, 'requests', 'foo', 'project-1.git'))) + def test_non_ascii_new_project(self): """ Test the new_project endpoint with a non-ascii project. """ # Before