|
Pierre-Yves Chibon |
78ce15 |
# -*- coding: utf-8 -*-
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
"""
|
|
Pierre-Yves Chibon |
f4149e |
(c) 2015-2017 - Copyright Red Hat Inc
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
Authors:
|
|
Pierre-Yves Chibon |
78ce15 |
Pierre-Yves Chibon <pingou@pingoured.fr>
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
"""
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Aurélien Bompard |
626417 |
from __future__ import unicode_literals
|
|
Aurélien Bompard |
626417 |
|
|
Pierre-Yves Chibon |
78ce15 |
__requires__ = ['SQLAlchemy >= 0.8']
|
|
Pierre-Yves Chibon |
78ce15 |
import pkg_resources
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
66632f |
import datetime
|
|
Pierre-Yves Chibon |
c56993 |
import json
|
|
Pierre-Yves Chibon |
78ce15 |
import unittest
|
|
Pierre-Yves Chibon |
8655c1 |
import re
|
|
Pierre-Yves Chibon |
78ce15 |
import shutil
|
|
Pierre-Yves Chibon |
78ce15 |
import sys
|
|
Pierre-Yves Chibon |
184a05 |
import tempfile
|
|
Pierre-Yves Chibon |
36309a |
import time
|
|
Pierre-Yves Chibon |
78ce15 |
import os
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
c56993 |
import pygit2
|
|
Shaily |
2aa55d |
from mock import ANY, patch, MagicMock
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
sys.path.insert(0, os.path.join(os.path.dirname(
|
|
Pierre-Yves Chibon |
78ce15 |
os.path.abspath(__file__)), '..'))
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Farhaan Bukhsh |
72e9db |
import pagure
|
|
Pierre-Yves Chibon |
fe5017 |
import pagure.lib
|
|
Pierre-Yves Chibon |
78ce15 |
import tests
|
|
Pierre-Yves Chibon |
27a73d |
from pagure.lib.repo import PagureRepo
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
fe5017 |
class PagureFlaskRepotests(tests.Modeltests):
|
|
Pierre-Yves Chibon |
fe5017 |
""" Tests for flask app controller of pagure """
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
def setUp(self):
|
|
Pierre-Yves Chibon |
78ce15 |
""" Set up the environnment, ran before every tests. """
|
|
Pierre-Yves Chibon |
fe5017 |
super(PagureFlaskRepotests, self).setUp()
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['VIRUS_SCAN_ATTACHMENTS'] = False
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['UPLOAD_FOLDER_URL'] = '/releases/'
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['UPLOAD_FOLDER_PATH'] = os.path.join(
|
|
Jeremy Cline |
20109f |
self.path, 'releases')
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Vivek Anand |
3b0299 |
def test_add_user_when_user_mngt_off(self, ast):
|
|
Vivek Anand |
3b0299 |
""" Test the add_user endpoint when user management is turned off
|
|
Vivek Anand |
3b0299 |
in the pagure instance """
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = False
|
|
Vivek Anand |
3b0299 |
ast.return_value = False
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/foo/adduser')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.get('/test/adduser')
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 302)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
72ed6b |
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/test/adduser')
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
#just get the csrf token
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = True
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/test/adduser')
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Vivek Anand |
3b0299 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = False
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data = {
|
|
Vivek Anand |
3b0299 |
'user': 'ralph',
|
|
Vivek Anand |
3b0299 |
}
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/adduser', data=data)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data['csrf_token'] = csrf_token
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/adduser', data=data)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data['user'] = 'foo'
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Vivek Anand |
3b0299 |
output = self.app.post(
|
|
Vivek Anand |
3b0299 |
'/test/adduser', data=data, follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = True
|
|
Vivek Anand |
3b0299 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Patrick Uiterwijk |
faa79d |
def test_add_deploykey(self, ast):
|
|
Patrick Uiterwijk |
faa79d |
""" Test the add_deploykey endpoint. """
|
|
Patrick Uiterwijk |
faa79d |
ast.return_value = False
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# No git repo
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.get('/foo/adddeploykey')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 404)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# User not logged in
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.get('/test/adddeploykey')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 302)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.get('/test/adddeploykey')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 403)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
ast.return_value = True
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.get('/test/adddeploykey')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 302)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# Redirect also happens for POST request
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/adddeploykey')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 302)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# Need to do this un-authentified since our fake user isn't in the DB
|
|
Patrick Uiterwijk |
faa79d |
# Check the message flashed during the redirect
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.get('/')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertIn(
|
|
Patrick Uiterwijk |
faa79d |
'</button>\n Action canceled, try it '
|
|
Aurélien Bompard |
626417 |
'again', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
ast.return_value = False
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.get('/test/adddeploykey')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add deploy key to the', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Patrick Uiterwijk |
faa79d |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
data = {
|
|
Patrick Uiterwijk |
faa79d |
'ssh_key': 'asdf',
|
|
Patrick Uiterwijk |
faa79d |
'pushaccess': 'false'
|
|
Patrick Uiterwijk |
faa79d |
}
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# No CSRF token
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/adddeploykey', data=data)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add deploy key to the', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
data['csrf_token'] = csrf_token
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# First, invalid SSH key
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/adddeploykey', data=data)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add deploy key to the', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Deploy key invalid', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# Next up, multiple SSH keys
|
|
Patrick Uiterwijk |
faa79d |
data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q==\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q=='
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post(
|
|
Patrick Uiterwijk |
faa79d |
'/test/adddeploykey', data=data, follow_redirects=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Deploy key can only be single keys.', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# Now, a valid SSH key
|
|
Patrick Uiterwijk |
faa79d |
data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q=='
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post(
|
|
Patrick Uiterwijk |
faa79d |
'/test/adddeploykey', data=data, follow_redirects=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Deploy key added', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('PUSH ACCESS', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# And now, adding the same key
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post(
|
|
Patrick Uiterwijk |
faa79d |
'/test/adddeploykey', data=data, follow_redirects=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Deploy key already exists', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# And next, a key with push access
|
|
Patrick Uiterwijk |
faa79d |
data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9Xwc2RDzPBhlEDARfHldGjudIVoa04tqT1JVKGQmyllTFz7Rb8CngQL3e7zyNzotnhwYKHdoiLlPkVEiDee4dWMUe48ilqId+FJZQGhyv8fu4BoFdE1AJUVylzmltbLg14VqG5gjTpXgtlrEva9arKwBMHJjRYc8ScaSn3OgyQw=='
|
|
Patrick Uiterwijk |
faa79d |
data['pushaccess'] = 'true'
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post(
|
|
Patrick Uiterwijk |
faa79d |
'/test/adddeploykey', data=data, follow_redirects=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Deploy key added', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('PUSH ACCESS', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'DEPLOY_KEY': False})
|
|
Pierre-Yves Chibon |
39f1dc |
def test_add_deploykey_disabled(self, ast):
|
|
Pierre-Yves Chibon |
39f1dc |
""" Test the add_deploykey endpoint when it's disabled in the config.
|
|
Pierre-Yves Chibon |
39f1dc |
"""
|
|
Pierre-Yves Chibon |
39f1dc |
ast.return_value = False
|
|
Pierre-Yves Chibon |
39f1dc |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
39f1dc |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
39f1dc |
|
|
Pierre-Yves Chibon |
39f1dc |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
39f1dc |
output = self.app.get('/test/adddeploykey')
|
|
Pierre-Yves Chibon |
39f1dc |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
39f1dc |
|
|
Pierre-Yves Chibon |
39f1dc |
output = self.app.post('/test/adddeploykey')
|
|
Pierre-Yves Chibon |
39f1dc |
self.assertEqual(output.status_code, 404)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Shaily |
2aa55d |
@patch('pagure.lib.notify.log')
|
|
Shaily |
2aa55d |
def test_add_user(self, mock_log, ast):
|
|
Pierre-Yves Chibon |
78ce15 |
""" Test the add_user endpoint. """
|
|
Pierre-Yves Chibon |
e213e7 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No git repo
|
|
Pierre-Yves Chibon |
78ce15 |
output = self.app.get('/foo/adduser')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.get('/test/adduser')
|
|
Pierre-Yves Chibon |
78ce15 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
78ce15 |
output = self.app.get('/test/adduser')
|
|
Pierre-Yves Chibon |
78ce15 |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
e213e7 |
ast.return_value = True
|
|
Pierre-Yves Chibon |
e213e7 |
output = self.app.get('/test/adduser')
|
|
Pierre-Yves Chibon |
e213e7 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
728eb1 |
|
|
Pierre-Yves Chibon |
728eb1 |
# Redirect also happens for POST request
|
|
Pierre-Yves Chibon |
728eb1 |
output = self.app.post('/test/adduser')
|
|
Pierre-Yves Chibon |
728eb1 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
728eb1 |
|
|
Pierre-Yves Chibon |
fb5b9d |
# Need to do this un-authentified since our fake user isn't in the DB
|
|
Pierre-Yves Chibon |
fb5b9d |
# Check the message flashed during the redirect
|
|
Pierre-Yves Chibon |
fb5b9d |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Pierre-Yves Chibon |
fb5b9d |
'</button>\n Action canceled, try it '
|
|
Aurélien Bompard |
626417 |
'again', output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
|
|
Pierre-Yves Chibon |
fb5b9d |
ast.return_value = False
|
|
Pierre-Yves Chibon |
e213e7 |
|
|
Pierre-Yves Chibon |
78ce15 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
78ce15 |
output = self.app.get('/test/adduser')
|
|
Pierre-Yves Chibon |
78ce15 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add user to the', output_text)
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
78ce15 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Pierre-Yves Chibon |
78ce15 |
data = {
|
|
Pierre-Yves Chibon |
78ce15 |
'user': 'ralph',
|
|
Pierre-Yves Chibon |
78ce15 |
}
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Vivek Anand |
19b244 |
# Missing access and no CSRF
|
|
Pierre-Yves Chibon |
78ce15 |
output = self.app.post('/test/adduser', data=data)
|
|
Pierre-Yves Chibon |
78ce15 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Add user - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add user to the', output_text)
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Vivek Anand |
19b244 |
# No CSRF
|
|
Pierre-Yves Chibon |
78ce15 |
output = self.app.post('/test/adduser', data=data)
|
|
Pierre-Yves Chibon |
78ce15 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Add user - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
058fe8 |
|
|
Vivek Anand |
19b244 |
# Missing access
|
|
Vivek Anand |
19b244 |
data['csrf_token'] = csrf_token
|
|
Pierre-Yves Chibon |
058fe8 |
output = self.app.post('/test/adduser', data=data)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Add user - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add user to the', output_text)
|
|
Pierre-Yves Chibon |
058fe8 |
|
|
Pierre-Yves Chibon |
058fe8 |
# Unknown user
|
|
Vivek Anand |
19b244 |
data['access'] = 'commit'
|
|
Pierre-Yves Chibon |
058fe8 |
output = self.app.post('/test/adduser', data=data)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Add user - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add user to the', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Vivek Anand |
19b244 |
'</button>\n No user "ralph" found\n',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Vivek Anand |
19b244 |
# All correct
|
|
Pierre-Yves Chibon |
78ce15 |
data['user'] = 'foo'
|
|
Pierre-Yves Chibon |
78ce15 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
78ce15 |
'/test/adduser', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
78ce15 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'</button>\n User added', output_text)
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Shaily |
2aa55d |
mock_log.assert_called_with(ANY, topic='project.user.added', msg=ANY, redis=ANY)
|
|
Shaily |
2aa55d |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Vivek Anand |
3b0299 |
def test_add_group_project_when_user_mngt_off(self, ast):
|
|
Vivek Anand |
3b0299 |
""" Test the add_group_project endpoint when user management is
|
|
Vivek Anand |
3b0299 |
turned off in the pagure instance"""
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = False
|
|
Vivek Anand |
3b0299 |
ast.return_value = False
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/foo/addgroup')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.get('/test/addgroup')
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 302)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
msg = pagure.lib.add_group(
|
|
Vivek Anand |
3b0299 |
self.session,
|
|
Vivek Anand |
3b0299 |
group_name='foo',
|
|
Vivek Anand |
3b0299 |
group_type='bar',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Vivek Anand |
3b0299 |
user='pingou',
|
|
Vivek Anand |
3b0299 |
is_admin=False,
|
|
Pierre-Yves Chibon |
b130e5 |
blacklist=pagure.config.config['BLACKLISTED_GROUPS'],
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Vivek Anand |
3b0299 |
self.assertEqual(msg, 'User `pingou` added to the group `foo`.')
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Vivek Anand |
3b0299 |
#just get the csrf token
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = True
|
|
Pierre-Yves Chibon |
72ed6b |
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/test/addgroup')
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Vivek Anand |
3b0299 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = False
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data = {
|
|
Vivek Anand |
3b0299 |
'group': 'ralph',
|
|
Vivek Anand |
3b0299 |
}
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/addgroup', data=data)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data['csrf_token'] = csrf_token
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/addgroup', data=data)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data['group'] = 'foo'
|
|
Vivek Anand |
3b0299 |
output = self.app.post(
|
|
Vivek Anand |
3b0299 |
'/test/addgroup', data=data, follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = True
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'ENABLE_GROUP_MNGT': False})
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
cc0601 |
def test_add_group_project_grp_mngt_off(self, ast):
|
|
Pierre-Yves Chibon |
cc0601 |
""" Test the add_group_project endpoint when group management is
|
|
Pierre-Yves Chibon |
cc0601 |
turned off in the pagure instance"""
|
|
Pierre-Yves Chibon |
cc0601 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
cc0601 |
|
|
Pierre-Yves Chibon |
cc0601 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
cc0601 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
cc0601 |
|
|
Pierre-Yves Chibon |
cc0601 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
cc0601 |
|
|
Pierre-Yves Chibon |
cc0601 |
data = {
|
|
Pierre-Yves Chibon |
cc0601 |
'group': 'ralph',
|
|
Pierre-Yves Chibon |
cc0601 |
'access': 'ticket',
|
|
Pierre-Yves Chibon |
cc0601 |
'csrf_token': self.get_csrf(),
|
|
Pierre-Yves Chibon |
cc0601 |
}
|
|
Pierre-Yves Chibon |
cc0601 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
cc0601 |
'/test/addgroup', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
cc0601 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
cc0601 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Add group - test - Pagure</title>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('No group ralph found.', output_text)
|
|
Vivek Anand |
3b0299 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
8b9ecb |
def test_add_group_project(self, ast):
|
|
Pierre-Yves Chibon |
8b9ecb |
""" Test the add_group_project endpoint. """
|
|
Pierre-Yves Chibon |
8b9ecb |
ast.return_value = False
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
8b9ecb |
output = self.app.get('/foo/addgroup')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.get('/test/addgroup')
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
8b9ecb |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
8b9ecb |
output = self.app.get('/test/addgroup')
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
8b9ecb |
ast.return_value = True
|
|
Pierre-Yves Chibon |
8b9ecb |
output = self.app.get('/test/addgroup')
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
7de9f5 |
|
|
Pierre-Yves Chibon |
7de9f5 |
# Redirect also happens for POST request
|
|
Pierre-Yves Chibon |
7de9f5 |
output = self.app.post('/test/addgroup')
|
|
Pierre-Yves Chibon |
7de9f5 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
7de9f5 |
|
|
Pierre-Yves Chibon |
fb5b9d |
# Need to do this un-authentified since our fake user isn't in the DB
|
|
Pierre-Yves Chibon |
fb5b9d |
# Check the message flashed during the redirect
|
|
Pierre-Yves Chibon |
fb5b9d |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Pierre-Yves Chibon |
fb5b9d |
'</button>\n Action canceled, try it '
|
|
Aurélien Bompard |
626417 |
'again', output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
|
|
Pierre-Yves Chibon |
fb5b9d |
ast.return_value = False
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
8b9ecb |
msg = pagure.lib.add_group(
|
|
Pierre-Yves Chibon |
8b9ecb |
self.session,
|
|
Pierre-Yves Chibon |
8b9ecb |
group_name='foo',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='foo group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
8b9ecb |
group_type='bar',
|
|
Pierre-Yves Chibon |
8b9ecb |
user='pingou',
|
|
Pierre-Yves Chibon |
8b9ecb |
is_admin=False,
|
|
Pierre-Yves Chibon |
b130e5 |
blacklist=pagure.config.config['BLACKLISTED_GROUPS'],
|
|
Pierre-Yves Chibon |
8b9ecb |
)
|
|
Pierre-Yves Chibon |
8b9ecb |
self.session.commit()
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(msg, 'User `pingou` added to the group `foo`.')
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
8b9ecb |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
8b9ecb |
output = self.app.get('/test/addgroup')
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add group to the', output_text)
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
8b9ecb |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
8b9ecb |
data = {
|
|
Pierre-Yves Chibon |
8b9ecb |
'group': 'ralph',
|
|
Pierre-Yves Chibon |
8b9ecb |
}
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
058fe8 |
# Missing CSRF
|
|
Pierre-Yves Chibon |
8b9ecb |
output = self.app.post('/test/addgroup', data=data)
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Add group - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add group to the', output_text)
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Pierre-Yves Chibon |
058fe8 |
# Missing access
|
|
Pierre-Yves Chibon |
8b9ecb |
data['csrf_token'] = csrf_token
|
|
Pierre-Yves Chibon |
8b9ecb |
output = self.app.post('/test/addgroup', data=data)
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
058fe8 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Add group - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Add group to the', output_text)
|
|
Pierre-Yves Chibon |
058fe8 |
|
|
Pierre-Yves Chibon |
058fe8 |
# All good
|
|
Pierre-Yves Chibon |
cc0601 |
data['access'] = 'ticket'
|
|
Pierre-Yves Chibon |
8b9ecb |
output = self.app.post(
|
|
Pierre-Yves Chibon |
8b9ecb |
'/test/addgroup', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
8b9ecb |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'</button>\n Group added', output_text)
|
|
Pierre-Yves Chibon |
8b9ecb |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Vivek Anand |
3b0299 |
def test_remove_user_when_user_mngt_off(self, ast):
|
|
Vivek Anand |
3b0299 |
""" Test the remove_user endpoint when user management is turned
|
|
Vivek Anand |
3b0299 |
off in the pagure instance"""
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = False
|
|
Vivek Anand |
3b0299 |
ast.return_value = False
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# Git repo not found
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/foo/dropuser/1')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Vivek Anand |
3b0299 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
72ed6b |
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/settings')
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Vivek Anand |
3b0299 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Vivek Anand |
3b0299 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data = {'csrf_token': csrf_token}
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
output = self.app.post(
|
|
Vivek Anand |
3b0299 |
'/test/dropuser/2', data=data, follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/dropuser/1')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Vivek Anand |
3b0299 |
# Add an user to a project
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Vivek Anand |
3b0299 |
msg = pagure.lib.add_user_to_project(
|
|
Vivek Anand |
3b0299 |
session=self.session,
|
|
Vivek Anand |
3b0299 |
project=repo,
|
|
Vivek Anand |
3b0299 |
new_user='foo',
|
|
Vivek Anand |
3b0299 |
user='pingou',
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Vivek Anand |
3b0299 |
self.assertEqual(msg, 'User added')
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/dropuser/2', follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data = {'csrf_token': csrf_token}
|
|
Vivek Anand |
3b0299 |
output = self.app.post(
|
|
Vivek Anand |
3b0299 |
'/test/dropuser/2', data=data, follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = True
|
|
Vivek Anand |
3b0299 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Patrick Uiterwijk |
faa79d |
def test_remove_deploykey(self, ast):
|
|
Patrick Uiterwijk |
faa79d |
""" Test the remove_deploykey endpoint. """
|
|
Patrick Uiterwijk |
faa79d |
ast.return_value = False
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# Git repo not found
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/foo/dropdeploykey/1')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 404)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/foo/dropdeploykey/1')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 404)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/dropdeploykey/1')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 403)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
ast.return_value = True
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/dropdeploykey/1')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 302)
|
|
Patrick Uiterwijk |
faa79d |
ast.return_value = False
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# User not logged in
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/dropdeploykey/1')
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 302)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/settings')
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Patrick Uiterwijk |
faa79d |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
data = {'csrf_token': csrf_token}
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post(
|
|
Patrick Uiterwijk |
faa79d |
'/test/dropdeploykey/1', data=data, follow_redirects=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Deploy key does not exist in project', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
# Add a deploy key to a project
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
faa79d |
msg = pagure.lib.add_deploykey_to_project(
|
|
Patrick Uiterwijk |
faa79d |
session=self.session,
|
|
Patrick Uiterwijk |
faa79d |
project=repo,
|
|
Patrick Uiterwijk |
faa79d |
ssh_key='ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q==',
|
|
Patrick Uiterwijk |
faa79d |
pushaccess=True,
|
|
Patrick Uiterwijk |
faa79d |
user='pingou',
|
|
Patrick Uiterwijk |
faa79d |
)
|
|
Patrick Uiterwijk |
faa79d |
self.session.commit()
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(msg, 'Deploy key added')
|
|
Patrick Uiterwijk |
faa79d |
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post('/test/dropdeploykey/1', follow_redirects=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('Deploy key removed', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Patrick Uiterwijk |
faa79d |
data = {'csrf_token': csrf_token}
|
|
Patrick Uiterwijk |
faa79d |
output = self.app.post(
|
|
Patrick Uiterwijk |
faa79d |
'/test/dropdeploykey/1', data=data, follow_redirects=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
faa79d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Deploy key removed', output_text)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'DEPLOY_KEY': False})
|
|
Pierre-Yves Chibon |
39f1dc |
def test_remove_deploykey_disabled(self, ast):
|
|
Pierre-Yves Chibon |
39f1dc |
""" Test the remove_deploykey endpoint when it's disabled in the
|
|
Pierre-Yves Chibon |
39f1dc |
config.
|
|
Pierre-Yves Chibon |
39f1dc |
"""
|
|
Pierre-Yves Chibon |
39f1dc |
ast.return_value = False
|
|
Pierre-Yves Chibon |
39f1dc |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
39f1dc |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
39f1dc |
|
|
Pierre-Yves Chibon |
39f1dc |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
39f1dc |
output = self.app.post('/test/dropdeploykey/1')
|
|
Pierre-Yves Chibon |
39f1dc |
self.assertEqual(output.status_code, 404)
|
|
Patrick Uiterwijk |
faa79d |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Shaily |
50175f |
@patch('pagure.lib.notify.log')
|
|
Shaily |
50175f |
def test_remove_user(self, mock_log, ast):
|
|
Pierre-Yves Chibon |
5980f6 |
""" Test the remove_user endpoint. """
|
|
Pierre-Yves Chibon |
5f82db |
ast.return_value = False
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# Git repo not found
|
|
Pierre-Yves Chibon |
5980f6 |
output = self.app.post('/foo/dropuser/1')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Pierre-Yves Chibon |
5980f6 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
5980f6 |
output = self.app.post('/foo/dropuser/1')
|
|
Pierre-Yves Chibon |
5980f6 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Pierre-Yves Chibon |
5980f6 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Pierre-Yves Chibon |
5980f6 |
output = self.app.post('/test/dropuser/1')
|
|
Pierre-Yves Chibon |
5980f6 |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Pierre-Yves Chibon |
5f82db |
ast.return_value = True
|
|
Pierre-Yves Chibon |
5f82db |
output = self.app.post('/test/dropuser/1')
|
|
Pierre-Yves Chibon |
5f82db |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
5f82db |
ast.return_value = False
|
|
Pierre-Yves Chibon |
5f82db |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/dropuser/1')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
5980f6 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
2c15da |
output = self.app.post('/test/settings')
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
2c15da |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
2c15da |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
2c15da |
|
|
Pierre-Yves Chibon |
2c15da |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
2c15da |
|
|
Pierre-Yves Chibon |
2c15da |
output = self.app.post(
|
|
Pierre-Yves Chibon |
2c15da |
'/test/dropuser/2', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
5980f6 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
058fe8 |
'</button>\n User does not have any '
|
|
Aurélien Bompard |
626417 |
'access on the repo', output_text)
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Pierre-Yves Chibon |
5980f6 |
# Add an user to a project
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
aa4ff6 |
self.assertEqual(len(repo.users), 0)
|
|
Pierre-Yves Chibon |
fe5017 |
msg = pagure.lib.add_user_to_project(
|
|
Pierre-Yves Chibon |
5980f6 |
session=self.session,
|
|
Pierre-Yves Chibon |
5980f6 |
project=repo,
|
|
Pierre-Yves Chibon |
a5a9ad |
new_user='foo',
|
|
Pierre-Yves Chibon |
a5a9ad |
user='pingou',
|
|
Pierre-Yves Chibon |
5980f6 |
)
|
|
Pierre-Yves Chibon |
5980f6 |
self.session.commit()
|
|
Pierre-Yves Chibon |
5980f6 |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
aa4ff6 |
self.assertEqual(len(repo.users), 1)
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
5980f6 |
output = self.app.post('/test/dropuser/2', follow_redirects=True)
|
|
Pierre-Yves Chibon |
5980f6 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertNotIn(
|
|
Aurélien Bompard |
626417 |
'</button>\n User removed', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('action="/test/dropuser/2">', output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
aa4ff6 |
self.assertEqual(len(repo.users), 1)
|
|
Pierre-Yves Chibon |
2c15da |
|
|
Pierre-Yves Chibon |
2c15da |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
2c15da |
output = self.app.post(
|
|
Pierre-Yves Chibon |
2c15da |
'/test/dropuser/2', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
2c15da |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'</button>\n User removed', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('action="/test/dropuser/2">', output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
aa4ff6 |
self.assertEqual(len(repo.users), 0)
|
|
Pierre-Yves Chibon |
5980f6 |
|
|
Shaily |
50175f |
mock_log.assert_called_with(ANY, topic='project.user.removed', msg=ANY)
|
|
Shaily |
50175f |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
a04944 |
@patch('pagure.lib.notify.log')
|
|
Pierre-Yves Chibon |
a04944 |
def test_remove_user_self(self, mock_log, ast):
|
|
Pierre-Yves Chibon |
a04944 |
""" Test the remove_user endpoint when removing themselves. """
|
|
Pierre-Yves Chibon |
a04944 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
a04944 |
|
|
Pierre-Yves Chibon |
a04944 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
a04944 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
a04944 |
|
|
Pierre-Yves Chibon |
a04944 |
# Add an user to a project
|
|
Pierre-Yves Chibon |
a04944 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a04944 |
self.assertEqual(len(repo.users), 0)
|
|
Pierre-Yves Chibon |
a04944 |
msg = pagure.lib.add_user_to_project(
|
|
Pierre-Yves Chibon |
a04944 |
session=self.session,
|
|
Pierre-Yves Chibon |
a04944 |
project=repo,
|
|
Pierre-Yves Chibon |
a04944 |
new_user='foo',
|
|
Pierre-Yves Chibon |
a04944 |
user='pingou',
|
|
Pierre-Yves Chibon |
a04944 |
)
|
|
Pierre-Yves Chibon |
a04944 |
self.session.commit()
|
|
Pierre-Yves Chibon |
a04944 |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
a04944 |
self.assertEqual(len(repo.users), 1)
|
|
Pierre-Yves Chibon |
a04944 |
|
|
Pierre-Yves Chibon |
a04944 |
# Let user foo remove themselves
|
|
Pierre-Yves Chibon |
a04944 |
user = tests.FakeUser(username='foo')
|
|
Pierre-Yves Chibon |
a04944 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
a04944 |
csrf_token = self.get_csrf()
|
|
Pierre-Yves Chibon |
a04944 |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
a04944 |
|
|
Pierre-Yves Chibon |
a04944 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
a04944 |
'/test/dropuser/2', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
a04944 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
a04944 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Overview - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
a04944 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
a04944 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'</button>\n User removed', output_text)
|
|
Pierre-Yves Chibon |
a04944 |
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
a04944 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a04944 |
self.assertEqual(len(repo.users), 0)
|
|
Pierre-Yves Chibon |
a04944 |
|
|
Pierre-Yves Chibon |
a04944 |
mock_log.assert_called_with(ANY, topic='project.user.removed', msg=ANY)
|
|
Pierre-Yves Chibon |
a04944 |
|
|
Pierre-Yves Chibon |
a04944 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Vivek Anand |
3b0299 |
def test_remove_group_project_when_user_mngt_off(self, ast):
|
|
Vivek Anand |
3b0299 |
""" Test the remove_group_project endpoint when user management is
|
|
Vivek Anand |
3b0299 |
turned off in the pagure instance"""
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = False
|
|
Vivek Anand |
3b0299 |
ast.return_value = False
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/foo/dropgroup/1')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/dropgroup/1')
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 302)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
user = tests.FakeUser()
|
|
Vivek Anand |
3b0299 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/settings')
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Vivek Anand |
3b0299 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Vivek Anand |
3b0299 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data = {'csrf_token': csrf_token}
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
output = self.app.post(
|
|
Vivek Anand |
3b0299 |
'/test/dropgroup/2', data=data, follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# Create the new group
|
|
Vivek Anand |
3b0299 |
msg = pagure.lib.add_group(
|
|
Vivek Anand |
3b0299 |
session=self.session,
|
|
Vivek Anand |
3b0299 |
group_name='testgrp',
|
|
Vivek Anand |
3b0299 |
group_type='user',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='testgrp group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Vivek Anand |
3b0299 |
user='pingou',
|
|
Vivek Anand |
3b0299 |
is_admin=False,
|
|
Vivek Anand |
3b0299 |
blacklist=[],
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(msg, 'User `pingou` added to the group `testgrp`.')
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Vivek Anand |
3b0299 |
# Add the group to a project
|
|
Vivek Anand |
3b0299 |
msg = pagure.lib.add_group_to_project(
|
|
Vivek Anand |
3b0299 |
session=self.session,
|
|
Vivek Anand |
3b0299 |
project=repo,
|
|
Vivek Anand |
3b0299 |
new_group='testgrp',
|
|
Vivek Anand |
3b0299 |
user='pingou',
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Vivek Anand |
3b0299 |
self.assertEqual(msg, 'Group added')
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/dropgroup/1', follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
data = {'csrf_token': csrf_token}
|
|
Vivek Anand |
3b0299 |
output = self.app.post(
|
|
Vivek Anand |
3b0299 |
'/test/dropgroup/1', data=data, follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['ENABLE_USER_MNGT'] = True
|
|
Vivek Anand |
3b0299 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
114c3d |
def test_remove_group_project(self, ast):
|
|
Pierre-Yves Chibon |
114c3d |
""" Test the remove_group_project endpoint. """
|
|
Pierre-Yves Chibon |
114c3d |
ast.return_value = False
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post('/foo/dropgroup/1')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post('/foo/dropgroup/1')
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post('/test/dropgroup/1')
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
ast.return_value = True
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post('/test/dropgroup/1')
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
114c3d |
ast.return_value = False
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/dropgroup/1')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
114c3d |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post('/test/settings')
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
114c3d |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post(
|
|
Pierre-Yves Chibon |
114c3d |
'/test/dropgroup/2', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertIn(
|
|
Pierre-Yves Chibon |
114c3d |
'</button>\n '
|
|
Pierre-Yves Chibon |
114c3d |
'Group does not seem to be part of this project',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
# Create the new group
|
|
Pierre-Yves Chibon |
114c3d |
msg = pagure.lib.add_group(
|
|
Pierre-Yves Chibon |
114c3d |
session=self.session,
|
|
Pierre-Yves Chibon |
114c3d |
group_name='testgrp',
|
|
Pierre-Yves Chibon |
114c3d |
group_type='user',
|
|
Pierre-Yves Chibon |
ce6666 |
display_name='testgrp group',
|
|
Pierre-Yves Chibon |
ce6666 |
description=None,
|
|
Pierre-Yves Chibon |
114c3d |
user='pingou',
|
|
Pierre-Yves Chibon |
114c3d |
is_admin=False,
|
|
Pierre-Yves Chibon |
114c3d |
blacklist=[],
|
|
Pierre-Yves Chibon |
114c3d |
)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(msg, 'User `pingou` added to the group `testgrp`.')
|
|
Pierre-Yves Chibon |
114c3d |
self.session.commit()
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
114c3d |
# Add the group to a project
|
|
Pierre-Yves Chibon |
114c3d |
msg = pagure.lib.add_group_to_project(
|
|
Pierre-Yves Chibon |
114c3d |
session=self.session,
|
|
Pierre-Yves Chibon |
114c3d |
project=repo,
|
|
Pierre-Yves Chibon |
114c3d |
new_group='testgrp',
|
|
Pierre-Yves Chibon |
114c3d |
user='pingou',
|
|
Pierre-Yves Chibon |
114c3d |
)
|
|
Pierre-Yves Chibon |
114c3d |
self.session.commit()
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(msg, 'Group added')
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
0066db |
self.assertEqual(len(repo.groups), 1)
|
|
Pierre-Yves Chibon |
0066db |
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post('/test/dropgroup/1', follow_redirects=True)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('action="/test/dropgroup/1">', output_text)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertNotIn(
|
|
Pierre-Yves Chibon |
114c3d |
'</button>\n Group removed',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
0066db |
self.assertEqual(len(repo.groups), 1)
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Pierre-Yves Chibon |
114c3d |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
114c3d |
output = self.app.post(
|
|
Pierre-Yves Chibon |
114c3d |
'/test/dropgroup/1', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
114c3d |
self.assertIn(
|
|
Pierre-Yves Chibon |
114c3d |
'</button>\n Group removed',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('action="/test/dropgroup/1">', output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
0066db |
self.assertEqual(len(repo.groups), 0)
|
|
Pierre-Yves Chibon |
114c3d |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
e2fa89 |
def test_update_project(self, ast):
|
|
Pierre-Yves Chibon |
21b196 |
""" Test the update_project endpoint. """
|
|
Pierre-Yves Chibon |
e2fa89 |
ast.return_value = True
|
|
Pierre-Yves Chibon |
e2fa89 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# Git repo not found
|
|
Pierre-Yves Chibon |
21b196 |
output = self.app.post('/foo/update')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
8cae39 |
|
|
Pierre-Yves Chibon |
8cae39 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
3f60e3 |
# Project does not exist
|
|
Pierre-Yves Chibon |
e2fa89 |
output = self.app.post('/foo/update')
|
|
Pierre-Yves Chibon |
8cae39 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
8cae39 |
|
|
Pierre-Yves Chibon |
8cae39 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# Session timed-out
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/update')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
8cae39 |
|
|
Pierre-Yves Chibon |
3f60e3 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# Not allowed
|
|
Pierre-Yves Chibon |
21b196 |
output = self.app.post('/test/update')
|
|
Pierre-Yves Chibon |
8cae39 |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
8cae39 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/update')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
8cae39 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
21b196 |
output = self.app.post('/test/update', follow_redirects=True)
|
|
Pierre-Yves Chibon |
8cae39 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
8cae39 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
8cae39 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
8cae39 |
|
|
Pierre-Yves Chibon |
8cae39 |
data = {
|
|
Pierre-Yves Chibon |
8cae39 |
'description': 'new description for test project #1',
|
|
Pierre-Yves Chibon |
8cae39 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
8cae39 |
}
|
|
Pierre-Yves Chibon |
8cae39 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
21b196 |
'/test/update', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
8cae39 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
a3121e |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<input class="form-control" name="avatar_email" value="" />', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Project updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
a3121e |
|
|
Pierre-Yves Chibon |
a3121e |
# Edit the avatar_email
|
|
Pierre-Yves Chibon |
a3121e |
data = {
|
|
Pierre-Yves Chibon |
a3121e |
'description': 'new description for test project #1',
|
|
Pierre-Yves Chibon |
a3121e |
'avatar_email': 'pingou@fp.o',
|
|
Pierre-Yves Chibon |
a3121e |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
a3121e |
}
|
|
Pierre-Yves Chibon |
a3121e |
output = self.app.post(
|
|
Pierre-Yves Chibon |
21b196 |
'/test/update', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
a3121e |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
a3121e |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'<input class="form-control" name="avatar_email" value="pingou@fp.o" />',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Project updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
a3121e |
|
|
Pierre-Yves Chibon |
a3121e |
# Reset the avatar_email
|
|
Pierre-Yves Chibon |
a3121e |
data = {
|
|
Pierre-Yves Chibon |
a3121e |
'description': 'new description for test project #1',
|
|
Pierre-Yves Chibon |
a3121e |
'avatar_email': '',
|
|
Pierre-Yves Chibon |
a3121e |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
a3121e |
}
|
|
Pierre-Yves Chibon |
a3121e |
output = self.app.post(
|
|
Pierre-Yves Chibon |
21b196 |
'/test/update', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
a3121e |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
a3121e |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<input class="form-control" name="avatar_email" value="" />', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Project updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
d194e2 |
def test_update_project_update_tag(self, ast):
|
|
Pierre-Yves Chibon |
d194e2 |
""" Test the view_settings endpoint when updating the project's tags.
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Pierre-Yves Chibon |
d194e2 |
We had an issue where when you add an existing tag to a project we
|
|
Pierre-Yves Chibon |
da36b1 |
were querying the wrong table in the database. It would thus not find
|
|
Pierre-Yves Chibon |
da36b1 |
the tag, would try to add it, and (rightfully) complain about duplicated
|
|
Pierre-Yves Chibon |
da36b1 |
content.
|
|
Pierre-Yves Chibon |
d194e2 |
This test ensure we are behaving properly.
|
|
Pierre-Yves Chibon |
d194e2 |
"""
|
|
Pierre-Yves Chibon |
d194e2 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Pierre-Yves Chibon |
d194e2 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Pierre-Yves Chibon |
d194e2 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Pierre-Yves Chibon |
d194e2 |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
d194e2 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Pierre-Yves Chibon |
d194e2 |
# Add tag to a project so that they are added to the database
|
|
Pierre-Yves Chibon |
d194e2 |
data = {
|
|
Pierre-Yves Chibon |
d194e2 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
d194e2 |
'description': 'Test project',
|
|
Pierre-Yves Chibon |
d194e2 |
'tags': 'test,pagure,tag',
|
|
Pierre-Yves Chibon |
d194e2 |
}
|
|
Pierre-Yves Chibon |
d194e2 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
d194e2 |
'/test/update', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertIn(
|
|
Pierre-Yves Chibon |
d194e2 |
'</button>\n Project updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Pierre-Yves Chibon |
d194e2 |
# Remove two of the tags of the project, they will still be in
|
|
Pierre-Yves Chibon |
d194e2 |
# the DB but not associated to this project
|
|
Pierre-Yves Chibon |
d194e2 |
data = {
|
|
Pierre-Yves Chibon |
d194e2 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
d194e2 |
'description': 'Test project',
|
|
Pierre-Yves Chibon |
d194e2 |
'tags': 'tag',
|
|
Pierre-Yves Chibon |
d194e2 |
}
|
|
Pierre-Yves Chibon |
d194e2 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
d194e2 |
'/test/update', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertIn(
|
|
Pierre-Yves Chibon |
d194e2 |
'</button>\n Project updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
d194e2 |
|
|
Pierre-Yves Chibon |
d194e2 |
# Try re-adding the two tags, this used to fail before we fixed
|
|
Pierre-Yves Chibon |
d194e2 |
# it
|
|
Pierre-Yves Chibon |
d194e2 |
data = {
|
|
Pierre-Yves Chibon |
d194e2 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
d194e2 |
'description': 'Test project',
|
|
Pierre-Yves Chibon |
d194e2 |
'tags': 'test,pagure,tag',
|
|
Pierre-Yves Chibon |
d194e2 |
}
|
|
Pierre-Yves Chibon |
d194e2 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
d194e2 |
'/test/update', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
d194e2 |
self.assertIn(
|
|
Pierre-Yves Chibon |
d194e2 |
'</button>\n Project updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
8cae39 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
d9cdbe |
def test_view_settings(self, ast):
|
|
Pierre-Yves Chibon |
490ff9 |
""" Test the view_settings endpoint. """
|
|
Pierre-Yves Chibon |
d9cdbe |
ast.return_value = False
|
|
Pierre-Yves Chibon |
d9cdbe |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
490ff9 |
output = self.app.get('/foo/settings')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
490ff9 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
490ff9 |
output = self.app.get('/foo/settings')
|
|
Pierre-Yves Chibon |
490ff9 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
490ff9 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
490ff9 |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
490ff9 |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
490ff9 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
d9cdbe |
ast.return_value = True
|
|
Pierre-Yves Chibon |
d9cdbe |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
d9cdbe |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
d9cdbe |
|
|
Pierre-Yves Chibon |
d9cdbe |
ast.return_value = False
|
|
Pierre-Yves Chibon |
d9cdbe |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
490ff9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
|
|
Pierre-Yves Chibon |
490ff9 |
# Both checkbox checked before
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
540c4b |
'
|
|
Aurélien Bompard |
626417 |
'name="pull_requests" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
719bdd |
'
|
|
Aurélien Bompard |
626417 |
'name="issue_tracker" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
490ff9 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
490ff9 |
data = {}
|
|
Pierre-Yves Chibon |
490ff9 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
490ff9 |
'/test/settings', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
490ff9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
490ff9 |
# Both checkbox are still checked
|
|
Pierre-Yves Chibon |
490ff9 |
output = self.app.get('/test/settings', follow_redirects=True)
|
|
Pierre-Yves Chibon |
490ff9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
540c4b |
'
|
|
Aurélien Bompard |
626417 |
'name="pull_requests" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
719bdd |
'
|
|
Aurélien Bompard |
626417 |
'name="issue_tracker" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
490ff9 |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
490ff9 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
490ff9 |
'/test/settings', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
490ff9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Overview - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Edited successfully '
|
|
Aurélien Bompard |
626417 |
'settings of repo: test', output_text)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
490ff9 |
# Both checkbox are now un-checked
|
|
Pierre-Yves Chibon |
490ff9 |
output = self.app.get('/test/settings', follow_redirects=True)
|
|
Pierre-Yves Chibon |
490ff9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
540c4b |
'
|
|
Aurélien Bompard |
626417 |
'name="pull_requests" />', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
719bdd |
'
|
|
Aurélien Bompard |
626417 |
'name="issue_tracker" />', output_text)
|
|
Pierre-Yves Chibon |
490ff9 |
|
|
Pierre-Yves Chibon |
c104d3 |
data = {
|
|
Pierre-Yves Chibon |
c104d3 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
540c4b |
'pull_requests': 'y',
|
|
Pierre-Yves Chibon |
c104d3 |
'issue_tracker': 'y',
|
|
Pierre-Yves Chibon |
c104d3 |
}
|
|
Pierre-Yves Chibon |
c104d3 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
c104d3 |
'/test/settings', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
c104d3 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Overview - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Edited successfully '
|
|
Aurélien Bompard |
626417 |
'settings of repo: test', output_text)
|
|
Pierre-Yves Chibon |
c104d3 |
|
|
Pierre-Yves Chibon |
c104d3 |
# Both checkbox are again checked
|
|
Pierre-Yves Chibon |
c104d3 |
output = self.app.get('/test/settings', follow_redirects=True)
|
|
Pierre-Yves Chibon |
c104d3 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
540c4b |
'
|
|
Aurélien Bompard |
626417 |
'name="pull_requests" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
c104d3 |
'
|
|
Aurélien Bompard |
626417 |
'name="issue_tracker" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
c104d3 |
|
|
Pierre-Yves Chibon |
03bfe5 |
@patch('pagure.lib.git.generate_gitolite_acls')
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
03bfe5 |
def test_view_settings_pr_only(self, ast, gen_acl):
|
|
Pierre-Yves Chibon |
03bfe5 |
""" Test the view_settings endpoint when turning on PR only. """
|
|
Pierre-Yves Chibon |
03bfe5 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
03bfe5 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
03bfe5 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
03bfe5 |
|
|
Pierre-Yves Chibon |
03bfe5 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
03bfe5 |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
|
|
Pierre-Yves Chibon |
03bfe5 |
csrf_token = self.get_csrf(output=output)
|
|
Pierre-Yves Chibon |
03bfe5 |
|
|
Pierre-Yves Chibon |
03bfe5 |
data = {
|
|
Pierre-Yves Chibon |
03bfe5 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
03bfe5 |
'pull_requests': 'y',
|
|
Pierre-Yves Chibon |
03bfe5 |
'issue_tracker': 'y',
|
|
Pierre-Yves Chibon |
03bfe5 |
'pull_request_access_only': 'y',
|
|
Pierre-Yves Chibon |
03bfe5 |
}
|
|
Pierre-Yves Chibon |
03bfe5 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
03bfe5 |
'/test/settings', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Overview - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Pierre-Yves Chibon |
03bfe5 |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Pierre-Yves Chibon |
03bfe5 |
'</button>\n Edited successfully '
|
|
Aurélien Bompard |
626417 |
'settings of repo: test', output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
|
|
Pierre-Yves Chibon |
03bfe5 |
# Both checkbox are again checked
|
|
Pierre-Yves Chibon |
03bfe5 |
output = self.app.get('/test/settings', follow_redirects=True)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Pierre-Yves Chibon |
03bfe5 |
'
|
|
Aurélien Bompard |
626417 |
'name="pull_requests" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Pierre-Yves Chibon |
03bfe5 |
'
|
|
Aurélien Bompard |
626417 |
'name="issue_tracker" checked=""/>', output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertIn(
|
|
Pierre-Yves Chibon |
03bfe5 |
'
|
|
Pierre-Yves Chibon |
03bfe5 |
'value="y" name="pull_request_access_only" checked=""/>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
03bfe5 |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Aurélien Bompard |
f61bb3 |
self.assertEqual(gen_acl.call_count, 1)
|
|
Pierre-Yves Chibon |
03bfe5 |
args = gen_acl.call_args
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertEqual(args[0], tuple())
|
|
Aurélien Bompard |
626417 |
self.assertListEqual(list(args[1]), ['project'])
|
|
Pierre-Yves Chibon |
03bfe5 |
self.assertEqual(args[1]['project'].fullname, 'test')
|
|
Pierre-Yves Chibon |
03bfe5 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
ea912b |
def test_fields_in_view_settings(self, ast):
|
|
Pierre-Yves Chibon |
ea912b |
""" Test the default fields in view_settings endpoint. """
|
|
Pierre-Yves Chibon |
ea912b |
ast.return_value = False
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
# No Git repo
|
|
Pierre-Yves Chibon |
ea912b |
output = self.app.get('/foo/settings')
|
|
Pierre-Yves Chibon |
ea912b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
ea912b |
output = self.app.get('/foo/settings')
|
|
Pierre-Yves Chibon |
ea912b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
ea912b |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
ea912b |
name='test',
|
|
Pierre-Yves Chibon |
ea912b |
description='test project #1',
|
|
Pierre-Yves Chibon |
ea912b |
hook_token='aaabbbccc',
|
|
Pierre-Yves Chibon |
ea912b |
)
|
|
Pierre-Yves Chibon |
ea912b |
self.session.add(item)
|
|
Pierre-Yves Chibon |
ea912b |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
ea912b |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
# User not logged in
|
|
Pierre-Yves Chibon |
ea912b |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
ea912b |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
ea912b |
ast.return_value = True
|
|
Pierre-Yves Chibon |
ea912b |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
ea912b |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
ast.return_value = False
|
|
Pierre-Yves Chibon |
ea912b |
output = self.app.get('/test/settings')
|
|
Pierre-Yves Chibon |
ea912b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
ea912b |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
ea912b |
# Check that the priorities have their empty fields
|
|
Pierre-Yves Chibon |
ea912b |
self.assertIn(
|
|
Pierre-Yves Chibon |
ea912b |
'''
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
value="" size="3" class="form-control"/>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
value="" class="form-control"/>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
# Check that the milestones have their empty fields
|
|
Pierre-Yves Chibon |
ea912b |
self.assertIn(
|
|
Pierre-Yves Chibon |
ea912b |
'''
|
|
Pierre-Yves Chibon |
f7a5ec |
|
|
Pierre-Yves Chibon |
0619e5 |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
value="" size="3" class="form-control"/>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
0619e5 |
|
|
Pierre-Yves Chibon |
0619e5 |
|
|
Pierre-Yves Chibon |
ea912b |
value="" class="form-control"/>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
f7a5ec |
|
|
Pierre-Yves Chibon |
f7a5ec |
|
|
Pierre-Yves Chibon |
f7a5ec |
data-stone="1"
|
|
Pierre-Yves Chibon |
f7a5ec |
data-glyph="arrow-thick-top">
|
|
Pierre-Yves Chibon |
f7a5ec |
|
|
Pierre-Yves Chibon |
f7a5ec |
data-stone="1"
|
|
Pierre-Yves Chibon |
f7a5ec |
data-glyph="arrow-thick-bottom">
|
|
Pierre-Yves Chibon |
f7a5ec |
|
|
Pierre-Yves Chibon |
0619e5 |
|
|
Pierre-Yves Chibon |
0619e5 |
<input type="checkbox" name="active_milestone_1" checked />
|
|
Pierre-Yves Chibon |
0619e5 |
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
# Check that the close_status have its empty field
|
|
Pierre-Yves Chibon |
ea912b |
self.assertIn(
|
|
Pierre-Yves Chibon |
ea912b |
'''
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
value="" class="form-control"/>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
# Check that the custom fields have their empty fields
|
|
Pierre-Yves Chibon |
ea912b |
self.assertIn(
|
|
Pierre-Yves Chibon |
ea912b |
'''
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Mark Reynolds |
a8f1ac |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
value="" class="form-control"/>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
<select name="custom_keys_type" class="form-control">
|
|
Pierre-Yves Chibon |
ea912b |
<option value="text" >Text</option>
|
|
Pierre-Yves Chibon |
ea912b |
<option value="boolean" >Boolean</option>
|
|
Pierre-Yves Chibon |
ea912b |
<option value="link" >Link</option>
|
|
Pierre-Yves Chibon |
ea912b |
<option value="list" >List</option>
|
|
Pierre-Yves Chibon |
ea912b |
</select>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
ea912b |
value="" class="form-control"/>
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Mark Reynolds |
a8f1ac |
|
|
Mark Reynolds |
a8f1ac |
|
|
Mark Reynolds |
a8f1ac |
class="form-control"/>
|
|
Mark Reynolds |
a8f1ac |
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Pierre-Yves Chibon |
ea912b |
|
|
Pierre-Yves Chibon |
aca486 |
def test_view_forks(self):
|
|
Pierre-Yves Chibon |
aca486 |
""" Test the view_forks endpoint. """
|
|
Pierre-Yves Chibon |
aca486 |
|
|
Pierre-Yves Chibon |
1a8086 |
output = self.app.get('/foo/stats', follow_redirects=True)
|
|
Pierre-Yves Chibon |
aca486 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
aca486 |
|
|
Pierre-Yves Chibon |
aca486 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
aca486 |
|
|
Pierre-Yves Chibon |
1a8086 |
output = self.app.get('/test/stats', follow_redirects=True)
|
|
Pierre-Yves Chibon |
aca486 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This project has not been forked.', output_text)
|
|
Pierre-Yves Chibon |
aca486 |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'CASE_SENSITIVE': True})
|
|
Pierre-Yves Chibon |
edbdc9 |
def test_view_repo_case_sensitive(self):
|
|
Pierre-Yves Chibon |
edbdc9 |
""" Test the view_repo endpoint. """
|
|
Pierre-Yves Chibon |
edbdc9 |
|
|
Pierre-Yves Chibon |
edbdc9 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
edbdc9 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
edbdc9 |
|
|
Pierre-Yves Chibon |
edbdc9 |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
edbdc9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
edbdc9 |
|
|
Pierre-Yves Chibon |
edbdc9 |
output = self.app.get('/TEST')
|
|
Pierre-Yves Chibon |
edbdc9 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
edbdc9 |
|
|
Pierre-Yves Chibon |
0447df |
def test_view_repo(self):
|
|
Pierre-Yves Chibon |
0447df |
""" Test the view_repo endpoint. """
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
output = self.app.get('/foo')
|
|
Pierre-Yves Chibon |
0447df |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
0447df |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
0447df |
# No git repo associated
|
|
Pierre-Yves Chibon |
0447df |
self.assertEqual(output.status_code, 404)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfMaxWalks(0, 0)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfReset()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
0447df |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
e8a127 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Stats ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfMaxWalks(0, 0)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfReset()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
21c4c3 |
output = self.app.get('/test/')
|
|
Pierre-Yves Chibon |
21c4c3 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
21c4c3 |
self.assertIn(
|
|
Pierre-Yves Chibon |
21c4c3 |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfMaxWalks(0, 0)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfReset()
|
|
Pierre-Yves Chibon |
21c4c3 |
|
|
Pierre-Yves Chibon |
0447df |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Karsten Hopp |
5192eb |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'), 'README.txt')
|
|
Karsten Hopp |
5192eb |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'), 'README.dummy')
|
|
Patrick Uiterwijk |
fcd520 |
self.perfReset()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
de6b7d |
# Authenticated, the Fork button appears
|
|
Pierre-Yves Chibon |
de6b7d |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
de6b7d |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
de6b7d |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'Fork</button>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('Forked from', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('README.txt', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('README.dummy', output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.perfMaxWalks(3, 8) # Target: (1, 3)
|
|
Pierre-Yves Chibon |
de6b7d |
self.perfReset()
|
|
Pierre-Yves Chibon |
de6b7d |
|
|
Pierre-Yves Chibon |
de6b7d |
# Non-authenticated, the Fork button does not appear
|
|
Pierre-Yves Chibon |
0447df |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
0447df |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertNotIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'Fork</button>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('Forked from', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('README.txt', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('README.dummy', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfMaxWalks(3, 8) # Target: (1, 3)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfReset()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
# Turn that repo into a fork
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
0447df |
repo.parent_id = 2
|
|
farhaanbukhsh |
907098 |
repo.is_fork = True
|
|
Pierre-Yves Chibon |
0447df |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
0447df |
self.session.commit()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
# View the repo in the UI
|
|
Pierre-Yves Chibon |
0447df |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
0447df |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
# Add some content to the git repo
|
|
Pierre-Yves Chibon |
0447df |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git'))
|
|
Pierre-Yves Chibon |
0447df |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git'))
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
de6b7d |
# Authenticated and already have a fork, the View Fork button appears
|
|
Pierre-Yves Chibon |
de6b7d |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
de6b7d |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
de6b7d |
output = self.app.get('/fork/pingou/test')
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertNotIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'Fork</button>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertIn(
|
|
Pierre-Yves Chibon |
de6b7d |
' View Fork',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.perfMaxWalks(1, 3)
|
|
Pierre-Yves Chibon |
de6b7d |
self.perfReset()
|
|
Pierre-Yves Chibon |
de6b7d |
|
|
Pierre-Yves Chibon |
de6b7d |
# Authenticated, the Fork button appears
|
|
Pierre-Yves Chibon |
de6b7d |
user = tests.FakeUser(username='foo')
|
|
Pierre-Yves Chibon |
de6b7d |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
de6b7d |
output = self.app.get('/fork/pingou/test')
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertNotIn(
|
|
Pierre-Yves Chibon |
de6b7d |
' View Fork',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'Fork</button>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.perfMaxWalks(1, 3)
|
|
Pierre-Yves Chibon |
de6b7d |
self.perfReset()
|
|
Pierre-Yves Chibon |
de6b7d |
|
|
Pierre-Yves Chibon |
de6b7d |
# Non-authenticated, the Fork button does not appear
|
|
Pierre-Yves Chibon |
0447df |
output = self.app.get('/fork/pingou/test')
|
|
Pierre-Yves Chibon |
0447df |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertNotIn(
|
|
Pierre-Yves Chibon |
de6b7d |
' View Fork',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
de6b7d |
self.assertNotIn(
|
|
Pierre-Yves Chibon |
de6b7d |
'Fork</button>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfMaxWalks(1, 3)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfReset()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
0447df |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
0447df |
name='test3',
|
|
Pierre-Yves Chibon |
0447df |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
0447df |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbmmm',
|
|
Pierre-Yves Chibon |
0447df |
)
|
|
Pierre-Yves Chibon |
0447df |
self.session.add(item)
|
|
Pierre-Yves Chibon |
0447df |
self.session.commit()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
0447df |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
0447df |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Pierre-Yves Chibon |
0447df |
ncommits=10)
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
0447df |
output = self.app.get('/fork/pingou/test3')
|
|
Pierre-Yves Chibon |
0447df |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #3 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfMaxWalks(3, 18) # Ideal: (1, 3)
|
|
Patrick Uiterwijk |
fcd520 |
self.perfReset()
|
|
Pierre-Yves Chibon |
0447df |
|
|
Pierre-Yves Chibon |
184a05 |
def test_view_repo_empty(self):
|
|
Pierre-Yves Chibon |
184a05 |
""" Test the view_repo endpoint on a repo w/o master branch. """
|
|
Pierre-Yves Chibon |
184a05 |
|
|
Pierre-Yves Chibon |
184a05 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
184a05 |
# Create a git repo to play with
|
|
Patrick Uiterwijk |
170974 |
gitrepo = os.path.join(self.path, 'repos', 'test.git')
|
|
Pierre-Yves Chibon |
184a05 |
pygit2.init_repository(gitrepo, bare=True)
|
|
Pierre-Yves Chibon |
184a05 |
|
|
Pierre-Yves Chibon |
184a05 |
# Create a fork of this repo
|
|
Pierre-Yves Chibon |
184a05 |
newpath = tempfile.mkdtemp(prefix='pagure-viewrepo-test')
|
|
Pierre-Yves Chibon |
184a05 |
new_repo = pygit2.clone_repository(gitrepo, newpath)
|
|
Pierre-Yves Chibon |
184a05 |
|
|
Pierre-Yves Chibon |
184a05 |
# Edit the sources file again
|
|
Pierre-Yves Chibon |
184a05 |
with open(os.path.join(newpath, 'sources'), 'w') as stream:
|
|
Pierre-Yves Chibon |
184a05 |
stream.write('foo\n bar\nbaz\n boose')
|
|
Pierre-Yves Chibon |
184a05 |
new_repo.index.add('sources')
|
|
Pierre-Yves Chibon |
184a05 |
new_repo.index.write()
|
|
Pierre-Yves Chibon |
184a05 |
|
|
Pierre-Yves Chibon |
184a05 |
# Commits the files added
|
|
Pierre-Yves Chibon |
184a05 |
tree = new_repo.index.write_tree()
|
|
Pierre-Yves Chibon |
184a05 |
author = pygit2.Signature(
|
|
Pierre-Yves Chibon |
184a05 |
'Alice Author', 'alice@authors.tld')
|
|
Pierre-Yves Chibon |
184a05 |
committer = pygit2.Signature(
|
|
Pierre-Yves Chibon |
184a05 |
'Cecil Committer', 'cecil@committers.tld')
|
|
Pierre-Yves Chibon |
184a05 |
new_repo.create_commit(
|
|
Pierre-Yves Chibon |
184a05 |
'refs/heads/feature',
|
|
Pierre-Yves Chibon |
184a05 |
author,
|
|
Pierre-Yves Chibon |
184a05 |
committer,
|
|
Pierre-Yves Chibon |
184a05 |
'A commit on branch feature',
|
|
Pierre-Yves Chibon |
184a05 |
tree,
|
|
Pierre-Yves Chibon |
184a05 |
[]
|
|
Pierre-Yves Chibon |
184a05 |
)
|
|
Pierre-Yves Chibon |
184a05 |
refname = 'refs/heads/feature'
|
|
Pierre-Yves Chibon |
184a05 |
ori_remote = new_repo.remotes[0]
|
|
Pierre-Yves Chibon |
27a73d |
PagureRepo.push(ori_remote, refname)
|
|
Pierre-Yves Chibon |
184a05 |
|
|
Pierre-Yves Chibon |
184a05 |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
184a05 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
184a05 |
self.assertEqual(
|
|
Aurélien Bompard |
626417 |
output_text.count(''), 0)
|
|
Pierre-Yves Chibon |
184a05 |
|
|
Pierre-Yves Chibon |
62ffe0 |
shutil.rmtree(newpath)
|
|
Pierre-Yves Chibon |
62ffe0 |
|
|
Pierre-Yves Chibon |
faa629 |
def test_view_repo_branch(self):
|
|
Pierre-Yves Chibon |
faa629 |
""" Test the view_repo_branch endpoint. """
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
output = self.app.get('/foo/branch/master')
|
|
Pierre-Yves Chibon |
faa629 |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
faa629 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
output = self.app.get('/test/branch/master')
|
|
Pierre-Yves Chibon |
faa629 |
# No git repo associated
|
|
Pierre-Yves Chibon |
faa629 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
output = self.app.get('/test/branch/master')
|
|
Pierre-Yves Chibon |
faa629 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
output = self.app.get('/test/branch/master')
|
|
Pierre-Yves Chibon |
faa629 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
# Turn that repo into a fork
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
faa629 |
repo.parent_id = 2
|
|
farhaanbukhsh |
907098 |
repo.is_fork = True
|
|
Pierre-Yves Chibon |
faa629 |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
faa629 |
self.session.commit()
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
# View the repo in the UI
|
|
Pierre-Yves Chibon |
faa629 |
output = self.app.get('/test/branch/master')
|
|
Pierre-Yves Chibon |
faa629 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
# Add some content to the git repo
|
|
Pierre-Yves Chibon |
faa629 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git'))
|
|
Pierre-Yves Chibon |
faa629 |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git'))
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
output = self.app.get('/fork/pingou/test/branch/master')
|
|
Pierre-Yves Chibon |
faa629 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
faa629 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
faa629 |
name='test3',
|
|
Pierre-Yves Chibon |
faa629 |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
faa629 |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbnnn',
|
|
Pierre-Yves Chibon |
faa629 |
)
|
|
Pierre-Yves Chibon |
faa629 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
faa629 |
self.session.commit()
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
faa629 |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
faa629 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Pierre-Yves Chibon |
faa629 |
ncommits=10)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
faa629 |
output = self.app.get('/fork/pingou/test3/branch/master')
|
|
Pierre-Yves Chibon |
faa629 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #3 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
faa629 |
|
|
Pierre-Yves Chibon |
225cb8 |
def test_view_commits(self):
|
|
Pierre-Yves Chibon |
225cb8 |
""" Test the view_commits endpoint. """
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/foo/commits')
|
|
Pierre-Yves Chibon |
85d878 |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
85d878 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/test/commits')
|
|
Pierre-Yves Chibon |
85d878 |
# No git repo associated
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/test/commits')
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
85d878 |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/test/commits')
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('<title>Commits - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
a923d1 |
output = self.app.get('/test/commits/master')
|
|
Pierre-Yves Chibon |
a923d1 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Pierre-Yves Chibon |
a923d1 |
|
|
Pierre-Yves Chibon |
85d878 |
# Turn that repo into a fork
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
85d878 |
repo.parent_id = 2
|
|
farhaanbukhsh |
907098 |
repo.is_fork = True
|
|
Pierre-Yves Chibon |
85d878 |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
85d878 |
self.session.commit()
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
85d878 |
# View the repo in the UI
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/test/commits')
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
85d878 |
# Add some content to the git repo
|
|
Pierre-Yves Chibon |
85d878 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git'))
|
|
Pierre-Yves Chibon |
85d878 |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test.git'))
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/fork/pingou/test/commits?page=abc')
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
85d878 |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
85d878 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
85d878 |
name='test3',
|
|
Pierre-Yves Chibon |
85d878 |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
85d878 |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbooo',
|
|
Pierre-Yves Chibon |
85d878 |
)
|
|
Pierre-Yves Chibon |
85d878 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
85d878 |
self.session.commit()
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
85d878 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
85d878 |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
85d878 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Pierre-Yves Chibon |
85d878 |
ncommits=10)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/fork/pingou/test3/commits/fobranch')
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Pierre-Yves Chibon |
1279e0 |
output = self.app.get('/fork/pingou/test3/commits')
|
|
Pierre-Yves Chibon |
85d878 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #3 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Forked from', output_text)
|
|
Pierre-Yves Chibon |
85d878 |
|
|
Oliver Gutierrez |
38f510 |
def test_compare_commits(self):
|
|
Oliver Gutierrez |
38f510 |
""" Test the compare_commits endpoint. """
|
|
Oliver Gutierrez |
9e99d9 |
|
|
Oliver Gutierrez |
9e99d9 |
# First two commits comparison
|
|
Oliver Gutierrez |
9e99d9 |
def compare_first_two(c1, c2):
|
|
Oliver Gutierrez |
9e99d9 |
# View commits comparison
|
|
Oliver Gutierrez |
9e99d9 |
output = self.app.get('/test/c/%s..%s' % (c2.oid.hex, c1.oid.hex))
|
|
Oliver Gutierrez |
9e99d9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Pierre-Yves Chibon |
8544f4 |
'<title>Diff from %s to %s - test\n - Pagure</title>'
|
|
Oliver Gutierrez |
9e99d9 |
% (c2.oid.hex, c1.oid.hex),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Oliver Gutierrez |
9e99d9 |
'%s .. %s'
|
|
Oliver Gutierrez |
9e99d9 |
% (c2.oid.hex, c1.oid.hex),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Abhijeet Kasurde |
8bdcee |
'Commits \n ' +
|
|
Oliver Gutierrez |
9e99d9 |
'
|
|
Ryan Lerch |
eef090 |
'class="badge badge-secondary badge-pill">' +
|
|
Oliver Gutierrez |
9e99d9 |
'\n 2\n ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Mark Reynolds |
48bfcb |
'- ' +
|
|
Aurélien Bompard |
626417 |
'Row 0', output_text)
|
|
Oliver Gutierrez |
9e99d9 |
# View inverse commits comparison
|
|
Oliver Gutierrez |
9e99d9 |
output = self.app.get('/test/c/%s..%s' % (c1.oid.hex, c2.oid.hex))
|
|
Oliver Gutierrez |
9e99d9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Pierre-Yves Chibon |
8544f4 |
'<title>Diff from %s to %s - test\n - Pagure</title>' %
|
|
Oliver Gutierrez |
9e99d9 |
(c1.oid.hex, c2.oid.hex),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Abhijeet Kasurde |
8bdcee |
'Commits \n ' +
|
|
Oliver Gutierrez |
9e99d9 |
'
|
|
Ryan Lerch |
eef090 |
'class="badge badge-secondary badge-pill">' +
|
|
Oliver Gutierrez |
9e99d9 |
'\n 2\n ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Oliver Gutierrez |
9e99d9 |
'%s .. %s' %
|
|
Oliver Gutierrez |
9e99d9 |
(c1.oid.hex, c2.oid.hex),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Mark Reynolds |
48bfcb |
'' +
|
|
Aurélien Bompard |
626417 |
'+ Row 0', output_text)
|
|
Oliver Gutierrez |
9e99d9 |
|
|
Oliver Gutierrez |
9e99d9 |
def compare_all(c1, c3):
|
|
Oliver Gutierrez |
9e99d9 |
# View commits comparison
|
|
Oliver Gutierrez |
9e99d9 |
output = self.app.get('/test/c/%s..%s' % (c1.oid.hex, c3.oid.hex))
|
|
Oliver Gutierrez |
9e99d9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Pierre-Yves Chibon |
8544f4 |
'<title>Diff from %s to %s - test\n - Pagure</title>' %
|
|
Aurélien Bompard |
626417 |
(c1.oid.hex, c3.oid.hex), output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Oliver Gutierrez |
9e99d9 |
'%s .. %s' %
|
|
Oliver Gutierrez |
9e99d9 |
(c1.oid.hex, c3.oid.hex),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Mark Reynolds |
48bfcb |
'
|
|
Aurélien Bompard |
626417 |
'#ddffdd">+ Row 0', output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertEqual(
|
|
Aurélien Bompard |
626417 |
output_text.count(
|
|
Mark Reynolds |
48bfcb |
'
|
|
Mark Reynolds |
48bfcb |
'#ddffdd">+ Row 0'), 2)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Abhijeet Kasurde |
8bdcee |
'Commits \n ' +
|
|
Oliver Gutierrez |
9e99d9 |
'
|
|
Ryan Lerch |
eef090 |
'class="badge badge-secondary badge-pill">' +
|
|
Oliver Gutierrez |
9e99d9 |
'\n 3\n ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
3c6ab6 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'title="View file as of 4829cf">Šource',
|
|
Aurélien Bompard |
626417 |
output_text
|
|
Aurélien Bompard |
626417 |
)
|
|
Pierre-Yves Chibon |
3c6ab6 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<small>file added</small> ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
3c6ab6 |
|
|
Oliver Gutierrez |
9e99d9 |
# View inverse commits comparison
|
|
Oliver Gutierrez |
9e99d9 |
output = self.app.get(
|
|
Oliver Gutierrez |
9e99d9 |
'/test/c/%s..%s' % (c3.oid.hex, c1.oid.hex))
|
|
Oliver Gutierrez |
9e99d9 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Pierre-Yves Chibon |
8544f4 |
'<title>Diff from %s to %s - test\n - Pagure</title>' %
|
|
Aurélien Bompard |
626417 |
(c3.oid.hex, c1.oid.hex), output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Oliver Gutierrez |
9e99d9 |
'%s .. %s' %
|
|
Oliver Gutierrez |
9e99d9 |
(c3.oid.hex, c1.oid.hex),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Mark Reynolds |
48bfcb |
'@@ -1,2 +1,1' +
|
|
Aurélien Bompard |
626417 |
' @@', output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Mark Reynolds |
48bfcb |
'- ' +
|
|
Aurélien Bompard |
626417 |
'Row 0', output_text)
|
|
Oliver Gutierrez |
9e99d9 |
self.assertIn(
|
|
Abhijeet Kasurde |
8bdcee |
'Commits \n ' +
|
|
Oliver Gutierrez |
9e99d9 |
'
|
|
Ryan Lerch |
eef090 |
'class="badge badge-secondary badge-pill">' +
|
|
Oliver Gutierrez |
9e99d9 |
'\n 3\n ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
3c6ab6 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'title="View file as of 000000">Šource',
|
|
Aurélien Bompard |
626417 |
output_text
|
|
Aurélien Bompard |
626417 |
)
|
|
Pierre-Yves Chibon |
3c6ab6 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<small>file removed</small> ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Oliver Gutierrez |
9e99d9 |
|
|
Oliver Gutierrez |
38f510 |
output = self.app.get('/foo/bar')
|
|
Oliver Gutierrez |
38f510 |
# No project registered in the DB
|
|
Oliver Gutierrez |
38f510 |
self.assertEqual(output.status_code, 404)
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
38f510 |
tests.create_projects(self.session)
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
38f510 |
output = self.app.get('/test/bar')
|
|
Oliver Gutierrez |
38f510 |
# No git repo associated
|
|
Oliver Gutierrez |
38f510 |
self.assertEqual(output.status_code, 404)
|
|
Oliver Gutierrez |
38f510 |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
38f510 |
output = self.app.get('/test/bar')
|
|
Oliver Gutierrez |
38f510 |
self.assertEqual(output.status_code, 404)
|
|
Oliver Gutierrez |
38f510 |
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
9e99d9 |
# Add one commit to git repo
|
|
Oliver Gutierrez |
9e99d9 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), ncommits=1)
|
|
Oliver Gutierrez |
9e99d9 |
c1 = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
20a73c |
time.sleep(1)
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
9e99d9 |
# Add another commit to git repo
|
|
Oliver Gutierrez |
9e99d9 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), ncommits=1)
|
|
Oliver Gutierrez |
38f510 |
c2 = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
20a73c |
time.sleep(1)
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
9e99d9 |
# Add one more commit to git repo
|
|
Oliver Gutierrez |
9e99d9 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'),
|
|
Pierre-Yves Chibon |
f487a0 |
ncommits=1, filename='Šource')
|
|
Oliver Gutierrez |
9e99d9 |
c3 = repo.revparse_single('HEAD')
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
9e99d9 |
compare_first_two(c1, c2)
|
|
Oliver Gutierrez |
9e99d9 |
compare_all(c1, c3)
|
|
Oliver Gutierrez |
38f510 |
|
|
Oliver Gutierrez |
9e99d9 |
user = tests.FakeUser()
|
|
Oliver Gutierrez |
38f510 |
# Set user logged in
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Oliver Gutierrez |
9e99d9 |
compare_first_two(c1, c2)
|
|
Oliver Gutierrez |
9e99d9 |
compare_all(c1, c3)
|
|
Oliver Gutierrez |
38f510 |
|
|
Pierre-Yves Chibon |
c56993 |
def test_view_file(self):
|
|
Pierre-Yves Chibon |
c56993 |
""" Test the view_file endpoint. """
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/foo/blob/foo/f/sources')
|
|
Pierre-Yves Chibon |
c56993 |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/foo/f/sources')
|
|
Pierre-Yves Chibon |
c56993 |
# No git repo associated
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/foo/f/sources')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
c56993 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test.jpg')
|
|
Pierre-Yves Chibon |
c56993 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test_binary')
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
output = self.app.get('/test/blob/master/foofile')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
# View in a branch
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/master/f/sources')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' bar ', output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pradeep CE (cep) |
c53450 |
# Empty files should also be displayed
|
|
Pradeep CE (cep) |
c53450 |
tests.add_content_to_git(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'),
|
|
Pradeep CE (cep) |
c53450 |
filename="emptyfile.md",
|
|
Pradeep CE (cep) |
c53450 |
content="")
|
|
Pradeep CE (cep) |
c53450 |
output = self.app.get('/test/blob/master/f/emptyfile.md')
|
|
Pradeep CE (cep) |
c53450 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pradeep CE (cep) |
c53450 |
self.assertIn(
|
|
Pradeep CE (cep) |
c53450 |
'
|
|
Pradeep CE (cep) |
c53450 |
'href="/test/raw/master/f/emptyfile.md" '
|
|
Aurélien Bompard |
626417 |
'title="View as raw">Raw', output_text)
|
|
Pradeep CE (cep) |
c53450 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'\n'
|
|
Aurélien Bompard |
626417 |
' \n ', output_text)
|
|
Pradeep CE (cep) |
c53450 |
|
|
Pierre-Yves Chibon |
c56993 |
# View what's supposed to be an image
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/master/f/test.jpg')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'Binary files cannot be rendered. ', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'view the raw version',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
# View by commit id
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
c56993 |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/%s/f/test.jpg' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'Binary files cannot be rendered. ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('/f/test.jpg">view the raw version', output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
# View by image name -- somehow we support this
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/sources/f/test.jpg')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'Binary files cannot be rendered. ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('/f/test.jpg">view the raw version', output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
# View binary file
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/sources/f/test_binary')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('/f/test_binary">view the raw version', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'Binary files cannot be rendered. ', output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
# View folder
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/master/f/folder1')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('<title>Tree - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'', output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pradeep CE (cep) |
37126c |
# Verify the nav links correctly when viewing a nested folder/file.
|
|
Pradeep CE (cep) |
0294d1 |
output = self.app.get('/test/blob/master/f/folder1/folder2/file')
|
|
Pradeep CE (cep) |
37126c |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pradeep CE (cep) |
37126c |
self.assertIn(
|
|
Pradeep CE (cep) |
0294d1 |
'\n'
|
|
Pradeep CE (cep) |
37126c |
' '
|
|
Pradeep CE (cep) |
0294d1 |
' folder2\n'
|
|
Aurélien Bompard |
626417 |
' ', output_text)
|
|
Pradeep CE (cep) |
37126c |
|
|
Pierre-Yves Chibon |
c56993 |
# View by image name -- with a non-existant file
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/sources/f/testfoo.jpg')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/test/blob/master/f/folder1/testfoo.jpg')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
17de87 |
# View file with a non-ascii name
|
|
Pierre-Yves Chibon |
17de87 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'),
|
|
Pierre-Yves Chibon |
17de87 |
ncommits=1, filename='Šource')
|
|
Pierre-Yves Chibon |
17de87 |
output = self.app.get('/test/blob/master/f/Šource')
|
|
Pierre-Yves Chibon |
17de87 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Jeremy Cline |
98a44d |
self.assertEqual(output.headers['Content-Type'].lower(),
|
|
Jeremy Cline |
98a44d |
'text/html; charset=utf-8')
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' Šource',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Pierre-Yves Chibon |
17de87 |
self.assertIn(
|
|
Pierre-Yves Chibon |
17de87 |
'
|
|
Aurélien Bompard |
626417 |
'data-line-number="1">', output_text)
|
|
Pierre-Yves Chibon |
7ded1e |
self.assertTrue(
|
|
Pierre-Yves Chibon |
7ded1e |
'Row 0 '
|
|
Aurélien Bompard |
626417 |
in output_text
|
|
Pierre-Yves Chibon |
7ded1e |
or
|
|
Aurélien Bompard |
626417 |
'Row 0 ' in output_text
|
|
Pierre-Yves Chibon |
7ded1e |
)
|
|
Pierre-Yves Chibon |
17de87 |
|
|
Pierre-Yves Chibon |
c56993 |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
c56993 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
c56993 |
name='test3',
|
|
Pierre-Yves Chibon |
c56993 |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
c56993 |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbppp',
|
|
Pierre-Yves Chibon |
c56993 |
)
|
|
Pierre-Yves Chibon |
c56993 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
c56993 |
self.session.commit()
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
c56993 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
c56993 |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
c56993 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Pierre-Yves Chibon |
c56993 |
ncommits=10)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pradeep CE (cep) |
37126c |
# Verify the nav links correctly when viewing a file/folder in a fork.
|
|
Pradeep CE (cep) |
37126c |
output = self.app.get(
|
|
Pradeep CE (cep) |
37126c |
'/fork/pingou/test3/blob/master/f/folder1/folder2/file')
|
|
Pradeep CE (cep) |
37126c |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pradeep CE (cep) |
37126c |
self.assertIn(
|
|
Pradeep CE (cep) |
0294d1 |
'\n'
|
|
Pradeep CE (cep) |
37126c |
' '
|
|
Aurélien Bompard |
626417 |
'folder2\n ', output_text)
|
|
Pradeep CE (cep) |
37126c |
|
|
Pradeep CE (cep) |
37126c |
|
|
Pierre-Yves Chibon |
fee94a |
output = self.app.get('/fork/pingou/test3/blob/master/f/sources')
|
|
Pierre-Yves Chibon |
c56993 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' barRow 0 ', output_text)
|
|
Pierre-Yves Chibon |
e81494 |
|
|
Pierre-Yves Chibon |
e81494 |
@patch(
|
|
Pierre-Yves Chibon |
e81494 |
'pagure.lib.encoding_utils.decode',
|
|
Pierre-Yves Chibon |
e81494 |
MagicMock(side_effect=pagure.exceptions.PagureException))
|
|
Pierre-Yves Chibon |
e81494 |
def test_view_file_with_wrong_encoding(self):
|
|
Pierre-Yves Chibon |
e81494 |
""" Test the view_file endpoint. """
|
|
Pierre-Yves Chibon |
e81494 |
|
|
Pierre-Yves Chibon |
e81494 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
e81494 |
|
|
Pierre-Yves Chibon |
e81494 |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
e81494 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test.jpg')
|
|
Pierre-Yves Chibon |
e81494 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test_binary')
|
|
Pierre-Yves Chibon |
e81494 |
|
|
Pierre-Yves Chibon |
e81494 |
# View file
|
|
Pierre-Yves Chibon |
e81494 |
output = self.app.get('/test/blob/master/f/sources')
|
|
Pierre-Yves Chibon |
e81494 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Binary files cannot be rendered. ', output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
0b62d0 |
def test_view_raw_file(self):
|
|
Pierre-Yves Chibon |
0b62d0 |
""" Test the view_raw_file endpoint. """
|
|
Pierre-Yves Chibon |
0b62d0 |
output = self.app.get('/foo/raw/foo/sources')
|
|
Pierre-Yves Chibon |
0b62d0 |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
output = self.app.get('/test/raw/foo/sources')
|
|
Pierre-Yves Chibon |
0b62d0 |
# No git repo associated
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
output = self.app.get('/test/raw/foo/sources')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
79dff7 |
|
|
Pierre-Yves Chibon |
79dff7 |
# View first commit
|
|
Pierre-Yves Chibon |
79dff7 |
output = self.app.get('/test/raw/master')
|
|
Pierre-Yves Chibon |
79dff7 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Jeremy Cline |
98a44d |
self.assertEqual(output.headers['Content-Type'].lower(),
|
|
Jeremy Cline |
98a44d |
'text/plain; charset=ascii')
|
|
Aurélien Bompard |
626417 |
self.assertIn(':Author: Pierre-Yves Chibon', output_text)
|
|
Pierre-Yves Chibon |
79dff7 |
|
|
Pierre-Yves Chibon |
79dff7 |
# Add some more content to the repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Pierre-Yves Chibon |
0b62d0 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test.jpg')
|
|
Pierre-Yves Chibon |
0b62d0 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test_binary')
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
8d4122 |
output = self.app.get('/test/raw/master/f/foofile')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# View in a branch
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/master/f/sources')
|
|
Jeremy Cline |
98a44d |
self.assertEqual(output.headers['Content-Type'].lower(),
|
|
Jeremy Cline |
98a44d |
'text/plain; charset=ascii')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('foo\n bar', output_text)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# View what's supposed to be an image
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/master/f/test.jpg')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data()
|
|
Aurélien Bompard |
626417 |
self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00'))
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# View by commit id
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
0b62d0 |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/%s/f/test.jpg' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data()
|
|
Aurélien Bompard |
626417 |
self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00'))
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# View by image name -- somehow we support this
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/sources/f/test.jpg')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data()
|
|
Aurélien Bompard |
626417 |
self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00'))
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# View binary file
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/sources/f/test_binary')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data()
|
|
Jeremy Cline |
98a44d |
self.assertEqual(output.headers['Content-Type'].lower(),
|
|
Jeremy Cline |
98a44d |
'application/octet-stream')
|
|
Aurélien Bompard |
626417 |
self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00'))
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# View folder
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/master/f/folder1')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# View by image name -- with a non-existant file
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/sources/f/testfoo.jpg')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/test/raw/master/f/folder1/testfoo.jpg')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
8d4122 |
output = self.app.get('/test/raw/master/f/')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
8d4122 |
output = self.app.get('/test/raw/master')
|
|
Pierre-Yves Chibon |
8d4122 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Jeremy Cline |
98a44d |
self.assertEqual(output.headers['Content-Type'].lower(),
|
|
Jeremy Cline |
98a44d |
'text/plain; charset=ascii')
|
|
Aurélien Bompard |
626417 |
self.assertTrue(output_text.startswith(
|
|
Pierre-Yves Chibon |
8d4122 |
'diff --git a/test_binary b/test_binary\n'))
|
|
Pierre-Yves Chibon |
8d4122 |
|
|
Pierre-Yves Chibon |
0b62d0 |
output = self.app.get('/test/raw/%s' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertTrue(output_text.startswith(
|
|
Pierre-Yves Chibon |
0b62d0 |
'diff --git a/test_binary b/test_binary\n'))
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
0b62d0 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
0b62d0 |
name='test3',
|
|
Pierre-Yves Chibon |
0b62d0 |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
0b62d0 |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbqqq',
|
|
Pierre-Yves Chibon |
0b62d0 |
)
|
|
Pierre-Yves Chibon |
0b62d0 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
0b62d0 |
self.session.commit()
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
0b62d0 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
0b62d0 |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
0b62d0 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Pierre-Yves Chibon |
0b62d0 |
ncommits=10)
|
|
Pierre-Yves Chibon |
0b62d0 |
|
|
Pierre-Yves Chibon |
ce7643 |
output = self.app.get('/fork/pingou/test3/raw/master/f/sources')
|
|
Pierre-Yves Chibon |
0b62d0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Jeremy Cline |
98a44d |
self.assertEqual(output.headers['Content-Type'].lower(),
|
|
Jeremy Cline |
98a44d |
'text/plain; charset=ascii')
|
|
Aurélien Bompard |
626417 |
self.assertIn('foo\n bar', output_text)
|
|
Pierre-Yves Chibon |
c56993 |
|
|
Pierre-Yves Chibon |
0b68db |
def test_view_blame_file(self):
|
|
Pierre-Yves Chibon |
0b68db |
""" Test the view_blame_file endpoint. """
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/foo/blame/sources')
|
|
Pierre-Yves Chibon |
0b68db |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/sources')
|
|
Pierre-Yves Chibon |
0b68db |
# No git repo associated
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/sources')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Pierre-Yves Chibon |
8655c1 |
tests.add_content_git_repo(
|
|
Pierre-Yves Chibon |
1c5b63 |
os.path.join(self.path, 'repos', 'test.git'),
|
|
Pierre-Yves Chibon |
8655c1 |
branch='feature')
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
0b68db |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test.jpg')
|
|
Pierre-Yves Chibon |
0b68db |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test_binary')
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/foofile')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
8655c1 |
regex = re.compile('>(\w+)\n')
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
8655c1 |
# View in master branch
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/sources')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Aurélien Bompard |
626417 |
'data-line-number="1">', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' bar ', output_text)
|
|
Aurélien Bompard |
626417 |
data = regex.findall(output_text)
|
|
Pierre-Yves Chibon |
8655c1 |
self.assertEqual(len(data), 2)
|
|
Pierre-Yves Chibon |
8655c1 |
|
|
Pierre-Yves Chibon |
1c5b63 |
# View for a commit
|
|
Pierre-Yves Chibon |
1c5b63 |
repo_obj = pygit2.Repository(
|
|
Pierre-Yves Chibon |
8ad699 |
os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
1c5b63 |
commit = repo_obj[repo_obj.head.target]
|
|
Pierre-Yves Chibon |
1c5b63 |
parent = commit.parents[0].oid.hex
|
|
Pierre-Yves Chibon |
1c5b63 |
|
|
Pierre-Yves Chibon |
1c5b63 |
output = self.app.get('/test/blame/sources?identifier=%s' % parent)
|
|
Pierre-Yves Chibon |
1c5b63 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Pierre-Yves Chibon |
1c5b63 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Aurélien Bompard |
626417 |
'data-line-number="1">', output_text)
|
|
Pierre-Yves Chibon |
1c5b63 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' bar ', output_text)
|
|
Aurélien Bompard |
626417 |
data = regex.findall(output_text)
|
|
Pierre-Yves Chibon |
1c5b63 |
self.assertEqual(len(data), 2)
|
|
Pierre-Yves Chibon |
1c5b63 |
|
|
Pierre-Yves Chibon |
8655c1 |
# View in feature branch
|
|
Pierre-Yves Chibon |
8655c1 |
output = self.app.get('/test/blame/sources?identifier=feature')
|
|
Pierre-Yves Chibon |
8655c1 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Pierre-Yves Chibon |
8655c1 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Aurélien Bompard |
626417 |
'data-line-number="1">', output_text)
|
|
Pierre-Yves Chibon |
8655c1 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' bar ', output_text)
|
|
Aurélien Bompard |
626417 |
data2 = regex.findall(output_text)
|
|
Pierre-Yves Chibon |
8655c1 |
self.assertEqual(len(data2), 2)
|
|
Pierre-Yves Chibon |
8655c1 |
self.assertNotEqual(data, data2)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
# View what's supposed to be an image
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/test.jpg')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 400)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>400 Bad Request</title>', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'Binary files cannot be blamed ', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
# View folder
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/folder1')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 404)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn("<title>Page not found :'( - Pagure</title>", output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'Page not found (404)', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
# View by image name -- with a non-existant file
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/testfoo.jpg')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/folder1/testfoo.jpg')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
# View file with a non-ascii name
|
|
Pierre-Yves Chibon |
0b68db |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'),
|
|
Pierre-Yves Chibon |
0b68db |
ncommits=1, filename='Šource')
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/test/blame/Šource')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.headers['Content-Type'].lower(),
|
|
Pierre-Yves Chibon |
0b68db |
'text/html; charset=utf-8')
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' Šource',
|
|
Aurélien Bompard |
626417 |
output_text
|
|
Aurélien Bompard |
626417 |
)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Pierre-Yves Chibon |
0b68db |
'
|
|
Aurélien Bompard |
626417 |
'data-line-number="1">', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertTrue(
|
|
Pierre-Yves Chibon |
0b68db |
'Row 0 '
|
|
Aurélien Bompard |
626417 |
in output_text
|
|
Pierre-Yves Chibon |
0b68db |
or
|
|
Aurélien Bompard |
626417 |
'Row 0 '
|
|
Aurélien Bompard |
626417 |
in output_text
|
|
Pierre-Yves Chibon |
0b68db |
)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
0b68db |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
0b68db |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
0b68db |
name='test3',
|
|
Pierre-Yves Chibon |
0b68db |
description='test project #3',
|
|
Pierre-Yves Chibon |
0b68db |
is_fork=True,
|
|
Pierre-Yves Chibon |
0b68db |
parent_id=1,
|
|
Pierre-Yves Chibon |
0b68db |
hook_token='aaabbbppp',
|
|
Pierre-Yves Chibon |
0b68db |
)
|
|
Pierre-Yves Chibon |
0b68db |
self.session.add(item)
|
|
Pierre-Yves Chibon |
0b68db |
self.session.commit()
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
0b68db |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
0b68db |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Pierre-Yves Chibon |
0b68db |
ncommits=10)
|
|
Pierre-Yves Chibon |
e3f6fe |
tests.add_content_to_git(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Aurélien Bompard |
619e2a |
content='✨☃🍰☃✨')
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
0b68db |
output = self.app.get('/fork/pingou/test3/blame/sources')
|
|
Pierre-Yves Chibon |
0b68db |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Pierre-Yves Chibon |
0b68db |
'
|
|
Aurélien Bompard |
626417 |
'data-line-number="1">', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' barRow 0 ', output_text)
|
|
Pierre-Yves Chibon |
0b68db |
|
|
Pierre-Yves Chibon |
35ffe0 |
def test_view_blame_file_on_tag(self):
|
|
Pierre-Yves Chibon |
35ffe0 |
""" Test the view_blame_file endpoint. """
|
|
Pierre-Yves Chibon |
35ffe0 |
|
|
Pierre-Yves Chibon |
35ffe0 |
regex = re.compile('>(\w+)\n')
|
|
Pierre-Yves Chibon |
35ffe0 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
35ffe0 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
35ffe0 |
# Add some content to the git repo
|
|
Pierre-Yves Chibon |
35ffe0 |
tests.add_content_git_repo(
|
|
Pierre-Yves Chibon |
35ffe0 |
os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
35ffe0 |
tests.add_readme_git_repo(
|
|
Pierre-Yves Chibon |
35ffe0 |
os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
35ffe0 |
|
|
Pierre-Yves Chibon |
35ffe0 |
# add a tag to the git repo
|
|
Pierre-Yves Chibon |
35ffe0 |
repo = pygit2.Repository(
|
|
Pierre-Yves Chibon |
35ffe0 |
os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
35ffe0 |
commit = repo[repo.head.target]
|
|
Pierre-Yves Chibon |
35ffe0 |
tagger = pygit2.Signature('Alice Doe', 'adoe@example.com', 12347, 0)
|
|
Pierre-Yves Chibon |
35ffe0 |
repo.create_tag(
|
|
Pierre-Yves Chibon |
35ffe0 |
'v1.0', commit.oid.hex, pygit2.GIT_OBJ_COMMIT, tagger,
|
|
Pierre-Yves Chibon |
35ffe0 |
"Release v1.0")
|
|
Pierre-Yves Chibon |
35ffe0 |
|
|
Pierre-Yves Chibon |
35ffe0 |
# View for tag v1.0
|
|
Pierre-Yves Chibon |
35ffe0 |
output = self.app.get('/test/blame/sources?identifier=v1.0')
|
|
Pierre-Yves Chibon |
35ffe0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Pierre-Yves Chibon |
35ffe0 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Aurélien Bompard |
626417 |
'data-line-number="1">', output_text)
|
|
Pierre-Yves Chibon |
35ffe0 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
' bar ', output_text)
|
|
Aurélien Bompard |
626417 |
data = regex.findall(output_text)
|
|
Pierre-Yves Chibon |
35ffe0 |
self.assertEqual(len(data), 2)
|
|
Pierre-Yves Chibon |
35ffe0 |
|
|
Pierre-Yves Chibon |
020fcf |
def test_view_commit(self):
|
|
Pierre-Yves Chibon |
020fcf |
""" Test the view_commit endpoint. """
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/foo/c/bar')
|
|
Pierre-Yves Chibon |
020fcf |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
020fcf |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
020fcf |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/bar')
|
|
Pierre-Yves Chibon |
020fcf |
# No git repo associated
|
|
Pierre-Yves Chibon |
020fcf |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/bar')
|
|
Pierre-Yves Chibon |
020fcf |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
020fcf |
# Add a README to the git repo - First commit
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
020fcf |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
020fcf |
# View first commit
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/%s' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
020fcf |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(' Merged by Alice Author\n', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(' Committed by Cecil Committer\n', output_text)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
1d1633 |
# View first commit - with the old URL scheme disabled - default
|
|
Pierre-Yves Chibon |
bc4ec4 |
output = self.app.get(
|
|
Pierre-Yves Chibon |
bc4ec4 |
'/test/%s' % commit.oid.hex, follow_redirects=True)
|
|
Pierre-Yves Chibon |
bc4ec4 |
self.assertEqual(output.status_code, 404)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Project not found ', output_text)
|
|
Pierre-Yves Chibon |
30757a |
|
|
Pierre-Yves Chibon |
020fcf |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
020fcf |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
020fcf |
# View another commit
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/%s' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
020fcf |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(' Authored by Alice Author\n', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(' Committed by Cecil Committer\n', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Vivek Anand |
a10b3f |
#View the commit when branch name is provided
|
|
Vivek Anand |
a10b3f |
output = self.app.get('/test/c/%s?branch=master' % commit.oid.hex)
|
|
Vivek Anand |
a10b3f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
a10b3f |
|
|
Vivek Anand |
b85449 |
#View the commit when branch name is wrong, show the commit
|
|
Vivek Anand |
b85449 |
output = self.app.get('/test/c/%s?branch=abcxyz' % commit.oid.hex)
|
|
Vivek Anand |
b85449 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'', output_text)
|
|
Vivek Anand |
b85449 |
|
|
Pierre-Yves Chibon |
020fcf |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
020fcf |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
020fcf |
name='test3',
|
|
Pierre-Yves Chibon |
020fcf |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
020fcf |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbkkk',
|
|
Pierre-Yves Chibon |
020fcf |
)
|
|
Pierre-Yves Chibon |
020fcf |
self.session.add(item)
|
|
Pierre-Yves Chibon |
020fcf |
self.session.commit()
|
|
Pierre-Yves Chibon |
128dfb |
forkedgit = os.path.join(
|
|
Patrick Uiterwijk |
170974 |
self.path, 'repos', 'forks', 'pingou', 'test3.git')
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
020fcf |
tests.add_content_git_repo(forkedgit)
|
|
Pierre-Yves Chibon |
020fcf |
tests.add_readme_git_repo(forkedgit)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
128dfb |
repo = pygit2.Repository(forkedgit)
|
|
Pierre-Yves Chibon |
020fcf |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
020fcf |
# Commit does not exist in anothe repo :)
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/%s' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
020fcf |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
020fcf |
# View commit of fork
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get(
|
|
Pierre-Yves Chibon |
5bf6f1 |
'/fork/pingou/test3/c/%s' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
020fcf |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(' Authored by Alice Author\n', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(' Committed by Cecil Committer\n', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Mark Reynolds |
48bfcb |
' 2' +
|
|
Mark Reynolds |
48bfcb |
' ' +
|
|
Aurélien Bompard |
626417 |
'+ Pagure', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Mark Reynolds |
48bfcb |
' 3' +
|
|
Mark Reynolds |
48bfcb |
' ' +
|
|
Aurélien Bompard |
626417 |
'+ ======', output_text)
|
|
Pierre-Yves Chibon |
020fcf |
|
|
Pierre-Yves Chibon |
30757a |
# Try the old URL scheme with a short hash
|
|
Pierre-Yves Chibon |
30757a |
output = self.app.get(
|
|
Pierre-Yves Chibon |
30757a |
'/fork/pingou/test3/%s' % commit.oid.hex[:10],
|
|
Pierre-Yves Chibon |
30757a |
follow_redirects=True)
|
|
Pierre-Yves Chibon |
30757a |
self.assertEqual(output.status_code, 404)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Project not found ', output_text)
|
|
Pierre-Yves Chibon |
30757a |
|
|
Vivek Anand |
a10b3f |
#View the commit of the fork when branch name is provided
|
|
Vivek Anand |
a10b3f |
output = self.app.get('/fork/pingou/test3/c/%s?branch=master' % commit.oid.hex)
|
|
Vivek Anand |
a10b3f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
a10b3f |
|
|
Vivek Anand |
b85449 |
#View the commit of the fork when branch name is wrong
|
|
Vivek Anand |
b85449 |
output = self.app.get('/fork/pingou/test3/c/%s?branch=abcxyz' % commit.oid.hex)
|
|
Vivek Anand |
b85449 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
b85449 |
|
|
Pierre-Yves Chibon |
aa655b |
def test_view_commit_patch(self):
|
|
Pierre-Yves Chibon |
aa655b |
""" Test the view_commit_patch endpoint. """
|
|
Pierre-Yves Chibon |
5bf6f1 |
|
|
Pierre-Yves Chibon |
aa655b |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/foo/c/bar.patch')
|
|
Pierre-Yves Chibon |
aa655b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/bar.patch')
|
|
Pierre-Yves Chibon |
aa655b |
# No git repo associated
|
|
Pierre-Yves Chibon |
aa655b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/bar.patch')
|
|
Pierre-Yves Chibon |
aa655b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
# Add a README to the git repo - First commit
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
aa655b |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
# View first commit
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/%s.patch' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
aa655b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('''diff --git a/README.rst b/README.rst
|
|
Pierre-Yves Chibon |
aa655b |
new file mode 100644
|
|
Pierre-Yves Chibon |
fe5017 |
index 0000000..fb7093d
|
|
Pierre-Yves Chibon |
aa655b |
--- /dev/null
|
|
Pierre-Yves Chibon |
aa655b |
+++ b/README.rst
|
|
Pierre-Yves Chibon |
fe5017 |
@@ -0,0 +1,16 @@
|
|
Pierre-Yves Chibon |
fe5017 |
+Pagure
|
|
Pierre-Yves Chibon |
aa655b |
+======
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+:Author: Pierre-Yves Chibon <pingou@pingoured.fr>
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
fe5017 |
+Pagure is a light-weight git-centered forge based on pygit2.
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
fe5017 |
+Currently, Pagure offers a web-interface for git repositories, a ticket
|
|
Pierre-Yves Chibon |
fe5017 |
+system and possibilities to create new projects, fork existing ones and
|
|
Pierre-Yves Chibon |
fe5017 |
+create/merge pull-requests across or within projects.
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
fe5017 |
+Homepage: https://github.com/pypingou/pagure
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+Dev instance: http://209.132.184.222/ (/!\ May change unexpectedly, it's a dev instance ;-))
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Subject: Add a README file', output_text)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
aa655b |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
# View another commit
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/%s.patch' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
aa655b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'Subject: Add some directory and a file for more testing',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('''diff --git a/folder1/folder2/file b/folder1/folder2/file
|
|
Pierre-Yves Chibon |
aa655b |
new file mode 100644
|
|
Pierre-Yves Chibon |
aa655b |
index 0000000..11980b1
|
|
Pierre-Yves Chibon |
aa655b |
--- /dev/null
|
|
Pierre-Yves Chibon |
aa655b |
+++ b/folder1/folder2/file
|
|
Pierre-Yves Chibon |
aa655b |
@@ -0,0 +1,3 @@
|
|
Pierre-Yves Chibon |
aa655b |
+foo
|
|
Pierre-Yves Chibon |
aa655b |
+ bar
|
|
Pierre-Yves Chibon |
aa655b |
+baz
|
|
Pierre-Yves Chibon |
aa655b |
\ No newline at end of file
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
aa655b |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
aa655b |
name='test3',
|
|
Pierre-Yves Chibon |
aa655b |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
aa655b |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbblll',
|
|
Pierre-Yves Chibon |
aa655b |
)
|
|
Pierre-Yves Chibon |
aa655b |
self.session.add(item)
|
|
Pierre-Yves Chibon |
aa655b |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
forkedgit = os.path.join(self.path, 'repos', 'forks', 'pingou',
|
|
Patrick Uiterwijk |
170974 |
'test3.git')
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
tests.add_content_git_repo(forkedgit)
|
|
Pierre-Yves Chibon |
aa655b |
tests.add_readme_git_repo(forkedgit)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
128dfb |
repo = pygit2.Repository(forkedgit)
|
|
Pierre-Yves Chibon |
aa655b |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
# Commit does not exist in anothe repo :)
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test/c/%s.patch' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
aa655b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
aa655b |
# View commit of fork
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get(
|
|
Pierre-Yves Chibon |
5bf6f1 |
'/fork/pingou/test3/c/%s.patch' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
aa655b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('''diff --git a/README.rst b/README.rst
|
|
Pierre-Yves Chibon |
aa655b |
new file mode 100644
|
|
Pierre-Yves Chibon |
fe5017 |
index 0000000..fb7093d
|
|
Pierre-Yves Chibon |
aa655b |
--- /dev/null
|
|
Pierre-Yves Chibon |
aa655b |
+++ b/README.rst
|
|
Pierre-Yves Chibon |
fe5017 |
@@ -0,0 +1,16 @@
|
|
Pierre-Yves Chibon |
fe5017 |
+Pagure
|
|
Pierre-Yves Chibon |
aa655b |
+======
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+:Author: Pierre-Yves Chibon <pingou@pingoured.fr>
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
fe5017 |
+Pagure is a light-weight git-centered forge based on pygit2.
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
fe5017 |
+Currently, Pagure offers a web-interface for git repositories, a ticket
|
|
Pierre-Yves Chibon |
fe5017 |
+system and possibilities to create new projects, fork existing ones and
|
|
Pierre-Yves Chibon |
fe5017 |
+create/merge pull-requests across or within projects.
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
fe5017 |
+Homepage: https://github.com/pypingou/pagure
|
|
Pierre-Yves Chibon |
aa655b |
+
|
|
Pierre-Yves Chibon |
aa655b |
+Dev instance: http://209.132.184.222/ (/!\ May change unexpectedly, it's a dev instance ;-))
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Pierre-Yves Chibon |
aa655b |
|
|
Pierre-Yves Chibon |
4b90cc |
def test_view_commit_diff(self):
|
|
Pierre-Yves Chibon |
4b90cc |
""" Test the view_commit_diff endpoint. """
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
4b90cc |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
4b90cc |
output = self.app.get('/foo/c/bar.diff')
|
|
Pierre-Yves Chibon |
4b90cc |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
4b90cc |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
4b90cc |
output = self.app.get('/test/c/bar.diff')
|
|
Pierre-Yves Chibon |
4b90cc |
# No git repo associated
|
|
Pierre-Yves Chibon |
4b90cc |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
4b90cc |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
4b90cc |
output = self.app.get('/test/c/bar.diff')
|
|
Pierre-Yves Chibon |
4b90cc |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
4b90cc |
# Add a README to the git repo - First commit
|
|
Pierre-Yves Chibon |
4b90cc |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
4b90cc |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
4b90cc |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
4b90cc |
# View first commit
|
|
Pierre-Yves Chibon |
4b90cc |
output = self.app.get('/test/c/%s.diff' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
4b90cc |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
4b90cc |
self.assertEqual('''diff --git a/README.rst b/README.rst
|
|
Pierre-Yves Chibon |
4b90cc |
new file mode 100644
|
|
Pierre-Yves Chibon |
4b90cc |
index 0000000..fb7093d
|
|
Pierre-Yves Chibon |
4b90cc |
--- /dev/null
|
|
Pierre-Yves Chibon |
4b90cc |
+++ b/README.rst
|
|
Pierre-Yves Chibon |
4b90cc |
@@ -0,0 +1,16 @@
|
|
Pierre-Yves Chibon |
4b90cc |
+Pagure
|
|
Pierre-Yves Chibon |
4b90cc |
+======
|
|
Pierre-Yves Chibon |
4b90cc |
+
|
|
Pierre-Yves Chibon |
4b90cc |
+:Author: Pierre-Yves Chibon <pingou@pingoured.fr>
|
|
Pierre-Yves Chibon |
4b90cc |
+
|
|
Pierre-Yves Chibon |
4b90cc |
+
|
|
Pierre-Yves Chibon |
4b90cc |
+Pagure is a light-weight git-centered forge based on pygit2.
|
|
Pierre-Yves Chibon |
4b90cc |
+
|
|
Pierre-Yves Chibon |
4b90cc |
+Currently, Pagure offers a web-interface for git repositories, a ticket
|
|
Pierre-Yves Chibon |
4b90cc |
+system and possibilities to create new projects, fork existing ones and
|
|
Pierre-Yves Chibon |
4b90cc |
+create/merge pull-requests across or within projects.
|
|
Pierre-Yves Chibon |
4b90cc |
+
|
|
Pierre-Yves Chibon |
4b90cc |
+
|
|
Pierre-Yves Chibon |
4b90cc |
+Homepage: https://github.com/pypingou/pagure
|
|
Pierre-Yves Chibon |
4b90cc |
+
|
|
Pierre-Yves Chibon |
4b90cc |
+Dev instance: http://209.132.184.222/ (/!\ May change unexpectedly, it's a dev instance ;-))
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Pierre-Yves Chibon |
4b90cc |
|
|
Pierre-Yves Chibon |
027b38 |
def test_view_tree(self):
|
|
Pierre-Yves Chibon |
027b38 |
""" Test the view_tree endpoint. """
|
|
Pierre-Yves Chibon |
027b38 |
output = self.app.get('/foo/tree/')
|
|
Pierre-Yves Chibon |
027b38 |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
027b38 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
output = self.app.get('/test/tree/')
|
|
Pierre-Yves Chibon |
027b38 |
# No git repo associated
|
|
Pierre-Yves Chibon |
027b38 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
output = self.app.get('/test/tree/')
|
|
Pierre-Yves Chibon |
027b38 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
557220 |
self.assertIn(
|
|
Pierre-Yves Chibon |
557220 |
'''
|
|
Pierre-Yves Chibon |
557220 |
|
|
Pierre-Yves Chibon |
557220 |
|
|
Pierre-Yves Chibon |
557220 |
|
|
Pierre-Yves Chibon |
557220 |
|
|
Pierre-Yves Chibon |
557220 |
None
|
|
Pierre-Yves Chibon |
557220 |
|
|
Pierre-Yves Chibon |
557220 |
|
|
Aurélien Bompard |
626417 |
''', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'No content found in this repository', output_text)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
# Add a README to the git repo - First commit
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
027b38 |
commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
# View first commit
|
|
Pierre-Yves Chibon |
027b38 |
output = self.app.get('/test/tree/%s' % commit.oid.hex)
|
|
Pierre-Yves Chibon |
027b38 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('<title>Tree - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('README.rst', output_text)
|
|
Pierre-Yves Chibon |
027b38 |
self.assertFalse(
|
|
Aurélien Bompard |
626417 |
'No content found in this repository' in output_text)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
# View tree by branch
|
|
Pierre-Yves Chibon |
027b38 |
output = self.app.get('/test/tree/master')
|
|
Pierre-Yves Chibon |
027b38 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #1 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('<title>Tree - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('README.rst', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn(
|
|
Aurélien Bompard |
626417 |
'No content found in this repository', output_text)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
027b38 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
027b38 |
name='test3',
|
|
Pierre-Yves Chibon |
027b38 |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
027b38 |
parent_id=1,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbfff',
|
|
Pierre-Yves Chibon |
027b38 |
)
|
|
Pierre-Yves Chibon |
027b38 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
027b38 |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
forkedgit = os.path.join(self.path, 'repos', 'forks', 'pingou',
|
|
Patrick Uiterwijk |
170974 |
'test3.git')
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
tests.add_content_git_repo(forkedgit)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
027b38 |
output = self.app.get('/fork/pingou/test3/tree/')
|
|
Pierre-Yves Chibon |
027b38 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
98f2af |
self.assertIn(
|
|
Pierre-Yves Chibon |
98f2af |
'\n'
|
|
Aurélien Bompard |
626417 |
'test project #3 ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('<title>Tree - test3 - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn(
|
|
Aurélien Bompard |
626417 |
'No content found in this repository', output_text)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
557220 |
output = self.app.get(
|
|
Pierre-Yves Chibon |
557220 |
'/fork/pingou/test3/blob/master/f/folder1/folder2')
|
|
Pierre-Yves Chibon |
557220 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn(
|
|
Pierre-Yves Chibon |
557220 |
'
|
|
Aurélien Bompard |
626417 |
'f/folder1/folder2/file%C5%A0">', output_text)
|
|
Pierre-Yves Chibon |
557220 |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'ENABLE_DEL_PROJECTS': False})
|
|
Vivek Anand |
3b0299 |
@patch('pagure.lib.notify.send_email')
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Vivek Anand |
3b0299 |
def test_delete_repo_when_turned_off(self, ast, send_email):
|
|
Vivek Anand |
3b0299 |
""" Test the delete_repo endpoint when deletion of a repo is
|
|
Vivek Anand |
3b0299 |
turned off in the pagure instance """
|
|
Vivek Anand |
3b0299 |
ast.return_value = False
|
|
Vivek Anand |
3b0299 |
send_email.return_value = True
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/foo/delete')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Vivek Anand |
3b0299 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/delete')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
1dc86f |
# Ensure the project isn't read-only
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
1dc86f |
repo.read_only = False
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.commit()
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Vivek Anand |
3b0299 |
# Only git repo
|
|
Vivek Anand |
3b0299 |
item = pagure.lib.model.Project(
|
|
Vivek Anand |
3b0299 |
user_id=1, # pingou
|
|
Vivek Anand |
3b0299 |
name='test',
|
|
Vivek Anand |
3b0299 |
description='test project #1',
|
|
Vivek Anand |
3b0299 |
hook_token='aaabbbggg',
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.session.add(item)
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# Only git and doc repo
|
|
Vivek Anand |
3b0299 |
item = pagure.lib.model.Project(
|
|
Vivek Anand |
3b0299 |
user_id=1, # pingou
|
|
Vivek Anand |
3b0299 |
name='test',
|
|
Vivek Anand |
3b0299 |
description='test project #1',
|
|
Vivek Anand |
3b0299 |
hook_token='aaabbbhhh',
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.session.add(item)
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Jeremy Cline |
20109f |
tests.create_projects_git(os.path.join(self.path, 'docs'))
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# All repo there
|
|
Vivek Anand |
3b0299 |
item = pagure.lib.model.Project(
|
|
Vivek Anand |
3b0299 |
user_id=1, # pingou
|
|
Vivek Anand |
3b0299 |
name='test',
|
|
Vivek Anand |
3b0299 |
description='test project #1',
|
|
Vivek Anand |
3b0299 |
hook_token='aaabbbiii',
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.session.add(item)
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# Create all the git repos
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Jeremy Cline |
20109f |
tests.create_projects_git(os.path.join(self.path, 'docs'))
|
|
Vivek Anand |
3b0299 |
tests.create_projects_git(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'tickets'), bare=True)
|
|
Vivek Anand |
3b0299 |
tests.create_projects_git(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'requests'), bare=True)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# Check repo was created
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/')
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Vivek Anand |
3b0299 |
self.assertIn(
|
|
Vivek Anand |
3b0299 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">6', output_text)
|
|
Vivek Anand |
3b0299 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
3b0299 |
|
|
Patrick Uiterwijk |
b4c473 |
# add issues
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.new_issue(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo=repo,
|
|
Patrick Uiterwijk |
b4c473 |
title='Test issue',
|
|
Patrick Uiterwijk |
b4c473 |
content='We should work on this',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
ticketfolder=os.path.join(self.path, 'tickets')
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg.title, 'Test issue')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.new_issue(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo=repo,
|
|
Patrick Uiterwijk |
b4c473 |
title='Test issue #2',
|
|
Patrick Uiterwijk |
b4c473 |
content='We should work on this, really',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
ticketfolder=os.path.join(self.path, 'tickets')
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg.title, 'Test issue #2')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# Add a comment to an issue
|
|
Patrick Uiterwijk |
b4c473 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_issue_comment(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
issue=issue,
|
|
Patrick Uiterwijk |
b4c473 |
comment='Hey look a comment!',
|
|
Patrick Uiterwijk |
b4c473 |
user='foo',
|
|
Patrick Uiterwijk |
b4c473 |
ticketfolder=None
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'Comment added')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# add pull-requests
|
|
Patrick Uiterwijk |
b4c473 |
req = pagure.lib.new_pull_request(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo_from=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_from='feature',
|
|
Patrick Uiterwijk |
b4c473 |
repo_to=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_to='master',
|
|
Patrick Uiterwijk |
b4c473 |
title='test pull-request',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
requestfolder=os.path.join(self.path, 'requests'),
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.id, 3)
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.title, 'test pull-request')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
req = pagure.lib.new_pull_request(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo_from=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_from='feature2',
|
|
Patrick Uiterwijk |
b4c473 |
repo_to=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_to='master',
|
|
Patrick Uiterwijk |
b4c473 |
title='test pull-request',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
requestfolder=os.path.join(self.path, 'requests'),
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.id, 4)
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.title, 'test pull-request')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# Add comment on a pull-request
|
|
Patrick Uiterwijk |
b4c473 |
request = pagure.lib.search_pull_requests(
|
|
Patrick Uiterwijk |
b4c473 |
self.session, requestid=3)
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_pull_request_comment(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
request=request,
|
|
Patrick Uiterwijk |
b4c473 |
commit='commithash',
|
|
Patrick Uiterwijk |
b4c473 |
tree_id=None,
|
|
Patrick Uiterwijk |
b4c473 |
filename='file',
|
|
Patrick Uiterwijk |
b4c473 |
row=None,
|
|
Patrick Uiterwijk |
b4c473 |
comment='This is awesome, I got to remember it!',
|
|
Patrick Uiterwijk |
b4c473 |
user='foo',
|
|
Patrick Uiterwijk |
b4c473 |
requestfolder=None,
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'Comment added')
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# Check before deleting the project
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/')
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Vivek Anand |
3b0299 |
self.assertIn(
|
|
Vivek Anand |
3b0299 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">6', output_text)
|
|
Vivek Anand |
3b0299 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Vivek Anand |
3b0299 |
self.assertNotEqual(repo, None)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test2')
|
|
Vivek Anand |
3b0299 |
self.assertNotEqual(repo, None)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# Add a fork of a fork
|
|
Vivek Anand |
3b0299 |
item = pagure.lib.model.Project(
|
|
Vivek Anand |
3b0299 |
user_id=1, # pingou
|
|
Vivek Anand |
3b0299 |
name='test3',
|
|
Vivek Anand |
3b0299 |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Vivek Anand |
3b0299 |
parent_id=2,
|
|
Vivek Anand |
3b0299 |
hook_token='aaabbbjjj',
|
|
Vivek Anand |
3b0299 |
)
|
|
Vivek Anand |
3b0299 |
self.session.add(item)
|
|
Vivek Anand |
3b0299 |
self.session.commit()
|
|
Vivek Anand |
3b0299 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou',
|
|
Patrick Uiterwijk |
170974 |
'test3.git'))
|
|
Vivek Anand |
3b0299 |
tests.add_content_git_repo(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'docs', 'pingou', 'test3.git'))
|
|
Vivek Anand |
3b0299 |
tests.add_content_git_repo(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'tickets', 'pingou', 'test3.git'))
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
# Check before deleting the fork
|
|
Vivek Anand |
3b0299 |
output = self.app.get('/')
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Vivek Anand |
3b0299 |
self.assertIn(
|
|
Vivek Anand |
3b0299 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">6', output_text)
|
|
Vivek Anand |
3b0299 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 1',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
3b0299 |
|
|
Vivek Anand |
3b0299 |
output = self.app.post(
|
|
Vivek Anand |
3b0299 |
'/fork/pingou/test3/delete', follow_redirects=True)
|
|
Vivek Anand |
3b0299 |
self.assertEqual(output.status_code, 404)
|
|
Vivek Anand |
3b0299 |
|
|
Pierre-Yves Chibon |
1e42d7 |
@patch('pagure.lib.notify.send_email')
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
1dc86f |
def test_delete_read_only_repo(self, ast, send_email):
|
|
Pierre-Yves Chibon |
1dc86f |
""" Test the delete_repo endpoint when the repo is read_only """
|
|
Pierre-Yves Chibon |
1dc86f |
ast.return_value = False
|
|
Pierre-Yves Chibon |
1dc86f |
send_email.return_value = True
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
1dc86f |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
1dc86f |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
1dc86f |
# All repo there
|
|
Pierre-Yves Chibon |
1dc86f |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
1dc86f |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
1dc86f |
name='test',
|
|
Pierre-Yves Chibon |
1dc86f |
description='test project #1',
|
|
Pierre-Yves Chibon |
1dc86f |
hook_token='aaabbbiii',
|
|
Pierre-Yves Chibon |
1dc86f |
)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.add(item)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.commit()
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
1dc86f |
# Create all the git repos
|
|
Pierre-Yves Chibon |
1dc86f |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
1dc86f |
tests.create_projects_git(os.path.join(self.path, 'docs'))
|
|
Pierre-Yves Chibon |
1dc86f |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
1dc86f |
os.path.join(self.path, 'tickets'), bare=True)
|
|
Pierre-Yves Chibon |
1dc86f |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
1dc86f |
os.path.join(self.path, 'requests'), bare=True)
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
1dc86f |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
1dc86f |
self.assertNotEqual(repo, None)
|
|
Pierre-Yves Chibon |
1dc86f |
repo.read_only = True
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.commit()
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
1dc86f |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
1dc86f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
1dc86f |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
1dc86f |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'The ACLs of this project are being refreshed in the '
|
|
Aurélien Bompard |
626417 |
'backend this prevents the project from being deleted. '
|
|
Aurélien Bompard |
626417 |
'Please wait for this task to finish before trying again. '
|
|
Aurélien Bompard |
626417 |
'Thanks!', output_text)
|
|
Pierre-Yves Chibon |
1dc86f |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'title="Action disabled while project\'s ACLs are being refreshed">',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
b130e5 |
def test_delete_repo(self, ast):
|
|
Pierre-Yves Chibon |
550d2b |
""" Test the delete_repo endpoint. """
|
|
Pierre-Yves Chibon |
116cb7 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
116cb7 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
550d2b |
output = self.app.post('/foo/delete')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
550d2b |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
550d2b |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No project registered in the DB (no git repo)
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/foo/delete')
|
|
Pierre-Yves Chibon |
72ed6b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
d824d1 |
# User not allowed
|
|
Pierre-Yves Chibon |
d824d1 |
output = self.app.post('/test/delete')
|
|
Pierre-Yves Chibon |
d824d1 |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
d824d1 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/delete')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
1dc86f |
# Ensure the project isn't read-only
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
1dc86f |
repo.read_only = False
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.commit()
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
550d2b |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
72ed6b |
|
|
Pierre-Yves Chibon |
116cb7 |
ast.return_value = True
|
|
Pierre-Yves Chibon |
116cb7 |
output = self.app.post('/test/delete')
|
|
Pierre-Yves Chibon |
116cb7 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
116cb7 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
72ed6b |
|
|
Pierre-Yves Chibon |
550d2b |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
550d2b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
fb5b9d |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">2', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
550d2b |
# Only git repo
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
550d2b |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
550d2b |
name='test',
|
|
Pierre-Yves Chibon |
550d2b |
description='test project #1',
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbggg',
|
|
Pierre-Yves Chibon |
1dc86f |
read_only=False,
|
|
Pierre-Yves Chibon |
550d2b |
)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.add(item)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
72ed6b |
|
|
Pierre-Yves Chibon |
550d2b |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
550d2b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
fb5b9d |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">2', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
550d2b |
# Only git and doc repo
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
550d2b |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
550d2b |
name='test',
|
|
Pierre-Yves Chibon |
550d2b |
description='test project #1',
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbhhh',
|
|
Pierre-Yves Chibon |
1dc86f |
read_only=False,
|
|
Pierre-Yves Chibon |
550d2b |
)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.add(item)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Jeremy Cline |
20109f |
tests.create_projects_git(os.path.join(self.path, 'docs'))
|
|
Pierre-Yves Chibon |
550d2b |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
550d2b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b2e220 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">2', output_text)
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
550d2b |
# All repo there
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
550d2b |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
550d2b |
name='test',
|
|
Pierre-Yves Chibon |
550d2b |
description='test project #1',
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbiii',
|
|
Pierre-Yves Chibon |
1dc86f |
read_only=False,
|
|
Pierre-Yves Chibon |
550d2b |
)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.add(item)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.commit()
|
|
Pierre-Yves Chibon |
8a488f |
|
|
Pierre-Yves Chibon |
8a488f |
# Create all the git repos
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Jeremy Cline |
20109f |
tests.create_projects_git(os.path.join(self.path, 'docs'))
|
|
Pierre-Yves Chibon |
97e4e8 |
tests.create_projects_git(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'tickets'), bare=True)
|
|
Pierre-Yves Chibon |
97e4e8 |
tests.create_projects_git(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'requests'), bare=True)
|
|
Pierre-Yves Chibon |
97e4e8 |
|
|
Pierre-Yves Chibon |
fb5b9d |
# Check repo was created
|
|
Pierre-Yves Chibon |
fb5b9d |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Pierre-Yves Chibon |
8a488f |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">3', output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
|
|
Patrick Uiterwijk |
b4c473 |
# add issues
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.new_issue(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo=repo,
|
|
Patrick Uiterwijk |
b4c473 |
title='Test issue',
|
|
Patrick Uiterwijk |
b4c473 |
content='We should work on this',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
ticketfolder=os.path.join(self.path, 'tickets')
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg.title, 'Test issue')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.new_issue(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo=repo,
|
|
Patrick Uiterwijk |
b4c473 |
title='Test issue #2',
|
|
Patrick Uiterwijk |
b4c473 |
content='We should work on this, really',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
ticketfolder=os.path.join(self.path, 'tickets')
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg.title, 'Test issue #2')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# Add a comment to an issue
|
|
Patrick Uiterwijk |
b4c473 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_issue_comment(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
issue=issue,
|
|
Patrick Uiterwijk |
b4c473 |
comment='Hey look a comment!',
|
|
Patrick Uiterwijk |
b4c473 |
user='foo',
|
|
Patrick Uiterwijk |
b4c473 |
ticketfolder=None
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'Comment added')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# add pull-requests
|
|
Patrick Uiterwijk |
b4c473 |
req = pagure.lib.new_pull_request(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo_from=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_from='feature',
|
|
Patrick Uiterwijk |
b4c473 |
repo_to=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_to='master',
|
|
Patrick Uiterwijk |
b4c473 |
title='test pull-request',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
requestfolder=os.path.join(self.path, 'requests'),
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.id, 3)
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.title, 'test pull-request')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
req = pagure.lib.new_pull_request(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo_from=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_from='feature2',
|
|
Patrick Uiterwijk |
b4c473 |
repo_to=repo,
|
|
Patrick Uiterwijk |
b4c473 |
branch_to='master',
|
|
Patrick Uiterwijk |
b4c473 |
title='test pull-request',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
requestfolder=os.path.join(self.path, 'requests'),
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.id, 4)
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(req.title, 'test pull-request')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# Add comment on a pull-request
|
|
Patrick Uiterwijk |
b4c473 |
request = pagure.lib.search_pull_requests(
|
|
Patrick Uiterwijk |
b4c473 |
self.session, requestid=3)
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_pull_request_comment(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
request=request,
|
|
Patrick Uiterwijk |
b4c473 |
commit='commithash',
|
|
Patrick Uiterwijk |
b4c473 |
tree_id=None,
|
|
Patrick Uiterwijk |
b4c473 |
filename='file',
|
|
Patrick Uiterwijk |
b4c473 |
row=None,
|
|
Patrick Uiterwijk |
b4c473 |
comment='This is awesome, I got to remember it!',
|
|
Patrick Uiterwijk |
b4c473 |
user='foo',
|
|
Patrick Uiterwijk |
b4c473 |
requestfolder=None,
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'Comment added')
|
|
Pierre-Yves Chibon |
97e4e8 |
|
|
Pierre-Yves Chibon |
fb5b9d |
# Check before deleting the project
|
|
Pierre-Yves Chibon |
fb5b9d |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Pierre-Yves Chibon |
8a488f |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">3', output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
|
|
Pierre-Yves Chibon |
550d2b |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
550d2b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
fb5b9d |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">2', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
52c8a4 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
52c8a4 |
self.assertNotEqual(repo, None)
|
|
Pierre-Yves Chibon |
52c8a4 |
|
|
Pierre-Yves Chibon |
550d2b |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
fe5017 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
550d2b |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
550d2b |
name='test3',
|
|
Pierre-Yves Chibon |
550d2b |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
52c8a4 |
parent_id=2,
|
|
Pierre-Yves Chibon |
e2259d |
hook_token='aaabbbjjj',
|
|
Pierre-Yves Chibon |
1dc86f |
read_only=False,
|
|
Pierre-Yves Chibon |
550d2b |
)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.add(item)
|
|
Pierre-Yves Chibon |
550d2b |
self.session.commit()
|
|
Pierre-Yves Chibon |
550d2b |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou',
|
|
Patrick Uiterwijk |
170974 |
'test3.git'))
|
|
Pierre-Yves Chibon |
550d2b |
tests.add_content_git_repo(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'docs', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
550d2b |
tests.add_content_git_repo(
|
|
Jeremy Cline |
20109f |
os.path.join(self.path, 'tickets', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
550d2b |
|
|
Pierre-Yves Chibon |
fb5b9d |
# Check before deleting the fork
|
|
Pierre-Yves Chibon |
fb5b9d |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Pierre-Yves Chibon |
8a488f |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">2', output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 1',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
fb5b9d |
|
|
Pierre-Yves Chibon |
550d2b |
output = self.app.post(
|
|
Pierre-Yves Chibon |
550d2b |
'/fork/pingou/test3/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
550d2b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
fb5b9d |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">2', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
027b38 |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'TICKETS_FOLDER': None})
|
|
Pierre-Yves Chibon |
b2e220 |
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout', MagicMock(return_value=False))
|
|
Pierre-Yves Chibon |
b2e220 |
def test_delete_repo_no_ticket(self):
|
|
Pierre-Yves Chibon |
b2e220 |
""" Test the delete_repo endpoint when tickets aren't enabled in
|
|
Pierre-Yves Chibon |
b2e220 |
this pagure instance. """
|
|
Pierre-Yves Chibon |
b2e220 |
|
|
Pierre-Yves Chibon |
b2e220 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
b2e220 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
b2e220 |
|
|
Pierre-Yves Chibon |
1dc86f |
# Ensure the project isn't read-only
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
1dc86f |
repo.read_only = False
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.commit()
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
b2e220 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
b2e220 |
# Check before deleting the project
|
|
Pierre-Yves Chibon |
b2e220 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b2e220 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">3', output_text)
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b2e220 |
|
|
Pierre-Yves Chibon |
b2e220 |
# Delete the project
|
|
Pierre-Yves Chibon |
b2e220 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b2e220 |
|
|
Pierre-Yves Chibon |
b2e220 |
# Check deletion worked
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b2e220 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">2', output_text)
|
|
Pierre-Yves Chibon |
b2e220 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b2e220 |
|
|
Pierre-Yves Chibon |
b4a226 |
@patch('pagure.lib.notify.send_email')
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_repo_with_users(self, ast, send_email):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the delete_repo endpoint. """
|
|
Pierre-Yves Chibon |
b4a226 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
b4a226 |
send_email.return_value = True
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b4a226 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
b4a226 |
# Create new project
|
|
Pierre-Yves Chibon |
b4a226 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
b4a226 |
name='test',
|
|
Pierre-Yves Chibon |
b4a226 |
description='test project #1',
|
|
Pierre-Yves Chibon |
b4a226 |
hook_token='aaabbbiii',
|
|
Pierre-Yves Chibon |
1dc86f |
read_only=False,
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create all the git repos
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'docs'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'tickets'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'requests'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check repo was created
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">1', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Patrick Uiterwijk |
b4c473 |
# add user
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_user_to_project(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
project=repo,
|
|
Patrick Uiterwijk |
b4c473 |
new_user='foo',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'User added')
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
1dc86f |
# Ensure the project isn't read-only (because adding an user
|
|
Pierre-Yves Chibon |
1dc86f |
# will trigger an ACL refresh, thus read-only)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
1dc86f |
repo.read_only = False
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.commit()
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check before deleting the project
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">1', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertNotEqual(repo, None)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Delete the project
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">0', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check after
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
@patch('pagure.lib.notify.send_email')
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_repo_with_group(self, ast, send_email):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the delete_repo endpoint. """
|
|
Pierre-Yves Chibon |
b4a226 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
b4a226 |
send_email.return_value = True
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b4a226 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
b4a226 |
# Create new project
|
|
Pierre-Yves Chibon |
b4a226 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
b4a226 |
name='test',
|
|
Pierre-Yves Chibon |
b4a226 |
description='test project #1',
|
|
Pierre-Yves Chibon |
b4a226 |
hook_token='aaabbbiii',
|
|
Pierre-Yves Chibon |
1dc86f |
read_only=False,
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create all the git repos
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'docs'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'tickets'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'requests'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check repo was created
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">1', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Patrick Uiterwijk |
b4c473 |
# Create group
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_group(
|
|
Patrick Uiterwijk |
b4c473 |
self.session,
|
|
Patrick Uiterwijk |
b4c473 |
group_name='foo',
|
|
Patrick Uiterwijk |
b4c473 |
display_name='foo group',
|
|
Patrick Uiterwijk |
b4c473 |
description=None,
|
|
Patrick Uiterwijk |
b4c473 |
group_type='bar',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
is_admin=False,
|
|
Patrick Uiterwijk |
b4c473 |
blacklist=[],
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'User `pingou` added to the group `foo`.')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# Add group to the project
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_group_to_project(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
project=repo,
|
|
Patrick Uiterwijk |
b4c473 |
new_group='foo',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'Group added')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Pierre-Yves Chibon |
1dc86f |
# Ensure the project isn't read-only (because adding a group
|
|
Pierre-Yves Chibon |
1dc86f |
# will trigger an ACL refresh, thus read-only)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
1dc86f |
repo.read_only = False
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
1dc86f |
self.session.commit()
|
|
Pierre-Yves Chibon |
1dc86f |
|
|
Patrick Uiterwijk |
b4c473 |
# check if group where we expect it
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(len(repo.projects_groups), 1)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check before deleting the project
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">1', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertNotEqual(repo, None)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Delete the project
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">0', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check after
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
@patch('pagure.lib.notify.send_email')
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_repo_with_coloredtag(self, ast, send_email):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the delete_repo endpoint. """
|
|
Pierre-Yves Chibon |
b4a226 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
b4a226 |
send_email.return_value = True
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b4a226 |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
b4a226 |
# Create new project
|
|
Pierre-Yves Chibon |
b4a226 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
b4a226 |
name='test',
|
|
Pierre-Yves Chibon |
b4a226 |
description='test project #1',
|
|
Pierre-Yves Chibon |
b4a226 |
hook_token='aaabbbiii',
|
|
Pierre-Yves Chibon |
1dc86f |
read_only=False,
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create all the git repos
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'docs'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'tickets'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
b4a226 |
os.path.join(self.path, 'requests'), bare=True)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check repo was created
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">1', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Patrick Uiterwijk |
b4c473 |
# Create the issue
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.new_issue(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
repo=repo,
|
|
Patrick Uiterwijk |
b4c473 |
title='Test issue',
|
|
Patrick Uiterwijk |
b4c473 |
content='We should work on this',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Patrick Uiterwijk |
b4c473 |
ticketfolder=os.path.join(self.path, 'tickets')
|
|
Patrick Uiterwijk |
b4c473 |
)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg.title, 'Test issue')
|
|
Patrick Uiterwijk |
b4c473 |
|
|
Patrick Uiterwijk |
b4c473 |
# Add a tag to the issue
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Patrick Uiterwijk |
b4c473 |
issue = pagure.lib.search_issues(self.session, repo, issueid=1)
|
|
Patrick Uiterwijk |
b4c473 |
msg = pagure.lib.add_tag_obj(
|
|
Patrick Uiterwijk |
b4c473 |
session=self.session,
|
|
Patrick Uiterwijk |
b4c473 |
obj=issue,
|
|
Patrick Uiterwijk |
b4c473 |
tags='tag1',
|
|
Patrick Uiterwijk |
b4c473 |
user='pingou',
|
|
Pierre-Yves Chibon |
ef1fe1 |
gitfolder=None)
|
|
Patrick Uiterwijk |
b4c473 |
self.session.commit()
|
|
Patrick Uiterwijk |
b4c473 |
self.assertEqual(msg, 'Issue tagged with: tag1')
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check before deleting the project
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">1', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertNotEqual(repo, None)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Delete the project
|
|
Pierre-Yves Chibon |
b4a226 |
output = self.app.post('/test/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Pierre-Yves Chibon |
b4a226 |
'
|
|
Aurélien Bompard |
626417 |
'class="badge badge-secondary">0', output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertIn(
|
|
Ryan Lerch |
eef090 |
'Forks 0',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Check after
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test2')
|
|
Pierre-Yves Chibon |
b4a226 |
self.assertEqual(repo, None)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
a8f15b |
def test_new_repo_hook_token(self, ast):
|
|
Pierre-Yves Chibon |
a8f15b |
""" Test the new_repo_hook_token endpoint. """
|
|
Pierre-Yves Chibon |
a8f15b |
ast.return_value = False
|
|
Pierre-Yves Chibon |
a8f15b |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(repo.hook_token, 'aaabbbccc')
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
a8f15b |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['WEBHOOK'] = True
|
|
Pierre-Yves Chibon |
a8f15b |
output = self.app.get('/new/')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create new Project', output_text)
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
a8f15b |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
a8f15b |
output = self.app.post('/foo/hook_token')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
a8f15b |
output = self.app.post('/test/hook_token')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
a8f15b |
ast.return_value = True
|
|
Pierre-Yves Chibon |
a8f15b |
output = self.app.post('/test/hook_token')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
a8f15b |
ast.return_value = False
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['WEBHOOK'] = False
|
|
Pierre-Yves Chibon |
fb7f0c |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(repo.hook_token, 'aaabbbccc')
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
a8f15b |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['WEBHOOK'] = True
|
|
Pierre-Yves Chibon |
a8f15b |
output = self.app.post('/test/hook_token')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(output.status_code, 400)
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
a8f15b |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(repo.hook_token, 'aaabbbccc')
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
a8f15b |
output = self.app.post(
|
|
Pierre-Yves Chibon |
a8f15b |
'/test/hook_token', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n New hook token generated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['WEBHOOK'] = False
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
a8f15b |
self.assertNotEqual(repo.hook_token, 'aaabbbccc')
|
|
Pierre-Yves Chibon |
a8f15b |
|
|
Pierre-Yves Chibon |
d4ef3d |
@patch('pagure.lib.notify.send_email')
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
270cef |
@patch('pagure.lib.git.update_git')
|
|
Pierre-Yves Chibon |
d4ef3d |
def test_regenerate_git(self, upgit, ast, sendmail):
|
|
Pierre-Yves Chibon |
270cef |
""" Test the regenerate_git endpoint. """
|
|
Pierre-Yves Chibon |
270cef |
ast.return_value = False
|
|
Pierre-Yves Chibon |
270cef |
upgit.return_value = True
|
|
Pierre-Yves Chibon |
d4ef3d |
sendmail.return_value = True
|
|
Pierre-Yves Chibon |
270cef |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.get('/new/')
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create new Project', output_text)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
270cef |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post('/foo/regenerate')
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post('/test/regenerate')
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
ast.return_value = True
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post('/test/regenerate')
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
270cef |
ast.return_value = False
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post('/test/regenerate')
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 400)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post('/test/regenerate', data=data)
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 400)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
270cef |
data['regenerate'] = 'ticket'
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post('/test/regenerate', data=data)
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 400)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
8e3bbb |
# Create an issue to play with
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
8e3bbb |
msg = pagure.lib.new_issue(
|
|
Pierre-Yves Chibon |
8e3bbb |
session=self.session,
|
|
Pierre-Yves Chibon |
8e3bbb |
repo=repo,
|
|
Pierre-Yves Chibon |
8e3bbb |
title='Test issue',
|
|
Pierre-Yves Chibon |
8e3bbb |
content='We should work on this',
|
|
Pierre-Yves Chibon |
8e3bbb |
user='pingou',
|
|
Pierre-Yves Chibon |
8e3bbb |
ticketfolder=None
|
|
Pierre-Yves Chibon |
8e3bbb |
)
|
|
Pierre-Yves Chibon |
8e3bbb |
self.session.commit()
|
|
Pierre-Yves Chibon |
8e3bbb |
self.assertEqual(msg.title, 'Test issue')
|
|
Pierre-Yves Chibon |
8e3bbb |
|
|
Pierre-Yves Chibon |
270cef |
data['regenerate'] = 'tickets'
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post(
|
|
Pierre-Yves Chibon |
270cef |
'/test/regenerate', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
270cef |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Tickets git repo updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
8e3bbb |
# Create a request to play with
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
8e3bbb |
msg = pagure.lib.new_pull_request(
|
|
Pierre-Yves Chibon |
8e3bbb |
session=self.session,
|
|
Pierre-Yves Chibon |
8e3bbb |
repo_from=repo,
|
|
Pierre-Yves Chibon |
8e3bbb |
branch_from='branch',
|
|
Pierre-Yves Chibon |
8e3bbb |
repo_to=repo,
|
|
Pierre-Yves Chibon |
8e3bbb |
branch_to='master',
|
|
Pierre-Yves Chibon |
8e3bbb |
title='Test pull-request',
|
|
Pierre-Yves Chibon |
8e3bbb |
user='pingou',
|
|
Pierre-Yves Chibon |
8e3bbb |
requestfolder=None,
|
|
Pierre-Yves Chibon |
8e3bbb |
)
|
|
Pierre-Yves Chibon |
8e3bbb |
self.session.commit()
|
|
Pierre-Yves Chibon |
8e3bbb |
self.assertEqual(msg.title, 'Test pull-request')
|
|
Pierre-Yves Chibon |
8e3bbb |
|
|
Pierre-Yves Chibon |
270cef |
data['regenerate'] = 'requests'
|
|
Pierre-Yves Chibon |
270cef |
output = self.app.post(
|
|
Pierre-Yves Chibon |
270cef |
'/test/regenerate', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
270cef |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
270cef |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Requests git repo updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
270cef |
|
|
Pierre-Yves Chibon |
d5c012 |
def test_view_tags(self):
|
|
Pierre-Yves Chibon |
d5c012 |
""" Test the view_tags endpoint. """
|
|
Pierre-Yves Chibon |
9b6360 |
output = self.app.get('/foo/releases')
|
|
Pierre-Yves Chibon |
d5c012 |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
d5c012 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
d5c012 |
|
|
Pierre-Yves Chibon |
d5c012 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
d5c012 |
|
|
Pierre-Yves Chibon |
9b6360 |
output = self.app.get('/test/releases')
|
|
Pierre-Yves Chibon |
d5c012 |
# No git repo associated
|
|
Pierre-Yves Chibon |
d5c012 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
d5c012 |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
d5c012 |
|
|
Pierre-Yves Chibon |
9b6360 |
output = self.app.get('/test/releases')
|
|
Pierre-Yves Chibon |
d5c012 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This project has not been tagged.', output_text)
|
|
Pierre-Yves Chibon |
d5c012 |
|
|
Pierre-Yves Chibon |
d5c012 |
# Add a README to the git repo - First commit
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git'))
|
|
Patrick Uiterwijk |
170974 |
repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
d5c012 |
first_commit = repo.revparse_single('HEAD')
|
|
Pierre-Yves Chibon |
d5c012 |
tagger = pygit2.Signature('Alice Doe', 'adoe@example.com', 12347, 0)
|
|
Pierre-Yves Chibon |
d5c012 |
repo.create_tag(
|
|
Pierre-Yves Chibon |
d5c012 |
"0.0.1", first_commit.oid.hex, pygit2.GIT_OBJ_COMMIT, tagger,
|
|
Pierre-Yves Chibon |
d5c012 |
"Release 0.0.1")
|
|
Pierre-Yves Chibon |
d5c012 |
|
|
Pierre-Yves Chibon |
9b6360 |
output = self.app.get('/test/releases')
|
|
Pierre-Yves Chibon |
d5c012 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('0.0.1', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertTrue(output_text.count('tagid'), 1)
|
|
Pierre-Yves Chibon |
d5c012 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
def test_edit_file_no_signed_off(self):
|
|
Pierre-Yves Chibon |
4a2ab0 |
""" Test the edit_file endpoint when signed-off isn't enforced. """
|
|
Pierre-Yves Chibon |
4a2ab0 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
4a2ab0 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
4a2ab0 |
os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
4a2ab0 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
4a2ab0 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
# Add some content to the git repo
|
|
Pierre-Yves Chibon |
4a2ab0 |
tests.add_content_git_repo(
|
|
Pierre-Yves Chibon |
4a2ab0 |
os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
output = self.app.get('/test/edit/master/f/sources')
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
4a2ab0 |
''
|
|
Pierre-Yves Chibon |
4a2ab0 |
' master'
|
|
Pierre-Yves Chibon |
4a2ab0 |
''
|
|
Pierre-Yves Chibon |
4a2ab0 |
' sources',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
4a2ab0 |
'<textarea id="textareaCode" name="content">foo\n bar</textarea>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
4a2ab0 |
'
|
|
Pierre-Yves Chibon |
4a2ab0 |
'id="commit_message"\n name="commit_message" '
|
|
Pierre-Yves Chibon |
4a2ab0 |
'placeholder="An optional description of the change">'
|
|
Aurélien Bompard |
626417 |
'</textarea>', output_text
|
|
Pierre-Yves Chibon |
4a2ab0 |
)
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
def test_edit_file_signed_off(self):
|
|
Pierre-Yves Chibon |
4a2ab0 |
""" Test the edit_file endpoint when signed-off is enforced. """
|
|
Pierre-Yves Chibon |
4a2ab0 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
4a2ab0 |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
4a2ab0 |
os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
4a2ab0 |
settings = repo.settings
|
|
Pierre-Yves Chibon |
4a2ab0 |
settings['Enforce_signed-off_commits_in_pull-request'] = True
|
|
Pierre-Yves Chibon |
4a2ab0 |
repo.settings = settings
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.session.add(repo)
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.session.commit()
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
4a2ab0 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
4a2ab0 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
# Add some content to the git repo
|
|
Pierre-Yves Chibon |
4a2ab0 |
tests.add_content_git_repo(
|
|
Pierre-Yves Chibon |
4a2ab0 |
os.path.join(self.path, 'repos', 'test.git'))
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
4a2ab0 |
output = self.app.get('/test/edit/master/f/sources')
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
4a2ab0 |
''
|
|
Pierre-Yves Chibon |
4a2ab0 |
' master'
|
|
Pierre-Yves Chibon |
4a2ab0 |
''
|
|
Pierre-Yves Chibon |
4a2ab0 |
' sources',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
4a2ab0 |
'<textarea id="textareaCode" name="content">foo\n bar</textarea>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
4a2ab0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
4a2ab0 |
'
|
|
Pierre-Yves Chibon |
4a2ab0 |
'id="commit_message"\n name="commit_message" '
|
|
Pierre-Yves Chibon |
4a2ab0 |
'placeholder="An optional description of the change">'
|
|
Aurélien Bompard |
626417 |
'Signed-off-by: pingou <bar@pingou.com></textarea>', output_text
|
|
Pierre-Yves Chibon |
4a2ab0 |
)
|
|
Pierre-Yves Chibon |
4a2ab0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
def test_edit_file(self):
|
|
Pierre-Yves Chibon |
39d6c0 |
""" Test the edit_file endpoint. """
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/foo/edit/foo/f/sources')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
39d6c0 |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/foo/edit/foo/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'),
|
|
Patrick Uiterwijk |
170974 |
bare=True)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# No a repo admin
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/edit/foo/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.get('/test/edit/foo/f/sources')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
39d6c0 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
ae3cda |
# No such file
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/edit/foo/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# Add some content to the git repo
|
|
Patrick Uiterwijk |
170974 |
tests.add_content_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Patrick Uiterwijk |
170974 |
tests.add_readme_git_repo(os.path.join(self.path, 'repos',
|
|
Patrick Uiterwijk |
170974 |
'test.git'))
|
|
Pierre-Yves Chibon |
39d6c0 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test.jpg')
|
|
Pierre-Yves Chibon |
39d6c0 |
tests.add_binary_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'test.git'), 'test_binary')
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/edit/master/foofile')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# Edit page
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/edit/master/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
''
|
|
Pierre-Yves Chibon |
efb2ec |
' master'
|
|
Pierre-Yves Chibon |
efb2ec |
''
|
|
Pierre-Yves Chibon |
efb2ec |
' sources',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'<textarea id="textareaCode" name="content">foo\n bar</textarea>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pradeep CE (cep) |
37126c |
# Verify the nav links correctly when editing a file.
|
|
Pradeep CE (cep) |
37126c |
output = self.app.get('/test/blob/master/f/folder1/folder2/file')
|
|
Pradeep CE (cep) |
37126c |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pradeep CE (cep) |
37126c |
self.assertIn(
|
|
Pradeep CE (cep) |
0294d1 |
'\n'
|
|
Pradeep CE (cep) |
37126c |
' '
|
|
Pradeep CE (cep) |
0294d1 |
' folder2\n'
|
|
Aurélien Bompard |
626417 |
' ', output_text)
|
|
Pradeep CE (cep) |
37126c |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
39d6c0 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# View what's supposed to be an image
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/edit/master/f/test.jpg')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 400)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Cannot edit binary files ', output_text)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# Check file before the commit:
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/raw/master/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertEqual(output_text, 'foo\n bar')
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# No CSRF Token
|
|
Pierre-Yves Chibon |
39d6c0 |
data = {
|
|
Pierre-Yves Chibon |
39d6c0 |
'content': 'foo\n bar\n baz',
|
|
Pierre-Yves Chibon |
39d6c0 |
'commit_title': 'test commit',
|
|
Pierre-Yves Chibon |
b130e5 |
'commit_message': 'Online commits from the gure.lib.get',
|
|
Pierre-Yves Chibon |
39d6c0 |
}
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.post('/test/edit/master/f/sources', data=data)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Edit - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# Check that nothing changed
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/raw/master/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertEqual(output_text, 'foo\n bar')
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
badd09 |
# Missing email
|
|
Pierre-Yves Chibon |
39d6c0 |
data['csrf_token'] = csrf_token
|
|
Pierre-Yves Chibon |
badd09 |
output = self.app.post('/test/edit/master/f/sources', data=data)
|
|
Pierre-Yves Chibon |
badd09 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
badd09 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Edit - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
badd09 |
|
|
Pierre-Yves Chibon |
badd09 |
# Invalid email
|
|
Pierre-Yves Chibon |
badd09 |
data['email'] = 'pingou@fp.o'
|
|
Pierre-Yves Chibon |
badd09 |
output = self.app.post('/test/edit/master/f/sources', data=data)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
badd09 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Edit - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
badd09 |
|
|
Pierre-Yves Chibon |
badd09 |
# Works
|
|
Pierre-Yves Chibon |
badd09 |
data['email'] = 'bar@pingou.com'
|
|
Pierre-Yves Chibon |
cd15ac |
data['branch'] = 'master'
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
39d6c0 |
'/test/edit/master/f/sources', data=data,
|
|
Pierre-Yves Chibon |
39d6c0 |
follow_redirects=True)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Commits - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('test commit', output_text)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# Check file after the commit:
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/test/raw/master/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertEqual(output_text, 'foo\n bar\n baz')
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
# Add a fork of a fork
|
|
Pierre-Yves Chibon |
39d6c0 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
39d6c0 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
39d6c0 |
name='test3',
|
|
Pierre-Yves Chibon |
39d6c0 |
description='test project #3',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Pierre-Yves Chibon |
39d6c0 |
parent_id=1,
|
|
Pierre-Yves Chibon |
39d6c0 |
hook_token='aaabbbppp',
|
|
Pierre-Yves Chibon |
39d6c0 |
)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.session.commit()
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
39d6c0 |
tests.add_content_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
39d6c0 |
tests.add_readme_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'))
|
|
Pierre-Yves Chibon |
39d6c0 |
tests.add_commit_git_repo(
|
|
Patrick Uiterwijk |
170974 |
os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'),
|
|
Pierre-Yves Chibon |
39d6c0 |
ncommits=10)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pradeep CE (cep) |
37126c |
# Verify the nav links correctly when editing a file in a fork.
|
|
Pradeep CE (cep) |
37126c |
output = self.app.get(
|
|
Pradeep CE (cep) |
37126c |
'/fork/pingou/test3/edit/master/f/folder1/folder2/file')
|
|
Pradeep CE (cep) |
37126c |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pradeep CE (cep) |
37126c |
self.assertIn(
|
|
Pradeep CE (cep) |
37126c |
'
|
|
Pradeep CE (cep) |
0294d1 |
'href="/fork/pingou/test3/blob/master/f/folder1/folder2"\n'
|
|
Pradeep CE (cep) |
0294d1 |
' > '
|
|
Aurélien Bompard |
626417 |
'folder2\n ', output_text)
|
|
Pradeep CE (cep) |
37126c |
|
|
Pierre-Yves Chibon |
39d6c0 |
output = self.app.get('/fork/pingou/test3/edit/master/f/sources')
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
''
|
|
Pierre-Yves Chibon |
efb2ec |
' master'
|
|
Pierre-Yves Chibon |
efb2ec |
''
|
|
Pierre-Yves Chibon |
efb2ec |
' sources'
|
|
Aurélien Bompard |
626417 |
'', output_text)
|
|
Pierre-Yves Chibon |
39d6c0 |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'<textarea id="textareaCode" name="content">foo\n barRow 0\n',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
39d6c0 |
|
|
Pierre-Yves Chibon |
34e831 |
# Empty the file - no `content` provided
|
|
Pierre-Yves Chibon |
34e831 |
data = {
|
|
Pierre-Yves Chibon |
34e831 |
'commit_title': 'test commit',
|
|
Pierre-Yves Chibon |
b130e5 |
'commit_message': 'Online commits from the gure.lib.get',
|
|
Pierre-Yves Chibon |
34e831 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
34e831 |
'email': 'bar@pingou.com',
|
|
Pierre-Yves Chibon |
34e831 |
'branch': 'master',
|
|
Pierre-Yves Chibon |
34e831 |
}
|
|
Pierre-Yves Chibon |
34e831 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
34e831 |
'/test/edit/master/f/sources', data=data,
|
|
Pierre-Yves Chibon |
34e831 |
follow_redirects=True)
|
|
Pierre-Yves Chibon |
34e831 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
34e831 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Commits - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('test commit', output_text)
|
|
Pierre-Yves Chibon |
34e831 |
|
|
Pierre-Yves Chibon |
34e831 |
# Check file after the commit:
|
|
Pierre-Yves Chibon |
34e831 |
output = self.app.get('/test/raw/master/f/sources')
|
|
Pierre-Yves Chibon |
34e831 |
self.assertEqual(output.status_code, 404)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
34e831 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'No content found ', output_text)
|
|
Pierre-Yves Chibon |
34e831 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Ghost-script |
ac44e3 |
def test_change_ref_head(self,ast):
|
|
Ghost-script |
ac44e3 |
""" Test the change_ref_head endpoint. """
|
|
Pierre-Yves Chibon |
c62a10 |
ast.return_value = True
|
|
Ghost-script |
ac44e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Ghost-script |
ac44e3 |
output = self.app.post('/foo/default/branch/')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Ghost-script |
ac44e3 |
|
|
Ghost-script |
ac44e3 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Ghost-script |
ac44e3 |
output = self.app.post('/foo/default/branch/')
|
|
Pierre-Yves Chibon |
ae3cda |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
c62a10 |
|
|
Pierre-Yves Chibon |
c62a10 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
c62a10 |
|
|
Pierre-Yves Chibon |
c62a10 |
output = self.app.post('/foo/default/branch/')
|
|
Ghost-script |
ac44e3 |
self.assertEqual(output.status_code, 404)
|
|
Ghost-script |
ac44e3 |
|
|
Ghost-script |
ac44e3 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
repos = tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Ghost-script |
ac44e3 |
|
|
Ghost-script |
ac44e3 |
output = self.app.post('/test/default/branch/')
|
|
Ghost-script |
ac44e3 |
self.assertEqual(output.status_code, 403)
|
|
Ghost-script |
ac44e3 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User no logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/default/branch/')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Ghost-script |
ac44e3 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Ghost-script |
ac44e3 |
output = self.app.post('/test/default/branch/',
|
|
Ghost-script |
ac44e3 |
follow_redirects=True) # without git branch
|
|
Ghost-script |
ac44e3 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Ghost-script |
ac44e3 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'<select class="c-select" id="branches" name="branches">'
|
|
Aurélien Bompard |
626417 |
'</select>', output_text)
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Ghost-script |
ac44e3 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Ghost-script |
ac44e3 |
|
|
Pierre-Yves Chibon |
ae3cda |
repo_obj = pygit2.Repository(repos[0])
|
|
Ghost-script |
ac44e3 |
tree = repo_obj.index.write_tree()
|
|
Ghost-script |
ac44e3 |
author = pygit2.Signature(
|
|
Ghost-script |
ac44e3 |
'Alice Author', 'alice@authors.tld')
|
|
Ghost-script |
ac44e3 |
committer = pygit2.Signature(
|
|
Ghost-script |
ac44e3 |
'Cecil Committer', 'cecil@committers.tld')
|
|
Ghost-script |
ac44e3 |
repo_obj.create_commit(
|
|
Ghost-script |
ac44e3 |
'refs/heads/master', # the name of the reference to update
|
|
Ghost-script |
ac44e3 |
author,
|
|
Ghost-script |
ac44e3 |
committer,
|
|
Ghost-script |
ac44e3 |
'Add sources file for testing',
|
|
Ghost-script |
ac44e3 |
# binary string representing the tree object ID
|
|
Ghost-script |
ac44e3 |
tree,
|
|
Ghost-script |
ac44e3 |
# list of binary strings representing parents of the new commit
|
|
Ghost-script |
ac44e3 |
[]
|
|
Ghost-script |
ac44e3 |
)
|
|
Ghost-script |
ac44e3 |
repo_obj.create_branch("feature",repo_obj.head.get_object())
|
|
Ghost-script |
ac44e3 |
|
|
Ghost-script |
ac44e3 |
data = {
|
|
Ghost-script |
ac44e3 |
'branches': 'feature',
|
|
Ghost-script |
ac44e3 |
'csrf_token': csrf_token,
|
|
Ghost-script |
ac44e3 |
}
|
|
Ghost-script |
ac44e3 |
|
|
Ghost-script |
ac44e3 |
output = self.app.post('/test/default/branch/', # changing head to feature branch
|
|
Ghost-script |
ac44e3 |
data=data,
|
|
Ghost-script |
ac44e3 |
follow_redirects=True)
|
|
Ghost-script |
ac44e3 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Ghost-script |
ac44e3 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'<select class="c-select" id="branches" name="branches">'
|
|
Pierre-Yves Chibon |
bb4b96 |
'<option selected value="feature">feature</option>'
|
|
Pierre-Yves Chibon |
efb2ec |
'<option value="master">master</option>'
|
|
Aurélien Bompard |
626417 |
'</select>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Default branch updated '
|
|
Aurélien Bompard |
626417 |
'to feature', output_text)
|
|
Ghost-script |
ac44e3 |
|
|
Ghost-script |
ac44e3 |
data = {
|
|
Ghost-script |
ac44e3 |
'branches': 'master',
|
|
Ghost-script |
ac44e3 |
'csrf_token': csrf_token,
|
|
Ghost-script |
ac44e3 |
}
|
|
Ghost-script |
ac44e3 |
|
|
Ghost-script |
ac44e3 |
output = self.app.post('/test/default/branch/', # changing head to master branch
|
|
Ghost-script |
ac44e3 |
data=data,
|
|
Ghost-script |
ac44e3 |
follow_redirects=True)
|
|
Ghost-script |
ac44e3 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Ghost-script |
ac44e3 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'<select class="c-select" id="branches" name="branches">'
|
|
Pierre-Yves Chibon |
efb2ec |
'<option value="feature">feature</option>'
|
|
Pierre-Yves Chibon |
bb4b96 |
'<option selected value="master">master</option>'
|
|
Aurélien Bompard |
626417 |
'</select>', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Default branch updated '
|
|
Aurélien Bompard |
626417 |
'to master', output_text)
|
|
Ghost-script |
ac44e3 |
|
|
Pierre-Yves Chibon |
ff69ce |
def test_new_release(self):
|
|
Pierre-Yves Chibon |
ff69ce |
""" Test the new_release endpoint. """
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
ff69ce |
output = self.app.post('/foo/upload/')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
ff69ce |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
ff69ce |
output = self.app.post('/foo/upload/')
|
|
Pierre-Yves Chibon |
ff69ce |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
ff69ce |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
repo = tests.create_projects_git(os.path.join(self.path, 'repos'))
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
ff69ce |
output = self.app.post('/test/upload/')
|
|
Pierre-Yves Chibon |
ff69ce |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/upload/')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
ff69ce |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Jeremy Cline |
20109f |
img = os.path.join(os.path.abspath(os.path.dirname(__file__)),
|
|
Jeremy Cline |
20109f |
'placebo.png')
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
ff69ce |
# Missing CSRF Token
|
|
Jeremy Cline |
2eaa12 |
with open(img, mode='rb') as stream:
|
|
Jeremy Cline |
2eaa12 |
data = {'filestream': stream}
|
|
Jeremy Cline |
2eaa12 |
output = self.app.post('/test/upload/', data=data)
|
|
Pierre-Yves Chibon |
ff69ce |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Upload a new release', output_text)
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
ff69ce |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
36309a |
upload_dir = os.path.join(self.path, 'releases')
|
|
Pierre-Yves Chibon |
36309a |
self.assertEqual(os.listdir(upload_dir), [])
|
|
Pierre-Yves Chibon |
36309a |
|
|
Pierre-Yves Chibon |
ff69ce |
# Upload successful
|
|
Jeremy Cline |
2eaa12 |
with open(img, mode='rb') as stream:
|
|
Jeremy Cline |
2eaa12 |
data = {'filestream': stream, 'csrf_token': csrf_token}
|
|
Jeremy Cline |
2eaa12 |
output = self.app.post(
|
|
Jeremy Cline |
2eaa12 |
'/test/upload/', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
ff69ce |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'</button>\n File', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'uploaded\n ', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This project has not been tagged.', output_text)
|
|
Pierre-Yves Chibon |
ff69ce |
|
|
Pierre-Yves Chibon |
36309a |
self.assertEqual(os.listdir(upload_dir), ['test'])
|
|
Pierre-Yves Chibon |
36309a |
folder = os.path.join(upload_dir, 'test')
|
|
Pierre-Yves Chibon |
36309a |
checksum_file = os.path.join(folder, 'CHECKSUMS')
|
|
Pierre-Yves Chibon |
36309a |
|
|
Pierre-Yves Chibon |
36309a |
# Wait for the worker to create the checksums file
|
|
Pierre-Yves Chibon |
36309a |
cnt = 0
|
|
Pierre-Yves Chibon |
36309a |
while not os.path.exists(checksum_file):
|
|
Aurélien Bompard |
626417 |
print(os.listdir(os.path.join(upload_dir, 'test')))
|
|
Pierre-Yves Chibon |
36309a |
cnt += 1
|
|
Pierre-Yves Chibon |
36309a |
if cnt == 40:
|
|
Pierre-Yves Chibon |
36309a |
raise ValueError(
|
|
Pierre-Yves Chibon |
36309a |
'The worker did not create the checksums file '
|
|
Pierre-Yves Chibon |
36309a |
'in a timely manner')
|
|
Pierre-Yves Chibon |
36309a |
time.sleep(0.5)
|
|
Pierre-Yves Chibon |
36309a |
|
|
Pierre-Yves Chibon |
36309a |
self.assertEqual(len(os.listdir(folder)), 2)
|
|
Pierre-Yves Chibon |
36309a |
|
|
Pierre-Yves Chibon |
36309a |
self.assertTrue(os.path.exists(checksum_file))
|
|
Pierre-Yves Chibon |
36309a |
|
|
Pierre-Yves Chibon |
36309a |
# Check the content of the checksums file
|
|
Pierre-Yves Chibon |
36309a |
with open(checksum_file) as stream:
|
|
Pierre-Yves Chibon |
36309a |
data = stream.readlines()
|
|
Pierre-Yves Chibon |
36309a |
self.assertEqual(len(data), 3)
|
|
Pierre-Yves Chibon |
36309a |
self.assertEqual(data[0], '# Generated and updated by pagure\n')
|
|
Pierre-Yves Chibon |
36309a |
self.assertTrue(data[1].startswith('SHA256 ('))
|
|
Pierre-Yves Chibon |
36309a |
self.assertTrue(data[1].endswith(
|
|
Pierre-Yves Chibon |
36309a |
'tests_placebo.png) = 8a06845923010b27bfd8e7e75acff'
|
|
Pierre-Yves Chibon |
36309a |
'7badc40d1021b4994e01f5e11ca40bc3abe\n'))
|
|
Pierre-Yves Chibon |
36309a |
self.assertTrue(data[2].startswith('SHA512 ('))
|
|
Pierre-Yves Chibon |
36309a |
self.assertTrue(data[2].endswith(
|
|
Pierre-Yves Chibon |
36309a |
'tests_placebo.png) = 65a4458df0acb29dc3c5ad4a3620e'
|
|
Pierre-Yves Chibon |
36309a |
'98841d1fcf3f8df358f5348fdeddd1a86706491ac6e416768e'
|
|
Pierre-Yves Chibon |
36309a |
'9f218aae8147d6ac524a59d3eb91fb925fdcb5c489e55ccbb\n'))
|
|
Pierre-Yves Chibon |
36309a |
|
|
Pierre-Yves Chibon |
db5bf1 |
# Try uploading the same file -- fails
|
|
Pierre-Yves Chibon |
db5bf1 |
with open(img, mode='rb') as stream:
|
|
Pierre-Yves Chibon |
db5bf1 |
data = {'filestream': stream, 'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
db5bf1 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
db5bf1 |
'/test/upload/', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
db5bf1 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
db5bf1 |
self.assertIn(
|
|
Pierre-Yves Chibon |
db5bf1 |
'</button>\n This tarball has already '
|
|
Aurélien Bompard |
626417 |
'been uploaded', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This project has not been tagged.', output_text)
|
|
Pierre-Yves Chibon |
db5bf1 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
87442f |
def test_add_token_all_tokens(self, ast):
|
|
Pierre-Yves Chibon |
87442f |
""" Test the add_token endpoint. """
|
|
Pierre-Yves Chibon |
87442f |
ast.return_value = False
|
|
Pierre-Yves Chibon |
87442f |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
87442f |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
87442f |
os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
87442f |
|
|
Pierre-Yves Chibon |
87442f |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
87442f |
output = self.app.get('/test/token/new/')
|
|
Pierre-Yves Chibon |
87442f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create a new token', output_text)
|
|
Pierre-Yves Chibon |
87442f |
self.assertEqual(
|
|
Aurélien Bompard |
626417 |
output_text.count('<label class="c-input c-checkbox">'),
|
|
Pierre-Yves Chibon |
b130e5 |
len(pagure.config.config['ACLS'].keys()) - 1
|
|
Pierre-Yves Chibon |
87442f |
)
|
|
Pierre-Yves Chibon |
87442f |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'USER_ACLS': ['create_project']})
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
87442f |
def test_add_token_one_token(self, ast):
|
|
Pierre-Yves Chibon |
87442f |
""" Test the add_token endpoint. """
|
|
Pierre-Yves Chibon |
87442f |
ast.return_value = False
|
|
Pierre-Yves Chibon |
87442f |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
87442f |
tests.create_projects_git(
|
|
Pierre-Yves Chibon |
87442f |
os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
87442f |
|
|
Pierre-Yves Chibon |
87442f |
user = tests.FakeUser(username='pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
87442f |
output = self.app.get('/test/token/new/')
|
|
Pierre-Yves Chibon |
87442f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create a new token', output_text)
|
|
Pierre-Yves Chibon |
87442f |
self.assertEqual(
|
|
Aurélien Bompard |
626417 |
output_text.count('<label class="c-input c-checkbox">'),
|
|
Pierre-Yves Chibon |
87442f |
1
|
|
Pierre-Yves Chibon |
87442f |
)
|
|
Pierre-Yves Chibon |
87442f |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
58ebb2 |
def test_add_token(self, ast):
|
|
Pierre-Yves Chibon |
a26be4 |
""" Test the add_token endpoint. """
|
|
Pierre-Yves Chibon |
58ebb2 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
a26be4 |
output = self.app.get('/foo/token/new/')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
a26be4 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
a26be4 |
output = self.app.get('/foo/token/new/')
|
|
Pierre-Yves Chibon |
a26be4 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
a26be4 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'),
|
|
Patrick Uiterwijk |
170974 |
bare=True)
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
a26be4 |
output = self.app.get('/test/token/new/')
|
|
Pierre-Yves Chibon |
a26be4 |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.get('/test/token/new/')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
a26be4 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
a26be4 |
output = self.app.get('/test/token/new/')
|
|
Pierre-Yves Chibon |
a26be4 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create a new token', output_text)
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
a26be4 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
58ebb2 |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
58ebb2 |
|
|
Pierre-Yves Chibon |
58ebb2 |
ast.return_value = True
|
|
Pierre-Yves Chibon |
58ebb2 |
# Test when the session timed-out
|
|
Pierre-Yves Chibon |
58ebb2 |
output = self.app.post('/test/token/new/', data=data)
|
|
Pierre-Yves Chibon |
58ebb2 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
58ebb2 |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
58ebb2 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
58ebb2 |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Action canceled, try it '
|
|
Aurélien Bompard |
626417 |
'again', output_text)
|
|
Pierre-Yves Chibon |
58ebb2 |
ast.return_value = False
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
a26be4 |
# Missing acls
|
|
Pierre-Yves Chibon |
a26be4 |
output = self.app.post('/test/token/new/', data=data)
|
|
Pierre-Yves Chibon |
a26be4 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create a new token', output_text)
|
|
Pradeep CE (cep) |
9b9d60 |
self.assertIn(
|
|
Pradeep CE (cep) |
9b9d60 |
'</button>\n You must select at least '
|
|
Aurélien Bompard |
626417 |
'one permission.', output_text)
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
60a786 |
data = {
|
|
Pierre-Yves Chibon |
60a786 |
'csrf_token': csrf_token,
|
|
Pierre-Yves Chibon |
60a786 |
'acls': ['issue_create'],
|
|
Pierre-Yves Chibon |
60a786 |
'description': 'Test token',
|
|
Pierre-Yves Chibon |
60a786 |
}
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Pierre-Yves Chibon |
db5bf1 |
# New token created
|
|
Pierre-Yves Chibon |
a26be4 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
a26be4 |
'/test/token/new/', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
a26be4 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'</button>\n Token created', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Settings for test', output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Test token', output_text)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Lubomír Sedlář |
60ab63 |
'Valid until: ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
a26be4 |
|
|
Clement Verna |
afe475 |
@patch('pagure.decorators.admin_session_timedout')
|
|
Pierre-Yves Chibon |
66632f |
def test_revoke_api_token(self, ast):
|
|
Pierre-Yves Chibon |
66632f |
""" Test the revoke_api_token endpoint. """
|
|
Pierre-Yves Chibon |
66632f |
ast.return_value = False
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.post('/foo/token/revoke/123')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.post('/foo/token/revoke/123')
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'),
|
|
Patrick Uiterwijk |
170974 |
bare=True)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.post('/test/token/revoke/123')
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/token/revoke/123')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
66632f |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.get('/test/token/new')
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create a new token', output_text)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
66632f |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
66632f |
data = {'csrf_token': csrf_token}
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
ast.return_value = True
|
|
Pierre-Yves Chibon |
66632f |
# Test when the session timed-out
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.post('/test/token/revoke/123', data=data)
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.get('/')
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
66632f |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Action canceled, try it again',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
66632f |
ast.return_value = False
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.post('/test/token/revoke/123', data=data)
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(output.status_code, 404)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Token not found ', output_text)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
# Create a token to revoke
|
|
Pierre-Yves Chibon |
66632f |
data = {'csrf_token': csrf_token, 'acls': ['issue_create']}
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.post(
|
|
Pierre-Yves Chibon |
66632f |
'/test/token/new/', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Token created',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
# Existing token will expire in 60 days
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(
|
|
Pierre-Yves Chibon |
66632f |
repo.tokens[0].expiration.date(),
|
|
Pierre-Yves Chibon |
66632f |
datetime.datetime.utcnow().date() + datetime.timedelta(days=60))
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
token = repo.tokens[0].id
|
|
Pierre-Yves Chibon |
66632f |
output = self.app.post(
|
|
Pierre-Yves Chibon |
66632f |
'/test/token/revoke/%s' % token,
|
|
Pierre-Yves Chibon |
66632f |
data=data,
|
|
Pierre-Yves Chibon |
66632f |
follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
66632f |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Settings - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
66632f |
self.assertIn(
|
|
Pierre-Yves Chibon |
efb2ec |
'</button>\n Token revoked',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
66632f |
# Existing token has been expired
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
repo = pagure.lib.get_authorized_project(self.session, 'test')
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(
|
|
Pierre-Yves Chibon |
66632f |
repo.tokens[0].expiration.date(),
|
|
Pierre-Yves Chibon |
66632f |
repo.tokens[0].created.date())
|
|
Pierre-Yves Chibon |
66632f |
self.assertEqual(
|
|
Pierre-Yves Chibon |
66632f |
repo.tokens[0].expiration.date(),
|
|
Pierre-Yves Chibon |
66632f |
datetime.datetime.utcnow().date())
|
|
Pierre-Yves Chibon |
66632f |
|
|
Pierre-Yves Chibon |
0a9fcb |
def test_delete_branch(self):
|
|
Pierre-Yves Chibon |
0a9fcb |
""" Test the delete_branch endpoint. """
|
|
Pierre-Yves Chibon |
3f60e3 |
# No Git repo
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.post('/foo/b/master/delete')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
0a9fcb |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
3f60e3 |
# User not logged in
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/test/b/master/delete')
|
|
Pierre-Yves Chibon |
3f60e3 |
self.assertEqual(output.status_code, 302)
|
|
Pierre-Yves Chibon |
3f60e3 |
|
|
Pierre-Yves Chibon |
0a9fcb |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
0a9fcb |
# Unknown repo
|
|
Pierre-Yves Chibon |
3f60e3 |
output = self.app.post('/foo/b/master/delete')
|
|
Pierre-Yves Chibon |
0a9fcb |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.post('/test/b/master/delete')
|
|
Pierre-Yves Chibon |
0a9fcb |
self.assertEqual(output.status_code, 403)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
0a9fcb |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.post('/test/b/master/delete')
|
|
Pierre-Yves Chibon |
0a9fcb |
self.assertEqual(output.status_code, 403)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
0a9fcb |
self.assertIn(
|
|
Pierre-Yves Chibon |
0a9fcb |
'You are not allowed to delete the master branch ',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.post('/test/b/bar/delete')
|
|
Pierre-Yves Chibon |
0a9fcb |
self.assertEqual(output.status_code, 404)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Branch not found ', output_text)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
0a9fcb |
# Add a branch that we can delete
|
|
Patrick Uiterwijk |
170974 |
path = os.path.join(self.path, 'repos', 'test.git')
|
|
Pierre-Yves Chibon |
0a9fcb |
tests.add_content_git_repo(path)
|
|
Pierre-Yves Chibon |
0a9fcb |
repo = pygit2.Repository(path)
|
|
Pierre-Yves Chibon |
0a9fcb |
repo.create_branch('foo', repo.head.get_object())
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
0a9fcb |
# Check before deletion
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
0a9fcb |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Ryan Lerch |
1c9a10 |
'data-toggle="tooltip">foo',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertIn('
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Ryan Lerch |
1c9a10 |
'
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
0a9fcb |
# Delete the branch
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.post('/test/b/foo/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
0a9fcb |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertNotIn(
|
|
Ryan Lerch |
1c9a10 |
'data-toggle="tooltip">foo',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
2623d5 |
self.assertNotIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Pierre-Yves Chibon |
efb2ec |
self.assertIn(
|
|
Ryan Lerch |
1c9a10 |
'
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
0a9fcb |
|
|
Pierre-Yves Chibon |
f8ff28 |
# Add a branch with a '/' in its name that we can delete
|
|
Patrick Uiterwijk |
170974 |
path = os.path.join(self.path, 'repos', 'test.git')
|
|
Pierre-Yves Chibon |
f8ff28 |
tests.add_content_git_repo(path)
|
|
Pierre-Yves Chibon |
f8ff28 |
repo = pygit2.Repository(path)
|
|
Pierre-Yves Chibon |
f8ff28 |
repo.create_branch('feature/foo', repo.head.get_object())
|
|
Pierre-Yves Chibon |
f8ff28 |
|
|
Pierre-Yves Chibon |
f8ff28 |
# Check before deletion
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
f8ff28 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
f8ff28 |
self.assertIn(
|
|
Ryan Lerch |
1c9a10 |
'data-toggle="tooltip">feature/foo',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
f8ff28 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Pierre-Yves Chibon |
2623d5 |
self.assertIn(
|
|
Ryan Lerch |
1c9a10 |
'
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
f8ff28 |
|
|
Pierre-Yves Chibon |
f8ff28 |
# Delete the branch
|
|
Pierre-Yves Chibon |
5bf6f1 |
output = self.app.post('/test/b/feature/foo/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
f8ff28 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
f8ff28 |
self.assertNotIn(
|
|
Ryan Lerch |
1c9a10 |
'data-toggle="tooltip">feature/foo',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
2623d5 |
self.assertNotIn(
|
|
Aurélien Bompard |
626417 |
'
|
|
Pierre-Yves Chibon |
f8ff28 |
self.assertIn(
|
|
Ryan Lerch |
1c9a10 |
'
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
f8ff28 |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'ALLOW_DELETE_BRANCH': False})
|
|
Pierre-Yves Chibon |
1ee8ed |
def test_delete_branch_disabled_in_ui(self):
|
|
Pierre-Yves Chibon |
1ee8ed |
""" Test that the delete branch button doesn't show when the feature
|
|
Pierre-Yves Chibon |
1ee8ed |
is turned off. """
|
|
Pierre-Yves Chibon |
1ee8ed |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
1ee8ed |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
1ee8ed |
|
|
Pierre-Yves Chibon |
1ee8ed |
# Add a branch that we can delete
|
|
Pierre-Yves Chibon |
1ee8ed |
path = os.path.join(self.path, 'repos', 'test.git')
|
|
Pierre-Yves Chibon |
1ee8ed |
tests.add_content_git_repo(path)
|
|
Pierre-Yves Chibon |
1ee8ed |
repo = pygit2.Repository(path)
|
|
Pierre-Yves Chibon |
1ee8ed |
repo.create_branch('foo', repo.head.get_object())
|
|
Pierre-Yves Chibon |
1ee8ed |
|
|
Pierre-Yves Chibon |
1ee8ed |
user = tests.FakeUser(username = 'pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
1ee8ed |
# Check that the UI doesn't offer the button
|
|
Pierre-Yves Chibon |
1ee8ed |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
1ee8ed |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
1ee8ed |
self.assertIn(
|
|
Pierre-Yves Chibon |
1ee8ed |
'data-toggle="tooltip">foo',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('
|
|
Pierre-Yves Chibon |
1ee8ed |
self.assertNotIn(
|
|
Pierre-Yves Chibon |
1ee8ed |
'Are you sure you want to remove the branch',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
1ee8ed |
|
|
Pierre-Yves Chibon |
b130e5 |
@patch.dict('pagure.config.config', {'ALLOW_DELETE_BRANCH': False})
|
|
Pierre-Yves Chibon |
1ee8ed |
def test_delete_branch_disabled(self):
|
|
Pierre-Yves Chibon |
1ee8ed |
""" Test the delete_branch endpoint when it's disabled in the entire
|
|
Pierre-Yves Chibon |
1ee8ed |
instance. """
|
|
Pierre-Yves Chibon |
1ee8ed |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
1ee8ed |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
1ee8ed |
|
|
Pierre-Yves Chibon |
1ee8ed |
# Add a branch that we can delete
|
|
Pierre-Yves Chibon |
1ee8ed |
path = os.path.join(self.path, 'repos', 'test.git')
|
|
Pierre-Yves Chibon |
1ee8ed |
tests.add_content_git_repo(path)
|
|
Pierre-Yves Chibon |
1ee8ed |
repo = pygit2.Repository(path)
|
|
Pierre-Yves Chibon |
1ee8ed |
repo.create_branch('foo', repo.head.get_object())
|
|
Pierre-Yves Chibon |
1ee8ed |
|
|
Pierre-Yves Chibon |
1ee8ed |
user = tests.FakeUser(username = 'pingou')
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
1ee8ed |
# Delete the branch
|
|
Pierre-Yves Chibon |
1ee8ed |
output = self.app.post('/test/b/foo/delete', follow_redirects=True)
|
|
Pierre-Yves Chibon |
1ee8ed |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
1ee8ed |
|
|
Pierre-Yves Chibon |
24b5ea |
def test_view_docs(self):
|
|
Pierre-Yves Chibon |
24b5ea |
""" Test the view_docs endpoint. """
|
|
Pierre-Yves Chibon |
24b5ea |
output = self.app.get('/docs/foo/')
|
|
Pierre-Yves Chibon |
24b5ea |
# No project registered in the DB
|
|
Pierre-Yves Chibon |
24b5ea |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
24b5ea |
|
|
Pierre-Yves Chibon |
24b5ea |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
24b5ea |
|
|
Pierre-Yves Chibon |
24b5ea |
output = self.app.get('/docs/test/')
|
|
Pierre-Yves Chibon |
24b5ea |
# No git repo associated
|
|
Pierre-Yves Chibon |
24b5ea |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
24b5ea |
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
24b5ea |
|
|
Pierre-Yves Chibon |
24b5ea |
output = self.app.get('/docs/test/')
|
|
Pierre-Yves Chibon |
24b5ea |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
24b5ea |
|
|
Ryan Lerch |
0fc819 |
def test_view_project_activity(self):
|
|
Ryan Lerch |
0fc819 |
""" Test the view_project_activity endpoint. """
|
|
Ryan Lerch |
0fc819 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Ryan Lerch |
0fc819 |
|
|
Ryan Lerch |
0fc819 |
# Project Exists, but No DATAGREPPER_URL set
|
|
Pierre-Yves Chibon |
68cdc3 |
output = self.app.get('/test/activity/')
|
|
Pierre-Yves Chibon |
68cdc3 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
68cdc3 |
|
|
Pierre-Yves Chibon |
68cdc3 |
# Project Exists, and DATAGREPPER_URL set
|
|
Pierre-Yves Chibon |
b130e5 |
pagure.config.config['DATAGREPPER_URL'] = 'foo'
|
|
Pierre-Yves Chibon |
68cdc3 |
output = self.app.get('/test/activity/')
|
|
Pierre-Yves Chibon |
68cdc3 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
68cdc3 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'<title>Activity - test - Pagure</title>', output_text)
|
|
Pierre-Yves Chibon |
68cdc3 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'No activity reported on the test project', output_text)
|
|
Pierre-Yves Chibon |
68cdc3 |
|
|
Pierre-Yves Chibon |
68cdc3 |
# project doesnt exist
|
|
Pierre-Yves Chibon |
68cdc3 |
output = self.app.get('/foo/activity/')
|
|
Ryan Lerch |
0fc819 |
self.assertEqual(output.status_code, 404)
|
|
Ryan Lerch |
0fc819 |
|
|
Patrick Uiterwijk |
3d0ed0 |
def test_goimport(self):
|
|
Patrick Uiterwijk |
3d0ed0 |
""" Test the go-import tag. """
|
|
Patrick Uiterwijk |
3d0ed0 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Patrick Uiterwijk |
3d0ed0 |
output = self.app.get('/test/')
|
|
Patrick Uiterwijk |
3d0ed0 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Patrick Uiterwijk |
3d0ed0 |
self.assertIn('
|
|
Patrick Uiterwijk |
3d0ed0 |
'content="pagure.org/test git git://pagure.org/test.git"'
|
|
Patrick Uiterwijk |
3d0ed0 |
'>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Patrick Uiterwijk |
3d0ed0 |
|
|
Gaurav Kumar |
00f2c8 |
def test_watch_repo(self):
|
|
Gaurav Kumar |
00f2c8 |
""" Test the watch_repo endpoint. """
|
|
Gaurav Kumar |
00f2c8 |
|
|
Gaurav Kumar |
604af6 |
output = self.app.post('/watch/')
|
|
Gaurav Kumar |
604af6 |
self.assertEqual(output.status_code, 405)
|
|
Gaurav Kumar |
604af6 |
|
|
Gaurav Kumar |
00f2c8 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Gaurav Kumar |
00f2c8 |
|
|
Gaurav Kumar |
00f2c8 |
user = tests.FakeUser()
|
|
Gaurav Kumar |
00f2c8 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Gaurav Kumar |
00f2c8 |
|
|
Gaurav Kumar |
00f2c8 |
output = self.app.get('/new/')
|
|
Gaurav Kumar |
00f2c8 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create new Project', output_text)
|
|
Gaurav Kumar |
00f2c8 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Gaurav Kumar |
00f2c8 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Gaurav Kumar |
00f2c8 |
|
|
Gaurav Kumar |
00f2c8 |
data = {
|
|
Gaurav Kumar |
604af6 |
'csrf_token':csrf_token
|
|
Gaurav Kumar |
00f2c8 |
}
|
|
Gaurav Kumar |
00f2c8 |
|
|
Gaurav Kumar |
00f2c8 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
1f309a |
'/foo/watch/settings/1', data=data, follow_redirects=True)
|
|
Gaurav Kumar |
604af6 |
self.assertEqual(output.status_code, 404)
|
|
Gaurav Kumar |
00f2c8 |
|
|
Gaurav Kumar |
604af6 |
output = self.app.post(
|
|
Matt Prahl |
b49f93 |
'/test/watch/settings/8', data=data, follow_redirects=True)
|
|
Gaurav Kumar |
604af6 |
self.assertEqual(output.status_code, 400)
|
|
Gaurav Kumar |
00f2c8 |
|
|
Gaurav Kumar |
00f2c8 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
8544f4 |
'/test/watch/settings/0', data=data, follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Gaurav Kumar |
604af6 |
self.assertIn(
|
|
Gaurav Kumar |
604af6 |
'</button>\n You are no longer'
|
|
Aurélien Bompard |
626417 |
' watching this project', output_text)
|
|
Gaurav Kumar |
604af6 |
|
|
Gaurav Kumar |
604af6 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
8544f4 |
'/test/watch/settings/1', data=data, follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Gaurav Kumar |
604af6 |
self.assertIn(
|
|
Gaurav Kumar |
6cf178 |
'</button>\n You are now'
|
|
Aurélien Bompard |
626417 |
' watching issues and PRs on this project', output_text)
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
output = self.app.post(
|
|
Matt Prahl |
b49f93 |
'/test/watch/settings/2', data=data, follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Matt Prahl |
b49f93 |
self.assertIn(
|
|
Matt Prahl |
b49f93 |
'</button>\n You are now'
|
|
Aurélien Bompard |
626417 |
' watching commits on this project', output_text)
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
output = self.app.post(
|
|
Matt Prahl |
b49f93 |
'/test/watch/settings/3', data=data, follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Matt Prahl |
b49f93 |
self.assertIn(
|
|
Matt Prahl |
b49f93 |
('</button>\n You are now'
|
|
Matt Prahl |
b49f93 |
' watching issues, PRs, and commits on this project'),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Gaurav Kumar |
604af6 |
|
|
Gaurav Kumar |
604af6 |
item = pagure.lib.model.Project(
|
|
Gaurav Kumar |
604af6 |
user_id=2, # foo
|
|
Gaurav Kumar |
604af6 |
name='test',
|
|
Pierre-Yves Chibon |
3f60e3 |
description='foo project #1',
|
|
Gaurav Kumar |
604af6 |
hook_token='aaabbb',
|
|
farhaanbukhsh |
907098 |
is_fork=True,
|
|
Gaurav Kumar |
604af6 |
parent_id=1,
|
|
Gaurav Kumar |
00f2c8 |
)
|
|
Gaurav Kumar |
604af6 |
self.session.add(item)
|
|
Gaurav Kumar |
00f2c8 |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
gitrepo = os.path.join(self.path, 'repos', 'forks', 'foo',
|
|
Patrick Uiterwijk |
170974 |
'test.git')
|
|
Pierre-Yves Chibon |
3f60e3 |
pygit2.init_repository(gitrepo, bare=True)
|
|
Gaurav Kumar |
604af6 |
|
|
Gaurav Kumar |
604af6 |
output = self.app.post(
|
|
Vivek Anand |
5ba4e2 |
'/fork/foo/test/watch/settings/-1', data=data,
|
|
Vivek Anand |
5ba4e2 |
follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Vivek Anand |
5ba4e2 |
self.assertIn(
|
|
Vivek Anand |
5ba4e2 |
'</button>\n Watch status is already reset',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
5ba4e2 |
|
|
Vivek Anand |
5ba4e2 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
8544f4 |
'/fork/foo/test/watch/settings/0', data=data,
|
|
Pierre-Yves Chibon |
8544f4 |
follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Gaurav Kumar |
604af6 |
self.assertIn(
|
|
Gaurav Kumar |
604af6 |
'</button>\n You are no longer'
|
|
Aurélien Bompard |
626417 |
' watching this project', output_text)
|
|
Gaurav Kumar |
604af6 |
|
|
Gaurav Kumar |
604af6 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
8544f4 |
'/fork/foo/test/watch/settings/1', data=data,
|
|
Pierre-Yves Chibon |
8544f4 |
follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Gaurav Kumar |
604af6 |
self.assertIn(
|
|
Gaurav Kumar |
6cf178 |
'</button>\n You are now'
|
|
Aurélien Bompard |
626417 |
' watching issues and PRs on this project', output_text)
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
output = self.app.post(
|
|
Matt Prahl |
b49f93 |
'/fork/foo/test/watch/settings/2', data=data,
|
|
Matt Prahl |
b49f93 |
follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Matt Prahl |
b49f93 |
self.assertIn(
|
|
Matt Prahl |
b49f93 |
'</button>\n You are now'
|
|
Aurélien Bompard |
626417 |
' watching commits on this project', output_text)
|
|
Matt Prahl |
b49f93 |
|
|
Matt Prahl |
b49f93 |
output = self.app.post(
|
|
Matt Prahl |
b49f93 |
'/fork/foo/test/watch/settings/3', data=data,
|
|
Matt Prahl |
b49f93 |
follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Matt Prahl |
b49f93 |
self.assertIn(
|
|
Matt Prahl |
b49f93 |
('</button>\n You are now'
|
|
Matt Prahl |
b49f93 |
' watching issues, PRs, and commits on this project'),
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
78ce15 |
|
|
Vivek Anand |
5ba4e2 |
output = self.app.post(
|
|
Vivek Anand |
5ba4e2 |
'/fork/foo/test/watch/settings/-1', data=data,
|
|
Vivek Anand |
5ba4e2 |
follow_redirects=True)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Vivek Anand |
5ba4e2 |
self.assertIn(
|
|
Vivek Anand |
5ba4e2 |
'</button>\n Watch status reset',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Vivek Anand |
5ba4e2 |
|
|
Pierre-Yves Chibon |
867895 |
def test_delete_report(self):
|
|
Pierre-Yves Chibon |
867895 |
""" Test the delete_report endpoint. """
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post('/test/delete/report')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
867895 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.get('/new/')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create new Project', output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
867895 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# No report specified
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'csrf_token':csrf_token
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'</button>\n Unknown report: None',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Report specified not in the project's reports
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'csrf_token':csrf_token,
|
|
Pierre-Yves Chibon |
867895 |
'report': 'foo'
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'</button>\n Unknown report: foo',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Create a report
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(project.reports, {})
|
|
Pierre-Yves Chibon |
867895 |
name = 'test report'
|
|
Pierre-Yves Chibon |
867895 |
url = '?foo=bar&baz=biz'
|
|
Pierre-Yves Chibon |
867895 |
pagure.lib.save_report(
|
|
Pierre-Yves Chibon |
867895 |
self.session,
|
|
Pierre-Yves Chibon |
867895 |
repo=project,
|
|
Pierre-Yves Chibon |
867895 |
name=name,
|
|
Pierre-Yves Chibon |
867895 |
url=url,
|
|
Pierre-Yves Chibon |
867895 |
username=None
|
|
Pierre-Yves Chibon |
867895 |
)
|
|
Pierre-Yves Chibon |
867895 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
867895 |
project.reports,
|
|
Pierre-Yves Chibon |
867895 |
{'test report': {'baz': 'biz', 'foo': 'bar'}}
|
|
Pierre-Yves Chibon |
867895 |
)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Missing CSRF
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'report': 'test report'
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'<title>Settings - test - Pagure</title>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
867895 |
project.reports,
|
|
Pierre-Yves Chibon |
867895 |
{'test report': {'baz': 'biz', 'foo': 'bar'}}
|
|
Pierre-Yves Chibon |
867895 |
)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Delete the report
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'csrf_token':csrf_token,
|
|
Pierre-Yves Chibon |
867895 |
'report': 'test report'
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'</button>\n List of reports updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(self.session, project_name='test')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(project.reports, {})
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
def test_delete_report_ns_project(self):
|
|
Pierre-Yves Chibon |
867895 |
""" Test the delete_report endpoint on a namespaced project. """
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post('/foo/test/delete/report')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 404)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
tests.create_projects(self.session)
|
|
Patrick Uiterwijk |
170974 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
user = tests.FakeUser()
|
|
Pierre-Yves Chibon |
867895 |
user.username = 'pingou'
|
|
Pierre-Yves Chibon |
b130e5 |
with tests.user_set(self.app.application, user):
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.get('/new/')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('Create new Project', output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Aurélien Bompard |
626417 |
csrf_token = output_text.split(
|
|
Pierre-Yves Chibon |
867895 |
'name="csrf_token" type="hidden" value="')[1].split('">')[0]
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
item = pagure.lib.model.Project(
|
|
Pierre-Yves Chibon |
867895 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
867895 |
namespace='foo',
|
|
Pierre-Yves Chibon |
867895 |
name='test',
|
|
Pierre-Yves Chibon |
867895 |
description='foo project #2',
|
|
Pierre-Yves Chibon |
867895 |
hook_token='aaabbb',
|
|
Pierre-Yves Chibon |
867895 |
)
|
|
Pierre-Yves Chibon |
867895 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
867895 |
self.session.commit()
|
|
Patrick Uiterwijk |
170974 |
gitrepo = os.path.join(self.path, 'repos', 'foo', 'test.git')
|
|
Pierre-Yves Chibon |
867895 |
pygit2.init_repository(gitrepo, bare=True)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# No report specified
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'csrf_token':csrf_token
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/foo/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'</button>\n Unknown report: None',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Report specified not in the project's reports
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'csrf_token':csrf_token,
|
|
Pierre-Yves Chibon |
867895 |
'report': 'foo'
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/foo/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'</button>\n Unknown report: foo',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Create a report
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(
|
|
Farhaan Bukhsh |
e498a1 |
self.session, project_name='test', namespace='foo')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(project.reports, {})
|
|
Pierre-Yves Chibon |
867895 |
name = 'test report'
|
|
Pierre-Yves Chibon |
867895 |
url = '?foo=bar&baz=biz'
|
|
Pierre-Yves Chibon |
867895 |
pagure.lib.save_report(
|
|
Pierre-Yves Chibon |
867895 |
self.session,
|
|
Pierre-Yves Chibon |
867895 |
repo=project,
|
|
Pierre-Yves Chibon |
867895 |
name=name,
|
|
Pierre-Yves Chibon |
867895 |
url=url,
|
|
Pierre-Yves Chibon |
867895 |
username=None
|
|
Pierre-Yves Chibon |
867895 |
)
|
|
Pierre-Yves Chibon |
867895 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(
|
|
Farhaan Bukhsh |
e498a1 |
self.session, project_name='test', namespace='foo')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
867895 |
project.reports,
|
|
Pierre-Yves Chibon |
867895 |
{'test report': {'baz': 'biz', 'foo': 'bar'}}
|
|
Pierre-Yves Chibon |
867895 |
)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Missing CSRF
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'report': 'test report'
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/foo/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'<title>Settings - foo/test - Pagure</title>',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(
|
|
Farhaan Bukhsh |
e498a1 |
self.session, project_name='test', namespace='foo')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(
|
|
Pierre-Yves Chibon |
867895 |
project.reports,
|
|
Pierre-Yves Chibon |
867895 |
{'test report': {'baz': 'biz', 'foo': 'bar'}}
|
|
Pierre-Yves Chibon |
867895 |
)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
867895 |
# Delete the report
|
|
Pierre-Yves Chibon |
867895 |
data = {
|
|
Pierre-Yves Chibon |
867895 |
'csrf_token':csrf_token,
|
|
Pierre-Yves Chibon |
867895 |
'report': 'test report'
|
|
Pierre-Yves Chibon |
867895 |
}
|
|
Pierre-Yves Chibon |
867895 |
output = self.app.post(
|
|
Pierre-Yves Chibon |
867895 |
'/foo/test/delete/report', data=data, follow_redirects=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Pierre-Yves Chibon |
867895 |
self.assertIn(
|
|
Pierre-Yves Chibon |
867895 |
'</button>\n List of reports updated',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Aurélien Bompard |
13bcde |
self.session.commit()
|
|
Pierre-Yves Chibon |
b130e5 |
project = pagure.lib.get_authorized_project(
|
|
Farhaan Bukhsh |
e498a1 |
self.session, project_name='test', namespace='foo')
|
|
Pierre-Yves Chibon |
867895 |
self.assertEqual(project.reports, {})
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
6a17d8 |
def test_open_pr_button_empty_repo(self):
|
|
Pierre-Yves Chibon |
6a17d8 |
""" Test "Open Pull-Request" button on empty project. """
|
|
Pierre-Yves Chibon |
6a17d8 |
|
|
Pierre-Yves Chibon |
6a17d8 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
6a17d8 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
6a17d8 |
|
|
Pierre-Yves Chibon |
6a17d8 |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
6a17d8 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
6a17d8 |
self.assertNotIn(
|
|
Aurélien Bompard |
626417 |
'href="/test/diff/master..master">Open Pull-Request',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
6a17d8 |
|
|
Pierre-Yves Chibon |
6a17d8 |
def test_open_pr_button(self):
|
|
Pierre-Yves Chibon |
6a17d8 |
""" Test "Open Pull-Request" button on non-empty project. """
|
|
Pierre-Yves Chibon |
6a17d8 |
|
|
Pierre-Yves Chibon |
6a17d8 |
tests.create_projects(self.session)
|
|
Pierre-Yves Chibon |
6a17d8 |
tests.create_projects_git(os.path.join(self.path, 'repos'), bare=True)
|
|
Pierre-Yves Chibon |
6a17d8 |
path = os.path.join(self.path, 'repos', 'test.git')
|
|
Pierre-Yves Chibon |
6a17d8 |
tests.add_content_git_repo(path)
|
|
Pierre-Yves Chibon |
6a17d8 |
|
|
Pierre-Yves Chibon |
6a17d8 |
output = self.app.get('/test')
|
|
Pierre-Yves Chibon |
6a17d8 |
self.assertEqual(output.status_code, 200)
|
|
Aurélien Bompard |
626417 |
output_text = output.get_data(as_text=True)
|
|
Aurélien Bompard |
626417 |
self.assertNotIn('This repo is brand new! ', output_text)
|
|
Pierre-Yves Chibon |
6a17d8 |
self.assertIn(
|
|
Aurélien Bompard |
626417 |
'href="/test/diff/master..master">Open Pull-Request',
|
|
Aurélien Bompard |
626417 |
output_text)
|
|
Pierre-Yves Chibon |
867895 |
|
|
Pierre-Yves Chibon |
78ce15 |
if __name__ == '__main__':
|
|
Pierre-Yves Chibon |
867895 |
unittest.main(verbosity=2)
|