diff --git a/tests/test_pagure_flask_api_ui_private_repo.py b/tests/test_pagure_flask_api_ui_private_repo.py index 61cd14d..22ecc17 100644 --- a/tests/test_pagure_flask_api_ui_private_repo.py +++ b/tests/test_pagure_flask_api_ui_private_repo.py @@ -560,6 +560,7 @@ class PagurePrivateRepotest(tests.Modeltests): @patch('pagure.ui.repo.admin_session_timedout') def test_private_settings_ui(self, ast): """ Test UI for private repo""" + ast.return_value = False # Add private repo item = pagure.lib.model.Project( @@ -584,27 +585,137 @@ class PagurePrivateRepotest(tests.Modeltests): tests.create_projects(self.session) tests.create_projects_git(pagure.APP.config.get('GIT_FOLDER')) - ast.return_value = False - output = self.app.post('/test/settings') + output = self.app.get('/test/settings') # Check for a public repo self.assertEqual(output.status_code, 200) - self.assertIn( - '', output.get_data(as_text=True)) + '', + output.get_data(as_text=True)) # Check the new project form has 'private' checkbox output = self.app.get('/new') self.assertEqual(output.status_code, 200) self.assertIn( - '', output.get_data(as_text=True)) + '', + output.get_data(as_text=True)) + + @patch('pagure.ui.repo.admin_session_timedout') + def test_private_settings_ui_update_privacy_false(self, ast): + """ Test UI for private repo""" + ast.return_value = False + + # Add private repo + item = pagure.lib.model.Project( + user_id=1, # pingou + name='test4', + description='test project description', + hook_token='aaabbbeeeceee', + private=True, + ) + self.session.add(item) + self.session.commit() + + # Add a git repo + repo_path = os.path.join( + pagure.APP.config.get('GIT_FOLDER'), 'test4.git') + pygit2.init_repository(repo_path) + + user = tests.FakeUser(username='pingou') + with tests.user_set(pagure.APP, user): + + # Check for private repo + output = self.app.get('/test4/settings') + self.assertEqual(output.status_code, 200) + self.assertIn( + '', + output.get_data(as_text=True)) + + repo = pagure.lib._get_project(self.session, 'test4') + self.assertTrue(repo.private) + + # Make the project public + data = { + 'description': 'test project description', + 'private': False, + 'csrf_token': self.get_csrf(), + } + output = self.app.post( + '/test4/update', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertIn( + '\n'\ + ' Project updated', + output.get_data(as_text=True)) + self.assertNotIn( + '', + output.get_data(as_text=True)) + + repo = pagure.lib._get_project(self.session, 'test4') + self.assertFalse(repo.private) + + @patch('pagure.ui.repo.admin_session_timedout') + def test_private_settings_ui_update_privacy_true(self, ast): + """ Test UI for private repo""" + ast.return_value = False + + # Add private repo + item = pagure.lib.model.Project( + user_id=1, # pingou + name='test4', + description='test project description', + hook_token='aaabbbeeeceee', + private=False, + ) + self.session.add(item) + self.session.commit() + + # Add a git repo + repo_path = os.path.join( + pagure.APP.config.get('GIT_FOLDER'), 'test4.git') + pygit2.init_repository(repo_path) + + user = tests.FakeUser(username='pingou') + with tests.user_set(pagure.APP, user): + + # Check for public repo + output = self.app.get('/test4/settings') + self.assertEqual(output.status_code, 200) + self.assertNotIn( + '', + output.get_data(as_text=True)) + + repo = pagure.lib._get_project(self.session, 'test4') + self.assertFalse(repo.private) + + # Make the project private + data = { + 'description': 'test project description', + 'private': True, + 'csrf_token': self.get_csrf(), + } + output = self.app.post( + '/test4/update', data=data, follow_redirects=True) + self.assertEqual(output.status_code, 200) + self.assertIn( + '\n'\ + ' Project updated', + output.get_data(as_text=True)) + self.assertNotIn( + '', + output.get_data(as_text=True)) + + # No change since we can't do public -> private + repo = pagure.lib._get_project(self.session, 'test4') + self.assertFalse(repo.private) @patch('pagure.lib.notify.send_email') def test_private_pr(self, send_email):