diff --git a/tests/__init__.py b/tests/__init__.py index a1f80c0..2ad6541 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -8,9 +8,12 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.7'] import pkg_resources +import imp import json import logging import os @@ -22,21 +25,21 @@ import sys import tempfile import time import unittest +from io import StringIO logging.basicConfig(stream=sys.stderr) -# Always enable performance counting for tests -os.environ['PAGURE_PERFREPO'] = 'true' - +from bs4 import BeautifulSoup from contextlib import contextmanager from datetime import date from datetime import datetime from datetime import timedelta from functools import wraps -from urlparse import urlparse, parse_qs +from six.moves.urllib.parse import urlparse, parse_qs import mock import pygit2 import redis +import six from bs4 import BeautifulSoup from celery.app.task import EagerResult @@ -44,6 +47,10 @@ from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import scoped_session +if six.PY2: + # Always enable performance counting for tests + os.environ['PAGURE_PERFREPO'] = 'true' + sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -82,6 +89,7 @@ ATTACHMENTS_FOLDER = '%(path)s/attachments' BROKER_URL = 'redis+socket://%(global_path)s/broker' CELERY_CONFIG = { "task_always_eager": True, + #"task_eager_propagates": True, } """ # The Celery docs warn against using task_always_eager: @@ -132,21 +140,29 @@ def create_maybe_waiter(method, getter): # Handle the POST wait case form_url = None form_args = None - if 'id="waitform"' in result.data: - form_url = get_post_target(result.data) - form_args = get_post_args(result.data) - form_args['csrf_token'] = result.data.split( + try: + result_text = result.get_data(as_text=True) + except UnicodeDecodeError: + return result + if 'id="waitform"' in result_text: + form_url = get_post_target(result_text) + form_args = get_post_args(result_text) + form_args['csrf_token'] = result_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] count = 0 - while 'We are waiting for your task to finish.' in result.data: + while 'We are waiting for your task to finish.' in result_text: # Resolve wait page - target_url = get_wait_target(result.data) + target_url = get_wait_target(result_text) if count > 10: time.sleep(0.5) else: time.sleep(0.1) result = getter(target_url, follow_redirects=True) + try: + result_text = result.get_data(as_text=True) + except UnicodeDecodeError: + return result if count > 50: raise Exception('Had to wait too long') else: @@ -199,7 +215,7 @@ def _populate_db(session): item = pagure.lib.model.User( user='pingou', fullname='PY C', - password='foo', + password=b'foo', default_email='bar@pingou.com', ) session.add(item) @@ -215,7 +231,7 @@ def _populate_db(session): item = pagure.lib.model.User( user='foo', fullname='foo bar', - password='foo', + password=b'foo', default_email='foo@bar.com', ) session.add(item) @@ -345,8 +361,8 @@ class SimplePagureTest(unittest.TestCase): os.environ["PAGURE_CONFIG"] = config_path pagure_config.update(reload_config()) - reload(pagure.lib.tasks) - reload(pagure.lib.tasks_services) + imp.reload(pagure.lib.tasks) + imp.reload(pagure.lib.tasks_services) self._app = pagure.flask_app.create_app({'DB_URL': self.dbpath}) # Remove the log handlers for the tests @@ -409,7 +425,7 @@ class SimplePagureTest(unittest.TestCase): output = self.app.get(url) self.assertEqual(output.status_code, 200) - return output.data.split( + return output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] def assertURLEqual(self, url_1, url_2): @@ -460,7 +476,7 @@ class FakeUser(object): # pylint: disable=too-few-public-methods :arg groups: list of the groups in which this fake user is supposed to be. """ - if isinstance(groups, basestring): + if isinstance(groups, six.string_types): groups = [groups] self.id = id self.groups = groups or [] @@ -916,8 +932,6 @@ def add_binary_git_repo(folder, filename): @contextmanager def capture_output(merge_stderr=True): - import sys - from cStringIO import StringIO oldout, olderr = sys.stdout, sys.stderr try: out = StringIO() @@ -932,6 +946,26 @@ def capture_output(merge_stderr=True): sys.stdout, sys.stderr = oldout, olderr +def get_alerts(html): + soup = BeautifulSoup(html, "html.parser") + alerts = [] + for element in soup.find_all("div", class_="alert"): + severity = None + for class_ in element["class"]: + if not class_.startswith("alert-"): + continue + if class_ == "alert-dismissible": + continue + severity = class_[len("alert-"):] + break + element.find("button").decompose() # close button + alerts.append(dict( + severity=severity, + text="".join(element.stripped_strings) + )) + return alerts + + if __name__ == '__main__': SUITE = unittest.TestLoader().loadTestsFromTestCase(Modeltests) unittest.TextTestRunner(verbosity=2).run(SUITE) diff --git a/tests/test_alembic.py b/tests/test_alembic.py index 6aec50c..9b35983 100644 --- a/tests/test_alembic.py +++ b/tests/test_alembic.py @@ -34,7 +34,7 @@ class TestAlembic(unittest.TestCase): ['grep', ' (head), '], stdin=proc1.stdout, stdout=subprocess.PIPE) stdout = proc2.communicate()[0] - stdout = stdout.strip().split('\n') + stdout = stdout.strip().decode('utf-8').split('\n') self.assertEqual(len(stdout), 1) diff --git a/tests/test_pagure_flask.py b/tests/test_pagure_flask.py index f2412a0..85ec699 100644 --- a/tests/test_pagure_flask.py +++ b/tests/test_pagure_flask.py @@ -56,7 +56,8 @@ class PagureGetRemoteRepoPath(tests.SimplePagureTest): """ Test is_repo_committer in pagure when there is no logged in user. """ repo = pagure.lib._get_project(self.session, 'test') - output = pagure.utils.is_repo_committer(repo) + with self.app.application.app_context(): + output = pagure.utils.is_repo_committer(repo) self.assertFalse(output) def test_is_repo_committer_logged_in(self): diff --git a/tests/test_pagure_flask_api.py b/tests/test_pagure_flask_api.py index 927e497..bd239f4 100644 --- a/tests/test_pagure_flask_api.py +++ b/tests/test_pagure_flask_api.py @@ -35,9 +35,9 @@ class PagureFlaskApitests(tests.SimplePagureTest): output = self.app.get('/api/0/version') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(data['version'], pagure.__api_version__) - self.assertEqual(data.keys(), ['version']) + self.assertEqual(sorted(data.keys()), ['version']) def test_api_project_tags(self): """ Test the api_project_tags function. """ @@ -45,14 +45,14 @@ class PagureFlaskApitests(tests.SimplePagureTest): output = self.app.get('/api/0/foo/tags/') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(set(data.keys()), set(['output', 'error'])) self.assertEqual(data['output'], 'notok') self.assertEqual(data['error'], 'Project not found') output = self.app.get('/api/0/test/tags/') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['tags', 'total_tags']) self.assertEqual(data['tags'], []) self.assertEqual(data['total_tags'], 0) @@ -82,25 +82,60 @@ class PagureFlaskApitests(tests.SimplePagureTest): output = self.app.get('/api/0/test/tags/') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['tags', 'total_tags']) self.assertEqual(data['tags'], ['tag1']) self.assertEqual(data['total_tags'], 1) output = self.app.get('/api/0/test/tags/?pattern=t') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['tags', 'total_tags']) self.assertEqual(data['tags'], ['tag1']) self.assertEqual(data['total_tags'], 1) output = self.app.get('/api/0/test/tags/?pattern=p') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['tags', 'total_tags']) self.assertEqual(data['tags'], []) self.assertEqual(data['total_tags'], 0) + def test_api_groups(self): + """ Test the api_groups function. """ + + # Add a couple of groups so that we can list them + item = pagure.lib.model.PagureGroup( + group_name='group1', + group_type='user', + display_name='User group', + user_id=1, # pingou + ) + self.session.add(item) + + item = pagure.lib.model.PagureGroup( + group_name='rel-eng', + group_type='user', + display_name='Release engineering group', + user_id=1, # pingou + ) + self.session.add(item) + self.session.commit() + + output = self.app.get('/api/0/groups') + self.assertEqual(output.status_code, 200) + data = json.loads(output.get_data(as_text=True)) + self.assertEqual(data['groups'], ['group1', 'rel-eng']) + self.assertEqual(sorted(data.keys()), ['groups', 'total_groups']) + self.assertEqual(data['total_groups'], 2) + + output = self.app.get('/api/0/groups?pattern=re') + self.assertEqual(output.status_code, 200) + data = json.loads(output.get_data(as_text=True)) + self.assertEqual(data['groups'], ['rel-eng']) + self.assertEqual(sorted(data.keys()), ['groups', 'total_groups']) + self.assertEqual(data['total_groups'], 1) + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/tests/test_pagure_flask_api_auth.py b/tests/test_pagure_flask_api_auth.py index 9369886..98dd387 100644 --- a/tests/test_pagure_flask_api_auth.py +++ b/tests/test_pagure_flask_api_auth.py @@ -36,7 +36,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/foo/new_issue') self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -45,7 +45,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/foo/new_issue', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -58,7 +58,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/test/new_issue') self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -67,7 +67,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/test/new_issue', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -80,7 +80,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/test/new_issue') self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -89,7 +89,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/test/new_issue', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -103,7 +103,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/test/new_issue') self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -112,7 +112,7 @@ class PagureFlaskApiAuthtests(tests.SimplePagureTest): output = self.app.post('/api/0/test/new_issue', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { diff --git a/tests/test_pagure_flask_api_fork.py b/tests/test_pagure_flask_api_fork.py index 65f1b82..d2e51ec 100644 --- a/tests/test_pagure_flask_api_fork.py +++ b/tests/test_pagure_flask_api_fork.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -69,7 +71,7 @@ class PagureFlaskApiForktests(tests.Modeltests): # Invalid repo output = self.app.get('/api/0/foo/pull-requests') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -81,7 +83,7 @@ class PagureFlaskApiForktests(tests.Modeltests): # List pull-requests output = self.app.get('/api/0/test/pull-requests') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['requests'][0]['date_created'] = '1431414800' data['requests'][0]['updated_on'] = '1431414800' data['requests'][0]['project']['date_created'] = '1431414800' @@ -200,7 +202,7 @@ class PagureFlaskApiForktests(tests.Modeltests): # Access Pull-Request authenticated output = self.app.get('/api/0/test/pull-requests', headers=headers) self.assertEqual(output.status_code, 200) - data2 = json.loads(output.data) + data2 = json.loads(output.get_data(as_text=True)) data2['requests'][0]['date_created'] = '1431414800' data2['requests'][0]['updated_on'] = '1431414800' data2['requests'][0]['project']['date_created'] = '1431414800' @@ -239,7 +241,7 @@ class PagureFlaskApiForktests(tests.Modeltests): # Invalid repo output = self.app.get('/api/0/foo/pull-request/1') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -251,7 +253,7 @@ class PagureFlaskApiForktests(tests.Modeltests): # Invalid issue for this repo output = self.app.get('/api/0/test2/pull-request/1') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -263,7 +265,7 @@ class PagureFlaskApiForktests(tests.Modeltests): # Valid issue output = self.app.get('/api/0/test/pull-request/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1431414800' data['updated_on'] = '1431414800' data['project']['date_created'] = '1431414800' @@ -372,7 +374,7 @@ class PagureFlaskApiForktests(tests.Modeltests): # Access Pull-Request authenticated output = self.app.get('/api/0/test/pull-request/1', headers=headers) self.assertEqual(output.status_code, 200) - data2 = json.loads(output.data) + data2 = json.loads(output.get_data(as_text=True)) data2['date_created'] = '1431414800' data2['project']['date_created'] = '1431414800' data2['project']['date_modified'] = '1431414800' @@ -416,7 +418,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/close', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -429,7 +431,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/close', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -438,7 +440,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/2/close', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -473,7 +475,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/close', headers=headers) self.assertEqual(output.status_code, 403) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -489,7 +491,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/close', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {"message": "Pull-request closed!"} @@ -533,7 +535,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -546,7 +548,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -555,7 +557,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/2/merge', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -590,7 +592,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 403) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -606,7 +608,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {"message": "Changes merged!"} @@ -650,7 +652,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -663,7 +665,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -673,7 +675,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/2/merge', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -709,7 +711,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 403) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -725,7 +727,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {"message": "Changes merged!"} @@ -746,7 +748,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -759,7 +761,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/comment', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -768,7 +770,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -808,7 +810,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -832,7 +834,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -859,7 +861,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -872,7 +874,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -885,7 +887,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -925,7 +927,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -949,7 +951,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -992,7 +994,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/subscribe', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1005,7 +1007,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/subscribe', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -1014,12 +1016,12 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/subscribe', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Pull-Request not found', - u'error_code': u'ENOREQ' + 'error': 'Pull-Request not found', + 'error_code': 'ENOREQ' } ) @@ -1053,7 +1055,7 @@ class PagureFlaskApiForktests(tests.Modeltests): '/api/0/test/pull-request/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are no longer watching this pull-request'} @@ -1064,7 +1066,7 @@ class PagureFlaskApiForktests(tests.Modeltests): '/api/0/test/pull-request/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are no longer watching this pull-request'} @@ -1084,7 +1086,7 @@ class PagureFlaskApiForktests(tests.Modeltests): '/api/0/test/pull-request/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are now watching this pull-request'} @@ -1096,7 +1098,7 @@ class PagureFlaskApiForktests(tests.Modeltests): '/api/0/test/pull-request/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are now watching this pull-request'} @@ -1115,7 +1117,7 @@ class PagureFlaskApiForktests(tests.Modeltests): '/api/0/test/pull-request/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are no longer watching this pull-request'} @@ -1154,10 +1156,10 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/foobar/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, - {u'error': u'Project not found', u'error_code': u'ENOPROJECT'} + {'error': 'Project not found', 'error_code': 'ENOPROJECT'} ) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) @@ -1186,13 +1188,13 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Invalid or incomplete input submitted', - u'error_code': u'EINVALIDREQ', - u'errors': {u'title': [u'This field is required.']} + 'error': 'Invalid or incomplete input submitted', + 'error_code': 'EINVALIDREQ', + 'errors': {'title': ['This field is required.']} } ) @@ -1222,13 +1224,13 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Invalid or incomplete input submitted', - u'error_code': u'EINVALIDREQ', - u'errors': {u'branch_to': [u'This field is required.']} + 'error': 'Invalid or incomplete input submitted', + 'error_code': 'EINVALIDREQ', + 'errors': {'branch_to': ['This field is required.']} } ) @@ -1258,13 +1260,13 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Invalid or incomplete input submitted', - u'error_code': u'EINVALIDREQ', - u'errors': {u'branch_from': [u'This field is required.']} + 'error': 'Invalid or incomplete input submitted', + 'error_code': 'EINVALIDREQ', + 'errors': {'branch_from': ['This field is required.']} } ) @@ -1303,12 +1305,12 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Pull-Request have been deactivated for this project', - u'error_code': u'EPULLREQUESTSDISABLED' + 'error': 'Pull-Request have been deactivated for this project', + 'error_code': 'EPULLREQUESTSDISABLED' } ) @@ -1347,13 +1349,13 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'This repo enforces that all commits are signed ' + 'error': 'This repo enforces that all commits are signed ' 'off by their author.', - u'error_code': u'ENOSIGNEDOFF' + 'error_code': 'ENOSIGNEDOFF' } ) @@ -1392,13 +1394,13 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Invalid or incomplete input submitted', - u'error_code': u'EINVALIDREQ', - u'errors': u'Branch foobarbaz does not exist' + 'error': 'Invalid or incomplete input submitted', + 'error_code': 'EINVALIDREQ', + 'errors': 'Branch foobarbaz does not exist' } ) @@ -1437,13 +1439,13 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Invalid or incomplete input submitted', - u'error_code': u'EINVALIDREQ', - u'errors': u'Branch foobarbaz could not be found in the ' + 'error': 'Invalid or incomplete input submitted', + 'error_code': 'EINVALIDREQ', + 'errors': 'Branch foobarbaz could not be found in the ' 'target repo' } ) @@ -1473,89 +1475,89 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['project']['date_created'] = u'1516348115' - data['project']['date_modified'] = u'1516348115' - data['repo_from']['date_created'] = u'1516348115' - data['repo_from']['date_modified'] = u'1516348115' - data['uid'] = u'e8b68df8711648deac67c3afed15a798' - data['commit_start'] = u'114f1b468a5f05e635fcb6394273f3f907386eab' - data['commit_stop'] = u'114f1b468a5f05e635fcb6394273f3f907386eab' - data['date_created'] = u'1516348115' - data['last_updated'] = u'1516348115' - data['updated_on'] = u'1516348115' + data = json.loads(output.get_data(as_text=True)) + data['project']['date_created'] = '1516348115' + data['project']['date_modified'] = '1516348115' + data['repo_from']['date_created'] = '1516348115' + data['repo_from']['date_modified'] = '1516348115' + data['uid'] = 'e8b68df8711648deac67c3afed15a798' + data['commit_start'] = '114f1b468a5f05e635fcb6394273f3f907386eab' + data['commit_stop'] = '114f1b468a5f05e635fcb6394273f3f907386eab' + data['date_created'] = '1516348115' + data['last_updated'] = '1516348115' + data['updated_on'] = '1516348115' self.assertDictEqual( data, { - u'assignee': None, - u'branch': u'master', - u'branch_from': u'test', - u'cached_merge_status': u'unknown', - u'closed_at': None, - u'closed_by': None, - u'comments': [], - u'commit_start': u'114f1b468a5f05e635fcb6394273f3f907386eab', - u'commit_stop': u'114f1b468a5f05e635fcb6394273f3f907386eab', - u'date_created': u'1516348115', - u'id': 1, - u'initial_comment': u'Nothing much, the changes speak for themselves', - u'last_updated': u'1516348115', - u'project': {u'access_groups': {u'admin': [], - u'commit': [], - u'ticket':[]}, - u'access_users': {u'admin': [], - u'commit': [], - u'owner': [u'pingou'], - u'ticket': []}, - u'close_status': [u'Invalid', - u'Insufficient data', - u'Fixed', - u'Duplicate'], - u'custom_keys': [], - u'date_created': u'1516348115', - u'date_modified': u'1516348115', - u'description': u'test project #1', - u'fullname': u'test', - u'id': 1, - u'milestones': {}, - u'name': u'test', - u'namespace': None, - u'parent': None, - u'priorities': {}, - u'tags': [], - u'url_path': u'test', - u'user': {u'fullname': u'PY C', u'name': u'pingou'}}, - u'remote_git': None, - u'repo_from': {u'access_groups': {u'admin': [], - u'commit': [], - u'ticket': []}, - u'access_users': {u'admin': [], - u'commit': [], - u'owner': [u'pingou'], - u'ticket': []}, - u'close_status': [u'Invalid', - u'Insufficient data', - u'Fixed', - u'Duplicate'], - u'custom_keys': [], - u'date_created': u'1516348115', - u'date_modified': u'1516348115', - u'description': u'test project #1', - u'fullname': u'test', - u'id': 1, - u'milestones': {}, - u'name': u'test', - u'namespace': None, - u'parent': None, - u'priorities': {}, - u'tags': [], - u'url_path': u'test', - u'user': {u'fullname': u'PY C', u'name': u'pingou'}}, - u'status': u'Open', - u'title': u'Test PR', - u'uid': u'e8b68df8711648deac67c3afed15a798', - u'updated_on': u'1516348115', - u'user': {u'fullname': u'PY C', u'name': u'pingou'} + 'assignee': None, + 'branch': 'master', + 'branch_from': 'test', + 'cached_merge_status': 'unknown', + 'closed_at': None, + 'closed_by': None, + 'comments': [], + 'commit_start': '114f1b468a5f05e635fcb6394273f3f907386eab', + 'commit_stop': '114f1b468a5f05e635fcb6394273f3f907386eab', + 'date_created': '1516348115', + 'id': 1, + 'initial_comment': 'Nothing much, the changes speak for themselves', + 'last_updated': '1516348115', + 'project': {'access_groups': {'admin': [], + 'commit': [], + 'ticket':[]}, + 'access_users': {'admin': [], + 'commit': [], + 'owner': ['pingou'], + 'ticket': []}, + 'close_status': ['Invalid', + 'Insufficient data', + 'Fixed', + 'Duplicate'], + 'custom_keys': [], + 'date_created': '1516348115', + 'date_modified': '1516348115', + 'description': 'test project #1', + 'fullname': 'test', + 'id': 1, + 'milestones': {}, + 'name': 'test', + 'namespace': None, + 'parent': None, + 'priorities': {}, + 'tags': [], + 'url_path': 'test', + 'user': {'fullname': 'PY C', 'name': 'pingou'}}, + 'remote_git': None, + 'repo_from': {'access_groups': {'admin': [], + 'commit': [], + 'ticket': []}, + 'access_users': {'admin': [], + 'commit': [], + 'owner': ['pingou'], + 'ticket': []}, + 'close_status': ['Invalid', + 'Insufficient data', + 'Fixed', + 'Duplicate'], + 'custom_keys': [], + 'date_created': '1516348115', + 'date_modified': '1516348115', + 'description': 'test project #1', + 'fullname': 'test', + 'id': 1, + 'milestones': {}, + 'name': 'test', + 'namespace': None, + 'parent': None, + 'priorities': {}, + 'tags': [], + 'url_path': 'test', + 'user': {'fullname': 'PY C', 'name': 'pingou'}}, + 'status': 'Open', + 'title': 'Test PR', + 'uid': 'e8b68df8711648deac67c3afed15a798', + 'updated_on': '1516348115', + 'user': {'fullname': 'PY C', 'name': 'pingou'} } ) @@ -1585,89 +1587,89 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/new', headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['project']['date_created'] = u'1516348115' - data['project']['date_modified'] = u'1516348115' - data['repo_from']['date_created'] = u'1516348115' - data['repo_from']['date_modified'] = u'1516348115' - data['uid'] = u'e8b68df8711648deac67c3afed15a798' - data['commit_start'] = u'114f1b468a5f05e635fcb6394273f3f907386eab' - data['commit_stop'] = u'114f1b468a5f05e635fcb6394273f3f907386eab' - data['date_created'] = u'1516348115' - data['last_updated'] = u'1516348115' - data['updated_on'] = u'1516348115' + data = json.loads(output.get_data(as_text=True)) + data['project']['date_created'] = '1516348115' + data['project']['date_modified'] = '1516348115' + data['repo_from']['date_created'] = '1516348115' + data['repo_from']['date_modified'] = '1516348115' + data['uid'] = 'e8b68df8711648deac67c3afed15a798' + data['commit_start'] = '114f1b468a5f05e635fcb6394273f3f907386eab' + data['commit_stop'] = '114f1b468a5f05e635fcb6394273f3f907386eab' + data['date_created'] = '1516348115' + data['last_updated'] = '1516348115' + data['updated_on'] = '1516348115' self.assertDictEqual( data, { - u'assignee': None, - u'branch': u'master', - u'branch_from': u'test', - u'cached_merge_status': u'unknown', - u'closed_at': None, - u'closed_by': None, - u'comments': [], - u'commit_start': u'114f1b468a5f05e635fcb6394273f3f907386eab', - u'commit_stop': u'114f1b468a5f05e635fcb6394273f3f907386eab', - u'date_created': u'1516348115', - u'id': 1, - u'initial_comment': None, - u'last_updated': u'1516348115', - u'project': {u'access_groups': {u'admin': [], - u'commit': [], - u'ticket':[]}, - u'access_users': {u'admin': [], - u'commit': [], - u'owner': [u'pingou'], - u'ticket': []}, - u'close_status': [u'Invalid', - u'Insufficient data', - u'Fixed', - u'Duplicate'], - u'custom_keys': [], - u'date_created': u'1516348115', - u'date_modified': u'1516348115', - u'description': u'test project #1', - u'fullname': u'test', - u'id': 1, - u'milestones': {}, - u'name': u'test', - u'namespace': None, - u'parent': None, - u'priorities': {}, - u'tags': [], - u'url_path': u'test', - u'user': {u'fullname': u'PY C', u'name': u'pingou'}}, - u'remote_git': None, - u'repo_from': {u'access_groups': {u'admin': [], - u'commit': [], - u'ticket': []}, - u'access_users': {u'admin': [], - u'commit': [], - u'owner': [u'pingou'], - u'ticket': []}, - u'close_status': [u'Invalid', - u'Insufficient data', - u'Fixed', - u'Duplicate'], - u'custom_keys': [], - u'date_created': u'1516348115', - u'date_modified': u'1516348115', - u'description': u'test project #1', - u'fullname': u'test', - u'id': 1, - u'milestones': {}, - u'name': u'test', - u'namespace': None, - u'parent': None, - u'priorities': {}, - u'tags': [], - u'url_path': u'test', - u'user': {u'fullname': u'PY C', u'name': u'pingou'}}, - u'status': u'Open', - u'title': u'Test PR', - u'uid': u'e8b68df8711648deac67c3afed15a798', - u'updated_on': u'1516348115', - u'user': {u'fullname': u'PY C', u'name': u'pingou'} + 'assignee': None, + 'branch': 'master', + 'branch_from': 'test', + 'cached_merge_status': 'unknown', + 'closed_at': None, + 'closed_by': None, + 'comments': [], + 'commit_start': '114f1b468a5f05e635fcb6394273f3f907386eab', + 'commit_stop': '114f1b468a5f05e635fcb6394273f3f907386eab', + 'date_created': '1516348115', + 'id': 1, + 'initial_comment': None, + 'last_updated': '1516348115', + 'project': {'access_groups': {'admin': [], + 'commit': [], + 'ticket':[]}, + 'access_users': {'admin': [], + 'commit': [], + 'owner': ['pingou'], + 'ticket': []}, + 'close_status': ['Invalid', + 'Insufficient data', + 'Fixed', + 'Duplicate'], + 'custom_keys': [], + 'date_created': '1516348115', + 'date_modified': '1516348115', + 'description': 'test project #1', + 'fullname': 'test', + 'id': 1, + 'milestones': {}, + 'name': 'test', + 'namespace': None, + 'parent': None, + 'priorities': {}, + 'tags': [], + 'url_path': 'test', + 'user': {'fullname': 'PY C', 'name': 'pingou'}}, + 'remote_git': None, + 'repo_from': {'access_groups': {'admin': [], + 'commit': [], + 'ticket': []}, + 'access_users': {'admin': [], + 'commit': [], + 'owner': ['pingou'], + 'ticket': []}, + 'close_status': ['Invalid', + 'Insufficient data', + 'Fixed', + 'Duplicate'], + 'custom_keys': [], + 'date_created': '1516348115', + 'date_modified': '1516348115', + 'description': 'test project #1', + 'fullname': 'test', + 'id': 1, + 'milestones': {}, + 'name': 'test', + 'namespace': None, + 'parent': None, + 'priorities': {}, + 'tags': [], + 'url_path': 'test', + 'user': {'fullname': 'PY C', 'name': 'pingou'}}, + 'status': 'Open', + 'title': 'Test PR', + 'uid': 'e8b68df8711648deac67c3afed15a798', + 'updated_on': '1516348115', + 'user': {'fullname': 'PY C', 'name': 'pingou'} } ) diff --git a/tests/test_pagure_flask_api_group.py b/tests/test_pagure_flask_api_group.py index 5a87a2e..53b5f75 100644 --- a/tests/test_pagure_flask_api_group.py +++ b/tests/test_pagure_flask_api_group.py @@ -81,14 +81,14 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): output = self.app.get('/api/0/groups') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(data['groups'], ['some_group', 'group1', 'rel-eng']) self.assertEqual(sorted(data.keys()), ['groups', 'total_groups']) self.assertEqual(data['total_groups'], 3) output = self.app.get('/api/0/groups?pattern=re') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(data['groups'], ['rel-eng']) self.assertEqual(sorted(data.keys()), ['groups', 'total_groups']) self.assertEqual(data['total_groups'], 1) @@ -116,7 +116,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): output = self.app.get('/api/0/groups?extended=1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( data, { @@ -165,7 +165,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "group_type": "user", "name": "some_group" } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) @@ -188,7 +188,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "group_type": "user", "name": "some_group" } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) @@ -235,7 +235,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "name": "some_group" } self.maxDiff = None - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) @@ -246,7 +246,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): """ output = self.app.get("/api/0/group/some_group3") self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(data['error'], 'Group not found') self.assertEqual(data['error_code'], 'ENOGROUP') @@ -337,7 +337,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): } ] } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' projects = [] for p in data['projects']: @@ -349,7 +349,10 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): output2 = self.app.get( '/api/0/group/some_group?projects=1&acl=admin', headers=headers) - self.assertEqual(output.data.split('\n'), output2.data.split('\n')) + self.assertListEqual( + output.get_data(as_text=True).split('\n'), + output2.get_data(as_text=True).split('\n') + ) def test_api_view_group_w_projects_and_acl_commit(self): """ @@ -431,7 +434,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): } ] } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' projects = [] for p in data['projects']: @@ -521,7 +524,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): } ] } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' projects = [] for p in data['projects']: @@ -565,7 +568,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "name": "some_group", "projects": [] } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) @@ -603,7 +606,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "name": "some_group", "projects": [] } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) @@ -639,7 +642,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "name": "rel-eng", "projects": [] } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py index 228bae7..539a18f 100644 --- a/tests/test_pagure_flask_api_issue.py +++ b/tests/test_pagure_flask_api_issue.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -308,7 +310,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Valid token, wrong project output = self.app.post('/api/0/test2/new_issue', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -318,7 +320,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # No input output = self.app.post('/api/0/test/new_issue', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -339,7 +341,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/foo/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -352,7 +354,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -374,7 +376,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -394,7 +396,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -423,7 +425,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' @@ -445,7 +447,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -466,7 +468,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -487,7 +489,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -508,7 +510,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -528,7 +530,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -549,7 +551,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' exp = copy.deepcopy(FULL_ISSUE_LIST[1]) @@ -575,7 +577,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Valid token, invalid request - No input output = self.app.post('/api/0/test2/new_issue', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -591,7 +593,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Another project, still an invalid request - No input output = self.app.post('/api/0/test/new_issue', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -612,7 +614,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/foo/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -625,7 +627,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -647,7 +649,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -673,7 +675,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' @@ -695,7 +697,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -716,7 +718,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -737,7 +739,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -758,7 +760,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -778,7 +780,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -799,7 +801,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -819,7 +821,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' exp = copy.deepcopy(FULL_ISSUE_LIST[1]) @@ -840,7 +842,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Invalid repo output = self.app.get('/api/0/foo/issues') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -852,7 +854,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues output = self.app.get('/api/0/test/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -893,7 +895,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access issues un-authenticated output = self.app.get('/api/0/test/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -937,7 +939,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access issues authenticated but wrong token output = self.app.get('/api/0/test/issues', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -967,7 +969,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access issues authenticated correctly output = self.app.get('/api/0/test/issues', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1015,7 +1017,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access issues authenticated but wrong token output = self.app.get('/api/0/test/issues', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1045,7 +1047,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access issues authenticated correctly output = self.app.get('/api/0/test/issues', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1071,7 +1073,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List closed issue output = self.app.get('/api/0/test/issues?status=Closed', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issues'][0]['date_created'] = '1431414800' data['issues'][0]['last_updated'] = '1431414800' self.assertDictEqual( @@ -1096,7 +1098,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List closed issue output = self.app.get('/api/0/test/issues?status=Invalid', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1119,7 +1121,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all issues output = self.app.get('/api/0/test/issues?status=All', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['last_updated'] = '1431414800' data['issues'][idx]['date_created'] = '1431414800' @@ -1154,7 +1156,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List issues in reverse order output = self.app.get('/api/0/test/issues?order=asc', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['last_updated'] = '1431414800' data['issues'][idx]['date_created'] = '1431414800' @@ -1217,7 +1219,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues output = self.app.get('/api/0/test/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1245,7 +1247,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all issues of the milestone v1.0 output = self.app.get('/api/0/test/issues?milestones=v1.0') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1315,7 +1317,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues output = self.app.get('/api/0/test/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1343,7 +1345,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all issues of the priority high (ie: 1) output = self.app.get('/api/0/test/issues?priority=high') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1368,7 +1370,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get('/api/0/test/issues?priority=1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1404,7 +1406,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Try getting issues with an invalid priority output = self.app.get('/api/0/test/issues?priority=foobar') self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1455,7 +1457,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues output = self.app.get('/api/0/test/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1483,7 +1485,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all issues with no milestone output = self.app.get('/api/0/test/issues?no_stones=1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1509,7 +1511,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all issues with a milestone output = self.app.get('/api/0/test/issues?no_stones=0') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1592,7 +1594,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Invalid repo output = self.app.get('/api/0/foo/issues') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1604,7 +1606,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues output = self.app.get('/api/0/test/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1633,7 +1635,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues from the start output = self.app.get('/api/0/test/issues?since=%s' % start) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1659,7 +1661,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues from the middle output = self.app.get('/api/0/test/issues?since=%s' % middle) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1685,7 +1687,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # List all opened issues at the end output = self.app.get('/api/0/test/issues?since=%s' % final) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1714,7 +1716,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get( '/api/0/test/issues?since=%s' % final, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for idx in range(len(data['issues'])): data['issues'][idx]['last_updated'] = '1431414800' data['issues'][idx]['date_created'] = '1431414800' @@ -1763,7 +1765,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Invalid repo output = self.app.get('/api/0/foo/issue/1') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1775,7 +1777,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Invalid issue for this repo output = self.app.get('/api/0/test2/issue/1') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1787,7 +1789,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Valid issue output = self.app.get('/api/0/test/issue/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -1835,7 +1837,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access private issue un-authenticated output = self.app.get('/api/0/test/issue/7') self.assertEqual(output.status_code, 403) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1849,7 +1851,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access private issue authenticated but non-existing token output = self.app.get('/api/0/test/issue/6', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -1872,7 +1874,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access private issue authenticated but wrong token output = self.app.get('/api/0/test/issue/7', headers=headers) self.assertEqual(output.status_code, 403) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1886,7 +1888,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access private issue authenticated correctly output = self.app.get('/api/0/test/issue/6', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -1919,7 +1921,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Access private issue authenticated correctly using the issue's uid output = self.app.get('/api/0/test/issue/aaabbbccc', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -1967,7 +1969,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Invalid project output = self.app.post('/api/0/foo/issue/1/milestone', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -1979,7 +1981,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Valid token, wrong project output = self.app.post('/api/0/test2/issue/1/milestone', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -1989,7 +1991,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # No issue output = self.app.post('/api/0/test/issue/1/milestone', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2025,7 +2027,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/milestone', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'No changes'} @@ -2044,7 +2046,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/milestone', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2066,7 +2068,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/milestone', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2085,7 +2087,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/milestone', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2108,7 +2110,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/milestone', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2125,7 +2127,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/milestone', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2146,7 +2148,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/foo/issue/1/milestone', data=data, headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2191,7 +2193,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -2213,7 +2215,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Issue and comment exists output = self.app.get('/api/0/test/issue/1/comment/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." @@ -2239,7 +2241,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Issue and comment exists, using UID output = self.app.get('/api/0/test/issue/aaabbbccc1/comment/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." @@ -2309,7 +2311,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -2333,7 +2335,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): headers = {'Authorization': 'token foo_token_2'} output = self.app.get('/api/0/test/issue/1/comment/1', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." @@ -2372,7 +2374,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Invalid project output = self.app.post('/api/0/foo/issue/1/assign', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2384,7 +2386,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Valid token, wrong project output = self.app.post('/api/0/test2/issue/1/assign', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2394,7 +2396,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # No input output = self.app.post('/api/0/test/issue/1/assign', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2436,7 +2438,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2446,7 +2448,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Assignee reset'} @@ -2461,7 +2463,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Nothing to change'} @@ -2475,7 +2477,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2486,7 +2488,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Assignee reset'} @@ -2497,7 +2499,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2568,7 +2570,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/foo/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2600,7 +2602,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/foo/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2645,7 +2647,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data={}, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Assignee reset'} @@ -2658,12 +2660,12 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/assign', data=data, headers=headers) self.assertEqual(output.status_code, 403) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'You are not allowed to view this issue', - u'error_code': u'EISSUENOTALLOWED' + 'error': 'You are not allowed to view this issue', + 'error_code': 'EISSUENOTALLOWED' } ) @@ -2698,7 +2700,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/foo/issue/1/subscribe', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2711,7 +2713,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test2/issue/1/subscribe', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2722,7 +2724,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/subscribe', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2759,7 +2761,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are no longer watching this issue'} @@ -2769,7 +2771,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are no longer watching this issue'} @@ -2787,7 +2789,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are now watching this issue'} @@ -2798,7 +2800,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are now watching this issue'} @@ -2815,7 +2817,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/subscribe', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'You are no longer watching this issue'} @@ -2840,7 +2842,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/foo/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2853,7 +2855,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test2/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2864,7 +2866,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2891,7 +2893,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2911,7 +2913,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2933,7 +2935,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2969,7 +2971,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.post( '/api/0/test/issue/1/custom/bugzilla', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2987,7 +2989,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): '/api/0/test/issue/1/custom/bugzilla', headers=headers, data={'value': 'foobar'}) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -3007,7 +3009,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): '/api/0/test/issue/1/custom/bugzilla', headers=headers, data={'value': 'https://bugzilla.redhat.com/1234'}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -3030,7 +3032,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): '/api/0/test/issue/1/custom/bugzilla', headers=headers, data={'value': ''}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -3065,7 +3067,7 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get('/api/0/test/issues/history/stats') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data), 1) self.assertEqual(len(data['stats']), 53) @@ -3096,10 +3098,10 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get('/api/0/user/pingou/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) args = { - u"assignee": True, - u"author": True, + "assignee": True, + "author": True, "milestones": [], "no_stones": None, "order": None, @@ -3121,10 +3123,10 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Restrict to a certain, fake milestone output = self.app.get('/api/0/user/pingou/issues?milestones=v1.0') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) args = { - u"assignee": True, - u"author": True, + "assignee": True, + "author": True, "milestones": ['v1.0'], "no_stones": None, "order": None, @@ -3146,10 +3148,10 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Restrict to a certain status output = self.app.get('/api/0/user/pingou/issues?status=closed') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) args = { - u"assignee": True, - u"author": True, + "assignee": True, + "author": True, "milestones": [], "no_stones": None, "order": None, @@ -3171,10 +3173,10 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): # Restrict to a certain status output = self.app.get('/api/0/user/pingou/issues?status=all') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) args = { - u"assignee": True, - u"author": True, + "assignee": True, + "author": True, "milestones": [], "no_stones": None, "order": None, @@ -3215,18 +3217,18 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get('/api/0/user/foo/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) args = { - u"assignee": True, - u"author": True, - u"milestones": [], - u"no_stones": None, - u"order": None, - u"order_key": None, - u"page": 1, - u"since": None, - u"status": None, - u"tags": [], + "assignee": True, + "author": True, + "milestones": [], + "no_stones": None, + "order": None, + "order_key": None, + "page": 1, + "since": None, + "status": None, + "tags": [], } self.assertEqual(data['args'], args) @@ -3244,25 +3246,25 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get('/api/0/user/foo/issues?page=0') self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( data, { - u'error': u'Invalid page requested', - u'error_code': u'ENOCODE' + 'error': 'Invalid page requested', + 'error_code': 'ENOCODE' } ) output = self.app.get('/api/0/user/foo/issues?page=abc') self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( data, { - u'error': u'Invalid page requested', - u'error_code': u'ENOCODE' + 'error': 'Invalid page requested', + 'error_code': 'ENOCODE' } ) @@ -3273,18 +3275,18 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get('/api/0/user/foo/issues?assignee=0') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) args = { - u"assignee": False, - u"author": True, - u"milestones": [], - u"no_stones": None, - u"order": None, - u"order_key": None, - u"page": 1, - u"since": None, - u"status": None, - u"tags": [], + "assignee": False, + "author": True, + "milestones": [], + "no_stones": None, + "order": None, + "order_key": None, + "page": 1, + "since": None, + "status": None, + "tags": [], } self.assertEqual(data['args'], args) @@ -3302,10 +3304,10 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): output = self.app.get('/api/0/user/pingou/issues?author=0') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) args = { - u"assignee": True, - u"author": False, + "assignee": True, + "author": False, "milestones": [], "no_stones": None, "order": None, @@ -3326,4 +3328,6 @@ class PagureFlaskApiIssuetests(tests.SimplePagureTest): if __name__ == '__main__': - unittest.main(verbosity=2) + SUITE = unittest.TestLoader().loadTestsFromTestCase( + PagureFlaskApiIssuetests) + unittest.TextTestRunner(verbosity=2).run(SUITE) diff --git a/tests/test_pagure_flask_api_issue_change_status.py b/tests/test_pagure_flask_api_issue_change_status.py index 353368b..e904857 100644 --- a/tests/test_pagure_flask_api_issue_change_status.py +++ b/tests/test_pagure_flask_api_issue_change_status.py @@ -107,7 +107,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): output = self.app.post( '/api/0/foobar/issue/1/status', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -124,7 +124,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): # Valid token, wrong project output = self.app.post('/api/0/test2/issue/1/status', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -137,7 +137,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): # No issue output = self.app.post('/api/0/test/issue/42/status', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -164,7 +164,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -192,7 +192,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'No changes'} @@ -217,7 +217,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, @@ -233,7 +233,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): output = self.app.post( '/api/0/foo/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -252,7 +252,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 403) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, @@ -276,7 +276,7 @@ class PagureFlaskApiIssueChangeStatustests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, diff --git a/tests/test_pagure_flask_api_issue_comment.py b/tests/test_pagure_flask_api_issue_comment.py index e948368..d471db0 100644 --- a/tests/test_pagure_flask_api_issue_comment.py +++ b/tests/test_pagure_flask_api_issue_comment.py @@ -89,7 +89,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): # Invalid project output = self.app.post('/api/0/foo/issue/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -106,7 +106,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): # Valid token, wrong project output = self.app.post('/api/0/test2/issue/1/comment', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -118,7 +118,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): # Invalid issue output = self.app.post('/api/0/test/issue/10/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -144,7 +144,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -172,7 +172,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -200,7 +200,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/2/comment', data=data, headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -234,7 +234,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/2/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -248,7 +248,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): # Invalid project output = self.app.post('/api/0/foo/issue/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -265,7 +265,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): # Valid token, no such issue, project-less token so different failure output = self.app.post('/api/0/test2/issue/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -281,7 +281,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): # Invalid issue output = self.app.post('/api/0/test/issue/10/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -307,7 +307,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -336,7 +336,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -364,7 +364,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/2/comment', data=data, headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -398,7 +398,7 @@ class PagureFlaskApiIssueCommenttests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/2/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} diff --git a/tests/test_pagure_flask_api_issue_create.py b/tests/test_pagure_flask_api_issue_create.py index 855bdb7..1b9b0c4 100644 --- a/tests/test_pagure_flask_api_issue_create.py +++ b/tests/test_pagure_flask_api_issue_create.py @@ -8,6 +8,7 @@ """ +from __future__ import unicode_literals import datetime import unittest @@ -77,7 +78,7 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): # Create an issue on /test/ where pingou is the main admin output = self.app.post('/api/0/test/new_issue', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( pagure.api.APIERROR.EINVALIDREQ.name, data['error_code']) self.assertEqual( @@ -85,8 +86,8 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): self.assertEqual( data['errors'], { - u'issue_content': [u'This field is required.'], - u'title': [u'This field is required.'] + 'issue_content': ['This field is required.'], + 'title': ['This field is required.'] } ) @@ -109,7 +110,7 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( pagure.api.APIERROR.EINVALIDREQ.name, data['error_code']) self.assertEqual( @@ -117,7 +118,7 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): self.assertEqual( data['errors'], { - u'issue_content': [u'This field is required.'] + 'issue_content': ['This field is required.'] } ) @@ -141,7 +142,7 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertEqual( @@ -195,7 +196,7 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertEqual( @@ -249,7 +250,7 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertEqual( @@ -303,7 +304,7 @@ class PagureFlaskApiIssueCreatetests(tests.Modeltests): headers=headers, data=data) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual( diff --git a/tests/test_pagure_flask_api_issue_custom_fields.py b/tests/test_pagure_flask_api_issue_custom_fields.py index d15ccc5..d038166 100644 --- a/tests/test_pagure_flask_api_issue_custom_fields.py +++ b/tests/test_pagure_flask_api_issue_custom_fields.py @@ -59,7 +59,7 @@ class PagureFlaskApiCustomFieldIssuetests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/custom', headers=headers, data=payload) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -79,7 +79,7 @@ class PagureFlaskApiCustomFieldIssuetests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/custom', headers=headers, data=payload) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -110,15 +110,15 @@ class PagureFlaskApiCustomFieldIssuetests(tests.Modeltests): output = self.app.post( '/api/0/test/issue/1/custom', headers=headers, data=payload) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data["messages"].sort() + data = json.loads(output.get_data(as_text=True)) + data["messages"].sort(key=lambda d: list(d.keys())[0]) self.assertDictEqual( data, { - "messages": sorted([ + "messages": [ {"bugzilla": "No changes"}, {"upstream": "Custom field upstream adjusted to True"}, - ]) + ] } ) @@ -134,18 +134,18 @@ class PagureFlaskApiCustomFieldIssuetests(tests.Modeltests): '/api/0/test/issue/1/custom', headers=headers, data=payload) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data["messages"].sort() + data = json.loads(output.get_data(as_text=True)) + data["messages"].sort(key=lambda d: list(d.keys())[0]) self.assertDictEqual( data, { - "messages": sorted([ + "messages": [ {"bugzilla": "Custom field bugzilla adjusted to " "https://bugzilla.redhat.com/1234"}, {"reviewstatus": "Custom field reviewstatus adjusted to ack"}, {"upstream": "Custom field upstream adjusted to False (was: True)"}, - ]) + ] } ) @@ -160,17 +160,17 @@ class PagureFlaskApiCustomFieldIssuetests(tests.Modeltests): '/api/0/test/issue/1/custom', headers=headers, data=payload) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data["messages"].sort() + data = json.loads(output.get_data(as_text=True)) + data["messages"].sort(key=lambda d: list(d.keys())[0]) self.assertDictEqual( data, { - "messages": sorted([ + "messages": [ {"bugzilla": "Custom field bugzilla reset " "(from https://bugzilla.redhat.com/1234)"}, {"reviewstatus": "Custom field reviewstatus reset (from ack)"}, {"upstream": "Custom field upstream reset (from False)"}, - ]) + ] } ) diff --git a/tests/test_pagure_flask_api_pr_flag.py b/tests/test_pagure_flask_api_pr_flag.py index 3f044b4..9aed6a2 100644 --- a/tests/test_pagure_flask_api_pr_flag.py +++ b/tests/test_pagure_flask_api_pr_flag.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + import unittest import sys import os @@ -72,7 +74,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -89,7 +91,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -102,7 +104,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/10/flag', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -119,16 +121,16 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Invalid or incomplete input submitted', - u'error_code': u'EINVALIDREQ', - u'errors': { - u'comment': [u'This field is required.'], - u'url': [u'This field is required.'], - u'username': [u'This field is required.'] + 'error': 'Invalid or incomplete input submitted', + 'error_code': 'EINVALIDREQ', + 'errors': { + 'comment': ['This field is required.'], + 'url': ['This field is required.'], + 'username': ['This field is required.'] } } ) @@ -148,7 +150,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -188,29 +190,29 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' pr_uid = data['flag']['pull_request_uid'] - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests running', - u'date_created': u'1510742565', - u'percent': None, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'pending', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests running', + 'date_created': '1510742565', + 'percent': None, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'pending', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -224,15 +226,15 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): # Check the notification sent mock_email.assert_called_once_with( - u'\nJenkins flagged the pull-request `test pull-request` ' - u'as pending: Tests running\n\n' - u'https://pagure.org/test/pull-request/1\n', - u'PR #1 - Jenkins: pending', - u'bar@pingou.com', - in_reply_to=u'test-pull-request-' + pr_uid, - mail_id=u'test-pull-request-' + pr_uid + '-1', - project_name=u'test', - user_from=u'Jenkins' + '\nJenkins flagged the pull-request `test pull-request` ' + 'as pending: Tests running\n\n' + 'https://pagure.org/test/pull-request/1\n', + 'PR #1 - Jenkins: pending', + 'bar@pingou.com', + in_reply_to='test-pull-request-' + pr_uid, + mail_id='test-pull-request-' + pr_uid + '-1', + project_name='test', + user_from='Jenkins' ) def test_updating_flag(self): @@ -250,28 +252,28 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests running', - u'date_created': u'1510742565', - u'percent': None, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'pending', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests running', + 'date_created': '1510742565', + 'percent': None, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'pending', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -295,28 +297,28 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests passed', - u'date_created': u'1510742565', - u'percent': 100, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'success', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests passed', + 'date_created': '1510742565', + 'percent': 100, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'success', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag updated', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag updated', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -345,28 +347,28 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests passed', - u'date_created': u'1510742565', - u'percent': 100, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'success', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests passed', + 'date_created': '1510742565', + 'percent': 100, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'success', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -388,31 +390,31 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertNotEqual( data['uid'], 'jenkins_build_pagure_100+seed') data['uid'] = 'jenkins_build_pagure_100+seed' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests running again', - u'date_created': u'1510742565', - u'percent': None, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'pending', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests running again', + 'date_created': '1510742565', + 'percent': None, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'pending', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -453,7 +455,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=send_data, headers=headers) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(output.status_code, 200) self.assertEqual(data['flag']['status'], 'pend!') @@ -461,7 +463,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): send_data['percent'] = 50 output = self.app.post( '/api/0/test/pull-request/1/flag', data=send_data, headers=headers) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(output.status_code, 200) self.assertEqual(data['flag']['status'], 'succeed!') @@ -469,7 +471,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): send_data['percent'] = 0 output = self.app.post( '/api/0/test/pull-request/1/flag', data=send_data, headers=headers) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(output.status_code, 200) self.assertEqual(data['flag']['status'], 'fail!') @@ -477,7 +479,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): send_data['status'] = 'what?' output = self.app.post( '/api/0/test/pull-request/1/flag', data=send_data, headers=headers) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(output.status_code, 200) self.assertEqual(data['flag']['status'], 'what?') @@ -485,7 +487,7 @@ class PagureFlaskApiPRFlagtests(tests.Modeltests): send_data['status'] = 'nooo.....' output = self.app.post( '/api/0/test/pull-request/1/flag', data=send_data, headers=headers) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(output.status_code, 400) self.assertDictEqual( data, @@ -546,7 +548,7 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/foo/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -562,7 +564,7 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/test2/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -579,16 +581,16 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { - u'error': u'Invalid or incomplete input submitted', - u'error_code': u'EINVALIDREQ', - u'errors': { - u'comment': [u'This field is required.'], - u'url': [u'This field is required.'], - u'username': [u'This field is required.'] + 'error': 'Invalid or incomplete input submitted', + 'error_code': 'EINVALIDREQ', + 'errors': { + 'comment': ['This field is required.'], + 'url': ['This field is required.'], + 'username': ['This field is required.'] } } ) @@ -609,7 +611,7 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -642,7 +644,7 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -678,28 +680,28 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests failed', - u'date_created': u'1510742565', - u'percent': 0, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'failure', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests failed', + 'date_created': '1510742565', + 'percent': 0, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'failure', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -731,28 +733,28 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests failed', - u'date_created': u'1510742565', - u'percent': None, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'failure', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests failed', + 'date_created': '1510742565', + 'percent': None, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'failure', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -777,28 +779,28 @@ class PagureFlaskApiPRFlagUserTokentests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests passed', - u'date_created': u'1510742565', - u'percent': 100, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'success', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou' + 'flag': { + 'comment': 'Tests passed', + 'date_created': '1510742565', + 'percent': 100, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'success', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou' }, - u'username': u'Jenkins'}, - u'message': u'Flag updated', - u'uid': u'jenkins_build_pagure_100+seed' + 'username': 'Jenkins'}, + 'message': 'Flag updated', + 'uid': 'jenkins_build_pagure_100+seed' } ) diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index 52ffa84..875b490 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -94,7 +96,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Check tags output = self.app.get('/api/0/test/git/tags') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'tags': ['0.0.1'], 'total_tags': 1} @@ -103,13 +105,13 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Check tags with commits output = self.app.get('/api/0/test/git/tags?with_commits=True') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['tags']['0.0.1'] = 'bb8fa2aa199da08d6085e1c9badc3d83d188d38c' self.assertDictEqual( data, { - u'tags': {u'0.0.1': u'bb8fa2aa199da08d6085e1c9badc3d83d188d38c'}, - u'total_tags': 1} + 'tags': {'0.0.1': 'bb8fa2aa199da08d6085e1c9badc3d83d188d38c'}, + 'total_tags': 1} ) shutil.rmtree(newpath) @@ -136,7 +138,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Verify the API data self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -157,7 +159,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Check that no branches show up on the API output = self.app.get('/api/0/test/git/branches') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -187,7 +189,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): }, 'total_urls': 2 } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(data, expected_rv) def test_api_git_urls_no_project(self): @@ -200,7 +202,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Project not found', 'error_code': 'ENOPROJECT' } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(data, expected_rv) @patch.dict('pagure.config.config', {'PRIVATE_PROJECTS': True}) @@ -227,7 +229,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): }, 'total_urls': 2 } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(data, expected_rv) @patch.dict('pagure.config.config', {'PRIVATE_PROJECTS': True}) @@ -247,7 +249,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Project not found', 'error_code': 'ENOPROJECT' } - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(data, expected_rv) def test_api_projects_pattern(self): @@ -256,7 +258,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?pattern=test') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -319,7 +321,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?pattern=te*&short=1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_data = { "args": { "fork": None, @@ -376,7 +378,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Check the API output = self.app.get('/api/0/projects?tags=inf') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -395,7 +397,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ) output = self.app.get('/api/0/projects?tags=infra') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -448,7 +450,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?owner=pingou') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" data['projects'][1]['date_created'] = "1436527638" @@ -581,7 +583,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?username=pingou') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" data['projects'][1]['date_created'] = "1436527638" @@ -711,7 +713,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?username=pingou&tags=infra') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -764,7 +766,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?namespace=somenamespace') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -841,7 +843,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Non-existing project output = self.app.get('/api/0/random') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'error_code': 'ENOPROJECT', 'error': 'Project not found'} @@ -850,7 +852,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Existing project output = self.app.get('/api/0/test') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = "1436527638" data['date_modified'] = "1436527638" expected_data ={ @@ -939,7 +941,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Existing project output = self.app.get('/api/0/test?expand_group=1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = "1436527638" data['date_modified'] = "1436527638" expected_data ={ @@ -1007,7 +1009,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Existing project output = self.app.get('/api/0/test?expand_group=0') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = "1436527638" data['date_modified'] = "1436527638" expected_data ={ @@ -1053,7 +1055,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?page=1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for i in range(3): data['projects'][i]['date_created'] = "1436527638" data['projects'][i]['date_modified'] = "1436527638" @@ -1203,7 +1205,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?page=2&per_page=2') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -1301,7 +1303,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?page=1&per_page=0') self.assertEqual(output.status_code, 400) - error = json.loads(output.data) + error = json.loads(output.get_data(as_text=True)) self.assertEqual( error['error'], 'The per_page value must be between 1 and 100') @@ -1312,7 +1314,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?page=1&per_page=101') self.assertEqual(output.status_code, 400) - error = json.loads(output.data) + error = json.loads(output.get_data(as_text=True)) self.assertEqual( error['error'], 'The per_page value must be between 1 and 100') @@ -1331,7 +1333,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.get('/api/0/projects?page=99999') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertURLEqual( data["pagination"].pop("first"), "http://localhost/api/0/projects?per_page=20&page=1", @@ -1384,7 +1386,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test', headers=headers, data={'main_admin': 'foo'}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1496338274' data['date_modified'] = '1496338274' expected_output = { @@ -1447,7 +1449,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test', headers=headers, data={'main_admin': 'foo', 'retain_access': True}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1496338274' data['date_modified'] = '1496338274' expected_output = { @@ -1521,7 +1523,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test', headers=headers, data={'main_admin': 'foo', 'retain_access': True}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1496338274' data['date_modified'] = '1496338274' expected_output = { @@ -1586,7 +1588,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test', headers=headers, data=json.dumps({'main_admin': 'foo'})) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1496338274' data['date_modified'] = '1496338274' expected_output = { @@ -1650,7 +1652,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test', headers=headers, data={'main_admin': 'foo'}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['date_created'] = '1496338274' data['date_modified'] = '1496338274' expected_output = { @@ -1726,7 +1728,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'project'), 'error_code': 'ENOTMAINADMIN' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.get_data(as_text=True)), expected_error) def test_api_modify_project_not_admin(self): """ Test the api_modify_project method of the flask api when the @@ -1748,7 +1751,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'You are not allowed to modify this project', 'error_code': 'EMODIFYPROJECTNOTALLOWED' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.get_data(as_text=True)), expected_error) def test_api_modify_project_invalid_request(self): """ Test the api_modify_project method of the flask api when the @@ -1770,7 +1774,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Invalid or incomplete input submitted', 'error_code': 'EINVALIDREQ' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.get_data(as_text=True)), expected_error) def test_api_modify_project_invalid_keys(self): """ Test the api_modify_project method of the flask api when the @@ -1792,7 +1797,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Invalid or incomplete input submitted', 'error_code': 'EINVALIDREQ' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.get_data(as_text=True)), expected_error) def test_api_modify_project_invalid_new_main_admin(self): """ Test the api_modify_project method of the flask api when the @@ -1815,7 +1821,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'No such user found', 'error_code': 'ENOUSER' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.get_data(as_text=True)), expected_error) def test_api_project_watchers(self): """ Test the api_project_watchers method of the flask api. """ @@ -1831,14 +1838,14 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) user = tests.FakeUser(username='pingou') with tests.user_set(self.app.application, user): # Non-existing project output = self.app.get('/api/0/random/watchers') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'error_code': 'ENOPROJECT', 'error': 'Project not found'} @@ -1855,7 +1862,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) project = pagure.lib.get_authorized_project(self.session, 'test') @@ -1874,7 +1881,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) # The owner is watching issues explicitly pagure.lib.update_watch_status( @@ -1890,7 +1897,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) # The owner is watching commits explicitly pagure.lib.update_watch_status( @@ -1906,7 +1913,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) # The owner is watching commits explicitly and foo is watching # issues implicitly @@ -1929,7 +1936,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["commits"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) # The owner and foo are watching issues implicitly pagure.lib.update_watch_status( @@ -1945,7 +1952,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["issues"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) # The owner and foo through group membership are watching issues # implicitly @@ -1995,7 +2002,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["issues"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) # The owner is watching issues implicitly and foo will be watching # commits explicitly but is in a group with commit access @@ -2015,7 +2022,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["issues"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.get_data(as_text=True)), expected_data) def test_api_new_project(self): """ Test the api_new_project method of the flask api. """ @@ -2030,7 +2037,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Invalid token output = self.app.post('/api/0/new', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2042,7 +2049,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # No input output = self.app.post('/api/0/new', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2063,7 +2070,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2082,7 +2089,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2100,7 +2107,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Project "test_42" created'} @@ -2128,7 +2135,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Project "pingou/test" created'} @@ -2146,7 +2153,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Invalid token output = self.app.post('/api/0/new', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2158,7 +2165,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # No input output = self.app.post('/api/0/new', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2179,7 +2186,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2198,7 +2205,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2216,7 +2223,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Project "test_42" created'} @@ -2234,7 +2241,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2258,7 +2265,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Project "rpms/test_42" created'} @@ -2284,7 +2291,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Project "pingou/testproject" created'} @@ -2302,7 +2309,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/new/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Project "testns/testproject2" created'} @@ -2322,7 +2329,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Invalid token output = self.app.post('/api/0/fork', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2334,7 +2341,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # No input output = self.app.post('/api/0/fork', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2352,7 +2359,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2370,7 +2377,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2386,7 +2393,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2404,7 +2411,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2422,7 +2429,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2445,7 +2452,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Invalid token output = self.app.post('/api/0/fork', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2457,7 +2464,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # No input output = self.app.post('/api/0/fork', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2475,7 +2482,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2493,7 +2500,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2509,7 +2516,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2527,7 +2534,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2545,7 +2552,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post( '/api/0/fork/', data=data, headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, { @@ -2568,7 +2575,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test/git/generateacls', headers=headers, data={'wait': False}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'message': 'Project ACL generation queued', 'taskid': 'abc-1234' @@ -2592,7 +2599,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test/git/generateacls', headers=headers, data=json.dumps({'wait': False})) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'message': 'Project ACL generation queued', 'taskid': 'abc-1234' @@ -2620,7 +2627,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test/git/generateacls', headers=headers, data={'wait': True}) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'message': 'Project ACLs generated', } @@ -2644,7 +2651,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): '/api/0/test12345123/git/generateacls', headers=headers, data={'wait': False}) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'error_code': 'ENOPROJECT', 'error': 'Project not found' @@ -2665,7 +2672,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post('/api/0/test/git/branch', headers=headers, data=args) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'message': 'Project branch was created', } @@ -2690,7 +2697,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post('/api/0/test/git/branch', headers=headers, data=json.dumps(args)) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'message': 'Project branch was created', } @@ -2717,7 +2724,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post('/api/0/test/git/branch', headers=headers, data=args) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'message': 'Project branch was created', } @@ -2739,7 +2746,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post('/api/0/test/git/branch', headers=headers, data=args) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'error': 'The branch "master" already exists', 'error_code': 'ENOCODE' @@ -2763,7 +2770,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): output = self.app.post('/api/0/test/git/branch', headers=headers, data=args) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { 'message': 'Project branch was created', } @@ -2804,7 +2811,7 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { "error": "Invalid or incomplete input submitted", "error_code": "EINVALIDREQ", @@ -2833,7 +2840,7 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { "error": "Invalid or incomplete input submitted", "error_code": "EINVALIDREQ", @@ -2862,7 +2869,7 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { "error": "Invalid or incomplete input submitted", "error_code": "EINVALIDREQ", @@ -2891,7 +2898,7 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) expected_output = { "error": "Invalid or incomplete input submitted", "error_code": "EINVALIDREQ", @@ -2920,7 +2927,7 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 401) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data.keys()), ['error', 'error_code']) self.assertEqual( pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2944,13 +2951,13 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( data, { - u'errors': {u'status': [u'Not a valid choice']}, - u'error_code': u'EINVALIDREQ', - u'error': u'Invalid or incomplete input submitted' + 'errors': {'status': ['Not a valid choice']}, + 'error_code': 'EINVALIDREQ', + 'error': 'Invalid or incomplete input submitted' } ) @@ -2972,26 +2979,26 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) - data['flag']['date_created'] = u'1510742565' - data['flag']['commit_hash'] = u'62b49f00d489452994de5010565fab81' + data = json.loads(output.get_data(as_text=True)) + data['flag']['date_created'] = '1510742565' + data['flag']['commit_hash'] = '62b49f00d489452994de5010565fab81' expected_output = { - u'flag': { - u'comment': u'Tests passed', - u'commit_hash': u'62b49f00d489452994de5010565fab81', - u'date_created': u'1510742565', - u'percent': 100, - u'status': 'success', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou'}, - u'username': u'Jenkins' + 'flag': { + 'comment': 'Tests passed', + 'commit_hash': '62b49f00d489452994de5010565fab81', + 'date_created': '1510742565', + 'percent': 100, + 'status': 'success', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou'}, + 'username': 'Jenkins' }, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } self.assertEqual(data, expected_output) @@ -3017,30 +3024,30 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertNotEqual( data['uid'], - u'jenkins_build_pagure_100+seed' + 'jenkins_build_pagure_100+seed' ) - data['flag']['date_created'] = u'1510742565' + data['flag']['date_created'] = '1510742565' data['uid'] = 'b1de8f80defd4a81afe2e09f39678087' expected_output = { - u'flag': { - u'comment': u'Tests passed', - u'commit_hash': commit.oid.hex, - u'date_created': u'1510742565', - u'percent': 100, - u'status': 'success', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou'}, - u'username': u'Jenkins' + 'flag': { + 'comment': 'Tests passed', + 'commit_hash': commit.oid.hex, + 'date_created': '1510742565', + 'percent': 100, + 'status': 'success', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou'}, + 'username': 'Jenkins' }, - u'message': u'Flag added', - u'uid': u'b1de8f80defd4a81afe2e09f39678087' + 'message': 'Flag added', + 'uid': 'b1de8f80defd4a81afe2e09f39678087' } self.assertEqual(data, expected_output) @@ -3073,44 +3080,44 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertNotEqual( data['uid'], - u'jenkins_build_pagure_100+seed' + 'jenkins_build_pagure_100+seed' ) - data['flag']['date_created'] = u'1510742565' + data['flag']['date_created'] = '1510742565' data['uid'] = 'b1de8f80defd4a81afe2e09f39678087' expected_output = { - u'flag': { - u'comment': u'Tests passed', - u'commit_hash': commit.oid.hex, - u'date_created': u'1510742565', - u'percent': 100, - u'status': 'success', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou'}, - u'username': u'Jenkins' + 'flag': { + 'comment': 'Tests passed', + 'commit_hash': commit.oid.hex, + 'date_created': '1510742565', + 'percent': 100, + 'status': 'success', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou'}, + 'username': 'Jenkins' }, - u'message': u'Flag added', - u'uid': u'b1de8f80defd4a81afe2e09f39678087' + 'message': 'Flag added', + 'uid': 'b1de8f80defd4a81afe2e09f39678087' } self.assertEqual(data, expected_output) mock_email.assert_called_once_with( - u'\nJenkins flagged the commit ' - u'`' + commit.oid.hex + u'` as success: ' - u'Tests passed\n\n' - u'https://pagure.org/test/c/' + commit.oid.hex + u'\n', - u'Coommit #' + commit.oid.hex + u' - Jenkins: success', - u'bar@pingou.com', - in_reply_to=u'test-project-1', - mail_id=u'test-commit-1-1', - project_name=u'test', - user_from=u'Jenkins' + '\nJenkins flagged the commit ' + '`' + commit.oid.hex + '` as success: ' + 'Tests passed\n\n' + 'https://pagure.org/test/c/' + commit.oid.hex + '\n', + 'Coommit #' + commit.oid.hex + ' - Jenkins: success', + 'bar@pingou.com', + in_reply_to='test-project-1', + mail_id='test-commit-1-1', + project_name='test', + user_from='Jenkins' ) @patch.dict('pagure.config.config', @@ -3144,7 +3151,7 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=send_data) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(data['flag']['status'], 'succeed!') # Try invalid flag status @@ -3153,13 +3160,13 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): '/api/0/test/c/%s/flag' % commit.oid.hex, headers=headers, data=send_data) self.assertEqual(output.status_code, 400) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( data, { - u'errors': {u'status': [u'Not a valid choice']}, - u'error_code': u'EINVALIDREQ', - u'error': u'Invalid or incomplete input submitted' + 'errors': {'status': ['Not a valid choice']}, + 'error_code': 'EINVALIDREQ', + 'error': 'Invalid or incomplete input submitted' } ) @@ -3171,7 +3178,7 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): # test with no flags output = self.app.get('/api/0/test/c/%s/flag' % commit.oid.hex) - self.assertEqual(json.loads(output.data), {'total_flags': 0, 'flags': []}) + self.assertEqual(json.loads(output.get_data(as_text=True)), {'total_flags': 0, 'flags': []}) self.assertEqual(output.status_code, 200) # add some flags and retrieve them @@ -3205,41 +3212,41 @@ class PagureFlaskApiProjectFlagtests(tests.Modeltests): self.session.commit() output = self.app.get('/api/0/test/c/%s/flag' % commit.oid.hex) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) for f in data['flags']: - f['date_created'] = u'1510742565' - f['commit_hash'] = u'62b49f00d489452994de5010565fab81' + f['date_created'] = '1510742565' + f['commit_hash'] = '62b49f00d489452994de5010565fab81' expected_output = { - u"flags": [ + "flags": [ { - u"comment": u"Build is running", - u"commit_hash": u"62b49f00d489452994de5010565fab81", - u"date_created": u"1510742565", - u"percent": None, - u"status": u"pending", - u"url": u"https://koji.fp.o/koji...", - u"user": { - u"fullname": u"foo bar", - u"name": u"foo" + "comment": "Build is running", + "commit_hash": "62b49f00d489452994de5010565fab81", + "date_created": "1510742565", + "percent": None, + "status": "pending", + "url": "https://koji.fp.o/koji...", + "user": { + "fullname": "foo bar", + "name": "foo" }, - u"username": u"simple-koji-ci" + "username": "simple-koji-ci" }, { - u"comment": u"Build succeeded", - u"commit_hash": u"62b49f00d489452994de5010565fab81", - u"date_created": u"1510742565", - u"percent": None, - u"status": u"success", - u"url": u"https://koji.fp.o/koji...", - u"user": { - u"fullname": u"foo bar", - u"name": u"foo" + "comment": "Build succeeded", + "commit_hash": "62b49f00d489452994de5010565fab81", + "date_created": "1510742565", + "percent": None, + "status": "success", + "url": "https://koji.fp.o/koji...", + "user": { + "fullname": "foo bar", + "name": "foo" }, - u"username": u"complex-koji-ci" + "username": "complex-koji-ci" } ], - u"total_flags": 2 + "total_flags": 2 } self.assertEqual(data, expected_output) diff --git a/tests/test_pagure_flask_api_ui_private_repo.py b/tests/test_pagure_flask_api_ui_private_repo.py index aa7a604..e4f9ee2 100644 --- a/tests/test_pagure_flask_api_ui_private_repo.py +++ b/tests/test_pagure_flask_api_ui_private_repo.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -12,7 +14,7 @@ import os import json import pygit2 -from mock import patch +from mock import patch, MagicMock sys.path.insert(0, os.path.join(os.path.dirname( os.path.abspath(__file__)), '..')) @@ -379,7 +381,8 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

All Projects ' - '0

', output.get_data(as_text=True)) + '0', + output.get_data(as_text=True)) # Add a private project item = pagure.lib.model.Project( @@ -405,23 +408,26 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get('/?page=abc') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

All Projects ' - '1

', output.get_data(as_text=True)) + '1', + output_text) user = tests.FakeUser(username='foo') with tests.user_set(self.app.application, user): output = self.app.get('/') + output_text = output.get_data(as_text=True) self.assertIn( 'My Projects 2', - output.get_data(as_text=True)) + output_text) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output_text) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output_text.count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 6) + output_text.count('
'), 6) def test_view_user(self): """ Test the view_user endpoint. """ @@ -471,45 +477,48 @@ class PagurePrivateRepotest(tests.Modeltests): user = tests.FakeUser(username='foo') with tests.user_set(self.app.application, user): output = self.app.get('/user/foo') + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 2', - output.get_data(as_text=True)) + output_text) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output_text) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output_text.count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 5) + output_text.count('
'), 5) user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/user/foo') + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.get_data(as_text=True)) + output_text) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output_text) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output_text.count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 5) + output_text.count('
'), 5) # Check pingou has 0 projects user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/') + output_text = output.get_data(as_text=True) self.assertIn( 'My Projects 0', - output.get_data(as_text=True)) + output_text) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output_text) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output_text.count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 6) + output_text.count('
'), 6) repo = pagure.lib._get_project(self.session, 'test3') @@ -526,16 +535,17 @@ class PagurePrivateRepotest(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/') + output_text = output.get_data(as_text=True) self.assertIn( 'My Projects 1', - output.get_data(as_text=True)) + output_text) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output_text) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output_text.count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 6) + output_text.count('
'), 6) @patch('pagure.decorators.admin_session_timedout') def test_private_settings_ui(self, ast): @@ -1092,17 +1102,17 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertDictEqual( data, { - u'args': { - u'fork': None, - u'namespace': None, - u'owner': None, - u'pattern': None, - u'short': False, - u'tags': [u'inf'], - u'username': None + 'args': { + 'fork': None, + 'namespace': None, + 'owner': None, + 'pattern': None, + 'short': False, + 'tags': ['inf'], + 'username': None }, - u'projects': [], - u'total_projects': 0 + 'projects': [], + 'total_projects': 0 } ) @@ -1113,17 +1123,17 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertDictEqual( data, { - u'args': { - u'fork': None, - u'namespace': None, - u'owner': None, - u'pattern': None, - u'short': False, - u'tags': [u'infra'], - u'username': None + 'args': { + 'fork': None, + 'namespace': None, + 'owner': None, + 'pattern': None, + 'short': False, + 'tags': ['infra'], + 'username': None }, - u'projects': [], - u'total_projects': 0 + 'projects': [], + 'total_projects': 0 } ) @@ -1136,17 +1146,17 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertDictEqual( data, { - u'args': { - u'fork': None, - u'namespace': None, - u'owner': None, - u'pattern': None, - u'short': False, - u'tags': [u'infra'], - u'username': None + 'args': { + 'fork': None, + 'namespace': None, + 'owner': None, + 'pattern': None, + 'short': False, + 'tags': ['infra'], + 'username': None }, - u'projects': [], - u'total_projects': 0 + 'projects': [], + 'total_projects': 0 } ) @@ -1159,17 +1169,17 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertDictEqual( data, { - u'args': { - u'fork': None, - u'namespace': None, - u'owner': None, - u'pattern': None, - u'short': False, - u'tags': [u'infra'], - u'username': None + 'args': { + 'fork': None, + 'namespace': None, + 'owner': None, + 'pattern': None, + 'short': False, + 'tags': ['infra'], + 'username': None }, - u'projects': [], - u'total_projects': 0 + 'projects': [], + 'total_projects': 0 } ) @@ -1811,26 +1821,26 @@ class PagurePrivateRepotest(tests.Modeltests): '/api/0/test4/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) data = json.loads(output.get_data(as_text=True)) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests failed', - u'date_created': u'1510742565', - u'percent': 0, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'failure', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou'}, - u'username': u'Jenkins'}, - u'message': u'Flag added', - u'uid': u'jenkins_build_pagure_100+seed' + 'flag': { + 'comment': 'Tests failed', + 'date_created': '1510742565', + 'percent': 0, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'failure', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou'}, + 'username': 'Jenkins'}, + 'message': 'Flag added', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -1855,26 +1865,26 @@ class PagurePrivateRepotest(tests.Modeltests): '/api/0/test4/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 200) data = json.loads(output.get_data(as_text=True)) - data['flag']['date_created'] = u'1510742565' - data['flag']['pull_request_uid'] = u'62b49f00d489452994de5010565fab81' + data['flag']['date_created'] = '1510742565' + data['flag']['pull_request_uid'] = '62b49f00d489452994de5010565fab81' self.assertDictEqual( data, { - u'flag': { - u'comment': u'Tests passed', - u'date_created': u'1510742565', - u'percent': 100, - u'pull_request_uid': u'62b49f00d489452994de5010565fab81', - u'status': u'success', - u'url': u'http://jenkins.cloud.fedoraproject.org/', - u'user': { - u'default_email': u'bar@pingou.com', - u'emails': [u'bar@pingou.com', u'foo@pingou.com'], - u'fullname': u'PY C', - u'name': u'pingou'}, - u'username': u'Jenkins'}, - u'message': u'Flag updated', - u'uid': u'jenkins_build_pagure_100+seed' + 'flag': { + 'comment': 'Tests passed', + 'date_created': '1510742565', + 'percent': 100, + 'pull_request_uid': '62b49f00d489452994de5010565fab81', + 'status': 'success', + 'url': 'http://jenkins.cloud.fedoraproject.org/', + 'user': { + 'default_email': 'bar@pingou.com', + 'emails': ['bar@pingou.com', 'foo@pingou.com'], + 'fullname': 'PY C', + 'name': 'pingou'}, + 'username': 'Jenkins'}, + 'message': 'Flag updated', + 'uid': 'jenkins_build_pagure_100+seed' } ) @@ -2774,6 +2784,7 @@ class PagurePrivateRepotest(tests.Modeltests): } ) + @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) def test_api_private_repo_change_status_issue(self): """ Test the api_change_status_issue method of the flask api. """ item = pagure.lib.model.Project( diff --git a/tests/test_pagure_flask_api_user.py b/tests/test_pagure_flask_api_user.py index d7b99fd..84a7004 100644 --- a/tests/test_pagure_flask_api_user.py +++ b/tests/test_pagure_flask_api_user.py @@ -47,14 +47,14 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.get('/api/0/users') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(sorted(data['users']), ['foo', 'pingou']) self.assertEqual(sorted(data.keys()), ['mention', 'total_users', 'users']) self.assertEqual(data['total_users'], 2) output = self.app.get('/api/0/users?pattern=p') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(data['users'], ['pingou']) self.assertEqual(sorted(data.keys()), ['mention', 'total_users', 'users']) self.assertEqual(data['total_users'], 1) @@ -70,7 +70,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): "forks": [], "repos": [], "user": { "fullname": "PY C", "name": "pingou"}} - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(data, exp) def test_api_view_user_with_project(self): @@ -82,7 +82,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.get('/api/0/user/pingou') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) data['repos'][0]['date_created'] = "1490272832" data['repos'][0]['date_modified'] = "1490272832" data['repos'][1]['date_created'] = "1490272832" @@ -301,7 +301,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {'message': 'Comment added'} @@ -317,7 +317,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/close', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( data, {"message": "Pull-request closed!"} @@ -332,7 +332,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): # Finally retrieve the user's logs output = self.app.get('/api/0/user/pingou/activity/stats') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) date = datetime.datetime.utcnow().date().strftime('%Y-%m-%d') self.assertDictEqual(data, {date: 4}) @@ -354,7 +354,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): "activities": [], "date": "2016-01-01" } - self.assertEqual(json.loads(output.data), exp) + self.assertEqual(json.loads(output.get_data(as_text=True)), exp) # Date parsed, just not really as expected output = self.app.get('/api/0/user/pingou/activity/20161245') @@ -363,13 +363,13 @@ class PagureFlaskApiUSertests(tests.Modeltests): "activities": [], "date": "1970-08-22" } - self.assertEqual(json.loads(output.data), exp) + self.assertEqual(json.loads(output.get_data(as_text=True)), exp) date = datetime.datetime.utcnow().date().strftime('%Y-%m-%d') # Retrieve the user's logs for today output = self.app.get('/api/0/user/pingou/activity/%s' % date) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) exp = { "activities": [ { @@ -460,7 +460,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/activity/%s?grouped=1' % date) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) exp = { "activities": [ { @@ -504,26 +504,26 @@ class PagureFlaskApiUSertests(tests.Modeltests): # Retrieve the user's stats with no timezone specified (==UTC) output = self.app.get('/api/0/user/pingou/activity/stats') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # date in output should be UTC date self.assertDictEqual(data, {utcdate: 1}) # Now in timestamp format... output = self.app.get('/api/0/user/pingou/activity/stats?format=timestamp') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # timestamp in output should be UTC ts self.assertDictEqual(data, {utcts: 1}) # Retrieve the user's stats with local timezone specified output = self.app.get('/api/0/user/pingou/activity/stats?tz=America/New_York') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # date in output should be local date self.assertDictEqual(data, {localdate: 1}) # Now in timestamp format... output = self.app.get('/api/0/user/pingou/activity/stats?format=timestamp&tz=America/New_York') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # timestamp in output should be local ts self.assertDictEqual(data, {localts: 1}) @@ -531,7 +531,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/activity/%s?grouped=1' % utcdate) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) exp = { "activities": [ { @@ -546,7 +546,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/activity/%s?grouped=1&tz=America/New_York' % localdate) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) exp['date'] = localdate self.assertEqual(data, exp) @@ -582,26 +582,26 @@ class PagureFlaskApiUSertests(tests.Modeltests): # Retrieve the user's stats with no timezone specified (==UTC) output = self.app.get('/api/0/user/pingou/activity/stats') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # date in output should be UTC date self.assertDictEqual(data, {utcdate: 1}) # Now in timestamp format... output = self.app.get('/api/0/user/pingou/activity/stats?format=timestamp') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # timestamp in output should be UTC ts self.assertDictEqual(data, {utcts: 1}) # Retrieve the user's stats with local timezone specified output = self.app.get('/api/0/user/pingou/activity/stats?tz=Asia/Dubai') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # date in output should be local date self.assertDictEqual(data, {localdate: 1}) # Now in timestamp format... output = self.app.get('/api/0/user/pingou/activity/stats?format=timestamp&tz=Asia/Dubai') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) # timestamp in output should be local ts self.assertDictEqual(data, {localts: 1}) @@ -609,7 +609,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/activity/%s?grouped=1' % utcdate) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) exp = { "activities": [ { @@ -624,7 +624,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/activity/%s?grouped=1&tz=Asia/Dubai' % localdate) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) exp['date'] = localdate self.assertEqual(data, exp) @@ -825,7 +825,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/filed') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "pingou") @@ -841,7 +841,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/filed?status=open') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "pingou") @@ -857,7 +857,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/filed?status=closed') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "pingou") @@ -873,7 +873,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/filed?status=merged') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "pingou") @@ -889,7 +889,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/filed?status=all') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 6) self.assertEqual(data['requests'][0]['user']['name'], "pingou") @@ -917,7 +917,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/filed?status=all&page=2') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 0) self.assertEqual(data['args']['page'], 2) @@ -931,7 +931,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/actionable') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "foo") @@ -947,7 +947,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/actionable?status=open') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "foo") @@ -963,7 +963,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/actionable?status=closed') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "foo") @@ -979,7 +979,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/actionable?status=merged') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 2) self.assertEqual(data['requests'][0]['user']['name'], "foo") @@ -995,7 +995,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/actionable?status=all') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 6) self.assertEqual(data['requests'][0]['user']['name'], "foo") @@ -1023,7 +1023,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): output = self.app.get( '/api/0/user/pingou/requests/actionable?status=all&page=2') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual(len(data['requests']), 0) self.assertEqual(data['args']['page'], 2) @@ -1061,7 +1061,7 @@ class PagureFlaskApiUsertestissues(tests.Modeltests): output = self.app.get('/api/0/user/foo/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( data, { @@ -1091,7 +1091,7 @@ class PagureFlaskApiUsertestissues(tests.Modeltests): output = self.app.get('/api/0/user/pingou/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) issues = [] for issue in data['issues_created']: issue['date_created'] = '1513111778' diff --git a/tests/test_pagure_flask_docs.py b/tests/test_pagure_flask_docs.py index 2ca2a56..2355692 100644 --- a/tests/test_pagure_flask_docs.py +++ b/tests/test_pagure_flask_docs.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -117,12 +119,12 @@ class PagureFlaskDocstests(tests.SimplePagureTest): output = self.app.get('/test/docs', follow_redirects=True) self.assertEqual(output.status_code, 404) self.assertTrue( - '

Documentation not found

' in output.data) + '

Documentation not found

' in output.get_data(as_text=True)) output = self.app.get('/test', follow_redirects=True) self.assertEqual(output.status_code, 404) self.assertTrue( - '

Documentation not found

' in output.data) + '

Documentation not found

' in output.get_data(as_text=True)) def test_view_docs_project_no_docs(self): """ Test the view_docs endpoint with a project that disabled the @@ -160,7 +162,7 @@ class PagureFlaskDocstests(tests.SimplePagureTest): '

No content found in the repository, you may want to read ' 'the Using the doc repository of your project ' - 'documentation.

', output.data) + 'documentation.

', output.get_data(as_text=True)) def test_view_docs(self): """ Test the view_docs endpoint. """ @@ -180,23 +182,23 @@ class PagureFlaskDocstests(tests.SimplePagureTest): output = self.app.get('/test/sources') self.assertEqual(output.status_code, 200) - self.assertEqual('
foo\n bar
', output.data) + self.assertEqual('
foo\n bar
', output.get_data(as_text=True)) output = self.app.get('/test/folder1/folder2') self.assertEqual(output.status_code, 200) self.assertTrue( '
  • ' - in output.data) + in output.get_data(as_text=True)) output = self.app.get('/test/folder1/folder2/test_file') self.assertEqual(output.status_code, 200) - self.assertEqual('
    row1\nrow2\nrow3
    ', output.data) + self.assertEqual('
    row1\nrow2\nrow3
    ', output.get_data(as_text=True)) output = self.app.get('/test/folder1') self.assertEqual(output.status_code, 200) self.assertTrue( '
  • ' - in output.data) + in output.get_data(as_text=True)) output = self.app.get('/test/folder1/foo') self.assertEqual(output.status_code, 404) @@ -220,13 +222,13 @@ class PagureFlaskDocstests(tests.SimplePagureTest): output = self.app.get('/test/sources') self.assertEqual(output.status_code, 200) - self.assertEqual('foo\n bar', output.data) + self.assertEqual('foo\n bar', output.get_data(as_text=True)) output = self.app.get('/test/folder1') self.assertEqual(output.status_code, 200) self.assertTrue( '
  • ' - in output.data) + in output.get_data(as_text=True)) @mock.patch( 'pagure.lib.encoding_utils.decode', diff --git a/tests/test_pagure_flask_form.py b/tests/test_pagure_flask_form.py index a45a7a9..02d6366 100644 --- a/tests/test_pagure_flask_form.py +++ b/tests/test_pagure_flask_form.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -67,7 +69,9 @@ class PagureFlaskFormTests(tests.SimplePagureTest): # CSRF token expired if hasattr(flask_wtf, '__version__') and \ - tuple(flask_wtf.__version__.split('.')) >= (0,10,0): + tuple( + [int(v) for v in flask_wtf.__version__.split('.')] + ) < (0, 10, 0): expires = time.time() - 1 else: expires = ( @@ -81,7 +85,7 @@ class PagureFlaskFormTests(tests.SimplePagureTest): import itsdangerous timestamp = itsdangerous.base64_encode( itsdangerous.int_to_bytes(int(expires))) - print '*', data + timestamp = timestamp.decode("ascii") part1, _, part2 = data.split('.', 2) form.csrf_token.data = '.'.join([part1, timestamp, part2]) else: diff --git a/tests/test_pagure_flask_internal.py b/tests/test_pagure_flask_internal.py index d8b2969..71d1468 100644 --- a/tests/test_pagure_flask_internal.py +++ b/tests/test_pagure_flask_internal.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -113,7 +115,7 @@ class PagureFlaskInternaltests(tests.Modeltests): # Add comment output = self.app.put('/pv/pull-request/comment/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, {'message': 'Comment added'}) self.session.commit() @@ -193,7 +195,7 @@ class PagureFlaskInternaltests(tests.Modeltests): # Add comment output = self.app.put('/pv/ticket/comment/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, {'message': 'Comment added'}) self.session.commit() @@ -283,7 +285,7 @@ class PagureFlaskInternaltests(tests.Modeltests): # Add comment output = self.app.put('/pv/ticket/comment/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, {'message': 'Comment added'}) self.session.commit() @@ -383,7 +385,7 @@ class PagureFlaskInternaltests(tests.Modeltests): # Add comment output = self.app.put('/pv/ticket/comment/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, {'message': 'Comment added'}) repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -413,7 +415,7 @@ class PagureFlaskInternaltests(tests.Modeltests): # Add comment output = self.app.put('/pv/ticket/comment/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, {'message': 'Comment added'}) repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -533,7 +535,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -557,7 +559,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "Ok" } - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, exp) @patch('pagure.lib.notify.send_email') @@ -655,7 +657,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -679,7 +681,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "No changes" } - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, exp) @patch('pagure.lib.notify.send_email') @@ -808,7 +810,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -832,7 +834,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "With merge" } - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, exp) @patch('pagure.lib.notify.send_email') @@ -960,7 +962,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -984,7 +986,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "Conflicts" } - js_data = json.loads(output.data) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual(js_data, exp) def test_get_branches_of_commit(self): @@ -997,8 +999,8 @@ class PagureFlaskInternaltests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/adduser') self.assertEqual(output.status_code, 200) - csrf_token = output.data.split( - b'name="csrf_token" type="hidden" value="')[1].split(b'">')[0] + csrf_token = output.get_data(as_text=True).split( + 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # No CSRF token data = { @@ -1007,10 +1009,10 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/commit/', data=data) self.assertEqual(output.status_code, 400) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u'code': u'ERROR', u'message': u'Invalid input submitted'} + {'code': 'ERROR', 'message': 'Invalid input submitted'} ) # Invalid repo @@ -1021,12 +1023,12 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/commit/', data=data) self.assertEqual(output.status_code, 404) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, { - u'code': u'ERROR', - u'message': u'No repo found with the information provided' + 'code': 'ERROR', + 'message': 'No repo found with the information provided' } ) @@ -1038,10 +1040,10 @@ class PagureFlaskInternaltests(tests.Modeltests): output = self.app.post('/pv/branches/commit/', data=data) self.assertEqual(output.status_code, 400) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u'code': u'ERROR', u'message': u'No commit id submitted'} + {'code': 'ERROR', 'message': 'No commit id submitted'} ) # Request is fine, but git repo doesn't exist @@ -1061,12 +1063,12 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/commit/', data=data) self.assertEqual(output.status_code, 404) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, { - u'code': u'ERROR', - u'message': u'No git repo found with the information provided' + 'code': 'ERROR', + 'message': 'No git repo found with the information provided' } ) @@ -1155,12 +1157,12 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/commit/', data=data) self.assertEqual(output.status_code, 404) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, { - u'code': u'ERROR', - u'message': 'This commit could not be found in this repo' + 'code': 'ERROR', + 'message': 'This commit could not be found in this repo' } ) @@ -1172,12 +1174,12 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/commit/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, { - u'code': u'OK', - u'branches': ['feature_branch'], + 'code': 'OK', + 'branches': ['feature_branch'], } ) @@ -1253,7 +1255,7 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/commit/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, { @@ -1278,10 +1280,10 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/heads/', data=data) self.assertEqual(output.status_code, 400) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u'code': u'ERROR', u'message': u'Invalid input submitted'} + {'code': 'ERROR', 'message': 'Invalid input submitted'} ) # Invalid repo @@ -1292,12 +1294,12 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/heads/', data=data) self.assertEqual(output.status_code, 404) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, { - u'code': u'ERROR', - u'message': u'No repo found with the information provided' + 'code': 'ERROR', + 'message': 'No repo found with the information provided' } ) @@ -1309,10 +1311,10 @@ class PagureFlaskInternaltests(tests.Modeltests): output = self.app.post('/pv/branches/heads/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u"branches": {}, u"code": u"OK", u"heads": {}} + {"branches": {}, "code": "OK", "heads": {}} ) # Request is fine, but git repo doesn't exist @@ -1331,12 +1333,12 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/heads/', data=data) self.assertEqual(output.status_code, 404) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, { - u'code': u'ERROR', - u'message': u'No git repo found with the information provided' + 'code': 'ERROR', + 'message': 'No git repo found with the information provided' } ) @@ -1424,7 +1426,7 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/branches/heads/', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) # We can't test the content since the commit hash will change all # the time, so let's just check the structure self.assertEqual( @@ -1441,10 +1443,10 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/authors', data=data) self.assertEqual(output.status_code, 400) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u'code': u'ERROR', u'message': u'Invalid input submitted'} + {'code': 'ERROR', 'message': 'Invalid input submitted'} ) def test_get_stats_commits_invalid_repo(self): @@ -1461,11 +1463,11 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/authors', data=data) self.assertEqual(output.status_code, 404) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u'code': u'ERROR', - u'message': u'No repo found with the information provided'} + {'code': 'ERROR', + 'message': 'No repo found with the information provided'} ) def test_get_stats_commits_empty_git(self): @@ -1485,7 +1487,7 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/authors', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), ['code', 'message', 'task_id', 'url'] @@ -1495,11 +1497,11 @@ class PagureFlaskInternaltests(tests.Modeltests): self.assertTrue(js_data['url'].startswith('/pv/task/')) output = self.app.get(js_data['url']) - js_data2 = json.loads(output.data.decode('utf-8')) + js_data2 = json.loads(output.get_data(as_text=True)) self.assertTrue( js_data2 in [ - {u'results': u"reference 'refs/heads/master' not found"}, - {u'results': u"Reference 'refs/heads/master' not found"} + {'results': "reference 'refs/heads/master' not found"}, + {'results': "Reference 'refs/heads/master' not found"} ] ) @@ -1523,7 +1525,7 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/authors', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), ['code', 'message', 'task_id', 'url'] @@ -1536,14 +1538,14 @@ class PagureFlaskInternaltests(tests.Modeltests): while output.status_code == 418: time.sleep(0.5) output = self.app.get(js_data['url']) - js_data2 = json.loads(output.data.decode('utf-8')) + js_data2 = json.loads(output.get_data(as_text=True)) self.assertTrue(js_data2['results'][3] > 1509110062) js_data2['results'][3] = 1509110062 self.assertDictEqual( js_data2, - {u'results': [ + {'results': [ 2, - [[2, [[u'Alice Author', u'alice@authors.tld']]]], + [[2, [['Alice Author', 'alice@authors.tld']]]], 1, 1509110062 ] @@ -1558,10 +1560,10 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/trend', data=data) self.assertEqual(output.status_code, 400) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u'code': u'ERROR', u'message': u'Invalid input submitted'} + {'code': 'ERROR', 'message': 'Invalid input submitted'} ) def test_get_stats_commits_trend_invalid_repo(self): @@ -1578,11 +1580,11 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/trend', data=data) self.assertEqual(output.status_code, 404) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertDictEqual( js_data, - {u'code': u'ERROR', - u'message': u'No repo found with the information provided'} + {'code': 'ERROR', + 'message': 'No repo found with the information provided'} ) def test_get_stats_commits_trend_empty_git(self): @@ -1602,7 +1604,7 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/trend', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), ['code', 'message', 'task_id', 'url'] @@ -1612,11 +1614,11 @@ class PagureFlaskInternaltests(tests.Modeltests): self.assertTrue(js_data['url'].startswith('/pv/task/')) output = self.app.get(js_data['url']) - js_data2 = json.loads(output.data.decode('utf-8')) + js_data2 = json.loads(output.get_data(as_text=True)) self.assertTrue( js_data2 in [ - {u'results': u"reference 'refs/heads/master' not found"}, - {u'results': u"Reference 'refs/heads/master' not found"} + {'results': "reference 'refs/heads/master' not found"}, + {'results': "Reference 'refs/heads/master' not found"} ] ) @@ -1640,7 +1642,7 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/stats/commits/trend', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), ['code', 'message', 'task_id', 'url'] @@ -1650,11 +1652,11 @@ class PagureFlaskInternaltests(tests.Modeltests): self.assertTrue(js_data['url'].startswith('/pv/task/')) output = self.app.get(js_data['url']) - js_data2 = json.loads(output.data.decode('utf-8')) + js_data2 = json.loads(output.get_data(as_text=True)) today = datetime.datetime.utcnow().date() self.assertDictEqual( js_data2, - {u'results': [[str(today), 2]]} + {'results': [[str(today), 2]]} ) def test_get_project_family_no_project(self): @@ -1672,13 +1674,13 @@ class PagureFlaskInternaltests(tests.Modeltests): output = self.app.post('/pv/test/family') self.assertEqual(output.status_code, 400) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), - [u'code', u'message'] + ['code', 'message'] ) - self.assertEqual(js_data['code'], u'ERROR') - self.assertEqual(js_data['message'], u'Invalid input submitted') + self.assertEqual(js_data['code'], 'ERROR') + self.assertEqual(js_data['message'], 'Invalid input submitted') def test_get_project_family(self): ''' Test the get_project_family from the internal API. ''' @@ -1698,13 +1700,13 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/test/family', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), - [u'code', u'family'] + ['code', 'family'] ) self.assertEqual(js_data['code'], 'OK') - self.assertEqual(js_data['family'], [u'test']) + self.assertEqual(js_data['family'], ['test']) def test_get_project_larger_family(self): ''' Test the get_project_family from the internal API. ''' @@ -1760,15 +1762,15 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/test/family', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), - [u'code', u'family'] + ['code', 'family'] ) self.assertEqual(js_data['code'], 'OK') self.assertEqual( js_data['family'], - [u'test', u'fork/foo/test', u'fork/ralph/test']) + ['test', 'fork/foo/test', 'fork/ralph/test']) def test_get_pull_request_ready_branch_main_repo_no_branch(self): '''Test the get_pull_request_ready_branch from the internal API @@ -1791,15 +1793,15 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/pull-request/ready', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), - [u'code', u'message'] + ['code', 'message'] ) self.assertEqual(js_data['code'], 'OK') self.assertEqual( js_data['message'], - {u'branch_w_pr': {}, u'new_branch': {}}) + {'branch_w_pr': {}, 'new_branch': {}}) def test_get_pull_request_ready_branch_on_fork(self): '''Test the get_pull_request_ready_branch from the internal API on @@ -1842,17 +1844,18 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/pull-request/ready', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), - [u'code', u'message'] + ['code', 'message'] ) self.assertEqual(js_data['code'], 'OK') self.assertListEqual( sorted(js_data['message'].keys()), - [u'branch_w_pr', u'new_branch']) + ['branch_w_pr', 'new_branch']) self.assertEqual(js_data['message']['branch_w_pr'], {}) - self.assertEqual(js_data['message']['new_branch'].keys(), ['feature']) + self.assertListEqual( + list(js_data['message']['new_branch']), ['feature']) self.assertEqual(len(js_data['message']['new_branch']['feature']), 2) def test_get_pull_request_ready_branch_on_fork_no_parent_no_pr(self): @@ -1906,10 +1909,10 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/pull-request/ready', data=data) self.assertEqual(output.status_code, 400) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), - [u'code', u'message'] + ['code', 'message'] ) self.assertEqual(js_data['code'], 'ERROR') self.assertEqual( @@ -1967,17 +1970,18 @@ class PagureFlaskInternaltests(tests.Modeltests): } output = self.app.post('/pv/pull-request/ready', data=data) self.assertEqual(output.status_code, 200) - js_data = json.loads(output.data.decode('utf-8')) + js_data = json.loads(output.get_data(as_text=True)) self.assertEqual( sorted(js_data.keys()), - [u'code', u'message'] + ['code', 'message'] ) self.assertEqual(js_data['code'], 'OK') self.assertEqual( sorted(js_data['message'].keys()), - [u'branch_w_pr', u'new_branch']) + ['branch_w_pr', 'new_branch']) self.assertEqual(js_data['message']['branch_w_pr'], {}) - self.assertEqual(js_data['message']['new_branch'].keys(), ['feature']) + self.assertListEqual( + list(js_data['message']['new_branch']), ['feature']) self.assertEqual(len(js_data['message']['new_branch']['feature']), 2) diff --git a/tests/test_pagure_flask_ui_app.py b/tests/test_pagure_flask_ui_app.py index 1772096..9557498 100644 --- a/tests/test_pagure_flask_ui_app.py +++ b/tests/test_pagure_flask_ui_app.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -41,7 +43,7 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Home - Pagure HTML title set', - output.data) + output.get_data(as_text=True)) def test_watch_list(self): ''' Test for watch list of a user ''' @@ -49,43 +51,46 @@ class PagureFlaskApptests(tests.Modeltests): user = tests.FakeUser(username='pingou') with tests.user_set(self.app.application, user): output = self.app.get('/') + output_text = output.get_data(as_text=True) self.assertIn( '
    You have no projects
    ', - output.data) + output_text) self.assertIn( '

    You have no forks

    ', - output.data) + output_text) self.assertIn( '

    No project in watch list

    ', - output.data) + output_text) tests.create_projects(self.session) output = self.app.get('/') + output_text = output.get_data(as_text=True) self.assertIn( 'My Projects 3', - output.data) + output_text) self.assertIn( 'My Forks 0', - output.data) + output_text) self.assertIn( 'My Watch List 3', - output.data) + output_text) def test_view_users(self): """ Test the view_users endpoint. """ output = self.app.get('/users/?page=abc') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    \n Users ' - '2

    ', output.data) + '2', output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) @patch.dict('pagure.config.config', {'ITEM_PER_PAGE': 2}) def test_view_user_repo_cnt(self): @@ -96,26 +101,28 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/user/pingou') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 3', - output.data) + output_text) self.assertIn( - '
  • page 1 of 2
  • ', output.data) - self.assertEqual(output.data.count('class="repo_desc"'), 2) + '
  • page 1 of 2
  • ', output_text) + self.assertEqual(output_text.count('class="repo_desc"'), 2) self.assertIn( - 'Forks 0', output.data) + 'Forks 0', output_text) def test_view_user(self): """ Test the view_user endpoint. """ output = self.app.get('/user/pingou?repopage=abc&forkpage=def') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 0', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) tests.create_projects(self.session) self.gitrepos = tests.create_projects_git( @@ -123,14 +130,15 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/user/pingou?repopage=abc&forkpage=def') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 3', - output.data) + output_text) self.assertIn( - 'Forks 0', output.data) + 'Forks 0', output_text) self.assertNotIn( - '
  • page 1 of 2
  • ', output.data) - self.assertEqual(output.data.count('class="repo_desc"'), 3) + '
  • page 1 of 2
  • ', output_text) + self.assertEqual(output_text.count('class="repo_desc"'), 3) @patch.dict('pagure.config.config', {'ENABLE_UI_NEW_PROJECTS': False}) def test_new_project_when_turned_off_in_the_ui(self): @@ -159,17 +167,18 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'My Projects 0', - output.data) + 'My Projects 0', + output_text) # master template self.assertNotIn( - u'
    ', - output.data) + output_text) user.username = 'foo' with tests.user_set(self.app.application, user): data['csrf_token'] = csrf_token output = self.app.post('/new/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'
    \nProject #1
    ', - output.data) - self.assertIn(u'

    This repo is brand new!

    ', output.data) + '
    \nProject #1
    ', + output_text) + self.assertIn('

    This repo is brand new!

    ', + output_text) self.assertIn( - u'Overview - project-1 - Pagure', output.data) + 'Overview - project-1 - Pagure', output_text) # After projects = pagure.lib.search_projects(self.session) @@ -338,8 +354,9 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/new/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'Create new Project', output.data) + 'Create new Project', output_text) csrf_token = self.get_csrf(output=output) @@ -351,13 +368,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post('/new/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'New project - Pagure', output.data) + 'New project - Pagure', output_text) self.assertIn( - u'Create new Project', output.data) + 'Create new Project', output_text) self.assertIn( - u'\n Invalid input. \n' - u' ', output.data) + '\n Invalid input. \n' + ' ', output_text) @patch.dict('pagure.config.config', {'PRIVATE_PROJECTS': True}) def test_new_project_private(self): @@ -379,10 +397,9 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/new/') self.assertEqual(output.status_code, 200) self.assertIn( - u'Create new Project', output.data) + 'Create new Project', output.get_data(as_text=True)) - csrf_token = output.data.split( - 'name="csrf_token" type="hidden" value="')[1].split('">')[0] + csrf_token = self.get_csrf(output=output) data = { 'description': 'Project #1', @@ -391,40 +408,45 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'Create new Project', output.data) + 'Create new Project', output_text) self.assertIn( - u'\n This field is required. \n' - ' ', output.data) + '\n This field is required. \n' + ' ', output_text) data['name'] = 'project-1' output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Create new Project', output_text) self.assertNotIn( - u'\n This field is required. \n' - ' ', output.data) + '\n This field is required. \n' + ' ', output_text) data['csrf_token'] = csrf_token output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Create new Project', output_text) self.assertIn( - u'\n No user ' + '\n No user ' '"username" found\n
    ', - output.data) + output_text) user.username = 'foo' with tests.user_set(self.app.application, user): data['csrf_token'] = csrf_token output = self.app.post('/new/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'
    \nProject #1
    ', - output.data) - self.assertIn(u'

    This repo is brand new!

    ', output.data) + '
    \nProject #1
    ', + output_text) + self.assertIn('

    This repo is brand new!

    ', + output_text) self.assertIn( - u'Overview - foo/project-1 - Pagure', output.data) + 'Overview - foo/project-1 - Pagure', output_text) # After projects = pagure.lib.search_projects(self.session) @@ -459,10 +481,11 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/new/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - b'Create new Project', output.data) + 'Create new Project', output_text) - csrf_token = output.data.decode('utf-8').split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -473,14 +496,16 @@ class PagureFlaskApptests(tests.Modeltests): } output = self.app.post('/new/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \nPrõjéctö #1
    ', - output.data if six.PY2 else output.data.decode('utf-8')) + output_text) self.assertIn( '''

    project-1

    Prõjéctö #1

    -
    ''', output.data if six.PY2 else output.data.decode('utf-8')) + ''', + output_text) data = { 'description': 'Мой первый суперский репозиторий', @@ -490,14 +515,16 @@ class PagureFlaskApptests(tests.Modeltests): } output = self.app.post('/new/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \nМой первый суперский репозиторий
    ', - output.data if six.PY2 else output.data.decode('utf-8')) + output_text) self.assertIn( '''

    project-2

    Мой первый суперский репозиторий

    -
    ''', output.data if six.PY2 else output.data.decode('utf-8')) + ''', + output_text) # After projects = pagure.lib.search_projects(self.session) @@ -534,7 +561,7 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/new/') self.assertEqual(output.status_code, 200) self.assertIn( - b'Create new Project', output.data) + 'Create new Project', output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -548,11 +575,11 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \ntest
    ', - output.data if six.PY2 else output.data.decode('utf-8')) + output.get_data(as_text=True)) self.assertEqual(pygit2init.call_count, 4) pygit2init.assert_any_call( - u'%s/repos/project-1.git' % self.path, + '%s/repos/project-1.git' % self.path, bare=True, template_path=None) path = os.path.join(self.path, 'repos', 'project-1.git') @@ -569,13 +596,13 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \ntest2
    ', - output.data if six.PY2 else output.data.decode('utf-8')) + output.get_data(as_text=True)) self.assertEqual(pygit2init.call_count, 8) pygit2init.assert_any_call( - u'%s/repos/project-2.git' % self.path, + '%s/repos/project-2.git' % self.path, bare=True, - template_path=u'%s/repos/project-1.git' % self.path) + template_path='%s/repos/project-1.git' % self.path) # After projects = pagure.lib.search_projects(self.session) @@ -600,20 +627,21 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

    ' in output.data) + self.assertIn('

    Page not found (404)

    ', output.get_data(as_text=True)) user.username = 'foo' with tests.user_set(self.app.application, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) self.assertIn( '', output.data) + '', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -622,22 +650,24 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post('/settings/', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) data['csrf_token'] = csrf_token output = self.app.post( '/settings/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertIn('Invalid SSH keys', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Invalid SSH keys', output_text) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertIn('>blah', output.data) + '
    ', output_text) + self.assertIn('>blah', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -652,13 +682,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertIn('Public ssh key updated', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Public ssh key updated', output_text) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) self.assertIn( '', output.data) + '', output_text) @patch.dict('pagure.config.config', {'LOCAL_SSH_KEY': False}) @patch('pagure.ui.app.admin_session_timedout') @@ -695,12 +727,13 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) self.assertNotIn( '', output.data) + '', output_text) # Before user = pagure.lib.get_user(self.session, 'foo') @@ -720,13 +753,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertNotIn('Public ssh key updated', output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('Public ssh key updated', output_text) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) self.assertNotIn( '', output.data) + '', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # With CSRF @@ -780,7 +815,7 @@ class PagureFlaskApptests(tests.Modeltests):
  • 1
  • item 2
  • """ - self.assertEqual(output.data, exp) + self.assertEqual(output.get_data(as_text=True), exp) tests.create_projects(self.session) texts = [ @@ -818,7 +853,7 @@ class PagureFlaskApptests(tests.Modeltests): } output = self.app.post('/markdown/?repo=test', data=data) self.assertEqual(output.status_code, 200) - self.assertEqual(expected[idx], output.data) + self.assertEqual(expected[idx], output.get_data(as_text=True)) def test_markdown_preview(self): """ Test the markdown_preview endpoint with a non-existing commit. @@ -829,11 +864,12 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] tests.create_projects(self.session) @@ -848,7 +884,7 @@ class PagureFlaskApptests(tests.Modeltests): } output = self.app.post('/markdown/?repo=test', data=data) self.assertEqual(output.status_code, 200) - self.assertEqual(exp, output.data) + self.assertEqual(exp, output.get_data(as_text=True)) def test_markdown_preview_valid_commit(self): """ Test the markdown_preview endpoint with an existing commit. """ @@ -858,11 +894,12 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] tests.create_projects(self.session) @@ -884,7 +921,7 @@ class PagureFlaskApptests(tests.Modeltests): } output = self.app.post('/markdown/?repo=test', data=data) self.assertEqual(output.status_code, 200) - self.assertEqual(exp, output.data) + self.assertEqual(exp, output.get_data(as_text=True)) @patch('pagure.ui.app.admin_session_timedout') def test_remove_user_email(self, ast): @@ -896,20 +933,21 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/settings/email/drop') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

    ' in output.data) + self.assertIn('

    Page not found (404)

    ', output.get_data(as_text=True)) user.username = 'foo' with tests.user_set(self.app.application, user): output = self.app.post('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '', output.data) + '', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -919,28 +957,30 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '', output.data) + '', output_text) self.assertIn( '\n You must always have at least one email', - output.data) + output_text) user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.post('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '', output.data) + '', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -950,10 +990,11 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) data = { 'csrf_token': csrf_token, @@ -963,12 +1004,13 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '\n You do not have the ' - 'email: foobar@pingou.com, nothing to remove', output.data) + 'email: foobar@pingou.com, nothing to remove', output_text) data = { 'csrf_token': csrf_token, @@ -978,14 +1020,16 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertEqual(output.data.count('foo@pingou.com'), 0) - self.assertEqual(output.data.count('bar@pingou.com'), 3) + output_text = output.get_data(as_text=True) + self.assertEqual(output_text.count('foo@pingou.com'), 0) + self.assertEqual(output_text.count('bar@pingou.com'), 3) output = self.app.post( '/settings/email/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertEqual(output.data.count('foo@pingou.com'), 0) - self.assertEqual(output.data.count('bar@pingou.com'), 3) + output_text = output.get_data(as_text=True) + self.assertEqual(output_text.count('foo@pingou.com'), 0) + self.assertEqual(output_text.count('bar@pingou.com'), 3) ast.return_value = True output = self.app.post('/settings/email/drop', data=data) @@ -1003,28 +1047,29 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/settings/email/add') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

    ' in output.data) + self.assertIn('

    Page not found (404)

    ', output.get_data(as_text=True)) user.username = 'foo' with tests.user_set(self.app.application, user): output = self.app.post('/settings/email/add') self.assertEqual(output.status_code, 200) - - self.assertTrue("Add new email" in output.data) + output_text = output.get_data(as_text=True) + self.assertIn("Add new email", output_text) self.assertIn( '', output.data) + 'name="email" type="text" value="">', output_text) user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.post('/settings/email/add') self.assertEqual(output.status_code, 200) - self.assertTrue("Add new email" in output.data) + output_text = output.get_data(as_text=True) + self.assertIn("Add new email", output_text) self.assertIn( '', output.data) + 'name="email" type="text" value="">', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1034,8 +1079,9 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/add', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertTrue("Add new email" in output.data) - self.assertEqual(output.data.count('foo2@pingou.com'), 1) + output_text = output.get_data(as_text=True) + self.assertIn("Add new email", output_text) + self.assertEqual(output_text.count('foo2@pingou.com'), 1) # New email data = { @@ -1046,26 +1092,28 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/add', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '\n Email pending validation', - output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) - self.assertEqual(output.data.count('bar@pingou.com'), 5) - self.assertEqual(output.data.count('foðbar@pingou.com'), 2) + output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) + self.assertEqual(output_text.count('bar@pingou.com'), 5) + self.assertEqual(output_text.count('foðbar@pingou.com'), 2) # Email already pending output = self.app.post( '/settings/email/add', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n ' - 'Add new email', output.data) + 'Add new email', output_text) self.assertIn( '\n This email is already ' - 'pending confirmation', output.data) + 'pending confirmation', output_text) # User already has this email data = { @@ -1076,18 +1124,21 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/add', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertTrue("Add new email" in output.data) + output_text = output.get_data(as_text=True) + self.assertTrue("Add new email" in output_text) self.assertTrue( 'Invalid value, can't be any of: bar@pingou.com, ' - 'foo@pingou.com. ' in output.data + 'foo@pingou.com. ' in output_text or 'Invalid value, can't be any of: foo@pingou.com, ' - 'bar@pingou.com. ' in output.data + 'bar@pingou.com. ' in output_text ) - self.assertEqual(output.data.count('foo@pingou.com'), 6) - self.assertEqual(output.data.count('bar@pingou.com'), 5) - self.assertEqual(output.data.count('foðbar@pingou.com'), 0) - + self.assertEqual( + output_text.count('foo@pingou.com'), 6) + self.assertEqual( + output_text.count('bar@pingou.com'), 5) + self.assertEqual( + output_text.count('foðbar@pingou.com'), 0) # Email registered by someone else data = { @@ -1098,10 +1149,11 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/add', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertTrue("Add new email" in output.data) + output_text = output.get_data(as_text=True) + self.assertTrue("Add new email" in output_text) self.assertIn( 'Invalid value, can't be any of: foo@bar.com. ', - output.data) + output_text) ast.return_value = True output = self.app.post('/settings/email/add', data=data) @@ -1119,20 +1171,21 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/settings/email/default') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

    ' in output.data) + self.assertTrue('

    Page not found (404)

    ' in output.get_data(as_text=True)) user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output_text) self.assertIn( '', output.data) + '', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1142,10 +1195,11 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/default', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) # Set invalid default email data = { @@ -1156,14 +1210,15 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/default', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) self.assertIn( '\n You do not have the ' 'email: foobar@pingou.com, nothing to set', - output.data) + output_text) # Set default email data = { @@ -1174,13 +1229,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/default', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) self.assertIn( '\n Default email set to: ' - 'foo@pingou.com', output.data) + 'foo@pingou.com', output_text) ast.return_value = True output = self.app.post('/settings/email/default', data=data) @@ -1211,20 +1267,21 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/settings/email/resend') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

    ' in output.data) + self.assertTrue('

    Page not found (404)

    ' in output.get_data(as_text=True)) user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '', output.data) + '', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1234,10 +1291,11 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/resend', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) # Set invalid default email data = { @@ -1248,13 +1306,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/resend', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) self.assertIn( '\n This email address has ' - 'already been confirmed', output.data) + 'already been confirmed', output_text) # Validate a non-validated email data = { @@ -1265,13 +1324,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/email/resend', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output_text) + self.assertEqual(output_text.count('foo@pingou.com'), 4) self.assertIn( '\n Confirmation email re-sent', - output.data) + output_text) ast.return_value = True output = self.app.post('/settings/email/resend', data=data) @@ -1305,23 +1365,25 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get( '/settings/email/confirm/foobar', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '\n No email associated with this token.', - output.data) + output_text) # Confirm email output = self.app.get( '/settings/email/confirm/abcdef', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output_text) self.assertIn( '\n Email validated', - output.data) + output_text) userobj = pagure.lib.search_user(self.session, username='pingou') self.assertEqual(len(userobj.emails), 3) @@ -1361,9 +1423,10 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/user/pingou/requests') self.assertEqual(output.status_code, 200) - self.assertIn('test pull-request #1', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('test pull-request #1', output_text) self.assertEqual( - output.data.count('\n ' - 'Create a new token\n', output.data) + 'Create a new token\n', output_text) self.assertIn( '', - output.data) + output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1669,14 +1743,15 @@ class PagureFlaskApptests(tests.Modeltests): # missing CSRF output = self.app.post('/settings/token/new', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Create token - Pagure', output.data) + 'Create token - Pagure', output_text) self.assertIn( '
    \n ' - 'Create a new token\n', output.data) + 'Create a new token\n', output_text) self.assertIn( '', - output.data) + output_text) data = { 'acls': ['new_project'], @@ -1686,14 +1761,15 @@ class PagureFlaskApptests(tests.Modeltests): # Invalid ACLs output = self.app.post('/settings/token/new', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Create token - Pagure', output.data) + 'Create token - Pagure', output_text) self.assertIn( '
    \n ' - 'Create a new token\n', output.data) + 'Create a new token\n', output_text) self.assertIn( '', - output.data) + output_text) data = { 'acls': ['create_project', 'fork_project'], @@ -1704,13 +1780,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/token/new', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'foo\'s settings - Pagure', output.data) + 'foo\'s settings - Pagure', output_text) self.assertIn( '\n Token created\n', - output.data) + output_text) self.assertEqual( - output.data.count( + output_text.count( 'Valid' ' until: '), 1) @@ -1729,7 +1806,7 @@ class PagureFlaskApptests(tests.Modeltests): # Token doesn't exist output = self.app.post('/settings/token/revoke/foobar') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

    ' in output.data) + self.assertTrue('

    Page not found (404)

    ' in output.get_data(as_text=True)) # Create the foobar API token but associated w/ the user 'foo' item = pagure.lib.model.Token( @@ -1744,7 +1821,7 @@ class PagureFlaskApptests(tests.Modeltests): # Token not associated w/ this user output = self.app.post('/settings/token/revoke/foobar') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

    ' in output.data) + self.assertTrue('

    Page not found (404)

    ' in output.get_data(as_text=True)) user.username = 'foo' with tests.user_set(self.app.application, user): @@ -1752,14 +1829,15 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post( '/settings/token/revoke/foobar', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - "foo's settings - Pagure", output.data) + "foo's settings - Pagure", output_text) self.assertEqual( - output.data.count( + output_text.count( 'Valid' ' until: '), 1) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1771,10 +1849,11 @@ class PagureFlaskApptests(tests.Modeltests): '/settings/token/revoke/foobar', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - "foo's settings - Pagure", output.data) + "foo's settings - Pagure", output_text) self.assertEqual( - output.data.count( + output_text.count( 'Valid' ' until: '), 0) @@ -1787,10 +1866,11 @@ class PagureFlaskApptests(tests.Modeltests): '/settings/token/revoke/foobar', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - "foo's settings - Pagure", output.data) + "foo's settings - Pagure", output_text) self.assertEqual( - output.data.count( + output_text.count( 'Valid' ' until: '), 0) @@ -1841,11 +1921,14 @@ class PagureFlaskAppNoDocstests(tests.Modeltests): output = self.app.post('/new/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'
    \nProject #1
    ', output.data) - self.assertIn(u'

    This repo is brand new!

    ', output.data) + '
    \nProject #1
    ', + output_text) + self.assertIn('

    This repo is brand new!

    ', + output_text) self.assertIn( - u'Overview - project-1 - Pagure', output.data) + 'Overview - project-1 - Pagure', output_text) # After projects = pagure.lib.search_projects(self.session) @@ -1895,12 +1978,14 @@ class PagureFlaskAppNoTicketstests(tests.Modeltests): output = self.app.post('/new/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'
    \nProject #1
    ', - output.data) - self.assertIn(u'

    This repo is brand new!

    ', output.data) + '
    \nProject #1
    ', + output_text) + self.assertIn('

    This repo is brand new!

    ', + output_text) self.assertIn( - u'Overview - project-1 - Pagure', output.data) + 'Overview - project-1 - Pagure', output_text) # After projects = pagure.lib.search_projects(self.session) diff --git a/tests/test_pagure_flask_ui_app_give_project.py b/tests/test_pagure_flask_ui_app_give_project.py index 3e71b22..8181e68 100644 --- a/tests/test_pagure_flask_ui_app_give_project.py +++ b/tests/test_pagure_flask_ui_app_give_project.py @@ -74,7 +74,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 200) self.assertIn( 'Overview - test - Pagure', - output.data) + output.get_data(as_text=True)) self._check_user() @@ -99,7 +99,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 404) self.assertIn( '

    No such user foobar found

    ', - output.data) + output.get_data(as_text=True)) self._check_user() @@ -121,7 +121,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): output = self.app.post( '/test/give', data=data, follow_redirects=True) self.assertEqual(output.status_code, 404) - self.assertIn('

    No user specified

    ', output.data) + self.assertIn('

    No user specified

    ', output.get_data(as_text=True)) self._check_user() @@ -146,7 +146,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 403) self.assertIn( '

    You are not allowed to change the settings for this ' - 'project

    ', output.data) + 'project

    ', output.get_data(as_text=True)) self._check_user() @@ -171,7 +171,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 403) self.assertIn( '

    You are not allowed to change the settings for this ' - 'project

    ', output.data) + 'project

    ', output.get_data(as_text=True)) self._check_user() @@ -207,7 +207,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 403) self.assertIn( '

    You are not allowed to give this project

    ', - output.data) + output.get_data(as_text=True)) self._check_user() @@ -241,7 +241,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertIn( '\n The project has been ' 'transferred to foo\n', - output.data) + output.get_data(as_text=True)) self._check_user('foo') @@ -269,7 +269,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertIn( '\n The project has been ' 'transferred to foo\n', - output.data) + output.get_data(as_text=True)) self._check_user('foo') # Make sure that the user giving the project is still an admin @@ -311,7 +311,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertIn( '\n The project has been ' 'transferred to foo\n', - output.data) + output.get_data(as_text=True)) self._check_user('foo') # Make sure that the user giving the project is still an admin diff --git a/tests/test_pagure_flask_ui_app_index.py b/tests/test_pagure_flask_ui_app_index.py index 092f910..5c44ad7 100644 --- a/tests/test_pagure_flask_ui_app_index.py +++ b/tests/test_pagure_flask_ui_app_index.py @@ -40,17 +40,19 @@ class PagureFlaskAppIndextests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Home - Pagure HTML title set', - output.data) + output.get_data(as_text=True)) def test_index_logged_out(self): """ Test the index endpoint when logged out. """ output = self.app.get('/') self.assertEqual(output.status_code, 200) - self.assertIn('Home - Pagure', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Home - Pagure', output_text) self.assertIn( '

    All Projects ' - '0

    ', output.data) + '0', + output_text) tests.create_projects(self.session) @@ -58,7 +60,8 @@ class PagureFlaskAppIndextests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

    All Projects ' - '3

    ', output.data) + '3', + output.get_data(as_text=True)) def test_index_logged_in(self): """ Test the index endpoint when logged in. """ @@ -78,16 +81,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/?repopage=abc&forkpage=def') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) def test_index_commit_access_while_admin(self): """ Test the index endpoint filter for commit access only when user @@ -109,16 +113,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Before output = self.app.get('/?acl=commit') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) # Add foo to test with admin level project = pagure.lib._get_project(self.session, 'test') @@ -134,16 +139,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # After output = self.app.get('/?acl=commit') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 2', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) def test_index_commit_access_while_commit(self): """ Test the index endpoint filter for commit access only when user @@ -165,16 +171,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Before output = self.app.get('/?acl=commit') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) # Add foo to test with commit level project = pagure.lib._get_project(self.session, 'test') @@ -190,16 +197,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # After output = self.app.get('/?acl=commit') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 2', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) def test_index_commit_access_while_ticket(self): """ Test the index endpoint filter for commit access only when user @@ -221,16 +229,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Before output = self.app.get('/?acl=ticket') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) # Add foo to test with ticket level project = pagure.lib._get_project(self.session, 'test') @@ -246,16 +255,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # After - projects with ticket access aren't shown output = self.app.get('/?acl=ticket') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) def test_index_admin_access_while_admin(self): """ Test the index endpoint filter for admin access only when user @@ -277,16 +287,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Before output = self.app.get('/?acl=admin') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) # Add foo to test with commit level project = pagure.lib._get_project(self.session, 'test') @@ -302,16 +313,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # After output = self.app.get('/?acl=admin') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 2', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) def test_index_admin_access_while_commit(self): """ Test the index endpoint filter for admin access only when user @@ -333,16 +345,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Before output = self.app.get('/?acl=admin') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) # Add foo to test with commit level project = pagure.lib._get_project(self.session, 'test') @@ -358,16 +371,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # After output = self.app.get('/?acl=admin') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) def test_index_main_admin_access_while_commit(self): """ Test the index endpoint filter for main admin access only when @@ -389,16 +403,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Before output = self.app.get('/?acl=main admin') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) # Add foo to test with commit level project = pagure.lib._get_project(self.session, 'test') @@ -414,16 +429,17 @@ class PagureFlaskAppIndextests(tests.Modeltests): # After output = self.app.get('/?acl=main admin') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Projects 1', - output.data) + output_text) self.assertIn( 'Forks 0', - output.data) + output_text) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output_text.count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output_text.count('
    '), 6) def test_index_fork_without_parent(self): """ Test the index view: forks should display either their parent @@ -447,12 +463,13 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Before output = self.app.get('/') self.assertEqual(output.status_code, 200) - + output_text = output.get_data(as_text=True) self.assertIn( 'My Forks 1', - output.data) - segment = output.data.split('My Forks')[1].split('My Groups')[0] - self.assertRegexpMatches( + output_text) + segment = output_text.split('My Forks')[1].split('My Groups')[0] + six.assertRegex( + self, segment, r'foo/test3(\s*<[^>]+?>\s*)*?forked from(\s*<[^>]+?>\s*)*?test' ) @@ -466,12 +483,13 @@ class PagureFlaskAppIndextests(tests.Modeltests): # Check page again output = self.app.get('/') self.assertEqual(output.status_code, 200) - + output_text = output.get_data(as_text=True) self.assertIn( 'My Forks 1', - output.data) - segment = output.data.split('My Forks')[1].split('My Groups')[0] - self.assertRegexpMatches( + output_text) + segment = output_text.split('My Forks')[1].split('My Groups')[0] + six.assertRegex( + self, segment, r'foo/test3(\s*<[^>]+?>\s*)*?forked from a deleted repository' ) diff --git a/tests/test_pagure_flask_ui_fork.py b/tests/test_pagure_flask_ui_fork.py index 8d09a2e..ba6dee8 100644 --- a/tests/test_pagure_flask_ui_fork.py +++ b/tests/test_pagure_flask_ui_fork.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -262,25 +264,27 @@ class PagureFlaskForktests(tests.Modeltests): # View the pull-request output = self.app.get('/test/pull-request/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) #self.assertIn( #'

    PR#1\n' - #' PR from the feature branch\n

    ', output.data) + #' PR from the feature branch\n', + #output_text) self.assertIn( - 'title="View file as of 2a552b">sources', output.data) + 'title="View file as of 2a552b">sources', output_text) # Test if the `open changed file icon` is displayed. self.assertIn( 'class="open_changed_file_icon_wrap">' - '', output.data) + '
    ', output_text) self.assertIn( '+3', output.data) + 'pull-xs-right text-mono">+3', output_text) self.assertIn( '-1', - output.data) + output_text) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_FF(self, send_email): @@ -300,14 +304,16 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data={}, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) #self.assertIn( #'

    PR#1\n' - #' PR from the feature branch\n

    ', output.data) + #' PR from the feature branch\n', + #output_text) self.assertIn( - 'title="View file as of 2a552b">sources', output.data) + 'title="View file as of 2a552b">sources', output_text) # Wrong project data = { @@ -362,16 +368,17 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output_text) self.assertIn( '\n This request must be ' - 'assigned to be merged', output.data) + 'assigned to be merged', output_text) # PR assigned but not to this user self.session.commit() @@ -384,13 +391,14 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output_text) self.assertIn( '\n Only the assignee can ' - 'merge this review', output.data) + 'merge this review', output_text) # Project w/ minimal PR score self.session.commit() @@ -404,14 +412,15 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output_text) self.assertIn( '\n This request does not ' 'have the minimum review score necessary to be merged', - output.data) + output_text) # Merge self.session.commit() @@ -423,14 +432,15 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( - 'A commit on branch feature', output.data) + 'A commit on branch feature', output_text) self.assertNotIn( - 'Merge #1 `PR from the feature branch`', output.data) + 'Merge #1 `PR from the feature branch`', output_text) # Ensure we have the new commit - commits = _get_commits(output.data) + commits = _get_commits(output_text) self.assertEqual( commits, [ @@ -443,7 +453,7 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.get('/test/pull-request/1') self.assertIn( '

    Pull-Request has been merged by pingou

    ', - output.data) + output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_merge(self, send_email): @@ -473,13 +483,13 @@ class PagureFlaskForktests(tests.Modeltests): '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output.get_data(as_text=True)) # Check if the closing notification was added output = self.app.get('/test/pull-request/1') self.assertIn( '

    Pull-Request has been merged by pingou

    ', - output.data) + output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_merge_with_delete_branch(self, send_email): @@ -507,11 +517,12 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) # Check the branch is not mentioned self.assertNotIn( - 'PR#1\n' ' PR from the feature branch\n ', - output.data) - self.assertIn('Merge conflicts!', output.data) + output_text) + self.assertIn('Merge conflicts!', output_text) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_conflicts_with_delete_branch(self, send_email): @@ -572,15 +584,16 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' ' PR from the feature-branch branch\n ', - output.data) - self.assertIn('Merge conflicts!', output.data) + output_text) + self.assertIn('Merge conflicts!', output_text) # Check the branch still exists output = self.app.get('/test') - self.assertIn('feature-branch', output.data) + self.assertIn('feature-branch', output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_nochange(self, send_email): @@ -609,18 +622,19 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' ' Merged', - output.data) + output_text) self.assertIn('Nothing to do, changes were already merged', - output.data) + output_text) # Check if the closing notification was added output = self.app.get('/test/pull-request/1') self.assertIn( '

    Pull-Request has been merged by pingou

    ', - output.data) + output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_request_pull_close(self, send_email): @@ -631,12 +645,13 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.get('/test/pull-request/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' - ' ', output.data) - self.assertIn('
    Merged by\n', output.data) + ' ', output_text) + self.assertIn('
    Merged by\n', output_text) self.assertIn( - 'title="View file as of 2a552b">sources', output.data) + 'title="View file as of 2a552b">sources', output_text) @patch('pagure.lib.notify.send_email') def test_request_pull_disabled(self, send_email): @@ -738,11 +753,13 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.get('/test/pull-request/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n

    ', output.data) + ' PR from the feature branch\n

    ', output_text) self.assertTrue( - output.data.count('Overview - test - Pagure', output.data) + 'Overview - test - Pagure', + output_text) self.assertIn( - u'\n Fork is empty, there are no ' - u'commits to create a pull request with', output.data) + '\n Fork is empty, there are no ' + 'commits to create a pull request with', + output_text) shutil.rmtree(newpath) @@ -824,57 +844,61 @@ class PagureFlaskForktests(tests.Modeltests): output = self.app.get('/test/pull-requests') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    \n 0 Pull Requests (of 0)\n

    ', - output.data) + output_text) # Open is primary self.assertIn( 'Open', output.data) + 'href="/test/pull-requests">Open', output_text) self.assertIn( 'Closed', output.data) + 'href="/test/pull-requests?status=0">Closed', output_text) self.set_up_git_repo(new_project=None, branch_from='feature') output = self.app.get('/test/pull-requests') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    \n 1 Pull Requests (of 1)\n

    ', - output.data) + output_text) # Open is primary self.assertIn( 'Open', output.data) + 'href="/test/pull-requests">Open', output_text) self.assertIn( 'Closed', output.data) + 'href="/test/pull-requests?status=0">Closed', output_text) output = self.app.get('/test/pull-requests?status=Closed') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    \n 0 Closed Pull Requests (of 0)\n

    ', - output.data) + output_text) # Close is primary self.assertIn( 'Open', output.data) + 'href="/test/pull-requests">Open', output_text) self.assertIn( 'Closed', output.data) + 'href="/test/pull-requests?status=0">Closed', output_text) output = self.app.get('/test/pull-requests?status=0') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    \n 0 Closed/Merged Pull Requests (of 0)\n

    ', - output.data) + output_text) # Close is primary self.assertIn( 'Open', output.data) + 'href="/test/pull-requests">Open', output_text) self.assertIn( 'Closed', output.data) + 'href="/test/pull-requests?status=0">Closed', output_text) # Project w/o pull-request repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -908,7 +932,7 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) npatch = [] - for row in output.data.split('\n'): + for row in output.get_data(as_text=True).split('\n'): if row.startswith('Date:'): continue if row.startswith('From '): @@ -1002,7 +1026,7 @@ index 9f44358..2a552bb 100644 \ No newline at end of file """ - self.assertEqual(output.data, exp) + self.assertEqual(output.get_data(as_text=True), exp) # Project w/o pull-request repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -1026,7 +1050,7 @@ index 9f44358..2a552bb 100644 self.assertEqual(output.status_code, 200) npatch = [] - for row in output.data.split('\n'): + for row in output.get_data(as_text=True).split('\n'): if row.startswith('Date:'): continue if row.startswith('From '): @@ -1143,7 +1167,7 @@ index 9f44358..2a552bb 100644 self.assertEqual(output.status_code, 200) npatch = [] - for row in output.data.split('\n'): + for row in output.get_data(as_text=True).split('\n'): if row.startswith('Date:'): continue if row.startswith('From '): @@ -1229,13 +1253,17 @@ index 0000000..2a552bb self.assertEqual(req.id, 1) self.assertEqual(req.title, 'PR from the feature branch') - output = self.app.get('/test/pull-request/1.patch', follow_redirects=True) + output = self.app.get('/test/pull-request/1.patch', + follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', + output_text) self.assertIn( - u'\n Fork is empty, there are no ' - u'commits to create a pull request with', output.data) + '\n Fork is empty, there are no ' + 'commits to create a pull request with', + output_text) shutil.rmtree(newpath) @@ -1258,11 +1286,12 @@ index 0000000..2a552bb output = self.app.post( '/test/pull-request/cancel/1', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( '\n Invalid input submitted', - output.data) + output_text) output = self.app.get('/test/pull-request/1') self.assertEqual(output.status_code, 200) @@ -1318,11 +1347,12 @@ index 0000000..2a552bb '/test/pull-request/cancel/1', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( '\n Pull request canceled!', - output.data) + output_text) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) def test_update_pull_requests_assign(self): @@ -1348,15 +1378,16 @@ index 0000000..2a552bb output = self.app.post( '/test/pull-request/1/update', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output_text) self.assertNotIn( '\n Request assigned', - output.data) + output_text) output = self.app.get('/test/pull-request/1') self.assertEqual(output.status_code, 200) @@ -1372,15 +1403,16 @@ index 0000000..2a552bb '/test/pull-request/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output_text) self.assertNotIn( '\n Request assigned', - output.data) + output_text) # Invalid assignee data = { @@ -1392,15 +1424,16 @@ index 0000000..2a552bb '/test/pull-request/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output_text) self.assertIn( '\n No user "bar" found', - output.data) + output_text) # Assign the PR data = { @@ -1421,15 +1454,16 @@ index 0000000..2a552bb '/test/pull-request/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output_text) self.assertIn( '\n Request assigned', - output.data) + output_text) # Pull-Request closed repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -1485,15 +1519,16 @@ index 0000000..2a552bb '/test/pull-request/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output_text) self.assertNotIn( '\n Request assigned', - output.data) + output_text) # Tag the PR data = { @@ -1505,18 +1540,19 @@ index 0000000..2a552bb '/test/pull-request/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output_text) self.assertIn( '\n Pull-request tagged with: black', - output.data) + output_text) self.assertIn( 'title="comma separated list of tags"\n ' - 'value="black" />', output.data) + 'value="black" />', output_text) # Try as another user user.username = 'foo' @@ -1549,7 +1585,7 @@ index 0000000..2a552bb '/test/pull-request/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - soup = BeautifulSoup(output.data, "html.parser") + soup = BeautifulSoup(output.get_data(as_text=True), "html.parser") self.assertEqual( soup.find("title").string, 'PR#1: PR from the feature branch - test\n - Pagure' @@ -1623,7 +1659,7 @@ index 0000000..2a552bb output = self.app.get('/new/') self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -1678,31 +1714,34 @@ index 0000000..2a552bb output = self.app.get('/test/diff/feature..master') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Diff from master to feature - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( - '

    No commits found

    ', output.data) + '

    No commits found

    ', output_text) output = self.app.get('/test/diff/master..feature') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Diff from feature to master - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertNotIn( '', output.data) + 'value="Create">', output_text) user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.get('/test/diff/master..feature') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Create new Pull Request for master - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -1716,18 +1755,22 @@ index 0000000..2a552bb output = self.app.post( '/test/diff/master..feature', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#2: foo bar PR - test\n - Pagure', - output.data) - self.assertIn('

    Test Initial Comment

    ', output.data) - self.assertEqual(output.data.count('title="PY C (pingou)"'), 1) + output_text) + self.assertIn('

    Test Initial Comment

    ', + output_text) + self.assertEqual( + output_text.count('title="PY C (pingou)"'), + 1) # Test if the `open changed file icon` is displayed. self.assertIn( 'class="open_changed_file_icon_wrap">' - '', output.data) + '', output_text) # Case 2 - Add an empty initial comment data = { @@ -1739,10 +1782,11 @@ index 0000000..2a552bb output = self.app.post( '/test/diff/master..feature', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#3: foo bar PR - test\n - Pagure', - output.data) - self.assertNotIn('
    Diff from feature to master - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '\n This project enforces the ' - 'Signed-off-by statement on all commits', output.data) + 'Signed-off-by statement on all commits', output_text) self.assertNotIn( '', - output.data) + output_text) self.assertNotIn( '\n This repo enforces that ' - 'all commits are signed off by their author.', output.data) + 'all commits are signed off by their author.', output_text) @patch('pagure.lib.notify.send_email') def test_new_request_pull_req_sign_off_submit(self, send_email): @@ -1815,15 +1860,16 @@ index 0000000..2a552bb output = self.app.get('/test/diff/master..feature') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Create new Pull Request for master - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '\n This project enforces the ' - 'Signed-off-by statement on all commits', output.data) + 'Signed-off-by statement on all commits', output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -1837,20 +1883,21 @@ index 0000000..2a552bb output = self.app.post( '/test/diff/master..feature', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Create new Pull Request for master - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) # Flashed information message self.assertIn( '\n This project enforces the ' - 'Signed-off-by statement on all commits', output.data) + 'Signed-off-by statement on all commits', output_text) # Flashed error message self.assertIn( '\n This repo enforces that ' - 'all commits are signed off by their author.', output.data) + 'all commits are signed off by their author.', output_text) self.assertIn( '', - output.data) + output_text) @patch('pagure.lib.notify.send_email') def test_request_pull_commit_start_stop(self, send_email): @@ -1873,12 +1920,13 @@ index 0000000..2a552bb with tests.user_set(self.app.application, user): output = self.app.get('/test/diff/master..feature') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Create new Pull Request for master - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -1892,10 +1940,11 @@ index 0000000..2a552bb output = self.app.post( '/test/diff/master..feature', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#2: foo bar PR - test\n - Pagure', - output.data) - self.assertIn('

    Test Initial Comment

    ', output.data) + output_text) + self.assertIn('

    Test Initial Comment

    ', output_text) # Check if commit start and stop have been set for PR#2 request = pagure.lib.search_pull_requests( @@ -1962,8 +2011,8 @@ index 0000000..2a552bb '/fork/ralph/test/diff/master..feature') self.assertEqual(output.status_code, 404) self.assertIn( - u'

    No pull-request allowed on this project

    ', - output.data) + '

    No pull-request allowed on this project

    ', + output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_new_request_pull_fork_to_fork(self, send_email): @@ -2038,12 +2087,13 @@ index 0000000..2a552bb output = self.app.get( '/fork/ralph/test/diff/master..feature') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Create new Pull Request for master - fork/ralph/test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -2058,10 +2108,11 @@ index 0000000..2a552bb '/fork/ralph/test/diff/master..feature', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: foo bar PR - fork/foo/test\n - Pagure', - output.data) - self.assertIn('

    Test Initial Comment

    ', output.data) + output_text) + self.assertIn('

    Test Initial Comment

    ', output_text) @patch('pagure.lib.notify.send_email') def test_new_request_pull_fork_to_other_fork(self, send_email): @@ -2131,12 +2182,13 @@ index 0000000..2a552bb output = self.app.get( '/fork/ralph/test/diff/master..feature?project_to=fork/foo/test') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Create new Pull Request for master - fork/ralph/test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -2151,20 +2203,22 @@ index 0000000..2a552bb '/fork/ralph/test/diff/master..feature?project_to=fork/foo/test', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: foo bar PR - fork/foo/test\n - Pagure', - output.data) - self.assertIn('

    Test Initial Comment

    ', output.data) + output_text) + self.assertIn('

    Test Initial Comment

    ', output_text) # Case 1 - Opening PR to parent repo, shows project_to works output = self.app.post( '/fork/ralph/test/diff/master..feature', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#4: foo bar PR - test\n - Pagure', - output.data) - self.assertIn('

    Test Initial Comment

    ', output.data) + output_text) + self.assertIn('

    Test Initial Comment

    ', output_text) @patch('pagure.lib.notify.send_email') def test_new_request_pull_fork_to_other_unrelated_fork(self, send_email): @@ -2242,8 +2296,8 @@ index 0000000..2a552bb data=data, follow_redirects=True) self.assertEqual(output.status_code, 400) self.assertIn( - u"

    fork/foo/test is not part of fork/ralph/test2's " - u"family

    ", output.data) + "

    fork/foo/test is not part of fork/ralph/test2's " + "family

    ", output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_new_request_pull_empty_repo(self, send_email): @@ -2275,8 +2329,8 @@ index 0000000..2a552bb follow_redirects=True) self.assertEqual(output.status_code, 400) self.assertIn( - u'

    Fork is empty, there are no commits to create a pull ' - u'request with

    ', output.data) + '

    Fork is empty, there are no commits to create a pull ' + 'request with

    ', output.get_data(as_text=True)) output = self.app.get('/test/new_issue') csrf_token = self.get_csrf(output=output) @@ -2290,8 +2344,8 @@ index 0000000..2a552bb '/test/diff/master..feature', data=data, follow_redirects=True) self.assertEqual(output.status_code, 400) self.assertIn( - u'

    Fork is empty, there are no commits to create a pull ' - u'request with

    ', output.data) + '

    Fork is empty, there are no commits to create a pull ' + 'request with

    ', output.get_data(as_text=True)) shutil.rmtree(newpath) @@ -2325,8 +2379,8 @@ index 0000000..2a552bb '/fork/foo/test/diff/master..master', follow_redirects=True) self.assertEqual(output.status_code, 400) self.assertIn( - u'

    Fork is empty, there are no commits to create a pull ' - u'request with

    ', output.data) + '

    Fork is empty, there are no commits to create a pull ' + 'request with

    ', output.get_data(as_text=True)) shutil.rmtree(newpath) @@ -2349,7 +2403,7 @@ index 0000000..2a552bb output = self.app.post('/test/pull-request/1/comment') self.assertEqual(output.status_code, 200) self.assertTrue( - output.data.startswith('\n
    ')) + output.get_data(as_text=True).startswith('\n
    ')) csrf_token = self.get_csrf(output=output) @@ -2361,13 +2415,14 @@ index 0000000..2a552bb '/test/pull-request/1/comment', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '\n Comment added', - output.data) - self.assertEqual(output.data.count('title="PY C (pingou)"'), 2) + output_text) + self.assertEqual(output_text.count('title="PY C (pingou)"'), 2) # Project w/o pull-request repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -2408,13 +2463,14 @@ index 0000000..2a552bb output = self.app.post( '/test/pull-request/1/comment/drop', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n

    ', output.data) - #self.assertIn('href="#comment-1">¶', output.data) + ' PR from the feature branch\n

    ', output_text) + #self.assertIn('href="#comment-1">¶', output_text) self.assertIn( '

    This look alright but we can do better

    ', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -2441,13 +2497,14 @@ index 0000000..2a552bb '/test/pull-request/1/comment/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output_text) self.assertIn( '\n Comment removed', - output.data) + output_text) # Project w/o pull-request repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -2484,7 +2541,7 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) # Creating comment to play with self.assertTrue( - output.data.startswith('\n
    ')) + output.get_data(as_text=True).startswith('\n
    ')) csrf_token = self.get_csrf(output=output) @@ -2497,23 +2554,25 @@ index 0000000..2a552bb follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output_text) self.assertIn( '\n Comment added', - output.data) + output_text) # Check if the comment is there self.assertIn( - '

    This look alright but we can do better

    ', output.data) + '

    This look alright but we can do better

    ', output_text) output = self.app.get('/test/pull-request/1/comment/1/edit') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) - self.assertIn('
    ', output.data) + self.assertIn('
    ', output_text) # Checking if the comment is there in the update page self.assertIn( - 'This look alright but we can do better', output.data) + 'This look alright but we can do better', output_text) csrf_token = self.get_csrf(output=output) @@ -2524,22 +2583,23 @@ index 0000000..2a552bb output = self.app.post( '/test/pull-request/1/comment/1/edit', data=data, follow_redirects=True) + output_text = output.get_data(as_text=True) # Checking if the comment is updated in the main page self.assertIn( - '

    This look alright but we can do better than this.

    ', output.data) + '

    This look alright but we can do better than this.

    ', output_text) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output_text) # Checking if Edited by User is there or not self.assertTrue( 'Edited just now by pingou ' - in output.data + in output_text or 'Edited seconds ago by pingou ' - in output.data) + in output_text) self.assertIn( - '\n Comment updated', output.data) + '\n Comment updated', output_text) # Project w/o pull-request repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -2574,14 +2634,15 @@ index 0000000..2a552bb output = self.app.post( '/test/pull-request/1/merge', data={}, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output_text) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n

    ', output.data) + ' PR from the feature branch\n

    ', output_text) self.assertIn( - 'title="View file as of 2a552b">sources', output.data) + 'title="View file as of 2a552b">sources', output_text) # Wrong project data = { @@ -2622,14 +2683,15 @@ index 0000000..2a552bb output = self.app.post( '/test/pull-request/1/merge', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( - 'Merge #1 `PR from the feature branch`', output.data) + 'Merge #1 `PR from the feature branch`', output_text) self.assertIn( - 'A commit on branch feature', output.data) + 'A commit on branch feature', output_text) # Ensure we have the merge commit - commits = _get_commits(output.data) + commits = _get_commits(output_text) self.assertEqual(commits, [ 'Merge #1 `PR from the feature branch`', 'A commit on branch feature', @@ -2640,7 +2702,7 @@ index 0000000..2a552bb output = self.app.get('/test/pull-request/1') self.assertIn( '

    Pull-Request has been merged by pingou

    ', - output.data) + output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_internal_endpoint_main_ahead(self, send_email): @@ -2749,16 +2811,14 @@ index 0000000..2a552bb user.username = 'foo' with tests.user_set(self.app.application, user): - output = self.app.get('/new') - csrf_token = output.data.split( - 'name="csrf_token" type="hidden" value="')[1].split('">')[0] + csrf_token = self.get_csrf() output = self.app.post( '/pv/pull-request/ready', data={'repo': 'test', 'csrf_token': csrf_token} ) self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.get_data(as_text=True)) self.assertEqual( data, { @@ -2800,7 +2860,7 @@ index 0000000..2a552bb output = self.app.get('/new/') self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -2842,41 +2902,42 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'Fork and Edit\n \n', - output.data) + output.get_data(as_text=True)) # Check fork-edit doesn't show for binary files output = self.app.get('/test/blob/master/f/test.jpg') self.assertEqual(output.status_code, 200) self.assertNotIn( 'Fork and Edit\n \n', - output.data) + output.get_data(as_text=True)) # Check for edit panel output = self.app.post('fork_edit/test/edit/master/f/sources', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
  • ' '  master' '
  • ' '  sources
  • ', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # View what's supposed to be an image output = self.app.post('fork_edit/test/edit/master/f/test.jpg', data=data, follow_redirects=True) self.assertEqual(output.status_code, 400) - self.assertIn('

    Cannot edit binary files

    ', output.data) + self.assertIn('

    Cannot edit binary files

    ', output.get_data(as_text=True)) # Check fork-edit shows when user is not logged in output = self.app.get('/test/blob/master/f/sources') self.assertEqual(output.status_code, 200) self.assertIn( 'Fork and Edit\n \n', - output.data) + output.get_data(as_text=True)) # Check if fork-edit shows for different user user.username = 'pingou' @@ -2887,14 +2948,14 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'Edit in your fork\n \n', - output.data) + output.get_data(as_text=True)) # Check fork-edit doesn't show for binary output = self.app.get('/test/blob/master/f/test.jpg') self.assertEqual(output.status_code, 200) self.assertNotIn( 'Edit in your fork\n \n', - output.data) + output.get_data(as_text=True)) @patch('pagure.lib.notify.send_email') def test_fork_without_main_repo(self, send_email): @@ -2945,12 +3006,14 @@ index 0000000..2a552bb # UI test for deleted main output = self.app.get('/fork/foo/test') self.assertEqual(output.status_code, 200) - self.assertIn('Fork from a deleted repository\n', output.data) + self.assertIn('Fork from a deleted repository\n', output.get_data(as_text=True)) # Testing commit endpoint output = self.app.get('/fork/foo/test/commits/master') self.assertEqual(output.status_code, 200) - self.assertIn('Commits 2\n

    \n', output.data) + self.assertIn( + 'Commits 2\n

    \n', + output.get_data(as_text=True)) # Test pull-request endpoint output = self.app.get('/fork/foo/test/pull-requests') diff --git a/tests/test_pagure_flask_ui_groups.py b/tests/test_pagure_flask_ui_groups.py index 5c2e095..6411a4e 100644 --- a/tests/test_pagure_flask_ui_groups.py +++ b/tests/test_pagure_flask_ui_groups.py @@ -35,7 +35,7 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertIn( '

    \n' ' Groups 0', - output.data) + output.get_data(as_text=True)) def test_add_group_index_auth(self): """ Test the presence of the add group button on the front page. """ @@ -45,7 +45,7 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'title="Create New Group" aria-hidden="true">', - output.data) + output.get_data(as_text=True)) @patch.dict('pagure.config.config', {'ENABLE_GROUP_MNGT': False}) def test_not_add_group_index_auth(self): @@ -56,7 +56,7 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertNotIn( 'title="Create New Group" aria-hidden="true">', - output.data) + output.get_data(as_text=True)) def test_add_group(self): """ Test the add_group endpoint. """ @@ -72,11 +72,11 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/group/add') self.assertEqual(output.status_code, 200) - self.assertIn('Create new group', output.data) + self.assertIn('Create new group', output.get_data(as_text=True)) self.assertNotIn( - '', output.data) + '', output.get_data(as_text=True)) - csrf_token = output.data.split( + csrf_token = output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -85,8 +85,8 @@ class PagureFlaskGroupstests(tests.Modeltests): # Insufficient input output = self.app.post('/group/add', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new group', output.data) - self.assertEqual(output.data.count( + self.assertIn('Create new group', output.get_data(as_text=True)) + self.assertEqual(output.get_data(as_text=True).count( 'This field is required.'), 3) data = { @@ -98,8 +98,8 @@ class PagureFlaskGroupstests(tests.Modeltests): # Missing CSRF output = self.app.post('/group/add', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new group', output.data) - self.assertEqual(output.data.count( + self.assertIn('Create new group', output.get_data(as_text=True)) + self.assertEqual(output.get_data(as_text=True).count( 'This field is required.'), 0) data['csrf_token'] = csrf_token @@ -110,14 +110,14 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n User `pingou` added to ' - 'the group `test_group`.', output.data) + 'the group `test_group`.', output.get_data(as_text=True)) self.assertIn( '\n Group `test_group` created.', - output.data) + output.get_data(as_text=True)) self.assertIn( '

    \n' ' Groups 1', - output.data) + output.get_data(as_text=True)) user = tests.FakeUser( username='pingou', @@ -125,8 +125,8 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/group/add') self.assertEqual(output.status_code, 200) - self.assertIn('Create new group', output.data) - self.assertIn('', output.data) + self.assertIn('Create new group', output.get_data(as_text=True)) + self.assertIn('', output.get_data(as_text=True)) data = { 'group_name': 'test_admin_group', @@ -142,14 +142,14 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n User `pingou` added to ' - 'the group `test_admin_group`.', output.data) + 'the group `test_admin_group`.', output.get_data(as_text=True)) self.assertIn( '\n Group `test_admin_group` ' - 'created.',output.data) + 'created.',output.get_data(as_text=True)) self.assertIn( '

    \n' ' Groups 2', - output.data) + output.get_data(as_text=True)) def test_edit_group(self): """ Test the edit_group endpoint. """ @@ -161,7 +161,7 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/group/test_group/edit') self.assertEqual(output.status_code, 404) - self.assertIn('

    Group not found

    ', output.data) + self.assertIn('

    Group not found

    ', output.get_data(as_text=True)) self.test_add_group() @@ -169,21 +169,21 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/group/foo/edit') self.assertEqual(output.status_code, 404) - self.assertIn('

    Group not found

    ', output.data) + self.assertIn('

    Group not found

    ', output.get_data(as_text=True)) output = self.app.get('/group/test_group/edit') self.assertEqual(output.status_code, 200) self.assertIn( 'Edit group: test_group - Pagure', - output.data) + output.get_data(as_text=True)) self.assertIn( '
    ', - output.data) + output.get_data(as_text=True)) self.assertIn( '', output.data) + '', output.get_data(as_text=True)) - csrf_token = output.data.split( + csrf_token = output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing CSRF @@ -195,17 +195,16 @@ class PagureFlaskGroupstests(tests.Modeltests): output = self.app.post( '/group/test_group/edit', data=data, follow_redirects=True) - #print output.data self.assertEqual(output.status_code, 200) self.assertIn( 'Edit group: test_group - Pagure', - output.data) + output.get_data(as_text=True)) self.assertIn( '', - output.data) + output.get_data(as_text=True)) self.assertIn( '', output.data) + '', output.get_data(as_text=True)) # User not allowed data['csrf_token'] = csrf_token @@ -215,13 +214,13 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Group test_group - Pagure', - output.data) + output.get_data(as_text=True)) self.assertIn( '\n You are not ' - 'allowed to edit this group', output.data) + 'allowed to edit this group', output.get_data(as_text=True)) self.assertIn( ' ' - ' Test Group', output.data) + ' Test Group', output.get_data(as_text=True)) user.username = 'pingou' with tests.user_set(self.app.application, user): @@ -229,19 +228,19 @@ class PagureFlaskGroupstests(tests.Modeltests): output = self.app.post( '/group/bar/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 404) - self.assertIn('

    Group not found

    ', output.data) + self.assertIn('

    Group not found

    ', output.get_data(as_text=True)) output = self.app.post( '/group/test_group/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Group test_group - Pagure', output.data) + 'Group test_group - Pagure', output.get_data(as_text=True)) self.assertIn( ' ' - ' Test Group', output.data) + ' Test Group', output.get_data(as_text=True)) self.assertIn( 'Group "Test Group edited" (test_group) edited', - output.data) + output.get_data(as_text=True)) def test_group_delete(self): """ Test the group_delete endpoint. """ @@ -254,11 +253,11 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

    No groups have been created on this pagure instance ' - 'yet

    ', output.data) + 'yet

    ', output.get_data(as_text=True)) self.assertIn( '

    \n' ' Groups 0', - output.data) + output.get_data(as_text=True)) self.test_add_group() @@ -268,10 +267,10 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertIn( '

    \n' ' Groups 1', - output.data) + output.get_data(as_text=True)) output = self.app.get('/new/') - csrf_token = output.data.split( + csrf_token = output.get_data(as_text=True).split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] user.username = 'foo' @@ -285,22 +284,22 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n No group `bar` found', - output.data) + output.get_data(as_text=True)) self.assertIn( '

    \n' ' Groups 1', - output.data) + output.get_data(as_text=True)) output = self.app.post( '/group/test_group/delete', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( '\n You are not allowed to ' - 'delete the group test_group', output.data) + 'delete the group test_group', output.get_data(as_text=True)) self.assertIn( '

    \n' ' Groups 1', - output.data) + output.get_data(as_text=True)) user.username = 'bar' with tests.user_set(self.app.application, user): @@ -317,11 +316,11 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n Group `test_group` has ' - 'been deleted', output.data) + 'been deleted', output.get_data(as_text=True)) self.assertIn( '

    \n' ' Groups 0', - output.data) + output.get_data(as_text=True)) def test_view_group(self): """ Test the view_group endpoint. """ @@ -336,7 +335,7 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '  ' - 'Test Group', output.data) + 'Test Group', output.get_data(as_text=True)) output = self.app.get('/group/test_admin_group') self.assertEqual(output.status_code, 404) @@ -350,10 +349,10 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '  ' - 'Test Admin Group', output.data) - self.assertEqual(output.data.count('')[0] # No CSRF @@ -365,8 +364,8 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '  ' - 'Test Admin Group', output.data) - self.assertEqual(output.data.count('\n No user `bar` found', - output.data) + output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Admin Group', output.data) - self.assertEqual(output.data.count('\n User `foo` added to the ' - 'group `test_admin_group`.', output.data) + 'group `test_admin_group`.', output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Admin Group', output.data) - self.assertEqual(output.data.count('  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('')[0] data = {'csrf_token': csrf_token} @@ -433,22 +432,22 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n No user `bar` found', - output.data) + output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('\n Could not find user ' - 'username', output.data) + 'username', output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('\n User `foo` could not be ' - 'found in the group `test_group`', output.data) + 'found in the group `test_group`', output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('\n User `foo` could not be ' - 'found in the group `test_group`', output.data) + 'found in the group `test_group`', output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('\n User `foo` added to the ' - 'group `test_group`.', output.data) + 'group `test_group`.', output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('\n User `foo` removed from ' - 'the group `test_group`', output.data) + 'the group `test_group`', output.get_data(as_text=True)) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('= 0.8'] import pkg_resources @@ -55,24 +57,24 @@ class PagureFlaskPrIssueLinkTest(tests.Modeltests): msg = pagure.lib.new_issue( session=self.session, repo=repo, - title=u'tést íssüé', + title='tést íssüé', content='We should work on this', user='pingou', ticketfolder=None ) self.session.commit() - self.assertEqual(msg.title, u'tést íssüé') + self.assertEqual(msg.title, 'tést íssüé') msg = pagure.lib.new_issue( session=self.session, repo=repo, - title=u'tést íssüé #2', + title='tést íssüé #2', content='We should still work on this', user='foo', ticketfolder=None ) self.session.commit() - self.assertEqual(msg.title, u'tést íssüé #2') + self.assertEqual(msg.title, 'tést íssüé #2') # Add a commit to the fork @@ -141,19 +143,18 @@ class PagureFlaskPrIssueLinkTest(tests.Modeltests): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) self.assertNotIn( - u'Related PR(s)', - output.data.decode('utf-8')) + 'Related PR(s)', + output.get_data(as_text=True)) def test_ticket_link(self): """ Test that no Related PR(s) block is showing in the issue page. """ time.sleep(1) output = self.app.get('/test/issue/2') - print output.data.decode('utf-8') self.assertEqual(output.status_code, 200) self.assertIn( - u'Related PR(s)', - output.data.decode('utf-8')) + 'Related PR(s)', + output.get_data(as_text=True)) if __name__ == '__main__': diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py index be3610e..0c621b0 100644 --- a/tests/test_pagure_flask_ui_issues.py +++ b/tests/test_pagure_flask_ui_issues.py @@ -8,13 +8,14 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources from unittest.case import SkipTest import json import unittest -import urlparse import shutil import sys import os @@ -22,9 +23,11 @@ try: import pyclamd except ImportError: pyclamd = None +import six import tempfile import re from datetime import datetime, timedelta +from six.moves.urllib.parse import urlparse, parse_qs import pygit2 from bs4 import BeautifulSoup @@ -63,9 +66,9 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.get('/test/new_issue') self.assertEqual(output.status_code, 200) - self.assertTrue( - '
    \n New issue' - in output.data) + self.assertIn( + '
    \n New issue', + output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -75,29 +78,32 @@ class PagureFlaskIssuestests(tests.Modeltests): # Insufficient input output = self.app.post('/test/new_issue', data=data) self.assertEqual(output.status_code, 200) - self.assertTrue( - '
    \n New issue' - in output.data) - self.assertEqual(output.data.count( + output_text = output.get_data(as_text=True) + self.assertIn( + '
    \n New issue', + output_text) + self.assertEqual(output_text.count( 'This field is required.'), 2) data['title'] = 'Test issue' output = self.app.post('/test/new_issue', data=data) self.assertEqual(output.status_code, 200) - self.assertTrue( - '
    \n New issue' - in output.data) - self.assertEqual(output.data.count( + output_text = output.get_data(as_text=True) + self.assertIn( + '
    \n New issue', + output_text) + self.assertEqual(output_text.count( 'This field is required.'), 1) data['issue_content'] = 'We really should improve on this issue' data['status'] = 'Open' output = self.app.post('/test/new_issue', data=data) self.assertEqual(output.status_code, 200) - self.assertTrue( - '
    \n New issue' - in output.data) - self.assertEqual(output.data.count( + output_text = output.get_data(as_text=True) + self.assertIn( + '
    \n New issue', + output_text) + self.assertEqual(output_text.count( '\n This field is required.'), 0) @@ -107,7 +113,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 404) self.assertIn( '

    No such user found in the database: username

    ', - output.data) + output.get_data(as_text=True)) # User not logged in output = self.app.get('/test/new_issue') @@ -118,13 +124,14 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/new_issue', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Project w/o issue tracker repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -156,13 +163,13 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/new_issue') self.assertEqual(output.status_code, 200) - self.assertTrue( - '
    \n New issue' - in output.data) + self.assertIn( + '
    \n New issue', + output.get_data(as_text=True)) csrf_token = self.get_csrf() - with open(os.path.join(tests.HERE, 'placebo.png'), 'r') as stream: + with open(os.path.join(tests.HERE, 'placebo.png'), 'rb') as stream: data = { 'title': 'Test issue', 'issue_content': 'We really should improve on this issue\n' @@ -177,19 +184,20 @@ class PagureFlaskIssuestests(tests.Modeltests): '/test/new_issue', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Check the image was uploaded self.assertIn( 'href="/test/issue/raw/' '8a06845923010b27bfd8e7e75acff7badc40d1021b4' '994e01f5e11ca40bc3abe', - output.data) + output_text) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -213,7 +221,7 @@ class PagureFlaskIssuestests(tests.Modeltests): user = tests.FakeUser() user.username = 'pingou' with tests.user_set(self.app.application, user): - with open(os.path.join(tests.HERE, 'placebo.png'), 'r') as stream: + with open(os.path.join(tests.HERE, 'placebo.png'), 'rb') as stream: data = { 'title': 'Test issue', 'issue_content': 'We really should improve on this issue', @@ -248,11 +256,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) + in output.get_data(as_text=True)) csrf_token = self.get_csrf() - with open(os.path.join(tests.HERE, 'placebo.png'), 'r') as stream: + with open(os.path.join(tests.HERE, 'placebo.png'), 'rb') as stream: data = { 'title': 'Test issue3', 'issue_content': 'We really should improve on this issue\n' @@ -267,20 +275,21 @@ class PagureFlaskIssuestests(tests.Modeltests): '/somenamespace/test3/new_issue', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue3 - test3 - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Check the image was uploaded self.assertIn( 'href="/somenamespace/test3/issue/raw/' '8a06845923010b27bfd8e7e75acff7badc40d1021b4' '994e01f5e11ca40bc3abe', - output.data) + output_text) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -302,15 +311,15 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) + in output.get_data(as_text=True)) csrf_token = self.get_csrf() with open( - os.path.join(tests.HERE, 'placebo.png'), 'r' + os.path.join(tests.HERE, 'placebo.png'), 'rb' ) as stream: with open( - os.path.join(tests.HERE, 'pagure.png'), 'r' + os.path.join(tests.HERE, 'pagure.png'), 'rb' ) as stream2: data = { 'title': 'Test issue', @@ -326,24 +335,25 @@ class PagureFlaskIssuestests(tests.Modeltests): '/test/new_issue', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Check the image was uploaded self.assertIn( 'href="/test/issue/raw/' '8a06845923010b27bfd8e7e75acff7badc40d1021b4' '994e01f5e11ca40bc3abe', - output.data) + output_text) self.assertIn( 'href="/test/issue/raw/' '6498a2de405546200b6144da56fc25d0a3976ae688d' 'bfccaca609c8b4480523e', - output.data) + output_text) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -366,15 +376,15 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) + in output.get_data(as_text=True)) csrf_token = self.get_csrf() with open( - os.path.join(tests.HERE, 'placebo.png'), 'r' + os.path.join(tests.HERE, 'placebo.png'), 'rb' ) as stream: with open( - os.path.join(tests.HERE, 'pagure.png'), 'r' + os.path.join(tests.HERE, 'pagure.png'), 'rb' ) as stream2: data = { @@ -392,25 +402,26 @@ class PagureFlaskIssuestests(tests.Modeltests): data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue3 - test3 - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Check the image was uploaded self.assertIn( 'href="/somenamespace/test3/issue/raw/' '8a06845923010b27bfd8e7e75acff7badc40d1021b4' '994e01f5e11ca40bc3abe', - output.data) + output_text) self.assertIn( 'href="/somenamespace/test3/issue/raw/' '6498a2de405546200b6144da56fc25d0a3976ae688d' 'bfccaca609c8b4480523e', - output.data) + output_text) def test_new_issue_metadata_user(self): """ Test the new_issue endpoint when the user has access to the @@ -427,15 +438,16 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/new_issue') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n New issue', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) def test_new_issue_metadata_not_user(self): """ Test the new_issue endpoint when the user does not have access @@ -452,15 +464,16 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/new_issue') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n New issue', - output.data) + output_text) self.assertNotIn( '', - output.data) + output_text) self.assertNotIn( '', - output.data) + output_text) @patch('pagure.lib.git.update_git', MagicMock(return_value=True)) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) @@ -485,15 +498,16 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/new_issue') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
    \n New issue', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -511,25 +525,26 @@ class PagureFlaskIssuestests(tests.Modeltests): '/test/new_issue', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue3 - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Check the metadata self.assertIn( 'title="comma separated list of tags"\n ' - 'value="tag2" />', output.data) + 'value="tag2" />', output_text) self.assertIn( 'placeholder="username"\n value="foo" />', - output.data) + output_text) self.assertIn( '
    \n ' '\n ' - '\n v2.0\n', output.data) + '\n v2.0\n', output_text) @patch('pagure.lib.git.update_git', MagicMock(return_value=True)) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) @@ -555,15 +570,16 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/new_issue') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '', output_text) self.assertIn( - '

    \n 0 Open Issues', output.data) + '

    \n 0 Open Issues', output_text) repo = pagure.lib.get_authorized_project(self.session, 'test') # Create some custom fields to play with @@ -682,13 +700,13 @@ class PagureFlaskIssuestests(tests.Modeltests): msg = pagure.lib.new_issue( session=self.session, repo=repo, - title=u'tést íssüé', + title='tést íssüé', content='We should work on this', user='pingou', ticketfolder=None ) self.session.commit() - self.assertEqual(msg.title, u'tést íssüé') + self.assertEqual(msg.title, 'tést íssüé') msg = pagure.lib.set_custom_key_value( session=self.session, @@ -701,14 +719,14 @@ class PagureFlaskIssuestests(tests.Modeltests): msg = pagure.lib.new_issue( session=self.session, repo=repo, - title=u'Tést íssüé with milestone', + title='Tést íssüé with milestone', content='Testing search', user='pingou', milestone='1.1', ticketfolder=None ) self.session.commit() - self.assertEqual(msg.title, u'Tést íssüé with milestone') + self.assertEqual(msg.title, 'Tést íssüé with milestone') msg = pagure.lib.new_issue( session=self.session, @@ -734,157 +752,184 @@ class PagureFlaskIssuestests(tests.Modeltests): # Whole list output = self.app.get('/test/issues') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertTrue( - '

    \n 2 Open Issues' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', + output_text) + self.assertIn( + '

    \n 2 Open Issues', output_text) self.assertIn( '
    ', output.data) + 'closed issues of total 3 issues">', output_text) self.assertIn( '', output.data) + '3 issues">', output_text) # Verify that the sorting links are correct and the arrow is pointing # down next to the Opened column th_elements = re.findall(r'(.*?)', - output.data, re.M | re.S) + output_text, re.M | re.S) self.assertDictEqual( {'status': ['Open'], 'order_key': ['title'], 'order': ['desc']}, - urlparse.parse_qs(urlparse.urlparse( + parse_qs(urlparse( th_elements[0].split('"')[1]).query) ) self.assertDictEqual( {'status': ['Open'], 'order_key': ['date_created'], 'order': ['asc']}, - urlparse.parse_qs(urlparse.urlparse( + parse_qs(urlparse( th_elements[1].split('"')[1]).query) ) arrow = '' self.assertIn(arrow, th_elements[1]) self.assertDictEqual( {'status': ['Open'], 'order_key': ['last_updated'], 'order': ['desc']}, - urlparse.parse_qs(urlparse.urlparse( + parse_qs(urlparse( th_elements[2].split('"')[1]).query) ) self.assertDictEqual( {'status': ['Open'], 'order_key': ['priority'], 'order': ['desc']}, - urlparse.parse_qs(urlparse.urlparse( + parse_qs(urlparse( th_elements[3].split('"')[1]).query) ) self.assertDictEqual( {'status': ['Open'], 'order_key': ['user'], 'order': ['desc']}, - urlparse.parse_qs(urlparse.urlparse( + parse_qs(urlparse( th_elements[4].split('"')[1]).query) ) self.assertDictEqual( {'status': ['Open'], 'order_key': ['assignee'], 'order': ['desc']}, - urlparse.parse_qs(urlparse.urlparse( + parse_qs(urlparse( th_elements[5].split('"')[1]).query) ) # Status = closed (all but open) output = self.app.get('/test/issues?status=cloSED') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', + output_text) self.assertIn( - '

    \n 1 Closed Issues', output.data) + '

    \n 1 Closed Issues', output_text) self.assertIn( '
    ', output.data) + 'title="67% of open issues of total 3 issues">', output_text) self.assertIn( '', output.data) + 'of total 3 issues">', output_text) # Status = fixed output = self.app.get('/test/issues?status=fixed') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', + output_text) self.assertTrue( - '

    \n 0 Closed Issues' in output.data) + '

    \n 0 Closed Issues' in output_text) # Status = Invalid output = self.app.get('/test/issues?status=Invalid') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', output_text) self.assertTrue( - '

    \n 1 Closed Issues' in output.data) + '

    \n 1 Closed Issues' in output_text) # All tickets output = self.app.get('/test/issues?status=all') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', output_text) self.assertTrue( - '

    \n 3 Issues' in output.data) + '

    \n 3 Issues' in output_text) # Unicode search pattern output = self.app.get( '/test/issues?status=all&search_pattern=گروه') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('0 Issues', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', output_text) + self.assertIn('0 Issues', output_text) # Custom key searching output = self.app.get( '/test/issues?status=all&search_pattern=test1:firstissue') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('1 Issues', output.data) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Issues - test - Pagure', + output_text) + self.assertIn('1 Issues', output_text) # Custom key searching with space output = self.app.get( '/test/issues?status=all&search_pattern=test1:"second issue"') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('1 Issues', output.data) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Issues - test - Pagure', + output_text) + self.assertIn('1 Issues', output_text) # All tickets - different pagination before = pagure.config.config['ITEM_PER_PAGE'] pagure.config.config['ITEM_PER_PAGE'] = 1 output = self.app.get('/test/issues?status=all') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('

    \n 1 Issues (of 3)', output.data) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Issues - test - Pagure', + output_text) self.assertIn( - '
  • page 1 of 3
  • ', output.data) + '

    \n 1 Issues (of 3)', + output_text) + self.assertIn( + '
  • page 1 of 3
  • ', output_text) # All tickets - filtered for 1 - checking the pagination output = self.app.get( '/test/issues?status=all&search_pattern=invalid') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('

    \n 1 Issues (of 1)', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', output_text) + self.assertIn('

    \n 1 Issues (of 1)', output_text) self.assertIn( - '
  • page 1 of 1
  • ', output.data) + '
  • page 1 of 1
  • ', output_text) pagure.config.config['ITEM_PER_PAGE'] = before # Search for issues with no milestone MARK output = self.app.get( '/test/issues?milestone=none') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('1 Open Issues (of 1)', output.data) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Issues - test - Pagure', + output_text) + self.assertIn('1 Open Issues (of 1)', output_text) # Search for issues with no milestone and milestone 1.1 output = self.app.get( '/test/issues?milestone=none&milestone=1.1') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('2 Open Issues (of 2)', output.data) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Issues - test - Pagure', + output_text) + self.assertIn('2 Open Issues (of 2)', output_text) # Add another issue to test sorting msg = pagure.lib.new_issue( session=self.session, repo=repo, - title=u'Big problÈm!', + title='Big problÈm!', content='I need help ASAP', user='foo', ticketfolder=None ) self.session.commit() - self.assertEqual(msg.title, u'Big problÈm!') + self.assertEqual(msg.title, 'Big problÈm!') # Sort by last_updated output = self.app.get('/test/issues?order_key=last_updated') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Modified
    \n ') # First table row is the header @@ -902,8 +947,8 @@ class PagureFlaskIssuestests(tests.Modeltests): self.session.add(issue_one) self.session.commit() output = self.app.get('/test/issues?order_key=last_updated') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) # Make sure that issue one is first since it was modified last self.assertIn('href="/test/issue/1"', tr_elements[1]) # Make sure that issue four is second since it was modified before @@ -914,7 +959,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertIn('href="/test/issue/2"', tr_elements[3]) # Now query so that the results are ascending output = self.app.get('/test/issues?order_key=last_updated&order=asc') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Modified\n ') # First table row is the header @@ -925,8 +970,8 @@ class PagureFlaskIssuestests(tests.Modeltests): # Sort by title descending output = self.app.get('/test/issues?order_key=title') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Issue
    \n ') # First table row is the header @@ -937,8 +982,8 @@ class PagureFlaskIssuestests(tests.Modeltests): # Sort by title ascending output = self.app.get('/test/issues?order_key=title&order=asc') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Issue\n ') # First table row is the header @@ -949,8 +994,8 @@ class PagureFlaskIssuestests(tests.Modeltests): # Sort by user (reporter/author) descending output = self.app.get('/test/issues?order_key=user&order=desc') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Reporter\n ') # First table row is the header @@ -967,8 +1012,8 @@ class PagureFlaskIssuestests(tests.Modeltests): # Sort by user (reporter/author) ascending output = self.app.get('/test/issues?order_key=user&order=asc') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Reporter\n ') # First table row is the header @@ -1002,13 +1047,13 @@ class PagureFlaskIssuestests(tests.Modeltests): # Sort by assignee descending output = self.app.get('/test/issues?order_key=assignee&order=desc') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Assignee\n ') # First table row is the header self.assertIn(arrowed_th, tr_elements[0]) - _check_assignee_link(output.data, [ + _check_assignee_link(output.get_data(as_text=True), [ '/test/issues?status=Open&assignee=pingou', '/test/issues?status=Open&assignee=pingou', '/test/issues?status=Open&assignee=foo', @@ -1016,13 +1061,13 @@ class PagureFlaskIssuestests(tests.Modeltests): # Sort by assignee ascending output = self.app.get('/test/issues?order_key=assignee&order=asc') - tr_elements = re.findall(r'(.*?)', output.data, re.M | re.S) self.assertEqual(output.status_code, 200) + tr_elements = re.findall(r'(.*?)', output.get_data(as_text=True), re.M | re.S) arrowed_th = ('Assignee\n ') # First table row is the header self.assertIn(arrowed_th, tr_elements[0]) - _check_assignee_link(output.data, [ + _check_assignee_link(output.get_data(as_text=True), [ '/test/issues?status=Open&assignee=foo', '/test/issues?status=Open&assignee=pingou', '/test/issues?status=Open&assignee=pingou', @@ -1035,7 +1080,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'class="btn btn-success btn-sm">New Issue', - output.data) + output.get_data(as_text=True)) # Project w/o issue tracker repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -1053,7 +1098,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertNotIn( 'class="btn btn-success btn-sm">New Issue', - output.data) + output.get_data(as_text=True)) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -1072,13 +1117,13 @@ class PagureFlaskIssuestests(tests.Modeltests): msg = pagure.lib.new_issue( session=self.session, repo=repo, - title=u'Test issue ☃', - content=u'We should work on this ❤', + title='Test issue ☃', + content='We should work on this ❤', user='pingou', ticketfolder=None ) self.session.commit() - self.assertEqual(msg.title, u'Test issue ☃') + self.assertEqual(msg.title, 'Test issue ☃') msg = pagure.lib.new_issue( session=self.session, @@ -1095,16 +1140,18 @@ class PagureFlaskIssuestests(tests.Modeltests): # Whole list output = self.app.get('/test/issues') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', output_text) self.assertTrue( - '

    \n 2 Open Issues' in output.data) + '

    \n 2 Open Issues' in output_text) # Unicode search pattern output = self.app.get( '/test/issues?status=all&search_pattern=☃') self.assertEqual(output.status_code, 200) - self.assertIn('Issues - test - Pagure', output.data) - self.assertIn('1 Issues', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Issues - test - Pagure', output_text) + self.assertIn('1 Issues', output_text) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -1138,51 +1185,54 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) # Not authentified = No edit self.assertNotIn( '', - output.data) + output_text) self.assertIn( '' 'Login\n to comment on this ticket.', - output.data) + output_text) user = tests.FakeUser() with tests.user_set(self.app.application, user): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) # Not author nor admin = No edit self.assertNotIn( '', - output.data) + output_text) self.assertNotIn( '\n ' 'Issue close_status updated to: Fixed\n', - output.data) + output_text) self.assertIn( '\n ' 'Issue status updated to: Closed (was: Open)\n', - output.data) + output_text) self.assertTrue( '' - in output.data) + in output_text) # FIXME: There is likely something going wrong in the html # below self.assertIn( @@ -1683,7 +1745,7 @@ class PagureFlaskIssuestests(tests.Modeltests): '''@pingou:
    - Issue close_status updated to: Fixed
    - Issue status updated to: Closed (was: Open)

    ''', - output.data) + output_text) # Add new comment data = { @@ -1695,27 +1757,32 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( '\n Comment added', - output.data) + output_text) self.assertNotIn( '\n No changes to edit', - output.data) - self.assertTrue( - '

    Woohoo a second comment!

    ' in output.data) - self.assertEqual(output.data.count('comment_body">'), 2) + output_text) + self.assertIn( + '

    Woohoo a second comment!

    ', + output_text) + self.assertEqual( + output_text.count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output_text) # 2: one for the original comment, one for the new comment - self.assertEqual(output.data.count('title="PY C (pingou)"'), 2) + self.assertEqual( + output_text.count('title="PY C (pingou)"'), + 2) # Add new tag data = { @@ -1727,19 +1794,22 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '
    ', - output.data) - self.assertTrue( - '

    Woohoo a second comment!

    ' in output.data) - self.assertEqual(output.data.count('comment_body">'), 2) + output_text) + self.assertIn( + '

    Woohoo a second comment!

    ', + output_text) + self.assertEqual( + output_text.count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output_text) # Assign issue to an non-existent user data = { @@ -1751,22 +1821,25 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '
    ', - output.data) + output_text) self.assertIn( '\n No user "ralph" found', - output.data) - self.assertTrue( - '

    Woohoo a second comment!

    ' in output.data) - self.assertEqual(output.data.count('comment_body">'), 2) + output_text) + self.assertIn( + '

    Woohoo a second comment!

    ', + output_text) + self.assertEqual( + output_text.count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output_text) # Assign issue properly data = { @@ -1778,24 +1851,28 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '
    ', - output.data) + output_text) self.assertIn( '\n Issue assigned to pingou\n', - output.data) - self.assertTrue( - 'Woohoo a second comment!

    ' in output.data) - self.assertEqual(output.data.count('comment_body">'), 2) + output_text) + self.assertIn( + '
    Woohoo a second comment!

    ', + output_text) + self.assertEqual( + output_text.count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output_text) # Create another issue with a dependency repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -1828,20 +1905,21 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/2/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #2: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '
    ', - output.data) + output_text) self.assertIn( '\n You cannot close a ticket ' 'that has ticket depending that are still open.', - output.data) + output_text) self.assertTrue( '' - in output.data) + in output_text) # Create private issue repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -1904,13 +1982,14 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -1922,19 +2001,22 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( '\n Comment added', - output.data) - self.assertTrue( - '

    Woohoo a second comment!

    ' in output.data) - self.assertEqual(output.data.count('comment_body">'), 2) + output_text) + self.assertIn( + '

    Woohoo a second comment!

    ', + output_text) + self.assertEqual( + output_text.count('comment_body">'), 2) repo = pagure.lib.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -1964,16 +2046,17 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '
    ', - output.data) + output_text) self.assertIn( '\n Comment removed', - output.data) + output_text) # Drop non-existant comment output = self.app.post( @@ -2026,13 +2109,14 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -2044,13 +2128,14 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Add an invalid dependent ticket data = { @@ -2060,17 +2145,18 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) self.assertNotIn( '\n ' 'Successfully edited issue #1', - output.data) + output_text) repo = pagure.lib.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -2079,13 +2165,14 @@ class PagureFlaskIssuestests(tests.Modeltests): # Check the icons showing if the issues are blocking/blocked output = self.app.get('/test/issues/') + output_text = output.get_data(as_text=True) self.assertEqual( - output.data.count( + output_text.count( ''), 1) self.assertEqual( - output.data.count( + output_text.count( ''), 1) @@ -2133,7 +2220,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -2147,7 +2234,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.get_data(as_text=True)) repo = pagure.lib.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -2159,13 +2246,14 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -2177,13 +2265,14 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) # Add an invalid dependent ticket data = { @@ -2193,17 +2282,18 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) self.assertNotIn( '\n ' 'Successfully edited issue #1', - output.data) + output_text) self.session.commit() repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -2242,13 +2332,14 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -2265,7 +2356,7 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/upload', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - json_data = json.loads(output.data) + json_data = json.loads(output.get_data(as_text=True)) exp = {'output': 'notok'} self.assertDictEqual(json_data, exp) @@ -2279,7 +2370,7 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/upload', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - json_data = json.loads(output.data) + json_data = json.loads(output.get_data(as_text=True)) folder = os.path.dirname( os.path.abspath(__file__))[1:].replace('/', '_') @@ -2353,7 +2444,7 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/upload', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - json_data = json.loads(output.data) + json_data = json.loads(output.get_data(as_text=True)) exp = { 'output': 'notok', } @@ -2401,7 +2492,7 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/upload', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - json_data = json.loads(output.data) + json_data = json.loads(output.get_data(as_text=True)) folder = os.path.dirname( os.path.abspath(__file__))[1:].replace('/', '_') @@ -2553,7 +2644,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n Edit ' - 'issue #1\n
    ' in output.data) + 'issue #1\n

    ' in output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -2563,13 +2654,14 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post('/test/issue/1/edit', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertTrue( '
    \n Edit ' - 'issue #1\n
    ' in output.data) - self.assertEqual(output.data.count( + 'issue #1\n

    ' in output_text) + self.assertEqual(output_text.count( '\n This field is required. \n' ' '), 1) - self.assertEqual(output.data.count( + self.assertEqual(output_text.count( '\n Not a valid choice ' '\n '), 1) @@ -2577,13 +2669,14 @@ class PagureFlaskIssuestests(tests.Modeltests): data['title'] = 'Test issue #1' output = self.app.post('/test/issue/1/edit', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertTrue( '
    \n Edit ' - 'issue #1\n
    ' in output.data) - self.assertEqual(output.data.count( + 'issue #1\n

    ' in output_text) + self.assertEqual(output_text.count( '\n This field is required. \n' ' '), 0) - self.assertEqual(output.data.count( + self.assertEqual(output_text.count( '\n Not a valid choice ' '\n '), 0) @@ -2591,14 +2684,15 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '#1\n' ' Test issue #1', - output.data) - self.assertEqual(output.data.count( + output_text) + self.assertEqual(output_text.count( ''), 1) - self.assertEqual(output.data.count('comment_body">'), 1) - self.assertEqual(output.data.count( + self.assertEqual(output_text.count('comment_body">'), 1) + self.assertEqual(output_text.count( '

    We should work on this!

    '), 1) # Project w/o issue tracker @@ -2640,7 +2734,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n Edit ' - 'issue #1\n
    ' in output.data) + 'issue #1\n
    ' in output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -2655,14 +2749,15 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '#1\n' ' Test issue', - output.data) - self.assertEqual(output.data.count( + output_text) + self.assertEqual(output_text.count( ''), 1) - self.assertEqual(output.data.count('comment_body">'), 1) - self.assertEqual(output.data.count( + self.assertEqual(output_text.count('comment_body">'), 1) + self.assertEqual(output_text.count( '

    We should work on this

    '), 1) @patch('pagure.lib.git.update_git') @@ -2728,7 +2823,7 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.get('/test/tag/tag1/edit') self.assertEqual(output.status_code, 200) - self.assertTrue('Edit tag: tag1' in output.data) + self.assertTrue('Edit tag: tag1' in output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -2738,30 +2833,32 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post('/test/tag/tag1/edit', data=data) self.assertEqual(output.status_code, 200) - self.assertTrue('Edit tag: tag1' in output.data) + self.assertTrue('Edit tag: tag1' in output.get_data(as_text=True)) data['csrf_token'] = csrf_token output = self.app.post( '/test/tag/tag1/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) + 'Settings - test - Pagure', output_text) self.assertIn( '\n ' 'Edited tag: tag1()[DeepSkyBlue] to tag2(lorem ipsum)[DeepSkyBlue]', - output.data) + output_text) # update tag with empty description data['tag_description'] = '' output = self.app.post( '/test/tag/tag2/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) + 'Settings - test - Pagure', output_text) self.assertIn( '\n ' 'Edited tag: tag2(lorem ipsum)[DeepSkyBlue] to tag2()[DeepSkyBlue]', - output.data) + output_text) # After edit, list tags self.session.commit() @@ -2828,9 +2925,10 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/droptag/', data={}, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertTrue( - 'Settings - test - Pagure' in output.data) - self.assertTrue("

    Settings for test

    " in output.data) + 'Settings - test - Pagure' in output_text) + self.assertTrue("

    Settings for test

    " in output_text) csrf_token = self.get_csrf(output=output) @@ -2839,16 +2937,17 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/droptag/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertTrue("

    Settings for test

    " in output.data) + self.assertTrue("

    Settings for test

    " in output.get_data(as_text=True)) data['csrf_token'] = csrf_token output = self.app.post( '/test/droptag/', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertTrue("

    Settings for test

    " in output.data) + output_text = output.get_data(as_text=True) + self.assertTrue("

    Settings for test

    " in output_text) self.assertIn( '\n ' - 'Tag: tag1 has been deleted', output.data) + 'Tag: tag1 has been deleted', output_text) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -2895,7 +2994,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) @@ -2908,17 +3007,18 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.get_data(as_text=True)) data['csrf_token'] = csrf_token output = self.app.post( '/test/issue/1/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Issues - test - Pagure', output.data) + 'Issues - test - Pagure', output_text) self.assertIn( '\n Issue deleted', - output.data) + output_text) # Project w/o issue tracker repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -2960,13 +3060,14 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/issue/1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '
    ', - output.data) + output_text) csrf_token = self.get_csrf(output=output) @@ -2978,19 +3079,22 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( '\n Comment added', - output.data) - self.assertTrue( - '

    Woohoo a second comment!

    ' in output.data) - self.assertEqual(output.data.count('comment_body">'), 2) + output_text) + self.assertIn( + '

    Woohoo a second comment!

    ', + output_text) + self.assertEqual( + output_text.count('comment_body">'), 2) repo = pagure.lib.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -3024,16 +3128,17 @@ class PagureFlaskIssuestests(tests.Modeltests): output = self.app.post( '/test/issue/1/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output_text) self.assertIn( '
    ', - output.data) + output_text) self.assertIn( '\n Comment updated', - output.data) + output_text) self.session.commit() repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -3043,13 +3148,14 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/issue/1/comment/1/edit') + output_text = output.get_data(as_text=True) self.assertIn( - 'test - Pagure', output.data) - self.assertTrue('
    ' in output.data) - self.assertTrue('
    ' in output.data) + 'test - Pagure', output_text) + self.assertTrue('
    ' in output_text) + self.assertTrue('
    ' in output_text) self.assertTrue( '', output.data) + self.assertIn('>Ship it!', output.get_data(as_text=True)) def test_update_quick_replies_multiple(self): with tests.user_set(self.app.application, self.admin): data = { - 'quick_reply': [u'Ship it!', u'Nah.'], + 'quick_reply': ['Ship it!', 'Nah.'], 'csrf_token': self.get_csrf(), } output = self.app.post( '/test/update/quick_replies', data=data, follow_redirects=True) self.assertRedirectToSettings( - output, notice=u'quick replies updated') - self.assertQuickReplies([u'Ship it!', u'Nah.']) + output, notice='quick replies updated') + self.assertQuickReplies(['Ship it!', 'Nah.']) # Check page has filled in textarea. - self.assertIn(u'>Ship it!', output.data) - self.assertIn(u'>Nah.', output.data) + self.assertIn('>Ship it!', output.get_data(as_text=True)) + self.assertIn('>Nah.', output.get_data(as_text=True)) def test_update_quick_replies_empty_to_reset(self): # Set some quick replies @@ -148,7 +156,7 @@ class PagureFlaskQuickReplytest(tests.Modeltests): output = self.app.post( '/test/update/quick_replies', data=data, follow_redirects=True) self.assertRedirectToSettings( - output, notice=u'quick replies updated') + output, notice='quick replies updated') self.assertQuickReplies([]) def test_update_quick_replies_unprivileged(self): @@ -167,7 +175,7 @@ class PagureFlaskQuickReplytest(tests.Modeltests): with tests.user_set(self.app.application, self.admin): output = self.app.get('/test/settings') - self.assertNotIn('Quick replies', output.data) + self.assertNotIn('Quick replies', output.get_data(as_text=True)) def test_no_submit_with_disabled_issues_and_pull_requests(self): self.disable_issues_and_pull_requests() diff --git a/tests/test_pagure_flask_ui_remote_pr.py b/tests/test_pagure_flask_ui_remote_pr.py index 952c83a..9c8d5f7 100644 --- a/tests/test_pagure_flask_ui_remote_pr.py +++ b/tests/test_pagure_flask_ui_remote_pr.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -30,6 +32,7 @@ import pagure import pagure.lib import tests from pagure.lib.repo import PagureRepo +from pagure.lib.git import _make_signature class PagureRemotePRtests(tests.Modeltests): @@ -77,9 +80,9 @@ class PagureRemotePRtests(tests.Modeltests): # Commits the files added tree = clone_repo.index.write_tree() - author = pygit2.Signature( + author = _make_signature( 'Alice Author', 'alice@authors.tld') - committer = pygit2.Signature( + committer = _make_signature( 'Cecil Committer', 'cecil@committers.tld') clone_repo.create_commit( 'refs/heads/master', # the name of the reference to update @@ -105,9 +108,9 @@ class PagureRemotePRtests(tests.Modeltests): # Commits the files added tree = clone_repo.index.write_tree() - author = pygit2.Signature( + author = _make_signature( 'Alice Äuthòr', 'alice@äuthòrs.tld') - committer = pygit2.Signature( + committer = _make_signature( 'Cecil Cõmmîttër', 'cecil@cõmmîttërs.tld') clone_repo.create_commit( 'refs/heads/master', @@ -143,9 +146,9 @@ class PagureRemotePRtests(tests.Modeltests): # Commits the files added tree = repo.index.write_tree() - author = pygit2.Signature( + author = _make_signature( 'Alice Author', 'alice@authors.tld') - committer = pygit2.Signature( + committer = _make_signature( 'Cecil Committer', 'cecil@committers.tld') repo.create_commit( 'refs/heads/%s' % branch_from, @@ -176,8 +179,8 @@ class PagureRemotePRtests(tests.Modeltests): output = self.app.get('/test/diff/remote') self.assertEqual(output.status_code, 302) self.assertIn( - u'You should be redirected automatically to target URL: ' - u'New remote pull-request

    ', output.data) + self.assertIn( + '

    New remote pull-request

    ', + output.get_data(as_text=True)) csrf_token = self.get_csrf(output=output) data = { @@ -210,11 +215,12 @@ class PagureRemotePRtests(tests.Modeltests): } output = self.app.post('/test/diff/remote', data=data) self.assertEqual(output.status_code, 200) - self.assertIn(u'

    Create pull request

    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('

    Create pull request

    ', output_text) self.assertIn( - u'
    ', output.data) + '
    ', output_text) self.assertNotIn( - u'
    ', output.data) + '
    ', output_text) # Not saved yet self.session = pagure.lib.create_session(self.dbpath) @@ -232,32 +238,33 @@ class PagureRemotePRtests(tests.Modeltests): output = self.app.post( '/test/diff/remote', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'

    PR#1', - output.data) + '

    PR#1', + output_text) self.assertIn( - u'
    ', output.data) + '
    ', output_text) self.assertNotIn( - u'
    ', output.data) + '
    ', output_text) # Show the filename in the diff view self.assertIn( - u'''
    + '''
    .gitignore
    this is a remote pull-request, so we cannot provide you''', - output.data) + output_text) self.assertIn( - u'''
    + '''
    sources
    this is a remote pull-request, so we cannot provide you''', - output.data) + output_text) # Show the filename in the Changes summary self.assertIn( - u'.gitignore', output.data) + '.gitignore', output_text) self.assertIn( - u'sources', output.data) + 'sources', output_text) # Remote PR Created self.session = pagure.lib.create_session(self.dbpath) diff --git a/tests/test_pagure_flask_ui_repo.py b/tests/test_pagure_flask_ui_repo.py index b740b5f..694051f 100644 --- a/tests/test_pagure_flask_ui_repo.py +++ b/tests/test_pagure_flask_ui_repo.py @@ -8,6 +8,8 @@ """ +from __future__ import unicode_literals + __requires__ = ['SQLAlchemy >= 0.8'] import pkg_resources @@ -72,7 +74,8 @@ class PagureFlaskRepotests(tests.Modeltests): #just get the csrf token pagure.config.config['ENABLE_USER_MNGT'] = True output = self.app.get('/test/adduser') - csrf_token = output.data.split( + output_text = output.get_data(as_text=True) + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] pagure.config.config['ENABLE_USER_MNGT'] = False @@ -129,9 +132,10 @@ class PagureFlaskRepotests(tests.Modeltests): # Check the message flashed during the redirect output = self.app.get('/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '\n Action canceled, try it ' - 'again',output.data) + 'again', output_text) ast.return_value = False @@ -139,9 +143,10 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/adddeploykey') self.assertEqual(output.status_code, 200) - self.assertIn('Add deploy key to the', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Add deploy key to the', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -152,39 +157,44 @@ class PagureFlaskRepotests(tests.Modeltests): # No CSRF token output = self.app.post('/test/adddeploykey', data=data) self.assertEqual(output.status_code, 200) - self.assertTrue('Add deploy key to the' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Add deploy key to the', output_text) data['csrf_token'] = csrf_token # First, invalid SSH key output = self.app.post('/test/adddeploykey', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Add deploy key to the', output.data) - self.assertIn('Deploy key invalid', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Add deploy key to the', output_text) + self.assertIn('Deploy key invalid', output_text) # Next up, multiple SSH keys data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q==\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q==' output = self.app.post( '/test/adddeploykey', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertIn('Deploy key can only be single keys.', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Deploy key can only be single keys.', output_text) # Now, a valid SSH key data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q==' output = self.app.post( '/test/adddeploykey', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) - self.assertIn('Deploy key added', output.data) - self.assertNotIn('PUSH ACCESS', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) + self.assertIn('Deploy key added', output_text) + self.assertNotIn('PUSH ACCESS', output_text) # And now, adding the same key output = self.app.post( '/test/adddeploykey', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertIn('Deploy key already exists', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Deploy key already exists', output_text) # And next, a key with push access data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9Xwc2RDzPBhlEDARfHldGjudIVoa04tqT1JVKGQmyllTFz7Rb8CngQL3e7zyNzotnhwYKHdoiLlPkVEiDee4dWMUe48ilqId+FJZQGhyv8fu4BoFdE1AJUVylzmltbLg14VqG5gjTpXgtlrEva9arKwBMHJjRYc8ScaSn3OgyQw==' @@ -192,11 +202,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/adddeploykey', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) - self.assertIn('Deploy key added', output.data) - self.assertIn('PUSH ACCESS', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) + self.assertIn('Deploy key added', output_text) + self.assertIn('PUSH ACCESS', output_text) @patch('pagure.decorators.admin_session_timedout') @patch.dict('pagure.config.config', {'DEPLOY_KEY': False}) @@ -249,9 +260,10 @@ class PagureFlaskRepotests(tests.Modeltests): # Check the message flashed during the redirect output = self.app.get('/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '\n Action canceled, try it ' - 'again',output.data) + 'again', output_text) ast.return_value = False @@ -259,9 +271,10 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/adduser') self.assertEqual(output.status_code, 200) - self.assertIn('Add user to the', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Add user to the', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -271,43 +284,48 @@ class PagureFlaskRepotests(tests.Modeltests): # Missing access and no CSRF output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Add user - test - Pagure', output.data) - self.assertTrue('Add user to the' in output.data) + 'Add user - test - Pagure', output_text) + self.assertIn('Add user to the', output_text) # No CSRF output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Add user - test - Pagure', output.data) + 'Add user - test - Pagure', output_text) # Missing access data['csrf_token'] = csrf_token output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Add user - test - Pagure', output.data) - self.assertIn('Add user to the', output.data) + 'Add user - test - Pagure', output_text) + self.assertIn('Add user to the', output_text) # Unknown user data['access'] = 'commit' output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Add user - test - Pagure', output.data) - self.assertIn('Add user to the', output.data) + 'Add user - test - Pagure', output_text) + self.assertIn('Add user to the', output_text) self.assertIn( '\n No user "ralph" found\n', - output.data) + output_text) # All correct data['user'] = 'foo' output = self.app.post( '/test/adduser', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertIn('

    Settings for test

    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( - '\n User added', output.data) + '\n User added', output_text) mock_log.assert_called_with(ANY, topic='project.user.added', msg=ANY, redis=ANY) @@ -348,7 +366,8 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.config.config['ENABLE_USER_MNGT'] = True output = self.app.get('/test/addgroup') - csrf_token = output.data.split( + output_text = output.get_data(as_text=True) + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] pagure.config.config['ENABLE_USER_MNGT'] = False @@ -391,10 +410,11 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/addgroup', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'Add group - test - Pagure', - output.data) - self.assertIn(u'No group ralph found.', output.data) + 'Add group - test - Pagure', + output_text) + self.assertIn('No group ralph found.', output_text) @patch('pagure.decorators.admin_session_timedout') def test_add_group_project(self, ast): @@ -429,9 +449,10 @@ class PagureFlaskRepotests(tests.Modeltests): # Check the message flashed during the redirect output = self.app.get('/') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '\n Action canceled, try it ' - 'again', output.data) + 'again', output_text) ast.return_value = False @@ -452,9 +473,10 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/addgroup') self.assertEqual(output.status_code, 200) - self.assertTrue('Add group to the' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Add group to the', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -464,28 +486,31 @@ class PagureFlaskRepotests(tests.Modeltests): # Missing CSRF output = self.app.post('/test/addgroup', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Add group - test - Pagure', output.data) - self.assertIn('Add group to the', output.data) + 'Add group - test - Pagure', output_text) + self.assertIn('Add group to the', output_text) # Missing access data['csrf_token'] = csrf_token output = self.app.post('/test/addgroup', data=data) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Add group - test - Pagure', output.data) - self.assertIn('Add group to the', output.data) + 'Add group - test - Pagure', output_text) + self.assertIn('Add group to the', output_text) # All good data['access'] = 'ticket' output = self.app.post( '/test/addgroup', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( - '\n Group added', output.data) + '\n Group added', output_text) @patch('pagure.decorators.admin_session_timedout') def test_remove_user_when_user_mngt_off(self, ast): @@ -504,8 +529,9 @@ class PagureFlaskRepotests(tests.Modeltests): tests.create_projects_git(os.path.join(self.path, 'repos')) output = self.app.post('/test/settings') + output_text = output.get_data(as_text=True) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -572,8 +598,9 @@ class PagureFlaskRepotests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.post('/test/settings') + output_text = output.get_data(as_text=True) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -581,10 +608,11 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/dropdeploykey/1', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) - self.assertIn('Deploy key does not exist in project', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) + self.assertIn('Deploy key does not exist in project', output_text) # Add a deploy key to a project repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -601,19 +629,21 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/test/dropdeploykey/1', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) - self.assertNotIn('Deploy key removed', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) + self.assertNotIn('Deploy key removed', output_text) data = {'csrf_token': csrf_token} output = self.app.post( '/test/dropdeploykey/1', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) - self.assertIn('Deploy key removed', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) + self.assertIn('Deploy key removed', output_text) @patch('pagure.decorators.admin_session_timedout') @patch.dict('pagure.config.config', {'DEPLOY_KEY': False}) @@ -663,8 +693,9 @@ class PagureFlaskRepotests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.post('/test/settings') + output_text = output.get_data(as_text=True) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -672,12 +703,13 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/dropuser/2', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '\n User does not have any ' - 'access on the repo', output.data) + 'access on the repo', output_text) # Add an user to a project repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -695,12 +727,13 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/test/dropuser/2', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertNotIn( - '\n User removed', output.data) - self.assertIn('action="/test/dropuser/2">', output.data) + '\n User removed', output_text) + self.assertIn('action="/test/dropuser/2">', output_text) repo = pagure.lib.get_authorized_project(self.session, 'test') self.assertEqual(len(repo.users), 1) @@ -708,12 +741,13 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/dropuser/2', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( - '\n User removed', output.data) - self.assertNotIn('action="/test/dropuser/2">', output.data) + '\n User removed', output_text) + self.assertNotIn('action="/test/dropuser/2">', output_text) self.session.commit() repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -752,13 +786,14 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/dropuser/2', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - u'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( - u'

    \ntest', - output.data) + '

    \ntest', + output_text) self.assertIn( - u'\n User removed', output.data) + '\n User removed', output_text) self.session.commit() repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -788,8 +823,9 @@ class PagureFlaskRepotests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.post('/test/settings') + output_text = output.get_data(as_text=True) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -866,8 +902,9 @@ class PagureFlaskRepotests(tests.Modeltests): user.username = 'pingou' with tests.user_set(self.app.application, user): output = self.app.post('/test/settings') + output_text = output.get_data(as_text=True) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -875,13 +912,14 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/dropgroup/2', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '\n ' 'Group does not seem to be part of this project', - output.data) + output_text) # Create the new group msg = pagure.lib.add_group( @@ -914,13 +952,14 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/test/dropgroup/1', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) - self.assertIn('action="/test/dropgroup/1">', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) + self.assertIn('action="/test/dropgroup/1">', output_text) self.assertNotIn( '\n Group removed', - output.data) + output_text) repo = pagure.lib.get_authorized_project(self.session, 'test') self.assertEqual(len(repo.groups), 1) @@ -928,13 +967,14 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/dropgroup/1', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '\n Group removed', - output.data) - self.assertNotIn('action="/test/dropgroup/1">', output.data) + output_text) + self.assertNotIn('action="/test/dropgroup/1">', output_text) self.session.commit() repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -976,11 +1016,12 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.post('/test/update', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -990,14 +1031,15 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( - '', output.data) + '', output_text) self.assertIn( '\n Project updated', - output.data) + output_text) # Edit the avatar_email data = { @@ -1008,15 +1050,16 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( '\n Project updated', - output.data) + output_text) # Reset the avatar_email data = { @@ -1027,14 +1070,15 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( - '', output.data) + '', output_text) self.assertIn( '\n Project updated', - output.data) + output_text) @patch('pagure.decorators.admin_session_timedout') def test_update_project_update_tag(self, ast): @@ -1056,11 +1100,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/settings') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Add tag to a project so that they are added to the database @@ -1072,12 +1117,13 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '\n Project updated', - output.data) + output_text) # Remove two of the tags of the project, they will still be in # the DB but not associated to this project @@ -1089,12 +1135,13 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '\n Project updated', - output.data) + output_text) # Try re-adding the two tags, this used to fail before we fixed # it @@ -1106,12 +1153,13 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '\n Project updated', - output.data) + output_text) @patch('pagure.decorators.admin_session_timedout') def test_view_settings(self, ast): @@ -1146,67 +1194,72 @@ class PagureFlaskRepotests(tests.Modeltests): ast.return_value = False output = self.app.get('/test/settings') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) # Both checkbox checked before self.assertIn( '', output.data) + 'name="pull_requests" checked=""/>', output_text) self.assertIn( '', output.data) + 'name="issue_tracker" checked=""/>', output_text) - csrf_token = output.data.split( + csrf_token = output_text.split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {} output = self.app.post( '/test/settings', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) # Both checkbox are still checked output = self.app.get('/test/settings', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '', output.data) + 'name="pull_requests" checked=""/>', output_text) self.assertIn( '', output.data) + 'name="issue_tracker" checked=""/>', output_text) data = {'csrf_token': csrf_token} output = self.app.post( '/test/settings', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) self.assertIn( '\n Edited successfully ' - 'settings of repo: test', output.data) + 'settings of repo: test', output_text) # Both checkbox are now un-checked output = self.app.get('/test/settings', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '', output.data) + 'name="pull_requests" />', output_text) self.assertIn( '', output.data) + 'name="issue_tracker" />', output_text) data = { 'csrf_token': csrf_token, @@ -1216,27 +1269,29 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/settings', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) self.assertIn( '\n Edited successfully ' - 'settings of repo: test', output.data) + 'settings of repo: test', output_text) # Both checkbox are again checked output = self.app.get('/test/settings', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '', output.data) + 'name="pull_requests" checked=""/>', output_text) self.assertIn( '', output.data) + 'name="issue_tracker" checked=""/>', output_text) @patch('pagure.lib.git.generate_gitolite_acls') @patch('pagure.decorators.admin_session_timedout') @@ -1250,9 +1305,10 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test/settings') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) csrf_token = self.get_csrf(output=output) @@ -1265,37 +1321,39 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post( '/test/settings', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) self.assertIn( '\n Edited successfully ' - 'settings of repo: test', output.data) + 'settings of repo: test', output_text) # Both checkbox are again checked output = self.app.get('/test/settings', follow_redirects=True) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) self.assertIn( '', output.data) + 'name="pull_requests" checked=""/>', output_text) self.assertIn( '', output.data) + 'name="issue_tracker" checked=""/>', output_text) self.assertIn( '', - output.data) + output_text) repo = pagure.lib.get_authorized_project(self.session, 'test') self.assertEqual(gen_acl.call_count, 1) args = gen_acl.call_args self.assertEqual(args[0], tuple()) - self.assertEqual(args[1].keys(), ['project']) + self.assertListEqual(list(args[1]), ['project']) self.assertEqual(args[1]['project'].fullname, 'test') @patch('pagure.decorators.admin_session_timedout') @@ -1338,9 +1396,10 @@ class PagureFlaskRepotests(tests.Modeltests): ast.return_value = False output = self.app.get('/test/settings') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output_text) + self.assertIn('

    Settings for test

    ', output_text) # Check that the priorities have their empty fields self.assertIn( '''
    @@ -1354,7 +1413,7 @@ class PagureFlaskRepotests(tests.Modeltests): value="" class="form-control"/>
    -
    ''', output.data) +
    ''', output_text) # Check that the milestones have their empty fields self.assertIn( @@ -1379,7 +1438,7 @@ class PagureFlaskRepotests(tests.Modeltests):
    -
    ''', output.data) +
    ''', output_text) # Check that the close_status have its empty field self.assertIn( @@ -1389,7 +1448,7 @@ class PagureFlaskRepotests(tests.Modeltests):
    -
    ''', output.data) +

    ''', output_text) # Check that the custom fields have their empty fields self.assertIn( @@ -1415,7 +1474,7 @@ class PagureFlaskRepotests(tests.Modeltests):
    -
    ''', output.data) +
    ''', output_text) def test_view_forks(self): """ Test the view_forks endpoint. """ @@ -1428,7 +1487,8 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/stats', follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertTrue('This project has not been forked.' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('This project has not been forked.', output_text) @patch.dict('pagure.config.config', {'CASE_SENSITIVE': True}) def test_view_repo_case_sensitive(self): @@ -1439,7 +1499,8 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test') self.assertEqual(output.status_code, 200) - self.assertTrue('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('

    This repo is brand new!

    ', output_text) output = self.app.get('/TEST') self.assertEqual(output.status_code, 404) @@ -1463,22 +1524,24 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test') self.assertEqual(output.status_code, 200) - self.assertTrue('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1

    ', output_text) self.assertIn( 'Stats ', - output.data) + output_text) self.perfMaxWalks(0, 0) self.perfReset() output = self.app.get('/test/') self.assertEqual(output.status_code, 200) - self.assertTrue('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) self.perfMaxWalks(0, 0) self.perfReset() @@ -1495,32 +1558,34 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/test') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Fork', - output.data) - self.assertFalse('

    This repo is brand new!

    ' in output.data) - self.assertFalse('Forked from' in output.data) - self.assertFalse('README.txt' in output.data) - self.assertFalse('README.dummy' in output.data) + output_text) + self.assertNotIn('

    This repo is brand new!

    ', output_text) + self.assertNotIn('Forked from', output_text) + self.assertNotIn('README.txt', output_text) + self.assertNotIn('README.dummy', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) self.perfMaxWalks(3, 8) # Target: (1, 3) self.perfReset() # Non-authenticated, the Fork button does not appear output = self.app.get('/test') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertNotIn( 'Fork', - output.data) - self.assertFalse('

    This repo is brand new!

    ' in output.data) - self.assertFalse('Forked from' in output.data) - self.assertFalse('README.txt' in output.data) - self.assertFalse('README.dummy' in output.data) + output_text) + self.assertNotIn('

    This repo is brand new!

    ', output_text) + self.assertNotIn('Forked from', output_text) + self.assertNotIn('README.txt', output_text) + self.assertNotIn('README.dummy', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) self.perfMaxWalks(3, 8) # Target: (1, 3) self.perfReset() @@ -1546,17 +1611,18 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/fork/pingou/test') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #1
    ', output_text) + self.assertIn('Forked from', output_text) self.assertNotIn( 'Fork', - output.data) + output_text) self.assertIn( ' View Fork', - output.data) + output_text) self.perfMaxWalks(1, 3) self.perfReset() @@ -1565,34 +1631,36 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(self.app.application, user): output = self.app.get('/fork/pingou/test') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #1
    ', output_text) + self.assertIn('Forked from', output_text) self.assertNotIn( ' View Fork', - output.data) + output_text) self.assertIn( 'Fork', - output.data) + output_text) self.perfMaxWalks(1, 3) self.perfReset() # Non-authenticated, the Fork button does not appear output = self.app.get('/fork/pingou/test') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #1
    ', output_text) + self.assertIn('Forked from', output_text) self.assertNotIn( ' View Fork', - output.data) + output_text) self.assertNotIn( 'Fork', - output.data) + output_text) self.perfMaxWalks(1, 3) self.perfReset() @@ -1618,11 +1686,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/fork/pingou/test3') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #3
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #3
    ', output_text) + self.assertIn('Forked from', output_text) self.perfMaxWalks(3, 18) # Ideal: (1, 3) self.perfReset() @@ -1664,13 +1733,14 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) - self.assertFalse('Forked from' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) + self.assertNotIn('Forked from', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) self.assertEqual( - output.data.count(''), 0) + output_text.count(''), 0) shutil.rmtree(newpath) @@ -1699,11 +1769,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/branch/master') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) - self.assertFalse('Forked from' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) + self.assertNotIn('Forked from', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) # Turn that repo into a fork repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -1724,11 +1795,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/fork/pingou/test/branch/master') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #1
    ', output_text) + self.assertIn('Forked from', output_text) # Add a fork of a fork item = pagure.lib.model.Project( @@ -1752,11 +1824,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/fork/pingou/test3/branch/master') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

    ' in output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #3
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #3
    ', output_text) + self.assertIn('Forked from', output_text) def test_view_commits(self): """ Test the view_commits endpoint. """ @@ -1774,10 +1847,11 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/commits') self.assertEqual(output.status_code, 200) - self.assertIn('

    This repo is brand new!

    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) # Add some content to the git repo tests.add_content_git_repo(os.path.join(self.path, 'repos', @@ -1786,20 +1860,22 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/commits') self.assertEqual(output.status_code, 200) - self.assertNotIn('

    This repo is brand new!

    ', output.data) - self.assertNotIn('Forked from', output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) + self.assertNotIn('Forked from', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertIn('Commits - test - Pagure', output.data) + 'test project #1
    ', output_text) + self.assertIn('Commits - test - Pagure', output_text) output = self.app.get('/test/commits/master') self.assertEqual(output.status_code, 200) - self.assertNotIn('

    This repo is brand new!

    ', output.data) - self.assertNotIn('Forked from', output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) + self.assertNotIn('Forked from', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1
    ', output_text) # Turn that repo into a fork repo = pagure.lib.get_authorized_project(self.session, 'test') @@ -1820,11 +1896,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/fork/pingou/test/commits?page=abc') self.assertEqual(output.status_code, 200) - self.assertNotIn('

    This repo is brand new!

    ', output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertIn('Forked from', output.data) + 'test project #1
    ', output_text) + self.assertIn('Forked from', output_text) # Add a fork of a fork item = pagure.lib.model.Project( @@ -1851,11 +1928,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/fork/pingou/test3/commits') self.assertEqual(output.status_code, 200) - self.assertNotIn('

    This repo is brand new!

    ', output.data) + output_text = output.get_data(as_text=True) + self.assertNotIn('

    This repo is brand new!

    ', output_text) self.assertIn( '
    \n' - 'test project #3
    ', output.data) - self.assertIn('Forked from', output.data) + 'test project #3
    ', output_text) + self.assertIn('Forked from', output_text) def test_compare_commits(self): """ Test the compare_commits endpoint. """ @@ -1865,60 +1943,63 @@ class PagureFlaskRepotests(tests.Modeltests): # View commits comparison output = self.app.get('/test/c/%s..%s' % (c2.oid.hex, c1.oid.hex)) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Diff from %s to %s - test\n - Pagure' % (c2.oid.hex, c1.oid.hex), - output.data) + output_text) self.assertIn( '
    %s .. %s
    ' % (c2.oid.hex, c1.oid.hex), - output.data) + output_text) self.assertIn( 'Commits \n ' + '' + '\n 2\n ', - output.data) + output_text) self.assertIn( '- ' + - 'Row 0', output.data) + 'Row 0', output_text) # View inverse commits comparison output = self.app.get('/test/c/%s..%s' % (c1.oid.hex, c2.oid.hex)) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Diff from %s to %s - test\n - Pagure' % (c1.oid.hex, c2.oid.hex), - output.data) + output_text) self.assertIn( 'Commits \n ' + '' + '\n 2\n ', - output.data) + output_text) self.assertIn( '
    %s .. %s
    ' % (c1.oid.hex, c2.oid.hex), - output.data) + output_text) self.assertIn( '' + - '+ Row 0', output.data) + '+ Row 0', output_text) def compare_all(c1, c3): # View commits comparison output = self.app.get('/test/c/%s..%s' % (c1.oid.hex, c3.oid.hex)) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Diff from %s to %s - test\n - Pagure' % - (c1.oid.hex, c3.oid.hex), output.data) + (c1.oid.hex, c3.oid.hex), output_text) self.assertIn( '
    %s .. %s
    ' % (c1.oid.hex, c3.oid.hex), - output.data) + output_text) self.assertIn( '+ Row 0', output.data) + '#ddffdd">+ Row 0
    ', output_text) self.assertEqual( - output.data.count( + output_text.count( '+ Row 0'), 2) self.assertIn( @@ -1926,39 +2007,46 @@ class PagureFlaskRepotests(tests.Modeltests): '' + '\n 3\n ', - output.data) + output_text) self.assertIn( - 'title="View file as of 4829cf">Šource', output.data) + 'title="View file as of 4829cf">Šource', + output_text + ) self.assertIn( - '
    file added
    ', output.data) + '
    file added
    ', + output_text) # View inverse commits comparison output = self.app.get( '/test/c/%s..%s' % (c3.oid.hex, c1.oid.hex)) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Diff from %s to %s - test\n - Pagure' % - (c3.oid.hex, c1.oid.hex), output.data) + (c3.oid.hex, c1.oid.hex), output_text) self.assertIn( '
    %s .. %s
    ' % (c3.oid.hex, c1.oid.hex), - output.data) + output_text) self.assertIn( '@@ -1,2 +1,1' + - ' @@', output.data) + ' @@', output_text) self.assertIn( '- ' + - 'Row 0', output.data) + 'Row 0', output_text) self.assertIn( 'Commits \n ' + '' + '\n 3\n ', - output.data) + output_text) self.assertIn( - 'title="View file as of 000000">Šource', output.data) + 'title="View file as of 000000">Šource', + output_text + ) self.assertIn( - '
    file removed
    ', output.data) + '
    file removed
    ', + output_text) output = self.app.get('/foo/bar') # No project registered in the DB @@ -2036,12 +2124,13 @@ class PagureFlaskRepotests(tests.Modeltests): # View in a branch output = self.app.get('/test/blob/master/f/sources') self.assertEqual(output.status_code, 200) - self.assertTrue('' in output.data) - self.assertTrue( - '' - in output.data) - self.assertTrue( - '' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('
     bar
    ', output_text) + self.assertIn( + '', + output_text) + self.assertIn( + '', output_text) # Empty files should also be displayed tests.add_content_to_git( @@ -2050,22 +2139,24 @@ class PagureFlaskRepotests(tests.Modeltests): content="") output = self.app.get('/test/blob/master/f/emptyfile.md') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( 'Raw', output.data) + 'title="View as raw">Raw', output_text) self.assertIn( '
    \n' - ' \n
    ', output.data) + ' \n ', output_text) # View what's supposed to be an image output = self.app.get('/test/blob/master/f/test.jpg') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Binary files cannot be rendered.
    ', output.data) + 'Binary files cannot be rendered.
    ', output_text) self.assertIn( 'view the raw version', - output.data) + output_text) # View by commit id repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git')) @@ -2073,43 +2164,47 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/blob/%s/f/test.jpg' % commit.oid.hex) self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Binary files cannot be rendered.
    ', output.data) - self.assertIn('/f/test.jpg">view the raw version', output.data) + 'Binary files cannot be rendered.
    ', output_text) + self.assertIn('/f/test.jpg">view the raw version', output_text) # View by image name -- somehow we support this output = self.app.get('/test/blob/sources/f/test.jpg') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( - 'Binary files cannot be rendered.
    ', output.data) - self.assertIn('/f/test.jpg">view the raw version', output.data) + 'Binary files cannot be rendered.
    ', output_text) + self.assertIn('/f/test.jpg">view the raw version', output_text) # View binary file output = self.app.get('/test/blob/sources/f/test_binary') self.assertEqual(output.status_code, 200) - self.assertIn('/f/test_binary">view the raw version', output.data) - self.assertTrue( - 'Binary files cannot be rendered.
    ' - in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('/f/test_binary">view the raw version', output_text) + self.assertIn( + 'Binary files cannot be rendered.
    ', output_text) # View folder output = self.app.get('/test/blob/master/f/folder1') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '', - output.data) - self.assertIn('Tree - test - Pagure', output.data) + output_text) + self.assertIn('Tree - test - Pagure', output_text) self.assertIn( - '
    ', output.data) + '', output_text) # Verify the nav links correctly when viewing a nested folder/file. output = self.app.get('/test/blob/master/f/folder1/folder2/file') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
  • \n' ' ' '  folder2\n' - '
  • ', output.data) + ' ', output_text) # View by image name -- with a non-existant file output = self.app.get('/test/blob/sources/f/testfoo.jpg') @@ -2123,18 +2218,21 @@ class PagureFlaskRepotests(tests.Modeltests): ncommits=1, filename='Šource') output = self.app.get('/test/blob/master/f/Šource') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertEqual(output.headers['Content-Type'].lower(), 'text/html; charset=utf-8') - self.assertIn('  Šource', output.data) - self.assertIn('
     bar
    ', output.data) + self.assertIn( + '  Šource', + output_text) + self.assertIn('
    ', output_text) self.assertIn( '', output.data) + 'data-line-number="1">', output_text) self.assertTrue( '' - in output.data + in output_text or - '' in output.data + '' in output_text ) # Add a fork of a fork @@ -2161,20 +2259,22 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get( '/fork/pingou/test3/blob/master/f/folder1/folder2/file') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertIn( '
  • \n' '   ' - 'folder2\n
  • ', output.data) + 'folder2\n ', output_text) output = self.app.get('/fork/pingou/test3/blob/master/f/sources') self.assertEqual(output.status_code, 200) - self.assertIn('
    Row 0
    Row 0
    Row 0
    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('
    ', output_text) self.assertIn( '', - output.data) + output_text) self.assertIn( - '', output.data) + '', output_text) @patch( 'pagure.lib.encoding_utils.decode', @@ -2197,7 +2297,8 @@ class PagureFlaskRepotests(tests.Modeltests): # View file output = self.app.get('/test/blob/master/f/sources') self.assertEqual(output.status_code, 200) - self.assertIn('Binary files cannot be rendered.
    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('Binary files cannot be rendered.
    ', output_text) def test_view_raw_file(self): """ Test the view_raw_file endpoint. """ @@ -2222,9 +2323,10 @@ class PagureFlaskRepotests(tests.Modeltests): # View first commit output = self.app.get('/test/raw/master') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertEqual(output.headers['Content-Type'].lower(), 'text/plain; charset=ascii') - self.assertTrue(':Author: Pierre-Yves Chibon' in output.data) + self.assertIn(':Author: Pierre-Yves Chibon', output_text) # Add some more content to the repo tests.add_content_git_repo(os.path.join(self.path, 'repos', @@ -2242,12 +2344,14 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.headers['Content-Type'].lower(), 'text/plain; charset=ascii') self.assertEqual(output.status_code, 200) - self.assertTrue('foo\n bar' in output.data) + output_text = output.get_data(as_text=True) + self.assertIn('foo\n bar', output_text) # View what's supposed to be an image output = self.app.get('/test/raw/master/f/test.jpg') self.assertEqual(output.status_code, 200) - self.assertTrue(output.data.startswith('\x00\x00\x01\x00')) + output_text = output.get_data() + self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00')) # View by commit id repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git')) @@ -2255,19 +2359,22 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/raw/%s/f/test.jpg' % commit.oid.hex) self.assertEqual(output.status_code, 200) - self.assertTrue(output.data.startswith('\x00\x00\x01\x00')) + output_text = output.get_data() + self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00')) # View by image name -- somehow we support this output = self.app.get('/test/raw/sources/f/test.jpg') self.assertEqual(output.status_code, 200) - self.assertTrue(output.data.startswith('\x00\x00\x01\x00')) + output_text = output.get_data() + self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00')) # View binary file output = self.app.get('/test/raw/sources/f/test_binary') self.assertEqual(output.status_code, 200) + output_text = output.get_data() self.assertEqual(output.headers['Content-Type'].lower(), 'application/octet-stream') - self.assertTrue(output.data.startswith('\x00\x00\x01\x00')) + self.assertTrue(output_text.startswith(b'\x00\x00\x01\x00')) # View folder output = self.app.get('/test/raw/master/f/folder1') @@ -2284,14 +2391,16 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/raw/master') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertEqual(output.headers['Content-Type'].lower(), 'text/plain; charset=ascii') - self.assertTrue(output.data.startswith( + self.assertTrue(output_text.startswith( 'diff --git a/test_binary b/test_binary\n')) output = self.app.get('/test/raw/%s' % commit.oid.hex) self.assertEqual(output.status_code, 200) - self.assertTrue(output.data.startswith( + output_text = output.get_data(as_text=True) + self.assertTrue(output_text.startswith( 'diff --git a/test_binary b/test_binary\n')) # Add a fork of a fork @@ -2316,9 +2425,10 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/fork/pingou/test3/raw/master/f/sources') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertEqual(output.headers['Content-Type'].lower(), 'text/plain; charset=ascii') - self.assertTrue('foo\n bar' in output.data) + self.assertIn('foo\n bar', output_text) def test_view_blame_file(self): """ Test the view_blame_file endpoint. """ @@ -2356,13 +2466,14 @@ class PagureFlaskRepotests(tests.Modeltests): # View in master branch output = self.app.get('/test/blame/sources') self.assertEqual(output.status_code, 200) - self.assertIn(b'
     barRow 0
     barRow 0
    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('
    ', output_text) self.assertIn( - b'', output.data) + '', output_text) self.assertIn( - b'', output.data) - data = regex.findall(output.data) + '', output_text) + data = regex.findall(output_text) self.assertEqual(len(data), 2) # View for a commit @@ -2373,42 +2484,46 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/blame/sources?identifier=%s' % parent) self.assertEqual(output.status_code, 200) - self.assertIn(b'
     bar
     bar
    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('
    ', output_text) self.assertIn( - b'', output.data) + '', output_text) self.assertIn( - b'', output.data) - data = regex.findall(output.data) + '', output_text) + data = regex.findall(output_text) self.assertEqual(len(data), 2) # View in feature branch output = self.app.get('/test/blame/sources?identifier=feature') self.assertEqual(output.status_code, 200) - self.assertIn(b'
     bar
     bar
    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('
    ', output_text) self.assertIn( - b'', output.data) + '', output_text) self.assertIn( - b'', output.data) - data2 = regex.findall(output.data) + '', output_text) + data2 = regex.findall(output_text) self.assertEqual(len(data2), 2) self.assertNotEqual(data, data2) # View what's supposed to be an image output = self.app.get('/test/blame/test.jpg') self.assertEqual(output.status_code, 400) + output_text = output.get_data(as_text=True) self.assertIn( - b'400 Bad Request', output.data) + '400 Bad Request', output_text) self.assertIn( - b'

    Binary files cannot be blamed

    ', output.data) + '

    Binary files cannot be blamed

    ', output_text) # View folder output = self.app.get('/test/blame/folder1') self.assertEqual(output.status_code, 404) - self.assertIn("Page not found :'( - Pagure", output.data) + output_text = output.get_data(as_text=True) + self.assertIn("Page not found :'( - Pagure", output_text) self.assertIn( - '

    Page not found (404)

    ', output.data) + '

    Page not found (404)

    ', output_text) # View by image name -- with a non-existant file output = self.app.get('/test/blame/testfoo.jpg') @@ -2422,18 +2537,24 @@ class PagureFlaskRepotests(tests.Modeltests): ncommits=1, filename='Šource') output = self.app.get('/test/blame/Šource') self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) self.assertEqual(output.headers['Content-Type'].lower(), 'text/html; charset=utf-8') - self.assertIn('  Šource', output.data) - self.assertIn('
     bar
     bar
    ', output.data) + self.assertIn( + '  Šource', + output_text + ) + self.assertIn( + '
    ', output_text) self.assertIn( '', output.data) + 'data-line-number="1">', output_text) self.assertTrue( '' - in output.data + in output_text or - '' in output.data + '' + in output_text ) # Add a fork of a fork @@ -2457,16 +2578,17 @@ class PagureFlaskRepotests(tests.Modeltests): ncommits=10) tests.add_content_to_git( os.path.join(self.path, 'repos', 'forks', 'pingou', 'test3.git'), - content=u'✨☃🍰☃✨'.encode('utf-8')) + content='✨☃🍰☃✨'.encode('utf-8')) output = self.app.get('/fork/pingou/test3/blame/sources') self.assertEqual(output.status_code, 200) - self.assertIn('
    Row 0
    Row 0
    Row 0
    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('
    ', output_text) self.assertIn( '', output.data) + 'data-line-number="1">', output_text) self.assertIn( - '', output.data) + '', output_text) def test_view_blame_file_on_tag(self): """ Test the view_blame_file endpoint. """ @@ -2492,13 +2614,14 @@ class PagureFlaskRepotests(tests.Modeltests): # View for tag v1.0 output = self.app.get('/test/blame/sources?identifier=v1.0') self.assertEqual(output.status_code, 200) - self.assertIn(b'
     barRow 0
     barRow 0
    ', output.data) + output_text = output.get_data(as_text=True) + self.assertIn('
    ', output_text) self.assertIn( - b'', output.data) + '', output_text) self.assertIn( - b'', output.data) - data = regex.findall(output.data) + '', output_text) + data = regex.findall(output_text) self.assertEqual(len(data), 2) def test_view_commit(self): @@ -2526,17 +2649,19 @@ class PagureFlaskRepotests(tests.Modeltests): # View first commit output = self.app.get('/test/c/%s' % commit.oid.hex) self.assertEqual(output.status_code, 200) - self.assertTrue( - '
     bar
     bar