From 7852dc004a56e27d466034050bc968e611c5f351 Mon Sep 17 00:00:00 2001 From: Vadim Rutkovsky Date: Oct 24 2017 08:53:55 +0000 Subject: [PATCH 1/5] docker-compose: update configs and use py3 packages --- diff --git a/dev/docker-compose.yml b/dev/docker-compose.yml index f12e3de..e83118f 100644 --- a/dev/docker-compose.yml +++ b/dev/docker-compose.yml @@ -44,7 +44,7 @@ services: - ..:/code:z environment: - PYTHONPATH=. - - PAGURE_CONFIG=/code/openshift.cfg + - PAGURE_CONFIG=/code/dev/openshift.cfg ev: build: context: ./docker @@ -58,7 +58,7 @@ services: - ..:/code:z environment: - PYTHONPATH=. - - PAGURE_CONFIG=/code/openshift.cfg + - PAGURE_CONFIG=/code/dev/openshift.cfg redis: image: redis postgresql: diff --git a/dev/docker/ev b/dev/docker/ev index ca07dcf..484e562 100644 --- a/dev/docker/ev +++ b/dev/docker/ev @@ -4,18 +4,18 @@ MAINTAINER Patrick Uiterwijk VOLUME ["/repos"] RUN mkdir /code -RUN dnf install -y python2-devel python-setuptools python-nose py-bcrypt python-alembic \ - python-arrow python-binaryornot python-bleach python-blinker \ - python-chardet python-cryptography python-docutils python-flask \ - python-flask-wtf python-flask-multistatic python-markdown python-psutil \ - python-pygit2 python-pygments python-fedora python-openid python-openid-cla \ - python-openid-teams python-straight-plugin python-wtforms python-munch \ - python-enum34 python-redis python-sqlalchemy systemd gitolite3 python-filelock \ - python-fedora-flask python2-pillow python2-psycopg2 python-trollius \ - python-trollius-redis python-celery +RUN dnf install -y python3-devel python3-setuptools python3-nose python3-py-bcrypt python3-alembic \ + python3-arrow python3-binaryornot python3-bleach python3-blinker \ + python3-chardet python3-cryptography python3-docutils python3-flask \ + python3-flask-wtf python3-flask-multistatic python3-markdown python3-psutil \ + python3-pygit2 python3-pygments python3-fedora python3-openid python3-openid-cla \ + python3-openid-teams python3-straight-plugin python3-wtforms python3-munch \ + python3-redis python3-sqlalchemy systemd gitolite3 python3-filelock \ + python3-fedora-flask python3-pillow python3-psycopg2 python3-trollius \ + python3-trollius-redis python3-celery WORKDIR /code -ENTRYPOINT ["/usr/bin/python", "/code/pagure-ev/pagure_stream_server.py"] +ENTRYPOINT ["/usr/bin/python3", "/code/pagure-ev/pagure_stream_server.py"] # Code injection is last to make optimal use of caches VOLUME ["/code"] diff --git a/dev/docker/web b/dev/docker/web index e0a14c1..751d98c 100644 --- a/dev/docker/web +++ b/dev/docker/web @@ -4,15 +4,15 @@ MAINTAINER Patrick Uiterwijk VOLUME ["/repos"] RUN mkdir /code -RUN dnf install -y python2-devel python-setuptools python-nose py-bcrypt python-alembic \ - python-arrow python-binaryornot python-bleach python-blinker \ - python-chardet python-cryptography python-docutils python-flask \ - python-flask-wtf python-flask-multistatic python-markdown python-psutil \ - python-pygit2 python-pygments python-fedora python-openid python-openid-cla \ - python-openid-teams python-straight-plugin python-wtforms python-munch \ - python-enum34 python-redis python-sqlalchemy systemd gitolite3 python-filelock \ - python-fedora-flask python2-pillow python2-psycopg2 python2-celery \ - findutils +RUN dnf install -y python3-devel python3-setuptools python3-nose python3-py-bcrypt python3-alembic \ + python3-arrow python3-binaryornot python3-bleach python3-blinker \ + python3-chardet python3-cryptography python3-docutils python3-flask \ + python3-flask-wtf python3-flask-multistatic python3-markdown python3-psutil \ + python3-pygit2 python3-pygments python3-fedora python3-openid python3-openid-cla \ + python3-openid-teams python3-straight-plugin python3-wtforms python3-munch \ + python3-enum34 python3-redis python3-sqlalchemy systemd gitolite3 python3-filelock \ + python3-fedora-flask python3-pillow python3-psycopg2 python3-celery \ + python3-fedmsg-core findutils postgresql COPY web-run /run.sh WORKDIR /code diff --git a/dev/docker/web-run b/dev/docker/web-run index 7ca36a8..80dc5f4 100644 --- a/dev/docker/web-run +++ b/dev/docker/web-run @@ -1,14 +1,20 @@ #!/bin/bash -xe +export $(cat /code/dev/openshift.cfg | sed 's; = ;=;' | xargs) +until psql ${DB_URL} -c '\l'; do + >&2 echo "Postgres is unavailable - sleeping" + sleep 5 +done + if [ ! -f /attachments/inited ]; then - echo "Giving Postgres time to start" - sleep 10 - PAGURE_CONFIG=/code/openshift.cfg python createdb.py - alembic --config /code/openshift_alembic.ini heads | awk '{print $1}' | \ - xargs alembic --config /code/openshift_alembic.ini stamp + PAGURE_CONFIG=/code/dev/openshift.cfg python3 createdb.py + python3-alembic --config /code/dev/openshift_alembic.ini heads | awk '{print $1}' | \ + xargs python3-alembic --config /code/dev/openshift_alembic.ini stamp touch /attachments/inited else - alembic --config /code/openshift_alembic.ini upgrade head + python3-alembic --config /code/dev/openshift_alembic.ini upgrade head fi -exec /usr/bin/python /code/runserver.py --host 0.0.0.0 --config /code/openshift.cfg +mkdir -p /root/.gitolite/keydir + +exec /usr/bin/python3 /code/runserver.py --host 0.0.0.0 --config /code/dev/openshift.cfg diff --git a/dev/docker/worker b/dev/docker/worker index 18072d3..dfeeeae 100644 --- a/dev/docker/worker +++ b/dev/docker/worker @@ -4,19 +4,20 @@ MAINTAINER Patrick Uiterwijk VOLUME ["/repos"] RUN mkdir /code -RUN dnf install -y python2-devel python-setuptools python-nose py-bcrypt python-alembic \ - python-arrow python-binaryornot python-bleach python-blinker \ - python-chardet python-cryptography python-docutils python-flask \ - python-flask-wtf python-flask-multistatic python-markdown python-psutil \ - python-pygit2 python-pygments python-fedora python-openid python-openid-cla \ - python-openid-teams python-straight-plugin python-wtforms python-munch \ - python-enum34 python-redis python-sqlalchemy systemd gitolite3 python-filelock \ - python-fedora-flask python2-pillow python2-psycopg2 +RUN dnf install -y python3-devel python3-setuptools python3-nose python3-py-bcrypt python3-alembic \ + python3-arrow python3-binaryornot python3-bleach python3-blinker \ + python3-chardet python3-cryptography python3-docutils python3-flask \ + python3-flask-wtf python3-flask-multistatic python3-markdown python3-psutil \ + python3-pygit2 python3-pygments python3-fedora python3-openid python3-openid-cla \ + python3-openid-teams python3-straight-plugin python3-wtforms python3-munch \ + python3-enum34 python3-redis python3-sqlalchemy systemd gitolite3 python3-filelock \ + python3-fedora-flask python3-pillow python3-psycopg2 python3-celery \ + findutils hostname -RUN dnf install -y python2-celery +COPY worker-run /run.sh WORKDIR /code -ENTRYPOINT ["/usr/bin/celery", "-A", "pagure.lib.tasks", "worker", "--loglevel", "info", "--autoreload"] +ENTRYPOINT ["/usr/bin/bash", "/run.sh"] # Code injection is last to make optimal use of caches VOLUME ["/code"] diff --git a/dev/docker/worker-run b/dev/docker/worker-run new file mode 100644 index 0000000..3f9e734 --- /dev/null +++ b/dev/docker/worker-run @@ -0,0 +1,11 @@ +#!/bin/bash -xe +cp /code/dev/ansible/roles/pagure-dev/files/gitolite3.rc /root/.gitolite.rc +cd /root +ssh-keygen -f gitolite_rsa -t rsa -N '' +gitolite setup -pk gitolite_rsa.pub + +ln -s /root/repositories /repos + +cd /code +python3 setup.py install +exec /usr/bin/celery-3 -A pagure.lib.tasks worker --loglevel info --autoreload diff --git a/dev/openshift.cfg b/dev/openshift.cfg index 420aee2..33965b5 100644 --- a/dev/openshift.cfg +++ b/dev/openshift.cfg @@ -1,13 +1,45 @@ SECRET_KEY = 'klalkdsaskrhjklh3423423' DB_URL = 'postgresql://pagure:pagure@postgresql/pagure' INSTANCE_NAME = 'DEVELOPMENT PAGURE' -EMAIL_ERROR = '' APP_URL = 'http://localhost:5000/' -REDIS_HOST = 'redis' -GIT_FOLDER = '/repos/repos' -DOCS_FOLDER = '/repos/docs' -TICKETS_FOLDER = '/repos/tickets' -REQUESTS_FOLDER = '/repos/requests' -REMOTE_GIT_FOLDER = '/repos/remote' ATTACHMENTS_FOLDER = '/attachments' EVENTSOURCE_SOURCE = 'http://localhost:8080' + +ADMIN_GROUP = ['sysadmin-main'] +PAGURE_ADMIN_USERS = [] +DOC_APP_URL = 'http://localhost:5000/' +EMAIL_SEND = False +EMAIL_ERROR = 'root@localhost' +GIT_URL_SSH = 'ssh://root@localhost:5000/' +GIT_URL_GIT = 'http://localhost:5000/' +STORAGE_ROOT = '/repos/repositories/' +IT_FOLDER = '/repos/repositories/repos' +DOCS_FOLDER = '/repos/repositories/docs' +TICKETS_FOLDER = '/repos/repositories/tickets' +REQUESTS_FOLDER = '/repos/repositories/requests' +REMOTE_GIT_FOLDER = '/repos/repositories/remotes' +VIRUS_SCAN_ATTACHMENTS = False +GITOLITE_HOME = '/root/' +GITOLITE_CONFIG = '/root/.gitolite/conf/gitolite.conf' +GITOLITE_VERSION = 3 +GITOLITE_KEYDIR = '/root/.gitolite/keydir/' +GL_RC = '/root/.gitolite.rc' +GL_BINDIR = '/usr/bin/' +ITEM_PER_PAGE = 50 +MAX_CONTENT_LENGTH = 4 * 1024 * 1024 +SHORT_LENGTH = 6 +BLACKLISTED_PROJECTS = [ + 'static', 'pv', 'releases', 'new', 'api', 'settings', + 'logout', 'login', 'users', 'groups', 'projects'] +IP_ALLOWED_INTERNAL = ['127.0.0.1', 'localhost', '::1',] +EVENTSOURCE_PORT = 8080 +WEBHOOK = True +REDIS_HOST = 'redis' +REDIS_PORT = 6379 +REDIS_DB = 0 +PAGURE_AUTH = 'fas' +SESSION_COOKIE_SECURE = False +SESSION_COOKIE_NAME = 'pagure' +CHECK_SESSION_IP = True +APPLICATION_ROOT = '/' +OLD_VIEW_COMMIT_ENABLED = False From 9acf9ce4d2bb7dd3782bcf85a01e8393ab9fdba3 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 24 2017 08:53:55 +0000 Subject: [PATCH 2/5] Add utility scripts to run the test suite with python3 --- diff --git a/nosetests3 b/nosetests3 new file mode 100755 index 0000000..4ae313d --- /dev/null +++ b/nosetests3 @@ -0,0 +1,12 @@ +#!/usr/bin/python3 +# EASY-INSTALL-ENTRY-SCRIPT: 'nose==1.3.7','console_scripts','nosetests-3.4' +__requires__ = 'nose>=1.3.7' +import sys +from pkg_resources import load_entry_point + +if __name__ == '__main__': + sys.exit( + load_entry_point( + 'nose>=1.3.7', 'console_scripts', 'nosetests-3.%s' % + sys.version_info.minor)() + ) diff --git a/runtests3.sh b/runtests3.sh new file mode 100755 index 0000000..cfafed5 --- /dev/null +++ b/runtests3.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +PAGURE_CONFIG=`pwd`/tests/test_config \ +PYTHONPATH=pagure \ +./nosetests3 --with-coverage --cover-erase --cover-package=pagure $* From ef8b9f0109a920b089ee2f11b7b0804423302065 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 24 2017 08:53:55 +0000 Subject: [PATCH 3/5] Port pagure to python3 --- diff --git a/pagure-ev/pagure_stream_server.py b/pagure-ev/pagure_stream_server.py index c7c0a36..79c7087 100644 --- a/pagure-ev/pagure_stream_server.py +++ b/pagure-ev/pagure_stream_server.py @@ -21,17 +21,19 @@ nc localhost 8080 import logging import os -import urlparse + import redis import trollius +from six.moves.urllib.parse import urlparse + log = logging.getLogger(__name__) if 'PAGURE_CONFIG' not in os.environ \ and os.path.exists('/etc/pagure/pagure.cfg'): - print 'Using configuration file `/etc/pagure/pagure.cfg`' + print('Using configuration file `/etc/pagure/pagure.cfg`') os.environ['PAGURE_CONFIG'] = '/etc/pagure/pagure.cfg' @@ -191,7 +193,7 @@ def handle_client(client_reader, client_writer): log.warning("Invalid URL provided: %s" % data[1]) return - url = urlparse.urlsplit(data[1]) + url = urlparse(data[1]) try: obj = get_obj_from_path(url.path) diff --git a/pagure/__init__.py b/pagure/__init__.py index 3723fbd..5fb4285 100644 --- a/pagure/__init__.py +++ b/pagure/__init__.py @@ -22,13 +22,14 @@ import logging # noqa: E402 import logging.config # noqa: E402 import os # noqa: E402 import re # noqa: E402 -import urlparse # noqa: E402 import flask # noqa: E402 import pygit2 # noqa: E402 +import six # noqa: E402 import werkzeug # noqa: E402 from functools import wraps # noqa: E402 from sqlalchemy.exc import SQLAlchemyError # noqa: E402 +from six.moves.urllib.parse import urlparse, urljoin # noqa: E402 from flask_multistatic import MultiStaticFlask # noqa: E402 @@ -265,9 +266,8 @@ def is_safe_url(target): # pragma: no cover """ Checks that the target url is safe and sending to the current website not some other malicious one. """ - ref_url = urlparse.urlparse(flask.request.host_url) - test_url = urlparse.urlparse( - urlparse.urljoin(flask.request.host_url, target)) + ref_url = urlparse(flask.request.host_url) + test_url = urlparse(urljoin(flask.request.host_url, target)) return test_url.scheme in ('http', 'https') and \ ref_url.netloc == test_url.netloc @@ -291,7 +291,7 @@ def is_admin(): return True admins = APP.config['ADMIN_GROUP'] - if not isinstance(admins, list): + if isinstance(admins, six.string_types): admins = [admins] admins = set(admins or []) groups = set(flask.g.fas_user.groups) @@ -637,7 +637,10 @@ def __get_file_in_tree(repo_obj, tree, filepath, bail_on_tree=False): if isinstance(tree, pygit2.Blob): return for entry in tree: - fname = entry.name.decode('utf-8') + fname = entry.name + if six.PY2: + fname = entry.name.decode('utf-8') + if fname == filename: if len(filepath) == 1: blob = repo_obj.get(entry.id) diff --git a/pagure/docs_server.py b/pagure/docs_server.py index ee58ea6..ff28836 100644 --- a/pagure/docs_server.py +++ b/pagure/docs_server.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ - (c) 2014-2015 - Copyright Red Hat Inc + (c) 2014-2016 - Copyright Red Hat Inc Authors: Pierre-Yves Chibon @@ -183,7 +183,7 @@ def view_docs(repo, username=None, namespace=None, filename=None): if extended: filename += '/' except pagure.exceptions.FileNotFoundException as err: - flask.flash(err.message, 'error') + flask.flash('%s' % err, 'error') except Exception as err: _log.exception(err) flask.abort(500, 'Unkown error encountered and reported') diff --git a/pagure/hooks/__init__.py b/pagure/hooks/__init__.py index 540441a..2fda918 100644 --- a/pagure/hooks/__init__.py +++ b/pagure/hooks/__init__.py @@ -9,6 +9,8 @@ """ import os + +import six import wtforms from pagure.exceptions import FileNotFoundException @@ -21,7 +23,7 @@ class RequiredIf(wtforms.validators.Required): """ def __init__(self, fields, *args, **kwargs): - if isinstance(fields, basestring): + if isinstance(fields, six.string_types): fields = [fields] self.fields = fields super(RequiredIf, self).__init__(*args, **kwargs) diff --git a/pagure/hooks/files/git_multimail.py b/pagure/hooks/files/git_multimail.py index e7aa9a5..34731f9 100755 --- a/pagure/hooks/files/git_multimail.py +++ b/pagure/hooks/files/git_multimail.py @@ -58,6 +58,8 @@ import optparse import smtplib import time +import six + try: from email.utils import make_msgid from email.utils import getaddresses @@ -1459,7 +1461,7 @@ class SMTPMailer(Mailer): try: msg = ''.join(lines) # turn comma-separated list into Python list if needed. - if isinstance(to_addrs, basestring): + if isinstance(to_addrs, six.string_types): to_addrs = [ email for (name, email) in getaddresses([to_addrs])] self.smtp.sendmail(self.envelopesender, to_addrs, msg) diff --git a/pagure/internal/__init__.py b/pagure/internal/__init__.py index 2df97c2..cdd11d4 100644 --- a/pagure/internal/__init__.py +++ b/pagure/internal/__init__.py @@ -276,7 +276,7 @@ def get_pull_request_ready_branch(): parent_repo_obj = repo_obj branches = {} - if not repo_obj.is_empty and repo_obj.listall_branches() > 1: + if not repo_obj.is_empty and len(repo_obj.listall_branches()) > 1: if not parent_repo_obj.is_empty \ and not parent_repo_obj.head_is_unborn: try: diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 8e88c2f..07a70f7 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -28,7 +28,6 @@ import logging import os import tempfile import subprocess -import urlparse import uuid import markdown import werkzeug @@ -40,6 +39,8 @@ import redis import six import sqlalchemy import sqlalchemy.schema + +from six.moves.urllib_parse import urlparse, urlencode, parse_qsl from sqlalchemy import func from sqlalchemy import asc from sqlalchemy.orm import aliased @@ -141,7 +142,14 @@ def get_next_id(session, projectid): model.PullRequest.project_id == projectid ) - nid = max([el[0] for el in query1.union(query2).all()]) or 0 + ids = [ + el[0] + for el in query1.union(query2).all() + if el[0] is not None + ] + nid = 0 + if ids: + nid = max(ids) return nid + 1 @@ -217,7 +225,7 @@ def is_valid_ssh_key(key): stdout, stderr = proc.communicate() if proc.returncode != 0: return False - return stdout + return stdout.decode('utf-8') def are_valid_ssh_keys(keys): @@ -308,7 +316,7 @@ def create_user_ssh_keys_on_disk(user, gitolite_keydir): os.mkdir(keyline_dir) keyfile = os.path.join(keyline_dir, '%s.pub' % user.user) with open(keyfile, 'w') as stream: - stream.write(keys[i].strip().encode('UTF-8')) + stream.write(keys[i].strip()) def add_issue_comment(session, issue, comment, user, ticketfolder, @@ -381,7 +389,7 @@ def add_tag_obj(session, obj, tags, user, ticketfolder): ''' Add a tag to an object (either an issue or a project). ''' user_obj = get_user(session, user) - if isinstance(tags, basestring): + if isinstance(tags, six.string_types): tags = [tags] added_tags = [] @@ -764,7 +772,7 @@ def remove_tags_obj(session, obj, tags, ticketfolder, user): ''' Removes the specified tag(s) of a given object. ''' user_obj = get_user(session, user) - if isinstance(tags, basestring): + if isinstance(tags, six.string_types): tags = [tags] removed_tags = [] @@ -1940,7 +1948,7 @@ def search_projects( ) # No filtering is done if private == username i.e if the owner of the # project is viewing the project - elif isinstance(private, basestring) and private != username: + elif isinstance(private, six.string_types) and private != username: projects = projects.filter( sqlalchemy.or_( model.Project.private == False, # noqa: E712 @@ -2173,7 +2181,7 @@ def search_issues( model.Issue.priority == priority ) if tags is not None and tags != []: - if isinstance(tags, basestring): + if isinstance(tags, six.string_types): tags = [tags] notags = [] ytags = [] @@ -2261,7 +2269,7 @@ def search_issues( query = query.filter( model.Issue.private == False # noqa: E712 ) - elif isinstance(private, basestring): + elif isinstance(private, six.string_types): user2 = aliased(model.User) query = query.filter( sqlalchemy.or_( @@ -2276,7 +2284,7 @@ def search_issues( if no_milestones and milestones is not None and milestones != []: # Asking for issues with no milestone or a specific milestone - if isinstance(milestones, basestring): + if isinstance(milestones, six.string_types): milestones = [milestones] query = query.filter( (model.Issue.milestone.is_(None)) | @@ -2289,7 +2297,7 @@ def search_issues( ) elif milestones is not None and milestones != []: # Asking for a single specific milestone - if isinstance(milestones, basestring): + if isinstance(milestones, six.string_types): milestones = [milestones] query = query.filter( model.Issue.milestone.in_(milestones) @@ -2778,7 +2786,7 @@ def add_email_to_user(session, user, user_email): def update_user_ssh(session, user, ssh_key, keydir): ''' Set up a new user into the database or update its information. ''' - if isinstance(user, basestring): + if isinstance(user, six.string_types): user = get_user(session, user) user.public_ssh_key = ssh_key @@ -2793,7 +2801,7 @@ def avatar_url_from_email(email, size=64, default='retro', dns=False): """ Our own implementation since fas doesn't support this nicely yet. """ - if isinstance(email, unicode): + if not isinstance(email, six.string_types): email = email.encode('utf-8') if dns: # pragma: no cover @@ -2806,8 +2814,9 @@ def avatar_url_from_email(email, size=64, default='retro', dns=False): default=default, ) else: - import urllib - query = urllib.urlencode({'s': size, 'd': default}) + query = urlencode({'s': size, 'd': default}) + if six.PY3: + email = email.encode('utf-8') hashhex = hashlib.sha256(email).hexdigest() return "https://seccdn.libravatar.org/avatar/%s?%s" % ( hashhex, query) @@ -2818,7 +2827,7 @@ def update_tags(session, obj, tags, username, ticketfolder): This object can be either an issue or a project. """ - if isinstance(tags, basestring): + if isinstance(tags, six.string_types): tags = [tags] toadd = set(tags) - set(obj.tags_text) @@ -2855,7 +2864,7 @@ def update_dependency_issue( """ Update the dependency of a specified issue (adding or removing them) """ - if isinstance(depends, basestring): + if isinstance(depends, six.string_types): depends = [depends] toadd = set(depends) - set(issue.depending_text) @@ -2910,7 +2919,7 @@ def update_blocked_issue( removing them) """ - if isinstance(blocks, basestring): + if isinstance(blocks, six.string_types): blocks = [blocks] toadd = set(blocks) - set(issue.blocking_text) @@ -3457,8 +3466,8 @@ def filter_img_src(name, value): if name in ('alt', 'height', 'width', 'class'): return True if name == 'src': - parsed = urlparse.urlparse(value) - return (not parsed.netloc) or parsed.netloc == urlparse.urlparse( + parsed = urlparse(value) + return (not parsed.netloc) or parsed.netloc == urlparse( pagure.APP.config['APP_URL']).netloc return False @@ -3930,10 +3939,10 @@ def get_watch_list(session, obj): def save_report(session, repo, name, url, username): """ Save the report of issues based on the given URL of the project. """ - url_obj = urlparse.urlparse(url) + url_obj = urlparse(url) url = url_obj.geturl().replace(url_obj.query, '') query = {} - for k, v in urlparse.parse_qsl(url_obj.query): + for k, v in parse_qsl(url_obj.query): if k in query: if isinstance(query[k], list): query[k].append(v) diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 40ee099..e49e10c 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -7,6 +7,7 @@ Pierre-Yves Chibon """ +from __future__ import print_function # pylint: disable=too-many-branches # pylint: disable=too-many-arguments @@ -24,6 +25,7 @@ import tempfile import arrow import pygit2 +import six from sqlalchemy.exc import SQLAlchemyError from pygit2.remote import RemoteCollection @@ -40,6 +42,13 @@ from pagure.lib import tasks _log = logging.getLogger(__name__) +def _next_commit(walker): + if six.PY2: + return walker.next() + else: + return walker.__next__() + + def commit_to_patch(repo_obj, commits): ''' For a given commit (PyGit2 commit object) of a specified git repo, returns a string representation of the changes the commit did in a @@ -953,11 +962,13 @@ def read_output(cmd, abspath, input=None, keepends=False, **kw): cwd=abspath, **kw) (out, err) = procs.communicate(input) + out = out.decode('utf-8') + err = err.decode('utf-8') retcode = procs.wait() if retcode: - print 'ERROR: %s =-- %s' % (cmd, retcode) - print out - print err + print('ERROR: %s =-- %s' % (cmd, retcode)) + print(out) + print(err) if not keepends: out = out.rstrip('\n\r') return out @@ -1250,8 +1261,8 @@ def merge_pull_request( tree = new_repo.index.write_tree() user_obj = pagure.lib.get_user(session, username) author = pygit2.Signature( - user_obj.fullname.encode('utf-8'), - user_obj.default_email.encode('utf-8')) + user_obj.fullname, + user_obj.default_email) commit = new_repo.create_commit( 'refs/heads/%s' % request.branch, author, @@ -1295,8 +1306,8 @@ def merge_pull_request( _log.info(' Basing on: %s - %s', head.hex, repo_commit.oid.hex) user_obj = pagure.lib.get_user(session, username) author = pygit2.Signature( - user_obj.fullname.encode('utf-8'), - user_obj.default_email.encode('utf-8')) + user_obj.fullname, + user_obj.default_email) commit = new_repo.create_commit( 'refs/heads/%s' % request.branch, author, @@ -1402,13 +1413,13 @@ def get_diff_info(repo_obj, orig_repo, branch_from, branch_to, prid=None): com = None if branch: try: - com = main_walker.next() + com = _next_commit(main_walker) main_commits.add(com.oid.hex) except StopIteration: com = None try: - branch_commit = branch_walker.next() + branch_commit = _next_commit(branch_walker) except StopIteration: branch_commit = None diff --git a/pagure/lib/git_auth.py b/pagure/lib/git_auth.py index a5470fd..30018cd 100644 --- a/pagure/lib/git_auth.py +++ b/pagure/lib/git_auth.py @@ -418,7 +418,7 @@ class Gitolite2Auth(GitAuthHelper): stream.write('# end of header\n') if groups: - for key, users in groups.iteritems(): + for key, users in groups.items(): stream.write('@%s = %s\n' % (key, ' '.join(users))) stream.write('# end of groups\n\n') diff --git a/pagure/lib/login.py b/pagure/lib/login.py index b821e20..e36dd75 100644 --- a/pagure/lib/login.py +++ b/pagure/lib/login.py @@ -15,6 +15,7 @@ import bcrypt import hashlib import pagure +import six from pagure.lib import model from kitchen.text.converters import to_unicode, to_bytes from cryptography.hazmat.primitives import constant_time @@ -51,12 +52,20 @@ def get_session_by_visitkey(session, sessionid): def generate_hashed_value(password): """ Generate hash value for password """ - return '$2$' + bcrypt.hashpw(to_unicode(password), bcrypt.gensalt()) + if isinstance(password, six.string_types): + password = password.encode('utf-8') + salt = bcrypt.gensalt() + if isinstance(salt, six.string_types): + salt = salt.encode('utf-8') + return '$2$' + bcrypt.hashpw(password, salt) def check_password(entered_password, user_password, seed=None): """ Version checking and returning the password """ + if six.PY3: + if not isinstance(user_password, six.string_types): + user_password = user_password.decode('utf-8') if not user_password.count('$') >= 2: raise pagure.exceptions.PagureException( 'Password of unknown version found in the database' @@ -65,10 +74,19 @@ def check_password(entered_password, user_password, seed=None): _, version, user_password = user_password.split('$', 2) if version == '2': - password = bcrypt.hashpw(to_unicode(entered_password), user_password) + if not six.PY3: + entered_password = to_unicode(entered_password) + else: + entered_password = entered_password.encode('utf-8') + user_password = user_password.encode('utf-8') + password = bcrypt.hashpw(entered_password, user_password) elif version == '1': - password = '%s%s' % (to_unicode(entered_password), seed) + if six.PY3: + password = '%s%s' % (entered_password, seed) + password = password.encode('utf-8') + else: + password = '%s%s' % (to_unicode(entered_password), seed) password = hashlib.sha512(password).hexdigest() else: diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 5df8631..27620c7 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -133,7 +133,9 @@ def create_default_status(session, acls=None): session.rollback() _log.debug('Type %s could not be added', grptype) - for acl in sorted(acls) or {}: + acls = acls or {} + keys = sorted(list(acls.keys())) + for acl in keys: item = ACL( name=acl, description=acls[acl] @@ -1197,6 +1199,12 @@ class Issue(BASE): for comment in self.comments if not comment.notification] + @property + def sortable_priority(self): + ''' Return an empty string if no priority is set allowing issues to + be sorted using this attribute. ''' + return self.priority if self.priority else '' + def to_json(self, public=False, with_comments=True): ''' Returns a dictionary representation of the issue. diff --git a/pagure/lib/notify.py b/pagure/lib/notify.py index 3ff5018..78562cd 100644 --- a/pagure/lib/notify.py +++ b/pagure/lib/notify.py @@ -10,6 +10,7 @@ pagure notifications. """ from __future__ import print_function + # pylint: disable=too-many-branches # pylint: disable=too-many-arguments @@ -18,16 +19,17 @@ import datetime import hashlib import json import logging -import urlparse import re import smtplib import time import flask import pagure +import six from email.header import Header from email.mime.text import MIMEText +from six.moves.urllib_parse import urljoin _log = logging.getLogger(__name__) @@ -229,6 +231,8 @@ def send_email(text, subject, to_mail, from_email = pagure.APP.config.get( 'FROM_EMAIL', 'pagure@fedoraproject.org') + if isinstance(from_email, bytes): + from_email = from_email.decode('utf-8') if user_from: header = Header(user_from, 'utf-8') from_email = '%s <%s>' % (header, from_email) @@ -247,7 +251,7 @@ def send_email(text, subject, to_mail, smtp = None for mailto in to_mail.split(','): msg = MIMEText(text.encode('utf-8'), 'plain', 'utf-8') - msg['Subject'] = header = Header( + msg['Subject'] = Header( '[%s] %s' % (subject_tag, subject), 'utf-8') msg['From'] = from_email @@ -269,28 +273,36 @@ def send_email(text, subject, to_mail, # Send the message via our own SMTP server, but don't include the # envelope header. - if isinstance(mailto, unicode): - mailto = mailto.encode('utf-8') - msg['To'] = mailto salt = pagure.APP.config.get('SALT_EMAIL') - if isinstance(mail_id, unicode): + + if mailto and not isinstance(mailto, bytes): + mailto = mailto.encode('utf-8') + if salt and not isinstance(salt, bytes): + salt = salt.encode('utf-8') + if mail_id and not isinstance(mail_id, bytes): mail_id = mail_id.encode('utf-8') - mhash = hashlib.sha512('<%s>%s%s' % (mail_id, salt, mailto)) - msg['Reply-To'] = 'reply+%s@%s' % ( + + msg['To'] = mailto + key = '<%s>%s%s' % (mail_id, salt, mailto) + if six.PY3 and isinstance(key, str): + key = key.encode('utf-8') + mhash = hashlib.sha512(key) + + msg['Reply-To'] = u'reply+%s@%s' % ( mhash.hexdigest(), pagure.APP.config['DOMAIN_EMAIL_NOTIFICATIONS']) msg['Mail-Followup-To'] = msg['Reply-To'] if not pagure.APP.config.get('EMAIL_SEND', True): print('******EMAIL******') - print('From: %s' % from_email) - print('To: %s' % to_mail) - print('Subject: %s' % subject) - print('in_reply_to: %s' % in_reply_to) - print('mail_id: %s' % mail_id) - print('Contents:') - print(text.encode('utf-8')) + # print('From: %s' % from_email) + # print('To: %s' % to_mail) + # print('Subject: %s' % subject) + # print('in_reply_to: %s' % in_reply_to) + # print('mail_id: %s' % mail_id) + # print('Contents:') + # print(text.encode('utf-8')) print('*****************') - print(msg.as_string()) + # print(msg.as_string()) print('*****/EMAIL******') continue try: @@ -678,7 +690,7 @@ def notify_new_email(email, user): root_url = pagure.APP.config.get('APP_URL', flask.request.url_root) - url = urlparse.urljoin( + url = urljoin( root_url or flask.request.url_root, flask.url_for('confirm_email', token=email.token), ) diff --git a/pagure/lib/repo.py b/pagure/lib/repo.py index 9d2f61f..20c9814 100644 --- a/pagure/lib/repo.py +++ b/pagure/lib/repo.py @@ -7,6 +7,7 @@ Pierre-Yves Chibon """ +from __future__ import print_function import logging import os @@ -106,7 +107,7 @@ class PagureRepo(pygit2.Repository): (out, err) = procs.communicate(line) retcode = procs.wait() if retcode: - print 'ERROR: %s =-- %s' % (cmd, retcode) - print out - print err + print('ERROR: %s =-- %s' % (cmd, retcode)) + print(out) + print(err) out = out.rstrip('\n\r') diff --git a/pagure/perfrepo.py b/pagure/perfrepo.py index ca0b54d..61316d4 100644 --- a/pagure/perfrepo.py +++ b/pagure/perfrepo.py @@ -7,12 +7,15 @@ Patrick Uiterwijk """ +from __future__ import print_function + import pprint import os import traceback import types +import six import pygit2 import _pygit2 @@ -77,9 +80,9 @@ class FakeDiffHunk(object): self.parent = parent def __getattr__(self, attr): - print 'Getting Fake Hunk %s' % attr + print('Getting Fake Hunk %s' % attr) resp = getattr(self.parent, attr) - print 'Response: %s' % resp + print('Response: %s' % resp) return resp @@ -190,8 +193,9 @@ class PerfRepo(object): TOTALS['steps'] += 1 return self.iter.next() - -pygit2.Repository = PerfRepo +if six.PY2: + # Disable perfrepo on PY3, it doesn't work + pygit2.Repository = PerfRepo def reset_stats(): @@ -215,7 +219,7 @@ def print_stats(response): if not os.environ.get('PAGURE_PERFREPO_VERBOSE'): return response - print 'Statistics:' + print('Statistics:') pprint.pprint(STATS) return response diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index e4cd654..4317e33 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -24,6 +24,7 @@ import flask import markdown.inlinepatterns import markdown.util import pygit2 +import six import pagure import pagure.lib @@ -332,7 +333,7 @@ def _obj_anchor_tag(user, namespace, repo, obj, text): :return: An element tree containing the href to the issue or PR :rtype: xml.etree.ElementTree.Element """ - if isinstance(obj, basestring): + if isinstance(obj, six.string_types): url = flask.url_for( 'view_commit', username=user, namespace=namespace, repo=repo, commitid=obj) diff --git a/pagure/templates/commit.html b/pagure/templates/commit.html index 0534892..bc528ed 100644 --- a/pagure/templates/commit.html +++ b/pagure/templates/commit.html @@ -114,7 +114,11 @@ {% endif %} {% endif %} - {{ patch.new_file_path | unicode }} + {% if patch | hasattr('new_file_path') %} + {{ patch.new_file_path | unicode }} + {% elif patch | hasattr('delta') %} + {{ patch.delta.new_file.path | unicode }} + {% endif %} {% endfor %} diff --git a/pagure/templates/pull_request.html b/pagure/templates/pull_request.html index 7a3059b..a96b835 100644 --- a/pagure/templates/pull_request.html +++ b/pagure/templates/pull_request.html @@ -415,7 +415,7 @@ identifier=identifier, filename=filepath) }}" {% endif %} - title="View file as of {{ patch_new_id|short }}">{{filepath | unicode}} + title="View file as of {{ patch_new_id|short }}">{{ filepath | unicode }} {% endmacro %} {% if patch | hasattr('new_file_path') %} @@ -452,25 +452,25 @@ {%- if patch.delta.new_file.path == patch.delta.old_file.path -%} {%- if patch.delta.new_file.mode == 0 and patch.delta.old_file.mode == 33188 -%} {% set patchtype = "removed"%} -
{{viewfilelink(patch.delta.new_file.path)}} {{lineschanged(False, True)}}
+
{{ viewfilelink(patch.delta.new_file.path) }} {{ lineschanged(False, True) }}
file removed
{%-elif patch.delta.new_file.mode == 33188 and patch.delta.old_file.mode == 0 -%} {% set patchtype = "added"%} -
{{viewfilelink(patch.delta.new_file.path)}} {{lineschanged(True, False)}}
+
{{ viewfilelink(patch.delta.new_file.path) }} {{ lineschanged(True, False) }}
file added
{%-elif patch.delta.new_file.mode == 33188 and patch.delta.old_file.mode == 33188 -%} {% set patchtype = "changed"%}
- {{ viewfilelink(patch.delta.new_file.path)}} {{lineschanged(True, True)}} + {{ viewfilelink(patch.delta.new_file.path) }} {{ lineschanged(True, True) }}
file changed
{%-endif-%} {%- else -%} {% set patchtype = "moved"%} - {{lineschanged(True, True)}} + {{ lineschanged(True, True) }}
{{patch.delta.old_file.path}}
- {{viewfilelink(patch.delta.new_file.path)}} + {{ viewfilelink(patch.delta.new_file.path) }}
file moved
{%- endif -%} diff --git a/pagure/ui/filters.py b/pagure/ui/filters.py index f692295..c391b45 100644 --- a/pagure/ui/filters.py +++ b/pagure/ui/filters.py @@ -15,13 +15,13 @@ import datetime import textwrap -import urlparse import arrow import flask -import md5 +import hashlib import six +from six.moves.urllib.parse import urlparse, parse_qsl from pygments import highlight from pygments.lexers.text import DiffLexer from pygments.formatters import HtmlFormatter @@ -83,8 +83,8 @@ def format_loc(loc, commit=None, filename=None, tree_id=None, prequest=None, comments = {} if prequest and not isinstance(prequest, flask.wrappers.Request): for com in prequest.comments: - if commit and unicode(com.commit_id) == unicode(commit) \ - and unicode(com.filename) == unicode(filename): + if commit and com.commit_id == commit \ + and com.filename == filename: if com.line in comments: comments[com.line].append(com) else: @@ -101,6 +101,8 @@ def format_loc(loc, commit=None, filename=None, tree_id=None, prequest=None, if line == '': break if filename and commit: + if isinstance(filename, str) and six.PY2: + filename = filename.decode('UTF-8') output.append( '' ' 1: + and len(repo_obj.listall_branches()) > 1: if not orig_repo.head_is_unborn: compare_branch = orig_repo.lookup_branch( @@ -493,7 +494,7 @@ def view_file(repo, identifier, filename, username=None, namespace=None): '.gif', '.png', '.bmp', '.tif', '.tiff', '.jpg', '.jpeg', '.ppm', '.pnm', '.pbm', '.pgm', '.webp', '.ico'): try: - Image.open(StringIO(content.data)) + Image.open(BytesIO(content.data)) output_type = 'image' except IOError as err: _log.debug( @@ -640,6 +641,8 @@ def view_raw_file( # First commit in the repo diff = commit.tree.diff_to_tree(swap=True) data = diff.patch + if six.PY3: + data = data.encode('utf-8').decode('utf-8') if not data: flask.abort(404, 'No content found') @@ -649,10 +652,15 @@ def view_raw_file( headers = {} if not mimetype: - if '\0' in data: + try: + if not isinstance(data, six.string_types): + data = data.decode('utf-8') + if '\0' in data: + mimetype = 'application/octet-stream' + else: + mimetype = 'text/plain' + except UnicodeDecodeError: mimetype = 'application/octet-stream' - else: - mimetype = 'text/plain' elif 'html' in mimetype: mimetype = 'application/octet-stream' headers['Content-Disposition'] = 'attachment' @@ -2239,7 +2247,9 @@ def edit_file(repo, branchname, filename, username=None, namespace=None): data = repo_obj[content.oid].data.decode('utf-8') else: - data = form.content.data.decode('utf-8') + data = form.content.data + if not isinstance(data, six.string_types): + data = data.decode('utf-8') return flask.render_template( 'edit_file.html', From 6b70af42721c0e47472885de6f351be3ac6b3373 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Oct 24 2017 08:53:55 +0000 Subject: [PATCH 4/5] Port the unit-tests to python3 Signed-off-by: Pierre-Yves Chibon --- diff --git a/tests/__init__.py b/tests/__init__.py index 9142cd5..9db27b0 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -22,9 +22,6 @@ import re import os logging.basicConfig(stream=sys.stderr) -# Always enable performance counting for tests -os.environ['PAGURE_PERFREPO'] = 'true' - from contextlib import contextmanager from datetime import date from datetime import datetime @@ -33,11 +30,16 @@ from functools import wraps import mock import pygit2 +import six 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__)), '..')) @@ -101,7 +103,7 @@ def create_maybe_waiter(method, getter): """ A wrapper for self.app.get()/.post() that will resolve wait's """ result = method(*args, **kwargs) 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.data.decode('utf-8'): # Resolve wait page target_url = get_wait_target(result.data) if count > 10: @@ -273,7 +275,7 @@ class SimplePagureTest(unittest.TestCase): output = self.app.get(url) self.assertEqual(output.status_code, 200) - return output.data.split( + return output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] class Modeltests(SimplePagureTest): @@ -300,14 +302,18 @@ class Modeltests(SimplePagureTest): celery_broker_url = 'redis+socket://' + broker_url pagure.APP.config['BROKER_URL'] = celery_broker_url - reload(pagure.lib.tasks) + if six.PY3: + import importlib + importlib.reload(pagure.lib.tasks) + else: + reload(pagure.lib.tasks) # Start a worker # Using cocurrency 2 to test with some concurrency, but not be heavy # Using eventlet so that worker.terminate kills everything self.workerlog = open(os.path.join(self.path, 'worker.log'), 'w') self.worker = subprocess.Popen( - ['/usr/bin/celery', '-A', 'pagure.lib.tasks', 'worker', + ['/usr/bin/celery-3', '-A', 'pagure.lib.tasks', 'worker', '--loglevel=info', '--concurrency=2', '--pool=eventlet', '--without-gossip', '--without-mingle', '--quiet'], env={'PAGURE_BROKER_URL': celery_broker_url, @@ -363,7 +369,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 [] 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_admin.py b/tests/test_pagure_admin.py index e8940a8..40678b6 100644 --- a/tests/test_pagure_admin.py +++ b/tests/test_pagure_admin.py @@ -63,8 +63,8 @@ class PagureAdminHelptests(tests.Modeltests): cmd = ['python', PAGURE_ADMIN] output = _get_ouput(cmd) - self.assertEqual(output[0], '') - self.assertEqual(output[1], '''usage: admin.py [-h] [--debug] + self.assertEqual(output[0].decode('utf-8'), '') + self.assertEqual(output[1].decode('utf-8'), '''usage: admin.py [-h] [--debug] {refresh-gitolite,refresh-ssh,clear-hook-token,admin-token,get-watch,update-watch,read-only} ... admin.py: error: too few arguments @@ -74,7 +74,7 @@ admin.py: error: too few arguments """ Test the parse_arguments function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py [-h] [--debug] {refresh-gitolite,refresh-ssh,clear-hook-token,admin-token,get-watch,update-watch,read-only} ... @@ -102,7 +102,7 @@ actions: """ Test the parser_refresh_gitolite function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'refresh-gitolite', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py refresh-gitolite [-h] [--user USER] [--project PROJECT] [--group GROUP] [--all] @@ -119,7 +119,7 @@ optional arguments: """ Test the parser_refresh_ssh function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'refresh-ssh', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py refresh-ssh [-h] optional arguments: @@ -130,7 +130,7 @@ optional arguments: """ Test the parser_clear_hook_token function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'clear-hook-token', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py clear-hook-token [-h] optional arguments: @@ -141,7 +141,7 @@ optional arguments: """ Test the parser_admin_token function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'admin-token', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py admin-token [-h] {list,info,expire,create,update} ... optional arguments: @@ -160,7 +160,7 @@ actions: """ Test the parser_admin_token_create function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'admin-token', 'create', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py admin-token create [-h] user positional arguments: @@ -189,7 +189,7 @@ optional arguments: """ Test the _parser_admin_token_list function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py admin-token list [-h] [--user USER] [--token TOKEN] [--active] [--expired] @@ -205,7 +205,7 @@ optional arguments: """ Test the _parser_admin_token_info function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'admin-token', 'info', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py admin-token info [-h] token positional arguments: @@ -219,7 +219,7 @@ optional arguments: """ Test the _parser_admin_token_expire function of pagure-admin. """ cmd = ['python', PAGURE_ADMIN, 'admin-token', 'expire', '--help'] self.assertEqual( - _get_ouput(cmd)[0], + _get_ouput(cmd)[0].decode('utf-8'), '''usage: admin.py admin-token expire [-h] token positional arguments: @@ -236,7 +236,7 @@ optional arguments: cmd = ['python', PAGURE_ADMIN, 'admin-token', 'foo', '--help'] self.assertEqual( - _get_ouput(cmd)[1], + _get_ouput(cmd)[1].decode('utf-8'), '''usage: admin.py admin-token [-h] {list,info,expire,create,update} ... admin.py admin-token: error: invalid choice: 'foo' (choose from 'list', 'info', 'expire', 'create', 'update') ''') # noqa @@ -323,14 +323,18 @@ class PagureAdminAdminTokenEmptytests(tests.Modeltests): user. """ cmd = ['python', PAGURE_ADMIN, 'admin-token', 'create', 'pingou'] - self.assertEqual(_get_ouput(cmd)[0], 'No user "pingou" found\n') + self.assertEqual( + _get_ouput(cmd)[0].decode('utf-8'), + 'No user "pingou" found\n') def test_do_list_admin_token_empty(self): """ Test the do_list_admin_token function of pagure-admin when there are not tokens in the db. """ cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list'] - self.assertEqual(_get_ouput(cmd)[0], 'No admin tokens found\n') + self.assertEqual( + _get_ouput(cmd)[0].decode('utf-8'), + 'No admin tokens found\n') class PagureAdminAdminRefreshGitolitetests(tests.Modeltests): @@ -537,7 +541,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): # Check the outcome cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list'] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertNotEqual(output, 'No user "pingou" found\n') self.assertEqual(len(output.split('\n')), 2) self.assertIn(' -- pingou -- ', output) @@ -555,7 +559,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): # Retrieve all tokens cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list'] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertNotEqual(output, 'No user "pingou" found\n') self.assertEqual(len(output.split('\n')), 2) self.assertIn(' -- pingou -- ', output) @@ -564,7 +568,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): cmd = [ 'python', PAGURE_ADMIN, 'admin-token', 'list', '--user', 'pfrields'] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertEqual(output, 'No admin tokens found\n') @patch('pagure.cli.admin._get_input') @@ -580,7 +584,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): # Retrieve the token cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list'] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertNotEqual(output, 'No user "pingou" found\n') self.assertEqual(len(output.split('\n')), 2) self.assertIn(' -- pingou -- ', output) @@ -588,7 +592,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): token = output.split(' ', 1)[0] cmd = ['python', PAGURE_ADMIN, 'admin-token', 'info', token] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertIn(' -- pingou -- ', output.split('\n', 1)[0]) self.assertEqual( output.split('\n', 1)[1], '''ACLs: @@ -613,7 +617,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): # Retrieve the token cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list'] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertNotEqual(output, 'No user "pingou" found\n') self.assertEqual(len(output.split('\n')), 2) self.assertIn(' -- pingou -- ', output) @@ -622,7 +626,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): # Before cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list', '--active'] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertNotEqual(output, 'No admin tokens found\n') self.assertEqual(len(output.split('\n')), 2) self.assertIn(' -- pingou -- ', output) @@ -633,7 +637,7 @@ class PagureAdminAdminTokentests(tests.Modeltests): # After cmd = ['python', PAGURE_ADMIN, 'admin-token', 'list', '--active'] - output = _get_ouput(cmd)[0] + output = _get_ouput(cmd)[0].decode('utf-8') self.assertEqual(output, 'No admin tokens found\n') @patch('pagure.cli.admin._get_input') diff --git a/tests/test_pagure_flask_api.py b/tests/test_pagure_flask_api.py index 7891a4e..dc80a5a 100644 --- a/tests/test_pagure_flask_api.py +++ b/tests/test_pagure_flask_api.py @@ -36,15 +36,16 @@ class PagureFlaskApitests(tests.SimplePagureTest): pagure.APP.config['TESTING'] = True pagure.SESSION = self.session pagure.api.SESSION = self.session + pagure.api.group.SESSION = self.session def test_api_version(self): """ Test the api_version function. """ output = self.app.get('/api/0/version') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) 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. """ @@ -52,14 +53,14 @@ class PagureFlaskApitests(tests.SimplePagureTest): output = self.app.get('/api/0/foo/tags/') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) - self.assertEqual(data.keys(), ['output', 'error']) + data = json.loads(output.data.decode('utf-8')) + self.assertEqual(sorted(data.keys()), ['error', 'output']) 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.data.decode('utf-8')) self.assertEqual(sorted(data.keys()), ['tags', 'total_tags']) self.assertEqual(data['tags'], []) self.assertEqual(data['total_tags'], 0) @@ -89,25 +90,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.data.decode('utf-8')) 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.data.decode('utf-8')) 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.data.decode('utf-8')) 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.data.decode('utf-8')) + 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.data.decode('utf-8')) + 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 567959f..ed1f374 100644 --- a/tests/test_pagure_flask_api_auth.py +++ b/tests/test_pagure_flask_api_auth.py @@ -46,7 +46,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -55,7 +55,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -68,7 +68,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -77,7 +77,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -90,7 +90,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -99,7 +99,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -113,7 +113,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -122,7 +122,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.data.decode('utf-8')) self.assertDictEqual( data, { diff --git a/tests/test_pagure_flask_api_fork.py b/tests/test_pagure_flask_api_fork.py index 5cf42ca..3cb1a3a 100644 --- a/tests/test_pagure_flask_api_fork.py +++ b/tests/test_pagure_flask_api_fork.py @@ -73,7 +73,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -85,7 +85,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.data.decode('utf-8')) data['requests'][0]['date_created'] = '1431414800' data['requests'][0]['updated_on'] = '1431414800' data['requests'][0]['project']['date_created'] = '1431414800' @@ -203,7 +203,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.data.decode('utf-8')) data2['requests'][0]['date_created'] = '1431414800' data2['requests'][0]['updated_on'] = '1431414800' data2['requests'][0]['project']['date_created'] = '1431414800' @@ -242,7 +242,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -254,7 +254,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -266,7 +266,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.data.decode('utf-8')) data['date_created'] = '1431414800' data['updated_on'] = '1431414800' data['project']['date_created'] = '1431414800' @@ -374,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.data.decode('utf-8')) data2['date_created'] = '1431414800' data2['project']['date_created'] = '1431414800' data2['project']['date_modified'] = '1431414800' @@ -418,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -431,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -440,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.data.decode('utf-8')) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -475,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -491,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.data.decode('utf-8')) self.assertDictEqual( data, {"message": "Pull-request closed!"} @@ -535,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -548,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -557,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.data.decode('utf-8')) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -592,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -608,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.data.decode('utf-8')) self.assertDictEqual( data, {"message": "Changes merged!"} @@ -652,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -665,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.data.decode('utf-8')) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -675,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.data.decode('utf-8')) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -711,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -727,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.data.decode('utf-8')) self.assertDictEqual( data, {"message": "Changes merged!"} @@ -748,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -761,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -770,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -809,7 +809,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -832,7 +832,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -858,7 +858,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -871,7 +871,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -884,7 +884,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -923,7 +923,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -946,7 +946,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -972,7 +972,7 @@ class PagureFlaskApiForktests(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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -985,7 +985,7 @@ class PagureFlaskApiForktests(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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -994,7 +994,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1036,7 +1036,7 @@ class PagureFlaskApiForktests(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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1063,7 +1063,7 @@ class PagureFlaskApiForktests(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 = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Flag added'} @@ -1088,7 +1088,7 @@ class PagureFlaskApiForktests(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 = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Flag updated'} @@ -1116,7 +1116,7 @@ class PagureFlaskApiForktests(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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1129,7 +1129,7 @@ class PagureFlaskApiForktests(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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1142,7 +1142,7 @@ class PagureFlaskApiForktests(tests.Modeltests): output = self.app.post( '/api/0/test/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1184,7 +1184,7 @@ class PagureFlaskApiForktests(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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1211,7 +1211,7 @@ class PagureFlaskApiForktests(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 = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Flag added'} @@ -1236,7 +1236,7 @@ class PagureFlaskApiForktests(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 = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Flag updated'} diff --git a/tests/test_pagure_flask_api_group.py b/tests/test_pagure_flask_api_group.py index 3e267fa..ffe9886 100644 --- a/tests/test_pagure_flask_api_group.py +++ b/tests/test_pagure_flask_api_group.py @@ -74,14 +74,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.data.decode('utf-8')) 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.data.decode('utf-8')) self.assertEqual(data['groups'], ['rel-eng']) self.assertEqual(sorted(data.keys()), ['groups', 'total_groups']) self.assertEqual(data['total_groups'], 1) @@ -109,7 +109,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.data.decode('utf-8')) self.assertEqual( data, { @@ -158,7 +158,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "group_type": "user", "name": "some_group" } - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) @@ -181,7 +181,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "group_type": "user", "name": "some_group" } - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1492020239' self.assertDictEqual(data, exp) @@ -227,7 +227,7 @@ class PagureFlaskApiGroupTests(tests.SimplePagureTest): "name": "some_group" } self.maxDiff = None - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1492020239' from pprint import pprint pprint(data) @@ -240,7 +240,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.data.decode('utf-8')) self.assertEqual(data['error'], 'Group not found') self.assertEqual(data['error_code'], 'ENOGROUP') diff --git a/tests/test_pagure_flask_api_issue.py b/tests/test_pagure_flask_api_issue.py index 2538bee..c2bf8de 100644 --- a/tests/test_pagure_flask_api_issue.py +++ b/tests/test_pagure_flask_api_issue.py @@ -314,7 +314,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -322,7 +322,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -343,7 +343,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -356,7 +356,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -378,7 +378,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -398,7 +398,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' @@ -420,7 +420,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -441,7 +441,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -462,7 +462,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -483,7 +483,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -503,7 +503,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -523,7 +523,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' exp = FULL_ISSUE_LIST[1] @@ -549,7 +549,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -565,7 +565,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -586,7 +586,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -599,7 +599,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -621,7 +621,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -641,7 +641,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' @@ -663,7 +663,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -684,7 +684,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -705,7 +705,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -726,7 +726,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -746,7 +746,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -766,7 +766,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -786,7 +786,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' exp = FULL_ISSUE_LIST[1] @@ -806,7 +806,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -818,7 +818,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -860,7 +860,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -903,7 +903,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -931,7 +931,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -975,7 +975,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1003,7 +1003,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1029,7 +1029,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) data['issues'][0]['date_created'] = '1431414800' data['issues'][0]['last_updated'] = '1431414800' self.assertDictEqual( @@ -1054,7 +1054,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1077,7 +1077,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['last_updated'] = '1431414800' data['issues'][idx]['date_created'] = '1431414800' @@ -1175,7 +1175,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1203,7 +1203,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1273,7 +1273,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1301,7 +1301,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1326,7 +1326,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1362,7 +1362,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1413,7 +1413,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1441,7 +1441,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1467,7 +1467,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1550,7 +1550,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1562,7 +1562,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1591,7 +1591,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1617,7 +1617,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1643,7 +1643,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['date_created'] = '1431414800' data['issues'][idx]['last_updated'] = '1431414800' @@ -1672,7 +1672,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) for idx in range(len(data['issues'])): data['issues'][idx]['last_updated'] = '1431414800' data['issues'][idx]['date_created'] = '1431414800' @@ -1721,7 +1721,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1733,7 +1733,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1745,7 +1745,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -1793,7 +1793,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1807,7 +1807,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -1827,7 +1827,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1841,7 +1841,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -1874,7 +1874,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -1922,7 +1922,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1934,7 +1934,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -1942,7 +1942,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1978,7 +1978,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'No changes'} @@ -1997,7 +1997,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2019,7 +2019,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2038,7 +2038,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2061,7 +2061,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2078,7 +2078,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2099,7 +2099,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2142,7 +2142,7 @@ class PagureFlaskApiIssuetests(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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -2164,7 +2164,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." @@ -2190,7 +2190,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # Issue and comment exists, using UID output = self.app.get('/api/0/test/issue/aaabbbccc#1/comment/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." @@ -2260,7 +2260,7 @@ class PagureFlaskApiIssuetests(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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -2284,7 +2284,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." @@ -2323,7 +2323,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2335,7 +2335,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2343,7 +2343,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): # 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2385,7 +2385,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2395,7 +2395,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Assignee reset'} @@ -2410,7 +2410,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Nothing to change'} @@ -2424,7 +2424,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2435,7 +2435,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Assignee reset'} @@ -2446,7 +2446,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2516,7 +2516,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2546,7 +2546,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Issue assigned to pingou'} @@ -2583,7 +2583,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2596,7 +2596,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2605,7 +2605,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2642,7 +2642,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'You are no longer watching this issue'} @@ -2652,7 +2652,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'You are no longer watching this issue'} @@ -2670,7 +2670,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'You are now watching this issue'} @@ -2681,7 +2681,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'You are now watching this issue'} @@ -2698,7 +2698,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'You are no longer watching this issue'} @@ -2723,7 +2723,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2736,7 +2736,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2745,7 +2745,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2772,7 +2772,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2792,7 +2792,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2814,7 +2814,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2853,7 +2853,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2871,7 +2871,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): '/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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2891,7 +2891,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): '/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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2913,7 +2913,7 @@ class PagureFlaskApiIssuetests(tests.Modeltests): '/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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2959,4 +2959,6 @@ class PagureFlaskApiIssuetests(tests.Modeltests): 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 6db1112..b0432b9 100644 --- a/tests/test_pagure_flask_api_issue_change_status.py +++ b/tests/test_pagure_flask_api_issue_change_status.py @@ -114,7 +114,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -131,7 +131,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -144,7 +144,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -171,7 +171,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -199,7 +199,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'No changes'} @@ -224,7 +224,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.data.decode('utf-8')) self.assertDictEqual( data, @@ -240,7 +240,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -259,7 +259,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.data.decode('utf-8')) self.assertDictEqual( data, @@ -283,7 +283,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.data.decode('utf-8')) self.assertDictEqual( data, diff --git a/tests/test_pagure_flask_api_issue_comment.py b/tests/test_pagure_flask_api_issue_comment.py index afd07ae..0df6d4b 100644 --- a/tests/test_pagure_flask_api_issue_comment.py +++ b/tests/test_pagure_flask_api_issue_comment.py @@ -95,7 +95,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -112,7 +112,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -124,7 +124,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -150,7 +150,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -178,7 +178,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -206,7 +206,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -240,7 +240,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -254,7 +254,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -271,7 +271,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -287,7 +287,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -313,7 +313,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -342,7 +342,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -370,7 +370,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -404,7 +404,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} diff --git a/tests/test_pagure_flask_api_project.py b/tests/test_pagure_flask_api_project.py index 5477522..7c90a00 100644 --- a/tests/test_pagure_flask_api_project.py +++ b/tests/test_pagure_flask_api_project.py @@ -91,7 +91,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.data.decode('utf-8')) self.assertDictEqual( data, {'tags': ['0.0.1'], 'total_tags': 1} @@ -121,7 +121,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Verify the API data self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -142,7 +142,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -172,7 +172,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): }, 'total_urls': 2 } - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(data, expected_rv) def test_api_git_urls_no_project(self): @@ -185,7 +185,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Project not found', 'error_code': 'ENOPROJECT' } - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(data, expected_rv) @patch.dict('pagure.APP.config', {'PRIVATE_PROJECTS': True}) @@ -212,7 +212,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): }, 'total_urls': 2 } - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(data, expected_rv) @patch.dict('pagure.APP.config', {'PRIVATE_PROJECTS': True}) @@ -232,7 +232,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Project not found', 'error_code': 'ENOPROJECT' } - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(data, expected_rv) def test_api_projects_pattern(self): @@ -241,7 +241,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.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -304,7 +304,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.data.decode('utf-8')) expected_data = { "args": { "fork": None, @@ -361,14 +361,14 @@ class PagureFlaskApiProjecttests(tests.Modeltests): # Check the API output = self.app.get('/api/0/projects?tags=inf') self.assertEqual(output.status_code, 404) - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'error_code': 'ENOPROJECTS', 'error': 'No projects found'} ) output = self.app.get('/api/0/projects?tags=infra') self.assertEqual(output.status_code, 200) - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -421,7 +421,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.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" data['projects'][1]['date_created'] = "1436527638" @@ -554,7 +554,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.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" data['projects'][1]['date_created'] = "1436527638" @@ -684,7 +684,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.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -737,7 +737,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.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" expected_data = { @@ -814,7 +814,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.data.decode('utf-8')) self.assertDictEqual( data, {'error_code': 'ENOPROJECT', 'error': 'Project not found'} @@ -823,7 +823,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.data.decode('utf-8')) data['date_created'] = "1436527638" data['date_modified'] = "1436527638" expected_data ={ @@ -1506,7 +1506,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.data.decode('utf-8')) data['date_created'] = '1496338274' data['date_modified'] = '1496338274' expected_output = { @@ -1646,7 +1646,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'project'), 'error_code': 'ENOTMAINADMIN' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.data.decode('utf-8')), expected_error) def test_api_modify_project_not_admin(self): """ Test the api_modify_project method of the flask api when the @@ -1668,7 +1669,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.data.decode('utf-8')), expected_error) def test_api_modify_project_invalid_request(self): """ Test the api_modify_project method of the flask api when the @@ -1690,7 +1692,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Invalid or incomplete input submited', 'error_code': 'EINVALIDREQ' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.data.decode('utf-8')), expected_error) def test_api_modify_project_invalid_keys(self): """ Test the api_modify_project method of the flask api when the @@ -1712,7 +1715,8 @@ class PagureFlaskApiProjecttests(tests.Modeltests): 'error': 'Invalid or incomplete input submited', 'error_code': 'EINVALIDREQ' } - self.assertEqual(json.loads(output.data), expected_error) + self.assertEqual( + json.loads(output.data.decode('utf-8')), expected_error) def test_api_modify_project_invalid_new_main_admin(self): """ Test the api_modify_project method of the flask api when the @@ -1735,7 +1739,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.data.decode('utf-8')), expected_error) def test_api_project_watchers(self): """ Test the api_project_watchers method of the flask api. """ @@ -1751,14 +1756,14 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) user = tests.FakeUser(username='pingou') with tests.user_set(pagure.APP, 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.data.decode('utf-8')) self.assertDictEqual( data, {'error_code': 'ENOPROJECT', 'error': 'Project not found'} @@ -1775,7 +1780,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) project = pagure.get_authorized_project(self.session, 'test') @@ -1793,7 +1798,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) # The owner is watching issues explicitly pagure.lib.update_watch_status( @@ -1808,7 +1813,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) # The owner is watching commits explicitly pagure.lib.update_watch_status( @@ -1823,7 +1828,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): ] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) # The owner is watching commits explicitly and foo is watching # issues implicitly @@ -1846,7 +1851,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["commits"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) # The owner and foo are watching issues implicitly pagure.lib.update_watch_status( @@ -1861,7 +1866,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["issues"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) # The owner and foo through group membership are watching issues # implicitly @@ -1911,7 +1916,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["issues"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) # The owner is watching issues implicitly and foo will be watching # commits explicitly but is in a group with commit access @@ -1931,7 +1936,7 @@ class PagureFlaskApiProjecttests(tests.Modeltests): "pingou": ["issues"] } } - self.assertDictEqual(json.loads(output.data), expected_data) + self.assertDictEqual(json.loads(output.data.decode('utf-8')), expected_data) @patch('pagure.lib.git.generate_gitolite_acls') def test_api_new_project(self, p_gga): @@ -1948,7 +1953,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -1958,7 +1963,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1979,7 +1984,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1998,7 +2003,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2017,7 +2022,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Project "test_42" created'} @@ -2047,7 +2052,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Project "pingou/test" created'} @@ -2068,7 +2073,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2078,7 +2083,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2099,7 +2104,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2118,7 +2123,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2137,7 +2142,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Project "test_42" created'} @@ -2155,7 +2160,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2179,7 +2184,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Project "rpms/test_42" created'} @@ -2208,7 +2213,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Project "pingou/testproject" created'} @@ -2226,7 +2231,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Project "testns/testproject2" created'} @@ -2251,7 +2256,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2261,7 +2266,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2279,7 +2284,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2297,7 +2302,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2313,7 +2318,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2331,7 +2336,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2349,7 +2354,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2375,7 +2380,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.data.decode('utf-8')) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.name, data['error_code']) self.assertEqual(pagure.api.APIERROR.EINVALIDTOK.value, data['error']) @@ -2385,7 +2390,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2403,7 +2408,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2421,7 +2426,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2437,7 +2442,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2455,7 +2460,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.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2473,7 +2478,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.data.decode('utf-8')) self.assertDictEqual( data, { diff --git a/tests/test_pagure_flask_api_ui_private_repo.py b/tests/test_pagure_flask_api_ui_private_repo.py index 6d32267..9401763 100644 --- a/tests/test_pagure_flask_api_ui_private_repo.py +++ b/tests/test_pagure_flask_api_ui_private_repo.py @@ -12,7 +12,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__)), '..')) @@ -390,7 +390,7 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

All Projects ' - '0

', output.get_data(as_text=True)) + '0', output.data.decode('utf-8')) # Add a private project item = pagure.lib.model.Project( @@ -418,21 +418,21 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

All Projects ' - '1

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

No group found

'), 1) + output.data.decode('utf-8').count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 6) + output.data.decode('utf-8').count('
'), 6) def test_view_user(self): """ Test the view_user endpoint. """ @@ -441,10 +441,10 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Projects 0', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output.data.decode('utf-8')) # Add a private project item = pagure.lib.model.Project( @@ -475,37 +475,37 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Projects 1', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertIn( - 'Forks 0', output.get_data(as_text=True)) + 'Forks 0', output.data.decode('utf-8')) user = tests.FakeUser(username='foo') with tests.user_set(pagure.APP, user): output = self.app.get('/user/foo') self.assertIn( 'Projects 2', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output.data.decode('utf-8').count('

No group found

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

No group found

'), 1) + output.data.decode('utf-8').count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 5) + output.data.decode('utf-8').count('
'), 5) # Check pingou has 0 projects user.username = 'pingou' @@ -513,14 +513,14 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get('/') self.assertIn( 'My Projects 0', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output.data.decode('utf-8').count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 6) + output.data.decode('utf-8').count('
'), 6) repo = pagure.lib._get_project(self.session, 'test3') @@ -538,14 +538,14 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get('/') self.assertIn( 'My Projects 1', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertEqual( - output.get_data(as_text=True).count('

No group found

'), 1) + output.data.decode('utf-8').count('

No group found

'), 1) self.assertEqual( - output.get_data(as_text=True).count('
'), 6) + output.data.decode('utf-8').count('
'), 6) @patch('pagure.ui.repo.admin_session_timedout') def test_private_settings_ui(self, ast): @@ -581,7 +581,7 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertNotIn( '', - output.get_data(as_text=True)) + output.data.decode('utf-8')) # Check the new project form has 'private' checkbox output = self.app.get('/new') self.assertEqual(output.status_code, 200) self.assertIn( '', - output.get_data(as_text=True)) + output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') def test_private_settings_ui_update_privacy_false(self, ast): @@ -627,7 +627,7 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '', - output.get_data(as_text=True)) + output.data.decode('utf-8')) repo = pagure.lib._get_project(self.session, 'test4') self.assertTrue(repo.private) @@ -644,10 +644,10 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertIn( '\n'\ ' Project updated', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertNotIn( '', - output.get_data(as_text=True)) + output.data.decode('utf-8')) repo = pagure.lib._get_project(self.session, 'test4') self.assertFalse(repo.private) @@ -681,7 +681,7 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertNotIn( '', - output.get_data(as_text=True)) + output.data.decode('utf-8')) repo = pagure.lib._get_project(self.session, 'test4') self.assertFalse(repo.private) @@ -698,10 +698,10 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertIn( '\n'\ ' Project updated', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.assertNotIn( '', - output.get_data(as_text=True)) + output.data.decode('utf-8')) # No change since we can't do public -> private repo = pagure.lib._get_project(self.session, 'test4') @@ -752,10 +752,10 @@ class PagurePrivateRepotest(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
\n Projects 1', output.get_data(as_text=True)) + 'class="label label-default">1', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.get_data(as_text=True)) + output.data.decode('utf-8')) self.set_up_git_repo(new_project=None, branch_from='feature') project = pagure.lib._get_project(self.session, 'pmc') @@ -848,9 +848,9 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get('/test4/issues') self.assertEqual(output.status_code, 200) self.assertIn( - 'Issues - test4 - Pagure', output.get_data(as_text=True)) + 'Issues - test4 - Pagure', output.data.decode('utf-8')) self.assertTrue( - '

\n 1 Open Issues' in output.get_data(as_text=True)) + '

\n 1 Open Issues' in output.data.decode('utf-8')) # Check single issue output = self.app.get('/test4/issue/1') @@ -874,9 +874,9 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get('/test4/issues') self.assertEqual(output.status_code, 200) self.assertIn( - 'Issues - test4 - Pagure', output.get_data(as_text=True)) + 'Issues - test4 - Pagure', output.data.decode('utf-8')) self.assertTrue( - '

\n 1 Open Issues' in output.get_data(as_text=True)) + '

\n 1 Open Issues' in output.data.decode('utf-8')) # Check single issue output = self.app.get('/test4/issue/1') @@ -960,7 +960,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Check tags output = self.app.get('/api/0/test4/git/tags') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'tags': ['0.0.1'], 'total_tags': 1} @@ -995,7 +995,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Check the API output = self.app.get('/api/0/projects?tags=inf') self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'error_code': 'ENOPROJECTS', 'error': 'No projects found'} @@ -1019,7 +1019,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get('/api/0/projects?username=pingou') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" self.assertDictEqual( @@ -1076,7 +1076,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get('/api/0/projects?username=pingou&tags=infra') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['projects'][0]['date_created'] = "1436527638" data['projects'][0]['date_modified'] = "1436527638" self.assertDictEqual( @@ -1183,7 +1183,7 @@ class PagurePrivateRepotest(tests.Modeltests): # List pull-requests output = self.app.get('/api/0/test4/pull-requests') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['requests'][0]['date_created'] = '1431414800' data['requests'][0]['updated_on'] = '1431414800' data['requests'][0]['project']['date_created'] = '1431414800' @@ -1300,7 +1300,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get( '/api/0/test4/pull-requests', headers=headers) self.assertEqual(output.status_code, 200) - data2 = json.loads(output.get_data(as_text=True)) + data2 = json.loads(output.data.decode('utf-8')) data2['requests'][0]['date_created'] = '1431414800' data2['requests'][0]['updated_on'] = '1431414800' data2['requests'][0]['project']['date_created'] = '1431414800' @@ -1314,7 +1314,7 @@ class PagurePrivateRepotest(tests.Modeltests): # For single PR output = self.app.get('/api/0/test4/pull-request/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1431414800' data['updated_on'] = '1431414800' data['project']['date_created'] = '1431414800' @@ -1421,7 +1421,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get( '/api/0/test4/pull-request/1', headers=headers) self.assertEqual(output.status_code, 200) - data2 = json.loads(output.get_data(as_text=True)) + data2 = json.loads(output.data.decode('utf-8')) data2['date_created'] = '1431414800' data2['project']['date_created'] = '1431414800' data2['project']['date_modified'] = '1431414800' @@ -1483,7 +1483,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1506,7 +1506,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -1554,7 +1554,7 @@ class PagurePrivateRepotest(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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1567,7 +1567,7 @@ class PagurePrivateRepotest(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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1581,7 +1581,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/flag', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1623,7 +1623,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/flag', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1650,7 +1650,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/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 = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Flag added'} @@ -1675,7 +1675,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/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 = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Flag updated'} @@ -1743,7 +1743,7 @@ class PagurePrivateRepotest(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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1756,7 +1756,7 @@ class PagurePrivateRepotest(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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1770,7 +1770,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/2/close', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -1805,7 +1805,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/close', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1820,7 +1820,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/close', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {"message": "Pull-request closed!"} @@ -1890,7 +1890,7 @@ class PagurePrivateRepotest(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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1903,7 +1903,7 @@ class PagurePrivateRepotest(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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1917,7 +1917,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/2/merge', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'error': 'Pull-Request not found', 'error_code': "ENOREQ"} @@ -1953,7 +1953,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -1968,7 +1968,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/pull-request/1/merge', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {"message": "Changes merged!"} @@ -2014,7 +2014,7 @@ class PagurePrivateRepotest(tests.Modeltests): # 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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2027,7 +2027,7 @@ class PagurePrivateRepotest(tests.Modeltests): # No input output = self.app.post('/api/0/test4/new_issue', headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2047,7 +2047,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/foo/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2060,7 +2060,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2083,7 +2083,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/new_issue', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['issue']['date_created'] = '1431414800' data['issue']['last_updated'] = '1431414800' self.assertDictEqual( @@ -2101,7 +2101,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Invalid repo output = self.app.get('/api/0/foo/issues') self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2115,7 +2115,7 @@ class PagurePrivateRepotest(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/api/0/test4/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['issues'][0]['date_created'] = '1431414800' data['issues'][0]['last_updated'] = '1431414800' self.assertDictEqual( @@ -2182,7 +2182,7 @@ class PagurePrivateRepotest(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/api/0/test4/issues') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['issues'][0]['date_created'] = '1431414800' data['issues'][0]['last_updated'] = '1431414800' data['issues'][1]['date_created'] = '1431414800' @@ -2264,7 +2264,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Access issues authenticated correctly output = self.app.get('/api/0/test4/issues', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['issues'][0]['date_created'] = '1431414800' data['issues'][0]['last_updated'] = '1431414800' data['issues'][1]['date_created'] = '1431414800' @@ -2340,7 +2340,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get( '/api/0/test4/issues?status=Closed', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2364,7 +2364,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get( '/api/0/test4/issues?status=Invalid', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2388,7 +2388,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.get( '/api/0/test4/issues?status=All', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['issues'][0]['date_created'] = '1431414800' data['issues'][0]['last_updated'] = '1431414800' data['issues'][1]['date_created'] = '1431414800' @@ -2467,7 +2467,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Invalid repo output = self.app.get('/api/0/foo/issue/1') self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2479,7 +2479,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Invalid issue for this repo output = self.app.get('/api/0/test4/issue/1') self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2493,7 +2493,7 @@ class PagurePrivateRepotest(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/api/0/test4/issue/1') self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2507,7 +2507,7 @@ class PagurePrivateRepotest(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/api/0/test4/issue/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -2543,7 +2543,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Access issue authenticated but non-existing token output = self.app.get('/api/0/test4/issue/1', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2557,7 +2557,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Access issue authenticated correctly output = self.app.get('/api/0/test4/issue/1', headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1431414800' data['last_updated'] = '1431414800' self.assertDictEqual( @@ -2588,6 +2588,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( @@ -2617,7 +2618,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Invalid project output = self.app.post('/api/0/foo/issue/1/status', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2632,7 +2633,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test2/issue/1/status', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2644,7 +2645,7 @@ class PagurePrivateRepotest(tests.Modeltests): # No input output = self.app.post('/api/0/test4/issue/1/status', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2682,7 +2683,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2705,7 +2706,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'No changes'} @@ -2724,7 +2725,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/issue/1/status', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message':[ @@ -2757,7 +2758,7 @@ class PagurePrivateRepotest(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.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2770,7 +2771,7 @@ class PagurePrivateRepotest(tests.Modeltests): headers = {'Authorization': 'token aaabbbccc'} output = self.app.post('/api/0/test4/issue/1/comment', headers=headers) self.assertEqual(output.status_code, 401) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2784,7 +2785,7 @@ class PagurePrivateRepotest(tests.Modeltests): # No input output = self.app.post('/api/0/test4/issue/1/comment', headers=headers) self.assertEqual(output.status_code, 404) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2821,7 +2822,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 400) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, { @@ -2844,7 +2845,7 @@ class PagurePrivateRepotest(tests.Modeltests): output = self.app.post( '/api/0/test4/issue/1/comment', data=data, headers=headers) self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -2880,7 +2881,7 @@ class PagurePrivateRepotest(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/api/0/test4/issue/1/comment/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." @@ -2906,7 +2907,7 @@ class PagurePrivateRepotest(tests.Modeltests): # Issue and comment exists, using UID output = self.app.get('/api/0/test4/issue/aaabbbccc#1/comment/1') self.assertEqual(output.status_code, 200) - data = json.loads(output.get_data(as_text=True)) + data = json.loads(output.data.decode('utf-8')) data['date_created'] = '1435821770' data["comment_date"] = "2015-07-02 09:22" data["avatar_url"] = "https://seccdn.libravatar.org/avatar/..." diff --git a/tests/test_pagure_flask_api_user.py b/tests/test_pagure_flask_api_user.py index a3c0f00..148051a 100644 --- a/tests/test_pagure_flask_api_user.py +++ b/tests/test_pagure_flask_api_user.py @@ -53,14 +53,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.data.decode('utf-8')) 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.data.decode('utf-8')) self.assertEqual(data['users'], ['pingou']) self.assertEqual(sorted(data.keys()), ['mention', 'total_users', 'users']) self.assertEqual(data['total_users'], 1) @@ -76,7 +76,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): "forks": [], "repos": [], "user": { "fullname": "PY C", "name": "pingou"}} - data = json.loads(output.data) + data = json.loads(output.data.decode('utf-8')) self.assertEqual(data, exp) def test_api_view_user_with_project(self): @@ -88,7 +88,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.data.decode('utf-8')) data['repos'][0]['date_created'] = "1490272832" data['repos'][0]['date_modified'] = "1490272832" data['repos'][1]['date_created'] = "1490272832" @@ -294,7 +294,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.data.decode('utf-8')) self.assertDictEqual( data, {'message': 'Comment added'} @@ -309,7 +309,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.data.decode('utf-8')) self.assertDictEqual( data, {"message": "Pull-request closed!"} @@ -323,7 +323,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.data.decode('utf-8')) date = datetime.datetime.utcnow().date().strftime('%Y-%m-%d') self.assertDictEqual(data, {date: 4}) @@ -345,7 +345,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): "activities": [], "date": "2016-01-01" } - self.assertEqual(json.loads(output.data), exp) + self.assertEqual(json.loads(output.data.decode('utf-8')), exp) # Date parsed, just not really as expected output = self.app.get('/api/0/user/pingou/activity/20161245') @@ -354,13 +354,13 @@ class PagureFlaskApiUSertests(tests.Modeltests): "activities": [], "date": "1970-08-22" } - self.assertEqual(json.loads(output.data), exp) + self.assertEqual(json.loads(output.data.decode('utf-8')), 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.data.decode('utf-8')) exp = { "activities": [ { @@ -422,6 +422,7 @@ class PagureFlaskApiUSertests(tests.Modeltests): act['date_created'] = '1477558752' data['activities'][idx] = act + #print(data) self.assertEqual(data, exp) @patch('pagure.lib.notify.send_email') @@ -451,7 +452,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.data.decode('utf-8')) exp = { "activities": [ { diff --git a/tests/test_pagure_flask_docs.py b/tests/test_pagure_flask_docs.py index b6608d0..012fcaa 100644 --- a/tests/test_pagure_flask_docs.py +++ b/tests/test_pagure_flask_docs.py @@ -124,12 +124,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.data.decode('utf-8')) 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.data.decode('utf-8')) def test_view_docs_project_no_docs(self): """ Test the view_docs endpoint with a project that disabled the @@ -167,7 +167,7 @@ class PagureFlaskDocstests(tests.SimplePagureTest): '

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

', output.data) + 'documentation

', output.data.decode('utf-8')) def test_view_docs(self): """ Test the view_docs endpoint. """ @@ -187,23 +187,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.data.decode('utf-8')) output = self.app.get('/test/folder1/folder2') self.assertEqual(output.status_code, 200) self.assertTrue( '
  • ' - in output.data) + in output.data.decode('utf-8')) 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.data.decode('utf-8')) output = self.app.get('/test/folder1') self.assertEqual(output.status_code, 200) self.assertTrue( '
  • ' - in output.data) + in output.data.decode('utf-8')) output = self.app.get('/test/folder1/foo') self.assertEqual(output.status_code, 404) @@ -227,13 +227,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.data.decode('utf-8')) output = self.app.get('/test/folder1') self.assertEqual(output.status_code, 200) self.assertTrue( '
  • ' - in output.data) + in output.data.decode('utf-8')) @mock.patch( 'pagure.lib.encoding_utils.decode', diff --git a/tests/test_pagure_flask_dump_load_ticket.py b/tests/test_pagure_flask_dump_load_ticket.py index cd9bd9e..64542d5 100644 --- a/tests/test_pagure_flask_dump_load_ticket.py +++ b/tests/test_pagure_flask_dump_load_ticket.py @@ -219,7 +219,7 @@ class PagureFlaskDumpLoadTicketTests(tests.Modeltests): # Check after re-loading self.assertEqual(len(issue.comments), 3) self.assertEqual(len(issue.tags), 2) - self.assertEqual(issue.tags_text, ['future', 'feature']) + self.assertEqual(sorted(issue.tags_text), ['feature', 'future']) self.assertEqual(issue.assignee.username, 'pingou') self.assertEqual(issue.children, []) self.assertEqual(issue.parents, []) diff --git a/tests/test_pagure_flask_form.py b/tests/test_pagure_flask_form.py index 0b4a6a5..dbebce4 100644 --- a/tests/test_pagure_flask_form.py +++ b/tests/test_pagure_flask_form.py @@ -64,7 +64,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 = ( @@ -78,7 +80,6 @@ class PagureFlaskFormTests(tests.SimplePagureTest): import itsdangerous timestamp = itsdangerous.base64_encode( itsdangerous.int_to_bytes(int(expires))) - print '*', data 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 fffb04e..6acfb95 100644 --- a/tests/test_pagure_flask_internal.py +++ b/tests/test_pagure_flask_internal.py @@ -117,7 +117,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.data.decode('utf-8')) self.assertDictEqual(js_data, {'message': 'Comment added'}) repo = pagure.get_authorized_project(self.session, 'test') @@ -196,7 +196,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.data.decode('utf-8')) self.assertDictEqual(js_data, {'message': 'Comment added'}) repo = pagure.get_authorized_project(self.session, 'test') @@ -285,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.data.decode('utf-8')) self.assertDictEqual(js_data, {'message': 'Comment added'}) repo = pagure.get_authorized_project(self.session, 'test') @@ -384,7 +384,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.data.decode('utf-8')) self.assertDictEqual(js_data, {'message': 'Comment added'}) repo = pagure.get_authorized_project(self.session, 'test') @@ -414,7 +414,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.data.decode('utf-8')) self.assertDictEqual(js_data, {'message': 'Comment added'}) repo = pagure.get_authorized_project(self.session, 'test') @@ -534,7 +534,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(pagure.APP, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -558,7 +558,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "Ok" } - js_data = json.loads(output.data) + js_data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(js_data, exp) @patch('pagure.lib.notify.send_email') @@ -656,7 +656,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(pagure.APP, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -680,7 +680,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "No changes" } - js_data = json.loads(output.data) + js_data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(js_data, exp) @patch('pagure.lib.notify.send_email') @@ -809,7 +809,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(pagure.APP, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -833,7 +833,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "With merge" } - js_data = json.loads(output.data) + js_data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(js_data, exp) @patch('pagure.lib.notify.send_email') @@ -961,7 +961,7 @@ class PagureFlaskInternaltests(tests.Modeltests): user.username = 'pingou' with tests.user_set(pagure.APP, user): output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing request identifier @@ -985,7 +985,7 @@ class PagureFlaskInternaltests(tests.Modeltests): "short_code": "Conflicts" } - js_data = json.loads(output.data) + js_data = json.loads(output.data.decode('utf-8')) self.assertDictEqual(js_data, exp) def test_get_branches_of_commit(self): @@ -998,8 +998,8 @@ class PagureFlaskInternaltests(tests.Modeltests): with tests.user_set(pagure.APP, 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.data.decode('utf-8').split( + 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # No CSRF token data = { diff --git a/tests/test_pagure_flask_ui_app.py b/tests/test_pagure_flask_ui_app.py index eb5729b..62317a3 100644 --- a/tests/test_pagure_flask_ui_app.py +++ b/tests/test_pagure_flask_ui_app.py @@ -61,7 +61,7 @@ class PagureFlaskApptests(tests.Modeltests): self.assertIn('Home - Pagure', output.data) self.assertIn( '

    All Projects ' - '0

    ', output.data) + '0', output.data.decode('utf-8')) tests.create_projects(self.session) @@ -69,7 +69,7 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

    All Projects ' - '3

    ', output.data) + '3', output.data.decode('utf-8')) # Add a 3rd project with a long description item = pagure.lib.model.Project( @@ -86,14 +86,14 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/?repopage=abc&forkpage=def') self.assertIn( 'Projects 1', - output.data) + output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) self.assertEqual( - output.data.count('

    No group found

    '), 1) + output.data.decode('utf-8').count('

    No group found

    '), 1) self.assertEqual( - output.data.count('
    '), 6) + output.data.decode('utf-8').count('
    '), 6) def test_watch_list(self): ''' Test for watch list of a user ''' @@ -103,26 +103,26 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/') self.assertIn( '
    You have no projects
    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '

    You have no forks

    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '

    No project in watch list

    ', - output.data) + output.data.decode('utf-8')) tests.create_projects(self.session) output = self.app.get('/') self.assertIn( 'My Projects 3', - output.data) + output.data.decode('utf-8')) self.assertIn( 'My Forks 0', - output.data) + output.data.decode('utf-8')) self.assertIn( 'My Watch List 3', - output.data) + output.data.decode('utf-8')) def test_view_users(self): """ Test the view_users endpoint. """ @@ -131,13 +131,13 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

    \n Users ' - '2

    ', output.data) + '2', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) def test_view_user(self): """ Test the view_user endpoint. """ @@ -146,10 +146,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Projects 0', - output.data) + output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) tests.create_projects(self.session) self.gitrepos = tests.create_projects_git( @@ -159,9 +159,9 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Projects 3', - output.data) + output.data.decode('utf-8')) self.assertIn( - 'Forks 0', output.data) + 'Forks 0', output.data.decode('utf-8')) @patch.dict('pagure.APP.config', {'ENABLE_UI_NEW_PROJECTS': False}) def test_new_project_when_turned_off_in_the_ui(self): @@ -210,7 +210,7 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/new/') pagure.APP.config['ENABLE_NEW_PROJECTS'] = False - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -257,9 +257,9 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/new/') self.assertEqual(output.status_code, 200) self.assertIn( - u'Create new Project', output.data) + u'Create new Project', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -269,27 +269,27 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - u'Create new Project', output.data) + u'Create new Project', output.data.decode('utf-8')) self.assertIn( u'\n This field is required. \n' - ' ', output.data) + ' ', output.data.decode('utf-8')) data['name'] = 'project-1' output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.data.decode('utf-8')) self.assertNotIn( u'\n This field is required. \n' - ' ', output.data) + ' ', output.data.decode('utf-8')) data['csrf_token'] = csrf_token output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.data.decode('utf-8')) self.assertIn( u'\n No user ' '"username" found\n
    ', - output.data) + output.data.decode('utf-8')) user.username = 'foo' with tests.user_set(pagure.APP, user): @@ -298,10 +298,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( u'
    \nProject #1
    ', - output.data) - self.assertIn(u'

    This repo is brand new!

    ', output.data) + output.data.decode('utf-8')) + self.assertIn(u'

    This repo is brand new!

    ', output.data.decode('utf-8')) self.assertIn( - u'Overview - project-1 - Pagure', output.data) + u'Overview - project-1 - Pagure', output.data.decode('utf-8')) # After projects = pagure.lib.search_projects(self.session) @@ -367,10 +367,9 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.get('/new/') self.assertEqual(output.status_code, 200) self.assertIn( - u'Create new Project', output.data) + u'Create new Project', output.data.decode('utf-8')) - 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', @@ -380,27 +379,27 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - u'Create new Project', output.data) + u'Create new Project', output.data.decode('utf-8')) self.assertIn( u'\n This field is required. \n' - ' ', output.data) + ' ', output.data.decode('utf-8')) data['name'] = 'project-1' output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.data.decode('utf-8')) self.assertNotIn( u'\n This field is required. \n' - ' ', output.data) + ' ', output.data.decode('utf-8')) data['csrf_token'] = csrf_token output = self.app.post('/new/', data=data) self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.data.decode('utf-8')) self.assertIn( u'\n No user ' '"username" found\n
    ', - output.data) + output.data.decode('utf-8')) user.username = 'foo' with tests.user_set(pagure.APP, user): @@ -409,10 +408,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( u'
    \nProject #1
    ', - output.data) - self.assertIn(u'

    This repo is brand new!

    ', output.data) + output.data.decode('utf-8')) + self.assertIn(u'

    This repo is brand new!

    ', output.data.decode('utf-8')) self.assertIn( - u'Overview - foo/project-1 - Pagure', output.data) + u'Overview - foo/project-1 - Pagure', output.data.decode('utf-8')) # After projects = pagure.lib.search_projects(self.session) @@ -448,7 +447,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.data.decode('utf-8')) csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] @@ -468,7 +467,8 @@ class PagureFlaskApptests(tests.Modeltests): '''

    project-1

    Prõjéctö #1

    -
    ''', output.data if six.PY2 else output.data.decode('utf-8')) + ''', + output.data if six.PY2 else output.data.decode('utf-8')) data = { 'description': 'Мой первый суперский репозиторий', @@ -485,7 +485,8 @@ class PagureFlaskApptests(tests.Modeltests): '''

    project-2

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

    -
    ''', output.data if six.PY2 else output.data.decode('utf-8')) + ''', + output.data if six.PY2 else output.data.decode('utf-8')) # After projects = pagure.lib.search_projects(self.session) @@ -510,7 +511,7 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/settings/') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

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

    Page not found (404)

    ' in output.data.decode('utf-8')) user.username = 'foo' with tests.user_set(pagure.APP, user): @@ -518,12 +519,12 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -534,20 +535,20 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) 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) + self.assertIn('Invalid SSH keys', output.data.decode('utf-8')) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertIn('>blah', output.data) + '
    ', output.data.decode('utf-8')) + self.assertIn('>blah', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -562,13 +563,13 @@ 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) + self.assertIn('Public ssh key updated', output.data.decode('utf-8')) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # With CSRF @@ -690,7 +691,7 @@ class PagureFlaskApptests(tests.Modeltests):
  • 1
  • item 2
  • """ - self.assertEqual(output.data, exp) + self.assertEqual(output.data.decode('utf-8'), exp) tests.create_projects(self.session) texts = [ @@ -728,7 +729,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.data.decode('utf-8')) def test_markdown_preview(self): """ Test the markdown_preview endpoint with a non-existing commit. @@ -741,9 +742,9 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] tests.create_projects(self.session) @@ -758,7 +759,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.data.decode('utf-8')) def test_markdown_preview_valid_commit(self): """ Test the markdown_preview endpoint with an existing commit. """ @@ -770,9 +771,9 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] tests.create_projects(self.session) @@ -794,7 +795,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.data.decode('utf-8')) @patch('pagure.ui.app.admin_session_timedout') def test_remove_user_email(self, ast): @@ -806,7 +807,7 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.post('/settings/email/drop') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

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

    Page not found (404)

    ' in output.data.decode('utf-8')) user.username = 'foo' with tests.user_set(pagure.APP, user): @@ -814,12 +815,12 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -831,13 +832,13 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) self.assertIn( '\n You must always have at least one email', - output.data) + output.data.decode('utf-8')) user.username = 'pingou' with tests.user_set(pagure.APP, user): @@ -845,12 +846,12 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -862,8 +863,8 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + '
    ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) data = { 'csrf_token': csrf_token, @@ -875,10 +876,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) 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.data.decode('utf-8')) data = { 'csrf_token': csrf_token, @@ -888,14 +889,14 @@ 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) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 0) + self.assertEqual(output.data.decode('utf-8').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) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 0) + self.assertEqual(output.data.decode('utf-8').count('bar@pingou.com'), 3) ast.return_value = True output = self.app.post('/settings/email/drop', data=data) @@ -913,28 +914,28 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.post('/settings/email/add') self.assertEqual(output.status_code, 404) - self.assertTrue('

    Page not found (404)

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

    Page not found (404)

    ' in output.data.decode('utf-8')) user.username = 'foo' with tests.user_set(pagure.APP, user): output = self.app.post('/settings/email/add') self.assertEqual(output.status_code, 200) - self.assertTrue("Add new email" in output.data) + self.assertTrue("Add new email" in output.data.decode('utf-8')) self.assertIn( '', output.data) + 'name="email" type="text" value="">', output.data.decode('utf-8')) user.username = 'pingou' with tests.user_set(pagure.APP, user): output = self.app.post('/settings/email/add') self.assertEqual(output.status_code, 200) - self.assertTrue("Add new email" in output.data) + self.assertTrue("Add new email" in output.data.decode('utf-8')) self.assertIn( '', output.data) + 'name="email" type="text" value="">', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -944,8 +945,8 @@ 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) + self.assertTrue("Add new email" in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo2@pingou.com'), 1) # New email data = { @@ -958,13 +959,13 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output.data.decode('utf-8')) 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('foobar@pingou.com'), 2) + output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) + self.assertEqual(output.data.decode('utf-8').count('bar@pingou.com'), 5) + self.assertEqual(output.data.decode('utf-8').count('foobar@pingou.com'), 2) # Email already pending output = self.app.post( @@ -972,10 +973,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n ' - 'Add new email', output.data) + 'Add new email', output.data.decode('utf-8')) self.assertIn( '\n This email is already ' - 'pending confirmation', output.data) + 'pending confirmation', output.data.decode('utf-8')) # User already has this email data = { @@ -986,17 +987,17 @@ 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.assertTrue("Add new email" in output.data.decode('utf-8')) self.assertTrue( 'Invalid value, can't be any of: bar@pingou.com, ' - 'foo@pingou.com. ' in output.data + 'foo@pingou.com. ' in output.data.decode('utf-8') or 'Invalid value, can't be any of: foo@pingou.com, ' - 'bar@pingou.com. ' in output.data + 'bar@pingou.com. ' in output.data.decode('utf-8') ) - self.assertEqual(output.data.count('foo@pingou.com'), 6) - self.assertEqual(output.data.count('bar@pingou.com'), 5) - self.assertEqual(output.data.count('foobar@pingou.com'), 0) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 6) + self.assertEqual(output.data.decode('utf-8').count('bar@pingou.com'), 5) + self.assertEqual(output.data.decode('utf-8').count('foobar@pingou.com'), 0) # Email registered by someone else data = { @@ -1007,10 +1008,10 @@ 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.assertTrue("Add new email" in output.data.decode('utf-8')) self.assertIn( 'Invalid value, can't be any of: foo@bar.com. ', - output.data) + output.data.decode('utf-8')) ast.return_value = True output = self.app.post('/settings/email/add', data=data) @@ -1028,7 +1029,7 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(pagure.APP, 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.data.decode('utf-8')) user.username = 'pingou' with tests.user_set(pagure.APP, user): @@ -1036,12 +1037,12 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1053,8 +1054,8 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) # Set invalid default email data = { @@ -1067,12 +1068,12 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) self.assertIn( '\n You do not have the ' 'email: foobar@pingou.com, nothing to set', - output.data) + output.data.decode('utf-8')) # Set default email data = { @@ -1085,11 +1086,11 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) self.assertIn( '\n Default email set to: ' - 'foo@pingou.com', output.data) + 'foo@pingou.com', output.data.decode('utf-8')) ast.return_value = True output = self.app.post('/settings/email/default', data=data) @@ -1120,7 +1121,7 @@ class PagureFlaskApptests(tests.Modeltests): with tests.user_set(pagure.APP, 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.data.decode('utf-8')) user.username = 'pingou' with tests.user_set(pagure.APP, user): @@ -1128,12 +1129,12 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1145,8 +1146,8 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) # Set invalid default email data = { @@ -1159,11 +1160,11 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) self.assertIn( '\n This email address has ' - 'already been confirmed', output.data) + 'already been confirmed', output.data.decode('utf-8')) # Validate a non-validated email data = { @@ -1176,11 +1177,11 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) - self.assertEqual(output.data.count('foo@pingou.com'), 4) + ' ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('foo@pingou.com'), 4) self.assertIn( '\n Confirmation email re-sent', - output.data) + output.data.decode('utf-8')) ast.return_value = True output = self.app.post('/settings/email/resend', data=data) @@ -1216,10 +1217,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output.data.decode('utf-8')) self.assertIn( '\n No email associated with this token.', - output.data) + output.data.decode('utf-8')) # Confirm email output = self.app.get( @@ -1227,10 +1228,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + ' ', output.data.decode('utf-8')) self.assertIn( '\n Email validated', - output.data) + output.data.decode('utf-8')) userobj = pagure.lib.search_user(self.session, username='pingou') self.assertEqual(len(userobj.emails), 3) @@ -1270,9 +1271,9 @@ 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) + self.assertIn('test pull-request #1', output.data.decode('utf-8')) self.assertEqual( - output.data.count('\n ' - 'Create a new token\n', output.data) + 'Create a new token\n', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1521,13 +1522,13 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post('/settings/token/new', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Create token - Pagure', output.data) + 'Create token - Pagure', output.data.decode('utf-8')) self.assertIn( '
    \n ' - 'Create a new token\n', output.data) + 'Create a new token\n', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) data = { 'acls': ['new_project'], @@ -1538,13 +1539,13 @@ class PagureFlaskApptests(tests.Modeltests): output = self.app.post('/settings/token/new', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Create token - Pagure', output.data) + 'Create token - Pagure', output.data.decode('utf-8')) self.assertIn( '
    \n ' - 'Create a new token\n', output.data) + 'Create a new token\n', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) data = { 'acls': ['create_project', 'fork_project'], @@ -1556,12 +1557,12 @@ class PagureFlaskApptests(tests.Modeltests): '/settings/token/new', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'foo\'s settings - Pagure', output.data) + 'foo\'s settings - Pagure', output.data.decode('utf-8')) self.assertIn( '\n Token created\n', - output.data) + output.data.decode('utf-8')) self.assertEqual( - output.data.count( + output.data.decode('utf-8').count( 'Valid' ' until: '), 1) @@ -1580,7 +1581,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.data.decode('utf-8')) # Create the foobar API token but associated w/ the user 'foo' item = pagure.lib.model.Token( @@ -1595,7 +1596,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.data.decode('utf-8')) user.username = 'foo' with tests.user_set(pagure.APP, user): @@ -1604,13 +1605,13 @@ class PagureFlaskApptests(tests.Modeltests): '/settings/token/revoke/foobar', follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - "foo's settings - Pagure", output.data) + "foo's settings - Pagure", output.data.decode('utf-8')) self.assertEqual( - output.data.count( + output.data.decode('utf-8').count( 'Valid' ' until: '), 1) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -1623,9 +1624,9 @@ class PagureFlaskApptests(tests.Modeltests): follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - "foo's settings - Pagure", output.data) + "foo's settings - Pagure", output.data.decode('utf-8')) self.assertEqual( - output.data.count( + output.data.decode('utf-8').count( 'Valid' ' until: '), 0) @@ -1639,9 +1640,9 @@ class PagureFlaskApptests(tests.Modeltests): follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - "foo's settings - Pagure", output.data) + "foo's settings - Pagure", output.data.decode('utf-8')) self.assertEqual( - output.data.count( + output.data.decode('utf-8').count( 'Valid' ' until: '), 0) diff --git a/tests/test_pagure_flask_ui_app_give_project.py b/tests/test_pagure_flask_ui_app_give_project.py index 2335694..8787d1a 100644 --- a/tests/test_pagure_flask_ui_app_give_project.py +++ b/tests/test_pagure_flask_ui_app_give_project.py @@ -80,7 +80,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 200) self.assertIn( 'Overview - test - Pagure', - output.data) + output.data.decode('utf-8')) self._check_user() @@ -105,7 +105,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 404) self.assertIn( '

    No such user foobar found

    ', - output.data) + output.data.decode('utf-8')) self._check_user() @@ -130,7 +130,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.data.decode('utf-8')) self._check_user() @@ -155,7 +155,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.data.decode('utf-8')) self._check_user() @@ -191,7 +191,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertEqual(output.status_code, 403) self.assertIn( '

    You are not allowed to give this project

    ', - output.data) + output.data.decode('utf-8')) self._check_user() @@ -225,7 +225,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertIn( '\n The project has been ' 'transferred to foo\n', - output.data) + output.data.decode('utf-8')) self._check_user('foo') @@ -253,7 +253,7 @@ class PagureFlaskGiveRepotests(tests.SimplePagureTest): self.assertIn( '\n The project has been ' 'transferred to foo\n', - output.data) + output.data.decode('utf-8')) self._check_user('foo') # Make sure that the user giving the project is still an admin diff --git a/tests/test_pagure_flask_ui_fork.py b/tests/test_pagure_flask_ui_fork.py index 62d52d5..9a6aa1c 100644 --- a/tests/test_pagure_flask_ui_fork.py +++ b/tests/test_pagure_flask_ui_fork.py @@ -270,16 +270,16 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

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

    ', output.data) + ' PR from the feature branch\n', output.data.decode('utf-8')) self.assertIn( - 'title="View file as of 2a552b">sources
    ', output.data) + 'title="View file as of 2a552b">sources', output.data.decode('utf-8')) # Test if the `open changed file icon` is displayed. self.assertIn( 'class="open_changed_file_icon_wrap">' - '', output.data) + '', output.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_FF(self, send_email): @@ -301,12 +301,12 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '

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

    ', output.data) + ' PR from the feature branch\n', output.data.decode('utf-8')) self.assertIn( - 'title="View file as of 2a552b">sources', output.data) + 'title="View file as of 2a552b">sources', output.data.decode('utf-8')) # Wrong project data = { @@ -360,14 +360,14 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n This request must be ' - 'assigned to be merged', output.data) + 'assigned to be merged', output.data.decode('utf-8')) # PR assigned but not to this user repo = pagure.get_authorized_project(self.session, 'test') @@ -382,10 +382,10 @@ class PagureFlaskForktests(tests.Modeltests): self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Only the assignee can ' - 'merge this review', output.data) + 'merge this review', output.data.decode('utf-8')) # Project w/ minimal PR score settings['Only_assignee_can_merge_pull-request'] = False @@ -400,11 +400,11 @@ class PagureFlaskForktests(tests.Modeltests): self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n This request does not ' 'have the minimum review score necessary to be merged', - output.data) + output.data.decode('utf-8')) # Merge settings['Minimum_score_to_merge_pull-request'] = -1 @@ -415,13 +415,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.data.decode('utf-8')) self.assertIn( - 'A commit on branch feature', output.data) + 'A commit on branch feature', output.data.decode('utf-8')) self.assertNotIn( - 'Merge #1 `PR from the feature branch`', output.data) + 'Merge #1 `PR from the feature branch`', output.data.decode('utf-8')) # Ensure we have the new commit - commits = _get_commits(output.data) + commits = _get_commits(output.data.decode('utf-8')) self.assertEqual( commits, [ @@ -434,7 +434,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.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_merge(self, send_email): @@ -464,13 +464,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.data.decode('utf-8')) # 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.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_conflicts(self, send_email): @@ -502,8 +502,8 @@ class PagureFlaskForktests(tests.Modeltests): self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) - self.assertIn('Merge conflicts!', output.data) + output.data.decode('utf-8')) + self.assertIn('Merge conflicts!', output.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_merge_request_pull_nochange(self, send_email): @@ -535,15 +535,15 @@ class PagureFlaskForktests(tests.Modeltests): self.assertIn( '

    PR#1\n' ' Merged', - output.data) + output.data.decode('utf-8')) self.assertIn('Nothing to do, changes were already merged', - output.data) + output.data.decode('utf-8')) # 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.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_request_pull_close(self, send_email): @@ -556,10 +556,10 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

    PR#1\n' - ' ', output.data) - self.assertIn('
    Merged by\n', output.data) + ' ', output.data.decode('utf-8')) + self.assertIn('
    Merged by\n', output.data.decode('utf-8')) self.assertIn( - 'title="View file as of 2a552b">sources', output.data) + 'title="View file as of 2a552b">sources', output.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_request_pull_disabled(self, send_email): @@ -660,9 +660,9 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

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

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

    ', output.data.decode('utf-8')) self.assertTrue( - output.data.count('Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output.data.decode('utf-8')) self.assertIn( '\n No branch from which to pull ' - 'or local PR reference were found', output.data) + 'or local PR reference were found', output.data.decode('utf-8')) shutil.rmtree(newpath) @@ -745,14 +745,14 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

    \n 0 Pull Requests (of 0)\n

    ', - output.data) + output.data.decode('utf-8')) # Open is primary self.assertIn( 'Open', output.data) + 'href="/test/pull-requests">Open', output.data.decode('utf-8')) self.assertIn( 'Closed', output.data) + 'href="/test/pull-requests?status=0">Closed', output.data.decode('utf-8')) self.set_up_git_repo(new_project=None, branch_from='feature') @@ -760,40 +760,40 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '

    \n 1 Pull Requests (of 1)\n

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

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

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

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

    ', - output.data) + output.data.decode('utf-8')) # Close is primary self.assertIn( 'Open', output.data) + 'href="/test/pull-requests">Open', output.data.decode('utf-8')) self.assertIn( 'Closed', output.data) + 'href="/test/pull-requests?status=0">Closed', output.data.decode('utf-8')) # Project w/o pull-request repo = pagure.get_authorized_project(self.session, 'test') @@ -827,7 +827,7 @@ class PagureFlaskForktests(tests.Modeltests): self.assertEqual(output.status_code, 200) npatch = [] - for row in output.data.split('\n'): + for row in output.data.decode('utf-8').split('\n'): if row.startswith('Date:'): continue if row.startswith('From '): @@ -890,7 +890,7 @@ index 9f44358..2a552bb 100644 self.assertEqual(output.status_code, 200) npatch = [] - for row in output.data.split('\n'): + for row in output.data.decode('utf-8').split('\n'): if row.startswith('Date:'): continue if row.startswith('From '): @@ -1004,7 +1004,7 @@ index 9f44358..2a552bb 100644 self.assertEqual(output.status_code, 200) npatch = [] - for row in output.data.split('\n'): + for row in output.data.decode('utf-8').split('\n'): if row.startswith('Date:'): continue if row.startswith('From '): @@ -1093,10 +1093,10 @@ index 0000000..2a552bb output = self.app.get('/test/pull-request/1.patch', follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output.data.decode('utf-8')) self.assertIn( '\n No branch from which to pull ' - 'or local PR reference were found', output.data) + 'or local PR reference were found', output.data.decode('utf-8')) shutil.rmtree(newpath) @@ -1120,10 +1120,10 @@ index 0000000..2a552bb '/test/pull-request/cancel/1', follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output.data.decode('utf-8')) self.assertIn( '\n Invalid input submitted', - output.data) + output.data.decode('utf-8')) output = self.app.get('/test/pull-request/1') self.assertEqual(output.status_code, 200) @@ -1180,10 +1180,10 @@ index 0000000..2a552bb follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Overview - test - Pagure', output.data) + 'Overview - test - Pagure', output.data.decode('utf-8')) self.assertIn( '\n Pull request canceled!', - output.data) + output.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_set_assignee_requests(self, send_email): @@ -1211,13 +1211,13 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output.data.decode('utf-8')) self.assertNotIn( '\n Request assigned', - output.data) + output.data.decode('utf-8')) output = self.app.get('/test/pull-request/1') self.assertEqual(output.status_code, 200) @@ -1235,13 +1235,13 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output.data.decode('utf-8')) self.assertNotIn( '\n Request assigned', - output.data) + output.data.decode('utf-8')) # Invalid assignee data = { @@ -1255,13 +1255,13 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output.data.decode('utf-8')) self.assertIn( '\n No user "bar" found', - output.data) + output.data.decode('utf-8')) # Assign the PR data = { @@ -1284,13 +1284,13 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '

    PR#1\n' - ' PR from the feature branch\n', output.data) + ' PR from the feature branch\n', output.data.decode('utf-8')) self.assertIn( '\n Request assigned', - output.data) + output.data.decode('utf-8')) # Pull-Request closed repo = pagure.get_authorized_project(self.session, 'test') @@ -1336,7 +1336,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.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1393,18 +1393,18 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'Diff from master to feature - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( - '

    No commits found

    ', output.data) + '

    No commits found

    ', output.data.decode('utf-8')) output = self.app.get('/test/diff/master..feature') self.assertEqual(output.status_code, 200) self.assertIn( 'Diff from feature to master - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertNotIn( '', output.data) + 'value="Create">', output.data.decode('utf-8')) user.username = 'pingou' with tests.user_set(pagure.APP, user): @@ -1412,10 +1412,10 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'Create new Pull Request for master - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1432,15 +1432,15 @@ index 0000000..2a552bb 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) + self.assertIn('

    Test Initial Comment

    ', output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').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.data.decode('utf-8')) # Case 2 - Add an empty initial comment data = { @@ -1454,8 +1454,8 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#3: foo bar PR - test\n - Pagure', - output.data) - self.assertNotIn('
    Create new Pull Request for master - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1499,8 +1499,8 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#2: foo bar PR - test\n - Pagure', - output.data) - self.assertIn('

    Test Initial Comment

    ', output.data) + output.data.decode('utf-8')) + self.assertIn('

    Test Initial Comment

    ', output.data.decode('utf-8')) # Check if commit start and stop have been set for PR#2 request = pagure.lib.search_pull_requests( @@ -1539,7 +1539,7 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 400) self.assertIn( '

    No branch from which to pull or local PR reference ' - 'were found

    ', output.data) + 'were found

    ', output.data.decode('utf-8')) output = self.app.get('/test/new_issue') csrf_token = self.get_csrf(output=output) @@ -1554,7 +1554,7 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 400) self.assertIn( '

    No branch from which to pull or local PR reference ' - 'were found

    ', output.data) + 'were found

    ', output.data.decode('utf-8')) shutil.rmtree(newpath) @@ -1589,7 +1589,7 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 400) self.assertIn( '

    No branch from which to pull or local PR reference ' - 'were found

    ', output.data) + 'were found

    ', output.data.decode('utf-8')) shutil.rmtree(newpath) @@ -1612,7 +1612,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.data.decode('utf-8').startswith('\n
    ')) csrf_token = self.get_csrf(output=output) @@ -1626,11 +1626,11 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '\n Comment added', output.data) - self.assertEqual(output.data.count('title="PY C (pingou)"'), 2) + self.assertEqual(output.data.decode('utf-8').count('title="PY C (pingou)"'), 2) # Project w/o pull-request repo = pagure.get_authorized_project(self.session, 'test') @@ -1673,11 +1673,11 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + #self.assertIn('href="#comment-1">¶', output.data.decode('utf-8')) self.assertIn( '

    This look alright but we can do better

    ', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1707,10 +1707,10 @@ index 0000000..2a552bb self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Comment removed', - output.data) + output.data.decode('utf-8')) # Project w/o pull-request repo = pagure.get_authorized_project(self.session, 'test') @@ -1747,7 +1747,7 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) # Creating comment to play with self.assertTrue( - output.data.startswith('\n
    ')) + output.data.decode('utf-8').startswith('\n
    ')) csrf_token = self.get_csrf(output=output) @@ -1763,20 +1763,20 @@ index 0000000..2a552bb self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Comment added', - output.data) + output.data.decode('utf-8')) # 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.data.decode('utf-8')) output = self.app.get('/test/pull-request/1/comment/1/edit') self.assertEqual(output.status_code, 200) - self.assertIn('
    ', output.data) + self.assertIn('
    ', output.data.decode('utf-8')) # 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.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1789,20 +1789,20 @@ index 0000000..2a552bb follow_redirects=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.data.decode('utf-8')) self.assertIn( '

    PR#1\n' ' PR from the feature branch\n ', - output.data) + output.data.decode('utf-8')) # Checking if Edited by User is there or not self.assertTrue( 'Edited just now by pingou ' - in output.data + in output.data.decode('utf-8') or 'Edited seconds ago by pingou ' - in output.data) + in output.data.decode('utf-8')) self.assertIn( - '\n Comment updated', output.data) + '\n Comment updated', output.data.decode('utf-8')) # Project w/o pull-request repo = pagure.get_authorized_project(self.session, 'test') @@ -1839,12 +1839,12 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'PR#1: PR from the feature branch - test\n - ' - 'Pagure', output.data) + 'Pagure', output.data.decode('utf-8')) self.assertIn( '

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

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

    ', output.data.decode('utf-8')) self.assertIn( - 'title="View file as of 2a552b">sources', output.data) + 'title="View file as of 2a552b">sources', output.data.decode('utf-8')) # Wrong project data = { @@ -1886,13 +1886,13 @@ index 0000000..2a552bb '/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.data.decode('utf-8')) self.assertIn( - 'Merge #1 `PR from the feature branch`', output.data) + 'Merge #1 `PR from the feature branch`', output.data.decode('utf-8')) self.assertIn( - 'A commit on branch feature', output.data) + 'A commit on branch feature', output.data.decode('utf-8')) # Ensure we have the merge commit - commits = _get_commits(output.data) + commits = _get_commits(output.data.decode('utf-8')) self.assertEqual(commits, [ 'Merge #1 `PR from the feature branch`', 'Add sources file for testing', @@ -1903,7 +1903,7 @@ index 0000000..2a552bb output = self.app.get('/test/pull-request/1') self.assertIn( '

    Pull-Request has been merged by pingou

    ', - output.data) + output.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_internal_endpoint_main_ahead(self, send_email): @@ -2012,16 +2012,14 @@ index 0000000..2a552bb user.username = 'foo' with tests.user_set(pagure.APP, 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.data.decode('utf-8')) self.assertEqual( data, { @@ -2063,7 +2061,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.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -2105,14 +2103,14 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'Fork and Edit\n \n', - output.data) + output.data.decode('utf-8')) # 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.data.decode('utf-8')) # Check for edit panel output = self.app.post('fork_edit/test/edit/master/f/sources', @@ -2124,23 +2122,23 @@ index 0000000..2a552bb '  master' '
  • ' '  sources
  • ', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) # 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.data.decode('utf-8')) # 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.data.decode('utf-8')) # Check if fork-edit shows for different user user.username = 'pingou' @@ -2151,14 +2149,14 @@ index 0000000..2a552bb self.assertEqual(output.status_code, 200) self.assertIn( 'Fork and Edit\n \n', - output.data) + output.data.decode('utf-8')) # 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( 'Fork and Edit\n \n', - output.data) + output.data.decode('utf-8')) @patch('pagure.lib.notify.send_email') def test_fork_without_main_repo(self, send_email): @@ -2210,12 +2208,12 @@ index 0000000..2a552bb output = self.app.get('/fork/foo/test') self.assertEqual(output.status_code, 200) print output.data - self.assertIn('Fork from a deleted repository\n', output.data) + self.assertIn('Fork from a deleted repository\n', output.data.decode('utf-8')) # 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.data.decode('utf-8')) # 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 36b7994..601b3c0 100644 --- a/tests/test_pagure_flask_ui_groups.py +++ b/tests/test_pagure_flask_ui_groups.py @@ -47,7 +47,7 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertIn( '

    \n' ' Groups 0', - output.data) + output.data.decode('utf-8')) def test_add_group_index_auth(self): """ Test the presence of the add group button on the front page. """ @@ -84,11 +84,11 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(pagure.APP, 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.data.decode('utf-8')) self.assertNotIn( - '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -97,8 +97,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.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( 'This field is required.'), 3) data = { @@ -110,8 +110,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.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( 'This field is required.'), 0) data['csrf_token'] = csrf_token @@ -122,14 +122,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.data.decode('utf-8')) self.assertIn( '\n Group `test_group` created.', - output.data) + output.data.decode('utf-8')) self.assertIn( '

    \n' ' Groups 1', - output.data) + output.data.decode('utf-8')) user = tests.FakeUser( username='pingou', @@ -137,8 +137,8 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(pagure.APP, 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.data.decode('utf-8')) + self.assertIn('', output.data.decode('utf-8')) data = { 'group_name': 'test_admin_group', @@ -154,14 +154,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.data.decode('utf-8')) self.assertIn( '\n Group `test_admin_group` ' - 'created.',output.data) + 'created.',output.data.decode('utf-8')) self.assertIn( '

    \n' ' Groups 2', - output.data) + output.data.decode('utf-8')) def test_edit_group(self): """ Test the edit_group endpoint. """ @@ -173,7 +173,7 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(pagure.APP, 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.data.decode('utf-8')) self.test_add_group() @@ -181,21 +181,21 @@ class PagureFlaskGroupstests(tests.Modeltests): with tests.user_set(pagure.APP, 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.data.decode('utf-8')) output = self.app.get('/group/test_group/edit') self.assertEqual(output.status_code, 200) self.assertIn( 'Edit group: test_group - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Missing CSRF @@ -207,17 +207,17 @@ class PagureFlaskGroupstests(tests.Modeltests): output = self.app.post( '/group/test_group/edit', data=data, follow_redirects=True) - #print output.data + #print output.data.decode('utf-8') self.assertEqual(output.status_code, 200) self.assertIn( 'Edit group: test_group - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) # User not allowed data['csrf_token'] = csrf_token @@ -227,13 +227,13 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Group test_group - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n You are not ' - 'allowed to edit this group', output.data) + 'allowed to edit this group', output.data.decode('utf-8')) self.assertIn( ' ' - ' Test Group', output.data) + ' Test Group', output.data.decode('utf-8')) user.username = 'pingou' with tests.user_set(pagure.APP, user): @@ -241,19 +241,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.data.decode('utf-8')) 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.data.decode('utf-8')) self.assertIn( ' ' - ' Test Group', output.data) + ' Test Group', output.data.decode('utf-8')) self.assertIn( 'Group "Test Group edited" (test_group) edited', - output.data) + output.data.decode('utf-8')) def test_group_delete(self): """ Test the group_delete endpoint. """ @@ -266,11 +266,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.data.decode('utf-8')) self.assertIn( '

    \n' ' Groups 0', - output.data) + output.data.decode('utf-8')) self.test_add_group() @@ -280,10 +280,10 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertIn( '

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

    \n' ' Groups 1', - output.data) + output.data.decode('utf-8')) 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.data.decode('utf-8')) self.assertIn( '

    \n' ' Groups 1', - output.data) + output.data.decode('utf-8')) user.username = 'bar' with tests.user_set(pagure.APP, user): @@ -329,11 +329,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.data.decode('utf-8')) self.assertIn( '

    \n' ' Groups 0', - output.data) + output.data.decode('utf-8')) def test_view_group(self): """ Test the view_group endpoint. """ @@ -348,7 +348,7 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '  ' - 'Test Group', output.data) + 'Test Group', output.data.decode('utf-8')) output = self.app.get('/group/test_admin_group') self.assertEqual(output.status_code, 404) @@ -362,10 +362,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 @@ -377,8 +377,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.data.decode('utf-8')) 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.data.decode('utf-8')) 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} @@ -445,22 +445,22 @@ class PagureFlaskGroupstests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n No user `bar` found', - output.data) + output.data.decode('utf-8')) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('\n Could not find user ' - 'username', output.data) + 'username', output.data.decode('utf-8')) 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.data.decode('utf-8')) 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.data.decode('utf-8')) 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.data.decode('utf-8')) 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.data.decode('utf-8')) self.assertIn( '  ' - 'Test Group', output.data) - self.assertEqual(output.data.count('\n New issue' - in output.data) + in output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -86,8 +87,8 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) - self.assertEqual(output.data.count( + in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( 'This field is required.'), 2) data['title'] = 'Test issue' @@ -95,8 +96,8 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) - self.assertEqual(output.data.count( + in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( 'This field is required.'), 1) data['issue_content'] = 'We really should improve on this issue' @@ -105,8 +106,8 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) - self.assertEqual(output.data.count( + in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( '\n This field is required.'), 0) @@ -116,7 +117,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 404) self.assertIn( '

    No such user found in the database: username

    ', - output.data) + output.data.decode('utf-8')) # User not logged in output = self.app.get('/test/new_issue') @@ -129,11 +130,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) # Project w/o issue tracker repo = pagure.get_authorized_project(self.session, 'test') @@ -167,11 +168,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) + in output.data.decode('utf-8')) 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' @@ -188,17 +189,17 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) # Check the image was uploaded self.assertIn( 'href="/test/issue/raw/' '8a06845923010b27bfd8e7e75acff7badc40d1021b4' '994e01f5e11ca40bc3abe', - output.data) + output.data.decode('utf-8')) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -222,7 +223,7 @@ class PagureFlaskIssuestests(tests.Modeltests): user = tests.FakeUser() user.username = 'pingou' with tests.user_set(pagure.APP, 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', @@ -257,11 +258,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) + in output.data.decode('utf-8')) 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' @@ -278,18 +279,18 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue3 - test3 - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) # Check the image was uploaded self.assertIn( 'href="/somenamespace/test3/issue/raw/' '8a06845923010b27bfd8e7e75acff7badc40d1021b4' '994e01f5e11ca40bc3abe', - output.data) + output.data.decode('utf-8')) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -311,7 +312,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n New issue' - in output.data) + in output.data.decode('utf-8')) csrf_token = self.get_csrf() @@ -337,22 +338,22 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) # Check the image was uploaded self.assertIn( 'href="/test/issue/raw/' '8a06845923010b27bfd8e7e75acff7badc40d1021b4' '994e01f5e11ca40bc3abe', - output.data) + output.data.decode('utf-8')) self.assertIn( 'href="/test/issue/raw/' '6498a2de405546200b6144da56fc25d0a3976ae688d' 'bfccaca609c8b4480523e', - output.data) + output.data.decode('utf-8')) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -375,7 +376,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '', output.data) + '
    ', output.data.decode('utf-8')) self.assertTrue( - '

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

    \n 0 Open Issues' in output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') # Create some custom fields to play with @@ -517,49 +518,49 @@ 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.assertIn('Issues - test - Pagure', output.data.decode('utf-8')) self.assertTrue( - '

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

    \n 2 Open Issues' in output.data.decode('utf-8')) self.assertIn( '
    ', output.data) + 'closed issues of total 3 issues">', output.data.decode('utf-8')) self.assertIn( '', output.data) + '3 issues">', output.data.decode('utf-8')) # 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) + self.assertIn('Issues - test - Pagure', output.data.decode('utf-8')) self.assertTrue( - '

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

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

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

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

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

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

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

    \n 3 Issues' in output.data.decode('utf-8')) # Unicode search pattern output = self.app.get( @@ -572,49 +573,61 @@ class PagureFlaskIssuestests(tests.Modeltests): 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) + self.assertIn( + 'Issues - test - Pagure', + output.data.decode('utf-8')) + self.assertIn('1 Issues', output.data.decode('utf-8')) # 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) + self.assertIn( + 'Issues - test - Pagure', + output.data.decode('utf-8')) + self.assertIn('1 Issues', output.data.decode('utf-8')) # All tickets - different pagination before = pagure.APP.config['ITEM_PER_PAGE'] pagure.APP.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) self.assertIn( - '
  • page 1 of 3
  • ', output.data) + 'Issues - test - Pagure', + output.data.decode('utf-8')) + self.assertIn( + '

    \n 1 Issues (of 3)', + output.data.decode('utf-8')) + self.assertIn( + '
  • page 1 of 3
  • ', output.data.decode('utf-8')) # 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) + self.assertIn('Issues - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    \n 1 Issues (of 1)', output.data.decode('utf-8')) self.assertIn( - '
  • page 1 of 1
  • ', output.data) + '
  • page 1 of 1
  • ', output.data.decode('utf-8')) pagure.APP.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) + self.assertIn( + 'Issues - test - Pagure', + output.data.decode('utf-8')) + self.assertIn('1 Open Issues (of 1)', output.data.decode('utf-8')) # 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) + self.assertIn( + 'Issues - test - Pagure', + output.data.decode('utf-8')) + self.assertIn('2 Open Issues (of 2)', output.data.decode('utf-8')) # New issue button is shown user = tests.FakeUser() @@ -623,7 +636,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'class="btn btn-success btn-sm">New Issue
    ', - output.data) + output.data.decode('utf-8')) # Project w/o issue tracker repo = pagure.get_authorized_project(self.session, 'test') @@ -641,7 +654,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertNotIn( 'class="btn btn-success btn-sm">New Issue', - output.data) + output.data.decode('utf-8')) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -730,11 +743,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertNotIn( '', - output.data) + output.data.decode('utf-8')) self.assertTrue( '' 'Login\n to comment on this ticket.' - in output.data) + in output.data.decode('utf-8')) user = tests.FakeUser() with tests.user_set(pagure.APP, user): @@ -744,20 +757,20 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertNotIn( '', - output.data) + output.data.decode('utf-8')) self.assertNotIn( '\n ' 'Issue close_status updated to: Fixed\n', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n ' 'Issue status updated to: Closed (was: Open)\n', - output.data) + output.data.decode('utf-8')) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) # FIXME: There is likely something going wrong in the html # below self.assertIn( @@ -1271,7 +1287,7 @@ class PagureFlaskIssuestests(tests.Modeltests): ''' @pingou:
    - Issue close_status updated to: Fixed
    - Issue status updated to: Closed (was: Open)

    ''', - output.data) + output.data.decode('utf-8')) # Add new comment data = { @@ -1285,25 +1301,25 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Comment added', - output.data) + output.data.decode('utf-8')) self.assertNotIn( '\n No changes to edit', - output.data) + output.data.decode('utf-8')) self.assertTrue( - '

    Woohoo a second comment !

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

    Woohoo a second comment !

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) # 2: one for the original comment, one for the new comment - self.assertEqual(output.data.count('title="PY C (pingou)"'), 2) + self.assertEqual(output.data..decode('utf-8')count('title="PY C (pingou)"'), 2) # Add new tag data = { @@ -1317,17 +1333,17 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) self.assertTrue( - '

    Woohoo a second comment !

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

    Woohoo a second comment !

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) # Assign issue to an non-existent user data = { @@ -1341,20 +1357,20 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n No user "ralph" found', - output.data) + output.data.decode('utf-8')) self.assertTrue( - '

    Woohoo a second comment !

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

    Woohoo a second comment !

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) # Assign issue properly data = { @@ -1368,22 +1384,22 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Issue assigned to pingou\n', - output.data) + output.data.decode('utf-8')) self.assertTrue( - 'Woohoo a second comment !

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

    Woohoo a second comment !

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('comment_body">'), 2) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) # Create another issue with a dependency repo = pagure.get_authorized_project(self.session, 'test') @@ -1418,18 +1434,18 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #2: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n You cannot close a ticket ' 'that has ticket depending that are still open.', - output.data) + output.data.decode('utf-8')) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) # Create private issue repo = pagure.get_authorized_project(self.session, 'test') @@ -1494,11 +1510,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1512,17 +1528,17 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Comment added', - output.data) + output.data.decode('utf-8')) self.assertTrue( - '

    Woohoo a second comment !

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

    Woohoo a second comment !

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('comment_body">'), 2) repo = pagure.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -1554,14 +1570,14 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Comment removed', - output.data) + output.data.decode('utf-8')) # Drop non-existant comment output = self.app.post( @@ -1615,11 +1631,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1633,11 +1649,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) # Add an invalid dependent ticket data = { @@ -1649,15 +1665,15 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertNotIn( '\n ' 'Successfully edited issue #1', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -1720,7 +1736,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1734,7 +1750,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -1748,11 +1764,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1766,11 +1782,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) # Add an invalid dependent ticket data = { @@ -1782,15 +1798,15 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertNotIn( '\n ' 'Successfully edited issue #1', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -1830,11 +1846,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -1851,7 +1867,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.data.decode('utf-8')) exp = {'output': 'notok'} self.assertDictEqual(json_data, exp) @@ -1865,7 +1881,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.data.decode('utf-8')) folder = os.path.dirname( os.path.abspath(__file__))[1:].replace('/', '_') @@ -1939,7 +1955,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.data.decode('utf-8')) exp = { 'output': 'notok', } @@ -1987,7 +2003,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.data.decode('utf-8')) folder = os.path.dirname( os.path.abspath(__file__))[1:].replace('/', '_') @@ -2139,7 +2155,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.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -2151,11 +2167,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n Edit ' - 'issue #1\n
    ' in output.data) - self.assertEqual(output.data.count( + 'issue #1\n

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( '\n This field is required. \n' ' '), 1) - self.assertEqual(output.data.count( + self.assertEqual(output.data.decode('utf-8').count( '\n Not a valid choice ' '\n '), 1) @@ -2165,11 +2181,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '
    \n Edit ' - 'issue #1\n
    ' in output.data) - self.assertEqual(output.data.count( + 'issue #1\n

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( '\n This field is required. \n' ' '), 0) - self.assertEqual(output.data.count( + self.assertEqual(output.data.decode('utf-8').count( '\n Not a valid choice ' '\n '), 0) @@ -2180,11 +2196,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertIn( '#1\n' ' Test issue #1', - output.data) - self.assertEqual(output.data.count( + output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count( ''), 1) - self.assertEqual(output.data.count('comment_body">'), 1) - self.assertEqual(output.data.count( + self.assertEqual(output.data.decode('utf-8').count('comment_body">'), 1) + self.assertEqual(output.data.decode('utf-8').count( '

    We should work on this!

    '), 1) # Project w/o issue tracker @@ -2314,7 +2330,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.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -2324,18 +2340,18 @@ 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.data.decode('utf-8')) data['csrf_token'] = csrf_token output = self.app.post( '/test/tag/tag1/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) self.assertIn( '\n ' 'Edited tag: tag1()[DeepSkyBlue] to tag2(lorem ipsum)[DeepSkyBlue]', - output.data) + output.data.decode('utf-8')) # update tag with empty description data['tag_description'] = '' @@ -2343,11 +2359,11 @@ class PagureFlaskIssuestests(tests.Modeltests): '/test/tag/tag2/edit', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) self.assertIn( '\n ' 'Edited tag: tag2(lorem ipsum)[DeepSkyBlue] to tag2()[DeepSkyBlue]', - output.data) + output.data.decode('utf-8')) # After edit, list tags tags = pagure.lib.get_tags_of_project(self.session, repo) @@ -2414,8 +2430,8 @@ class PagureFlaskIssuestests(tests.Modeltests): '/test/droptag/', data={}, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertTrue( - 'Settings - test - Pagure' in output.data) - self.assertTrue("

    Settings for test

    " in output.data) + 'Settings - test - Pagure' in output.data.decode('utf-8')) + self.assertTrue("

    Settings for test

    " in output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -2424,16 +2440,16 @@ 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.data.decode('utf-8')) 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) + self.assertTrue("

    Settings for test

    " in output.data.decode('utf-8')) self.assertIn( '\n ' - 'Issue **un**tagged with: tag1', output.data) + 'Issue **un**tagged with: tag1', output.data.decode('utf-8')) @patch('pagure.lib.git.update_git') @patch('pagure.lib.notify.send_email') @@ -2480,7 +2496,7 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -2493,17 +2509,17 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) data['csrf_token'] = csrf_token output = self.app.post( '/test/issue/1/drop', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Issues - test - Pagure', output.data) + 'Issues - test - Pagure', output.data.decode('utf-8')) self.assertIn( '\n Issue deleted', - output.data) + output.data.decode('utf-8')) # Project w/o issue tracker repo = pagure.get_authorized_project(self.session, 'test') @@ -2547,11 +2563,11 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) csrf_token = self.get_csrf(output=output) @@ -2565,17 +2581,17 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Comment added', - output.data) + output.data.decode('utf-8')) self.assertTrue( - '

    Woohoo a second comment !

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

    Woohoo a second comment !

    ' in output.data.decode('utf-8')) + self.assertEqual(output.data.decode('utf-8').count('comment_body">'), 2) repo = pagure.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -2611,14 +2627,14 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( 'Issue #1: Test issue - test - Pagure', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    ', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Comment updated', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') issue = pagure.lib.search_issues(self.session, repo, issueid=1) @@ -2628,12 +2644,12 @@ class PagureFlaskIssuestests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/test/issue/1/comment/1/edit') self.assertIn( - 'test - Pagure', output.data) - self.assertTrue('
    ' in output.data) - self.assertTrue('
    ' in output.data) + 'test - Pagure', output.data.decode('utf-8')) + self.assertTrue('
    ' in output.data.decode('utf-8')) + self.assertTrue('
    ' in output.data.decode('utf-8')) self.assertTrue( '', output.data) + self.assertIn(u'>Ship it!', output.data.decode('utf-8')) def test_update_quick_replies_multiple(self): with tests.user_set(pagure.APP, self.admin): @@ -139,8 +139,8 @@ class PagureFlaskQuickReplytest(tests.Modeltests): output, notice=u'quick replies updated') self.assertQuickReplies([u'Ship it!', u'Nah.']) # Check page has filled in textarea. - self.assertIn(u'>Ship it!', output.data) - self.assertIn(u'>Nah.', output.data) + self.assertIn(u'>Ship it!', output.data.decode('utf-8')) + self.assertIn(u'>Nah.', output.data.decode('utf-8')) def test_update_quick_replies_empty_to_reset(self): # Set some quick replies @@ -176,7 +176,7 @@ class PagureFlaskQuickReplytest(tests.Modeltests): with tests.user_set(pagure.APP, self.admin): output = self.app.get('/test/settings') - self.assertNotIn('Quick replies', output.data) + self.assertNotIn('Quick replies', output.data.decode('utf-8')) 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_repo.py b/tests/test_pagure_flask_ui_repo.py index 64a00d4..363bba9 100644 --- a/tests/test_pagure_flask_ui_repo.py +++ b/tests/test_pagure_flask_ui_repo.py @@ -79,7 +79,7 @@ class PagureFlaskRepotests(tests.Modeltests): #just get the csrf token pagure.APP.config['ENABLE_USER_MNGT'] = True output = self.app.get('/test/adduser') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] pagure.APP.config['ENABLE_USER_MNGT'] = False @@ -139,7 +139,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n Action canceled, try it ' - 'again',output.data) + 'again', output.data.decode('utf-8')) ast.return_value = False @@ -147,9 +147,9 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/test/adddeploykey') self.assertEqual(output.status_code, 200) - self.assertIn('Add deploy key to the', output.data) + self.assertIn('Add deploy key to the', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -160,22 +160,22 @@ 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) + self.assertIn('Add deploy key to the', output.data.decode('utf-8')) 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) + self.assertIn('Add deploy key to the', output.data.decode('utf-8')) + self.assertIn('Deploy key invalid', output.data.decode('utf-8')) # 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) + self.assertIn('Deploy key can only be single keys.', output.data.decode('utf-8')) # Now, a valid SSH key data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAzBMSIlvPRaEiLOTVInErkRIw9CzQQcnslDekAn1jFnGf+SNa1acvbTiATbCX71AA03giKrPxPH79dxcC7aDXerc6zRcKjJs6MAL9PrCjnbyxCKXRNNZU5U9X/DLaaL1b3caB+WD6OoorhS3LTEtKPX8xyjOzhf3OQSzNjhJp5Q==' @@ -183,16 +183,16 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/adddeploykey', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) + self.assertIn('Deploy key added', output.data.decode('utf-8')) + self.assertNotIn('PUSH ACCESS', output.data.decode('utf-8')) # 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) + self.assertIn('Deploy key already exists', output.data.decode('utf-8')) # And next, a key with push access data['ssh_key'] = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9Xwc2RDzPBhlEDARfHldGjudIVoa04tqT1JVKGQmyllTFz7Rb8CngQL3e7zyNzotnhwYKHdoiLlPkVEiDee4dWMUe48ilqId+FJZQGhyv8fu4BoFdE1AJUVylzmltbLg14VqG5gjTpXgtlrEva9arKwBMHJjRYc8ScaSn3OgyQw==' @@ -201,10 +201,10 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/adddeploykey', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) + self.assertIn('Deploy key added', output.data.decode('utf-8')) + self.assertIn('PUSH ACCESS', output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') @patch.dict('pagure.APP.config', {'DEPLOY_KEY': False}) @@ -258,7 +258,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n Action canceled, try it ' - 'again',output.data) + 'again',output.data.decode('utf-8')) ast.return_value = False @@ -266,9 +266,9 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/test/adduser') self.assertEqual(output.status_code, 200) - self.assertIn('Add user to the', output.data) + self.assertIn('Add user to the', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -279,42 +279,42 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Add user - test - Pagure', output.data) - self.assertTrue('Add user to the' in output.data) + 'Add user - test - Pagure', output.data.decode('utf-8')) + self.assertTrue('Add user to the' in output.data.decode('utf-8')) # No CSRF output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Add user - test - Pagure', output.data) + 'Add user - test - Pagure', output.data.decode('utf-8')) # Missing access data['csrf_token'] = csrf_token output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Add user - test - Pagure', output.data) - self.assertIn('Add user to the', output.data) + 'Add user - test - Pagure', output.data.decode('utf-8')) + self.assertIn('Add user to the', output.data.decode('utf-8')) # Unknown user data['access'] = 'commit' output = self.app.post('/test/adduser', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Add user - test - Pagure', output.data) - self.assertIn('Add user to the', output.data) + 'Add user - test - Pagure', output.data.decode('utf-8')) + self.assertIn('Add user to the', output.data.decode('utf-8')) self.assertIn( '\n No user "ralph" found\n', - output.data) + output.data.decode('utf-8')) # 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) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( - '\n User added', output.data) + '\n User added', output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') def test_add_group_project_when_user_mngt_off(self, ast): @@ -353,7 +353,7 @@ class PagureFlaskRepotests(tests.Modeltests): pagure.APP.config['ENABLE_USER_MNGT'] = True output = self.app.get('/test/addgroup') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] pagure.APP.config['ENABLE_USER_MNGT'] = False @@ -411,7 +411,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '\n Action canceled, try it ' - 'again', output.data) + 'again', output.data.decode('utf-8')) ast.return_value = False @@ -432,9 +432,9 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.get('/test/addgroup') self.assertEqual(output.status_code, 200) - self.assertTrue('Add group to the' in output.data) + self.assertTrue('Add group to the' in output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -445,27 +445,27 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/addgroup', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Add group - test - Pagure', output.data) - self.assertIn('Add group to the', output.data) + 'Add group - test - Pagure', output.data.decode('utf-8')) + self.assertIn('Add group to the', output.data.decode('utf-8')) # Missing access data['csrf_token'] = csrf_token output = self.app.post('/test/addgroup', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Add group - test - Pagure', output.data) - self.assertIn('Add group to the', output.data) + 'Add group - test - Pagure', output.data.decode('utf-8')) + self.assertIn('Add group to the', output.data.decode('utf-8')) # Unknown group data['access'] = 'ticket' output = self.app.post('/test/addgroup', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Add group - test - Pagure', output.data) - self.assertIn('Add group to the', output.data) + 'Add group - test - Pagure', output.data.decode('utf-8')) + self.assertIn('Add group to the', output.data.decode('utf-8')) self.assertIn( '\n No group ralph found.', - output.data) + output.data.decode('utf-8')) # All good data['group'] = 'foo' @@ -473,10 +473,10 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/addgroup', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( - '\n Group added', output.data) + '\n Group added', output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') def test_remove_user_when_user_mngt_off(self, ast): @@ -496,7 +496,7 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/settings') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -564,7 +564,7 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.post('/test/settings') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -573,9 +573,9 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/dropdeploykey/1', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) + self.assertIn('Deploy key does not exist in project', output.data.decode('utf-8')) # Add a deploy key to a project repo = pagure.get_authorized_project(self.session, 'test') @@ -593,18 +593,18 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/dropdeploykey/1', follow_redirects=True) self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) + self.assertNotIn('Deploy key removed', output.data.decode('utf-8')) data = {'csrf_token': csrf_token} output = self.app.post( '/test/dropdeploykey/1', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) + self.assertIn('Deploy key removed', output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') @patch.dict('pagure.APP.config', {'DEPLOY_KEY': False}) @@ -654,7 +654,7 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.post('/test/settings') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -663,11 +663,11 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/dropuser/2', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '\n User does not have any ' - 'access on the repo', output.data) + 'access on the repo', output.data.decode('utf-8')) # Add an user to a project repo = pagure.get_authorized_project(self.session, 'test') @@ -686,11 +686,11 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/dropuser/2', follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertNotIn( - '\n User removed', output.data) - self.assertIn('action="/test/dropuser/2">', output.data) + '\n User removed', output.data.decode('utf-8')) + self.assertIn('action="/test/dropuser/2">', output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertEqual(len(repo.users), 1) @@ -699,11 +699,11 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/dropuser/2', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( - '\n User removed', output.data) - self.assertNotIn('action="/test/dropuser/2">', output.data) + '\n User removed', output.data.decode('utf-8')) + self.assertNotIn('action="/test/dropuser/2">', output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertEqual(len(repo.users), 0) @@ -731,7 +731,7 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.post('/test/settings') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -810,7 +810,7 @@ class PagureFlaskRepotests(tests.Modeltests): with tests.user_set(pagure.APP, user): output = self.app.post('/test/settings') - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {'csrf_token': csrf_token} @@ -819,12 +819,12 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/dropgroup/2', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '\n ' 'Group does not seem to be part of this project', - output.data) + output.data.decode('utf-8')) # Create the new group msg = pagure.lib.add_group( @@ -858,12 +858,12 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/dropgroup/1', follow_redirects=True) self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) + self.assertIn('action="/test/dropgroup/1">', output.data.decode('utf-8')) self.assertNotIn( '\n Group removed', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertEqual(len(repo.groups), 1) @@ -872,12 +872,12 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/dropgroup/1', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '\n Group removed', - output.data) - self.assertNotIn('action="/test/dropgroup/1">', output.data) + output.data.decode('utf-8')) + self.assertNotIn('action="/test/dropgroup/1">', output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertEqual(len(repo.groups), 0) @@ -918,10 +918,10 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.post('/test/update', follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = { @@ -932,13 +932,13 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( - '', output.data) + '', output.data.decode('utf-8')) self.assertIn( '\n Project updated', - output.data) + output.data.decode('utf-8')) # Edit the avatar_email data = { @@ -950,14 +950,14 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertIn( '\n Project updated', - output.data) + output.data.decode('utf-8')) # Reset the avatar_email data = { @@ -969,13 +969,13 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( - '', output.data) + '', output.data.decode('utf-8')) self.assertIn( '\n Project updated', - output.data) + output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') def test_update_project_update_tag(self, ast): @@ -998,10 +998,10 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/settings') self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # Add tag to a project so that they are added to the database @@ -1014,11 +1014,11 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '\n Project updated', - output.data) + output.data.decode('utf-8')) # Remove two of the tags of the project, they will still be in # the DB but not associated to this project @@ -1031,11 +1031,11 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '\n Project updated', - output.data) + output.data.decode('utf-8')) # Try re-adding the two tags, this used to fail before we fixed # it @@ -1048,11 +1048,11 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/update', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '\n Project updated', - output.data) + output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') def test_view_settings(self, ast): @@ -1088,18 +1088,18 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/settings') self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) # Both checkbox checked before self.assertIn( '', output.data) + 'name="pull_requests" checked=""/>', output.data.decode('utf-8')) self.assertIn( '', output.data) + 'name="issue_tracker" checked=""/>', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] data = {} @@ -1107,47 +1107,47 @@ class PagureFlaskRepotests(tests.Modeltests): '/test/settings', data=data, follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

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

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

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

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

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

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + 'name="pull_requests" checked=""/>', output.data.decode('utf-8')) self.assertIn( '', output.data) + 'name="issue_tracker" checked=""/>', output.data.decode('utf-8')) @patch('pagure.ui.repo.admin_session_timedout') def test_fields_in_view_settings(self, ast): @@ -1220,8 +1220,8 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/settings') self.assertEqual(output.status_code, 200) self.assertIn( - 'Settings - test - Pagure', output.data) - self.assertIn('

    Settings for test

    ', output.data) + 'Settings - test - Pagure', output.data.decode('utf-8')) + self.assertIn('

    Settings for test

    ', output.data.decode('utf-8')) # Check that the priorities have their empty fields self.assertIn( '''
    @@ -1235,7 +1235,7 @@ class PagureFlaskRepotests(tests.Modeltests): value="" class="form-control"/>
    -
    ''', output.data) +
    ''', output.data.decode('utf-8')) # Check that the milestones have their empty fields self.assertIn( @@ -1249,7 +1249,7 @@ class PagureFlaskRepotests(tests.Modeltests):
    -

    ''', output.data) +
    ''', output.data.decode('utf-8')) # Check that the close_status have its empty field self.assertIn( @@ -1259,7 +1259,7 @@ class PagureFlaskRepotests(tests.Modeltests): - ''', output.data) + ''', output.data.decode('utf-8')) # Check that the custom fields have their empty fields self.assertIn( @@ -1285,7 +1285,7 @@ class PagureFlaskRepotests(tests.Modeltests): - ''', output.data) + ''', output.data.decode('utf-8')) def test_view_forks(self): """ Test the view_forks endpoint. """ @@ -1298,7 +1298,7 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/forks', follow_redirects=True) self.assertEqual(output.status_code, 200) - self.assertTrue('This project has not been forked.' in output.data) + self.assertTrue('This project has not been forked.' in output.data.decode('utf-8')) @patch.dict('pagure.APP.config', {'CASE_SENSITIVE': True}) def test_view_repo_case_sensitive(self): @@ -1333,19 +1333,19 @@ 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) + self.assertTrue('

    This repo is brand new!

    ' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1 ', output.data.decode('utf-8')) 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) + self.assertTrue('

    This repo is brand new!

    ' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1 ', output.data.decode('utf-8')) self.perfMaxWalks(0, 0) self.perfReset() @@ -1357,11 +1357,11 @@ 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) + self.assertFalse('

    This repo is brand new!

    ' in output.data.decode('utf-8')) + self.assertFalse('Forked from' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1 ', output.data.decode('utf-8')) self.perfMaxWalks(3, 8) # Target: (1, 3) self.perfReset() @@ -1384,11 +1384,11 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/fork/pingou/test') self.assertEqual(output.status_code, 200) - self.assertFalse('

    This repo is brand new!

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

    This repo is brand new!

    ' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #1 ', output.data.decode('utf-8')) + self.assertTrue('Forked from' in output.data.decode('utf-8')) self.perfMaxWalks(1, 3) self.perfReset() @@ -1414,11 +1414,11 @@ 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) + self.assertFalse('

    This repo is brand new!

    ' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #3
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #3 ', output.data.decode('utf-8')) + self.assertTrue('Forked from' in output.data.decode('utf-8')) self.perfMaxWalks(3, 18) # Ideal: (1, 3) self.perfReset() @@ -1460,13 +1460,13 @@ 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) + self.assertFalse('

    This repo is brand new!

    ' in output.data.decode('utf-8')) + self.assertFalse('Forked from' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1 ', output.data.decode('utf-8')) self.assertEqual( - output.data.count(''), 0) + output.data.decode('utf-8').count(''), 0) shutil.rmtree(newpath) @@ -1495,11 +1495,11 @@ 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) + self.assertFalse('

    This repo is brand new!

    ' in output.data.decode('utf-8')) + self.assertFalse('Forked from' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1 ', output.data.decode('utf-8')) # Turn that repo into a fork repo = pagure.get_authorized_project(self.session, 'test') @@ -1520,11 +1520,11 @@ 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) + self.assertFalse('

    This repo is brand new!

    ' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #1 ', output.data.decode('utf-8')) + self.assertTrue('Forked from' in output.data.decode('utf-8')) # Add a fork of a fork item = pagure.lib.model.Project( @@ -1548,11 +1548,11 @@ 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) + self.assertFalse('

    This repo is brand new!

    ' in output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #3
    ', output.data) - self.assertTrue('Forked from' in output.data) + 'test project #3 ', output.data.decode('utf-8')) + self.assertTrue('Forked from' in output.data.decode('utf-8')) def test_view_commits(self): """ Test the view_commits endpoint. """ @@ -1570,10 +1570,10 @@ 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) + self.assertIn('

    This repo is brand new!

    ', output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1 ', output.data.decode('utf-8')) # Add some content to the git repo tests.add_content_git_repo(os.path.join(self.path, 'repos', @@ -1582,20 +1582,20 @@ 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) + self.assertNotIn('

    This repo is brand new!

    ', output.data.decode('utf-8')) + self.assertNotIn('Forked from', output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertIn('Commits - test - Pagure', output.data) + 'test project #1 ', output.data.decode('utf-8')) + self.assertIn('Commits - test - Pagure', output.data.decode('utf-8')) 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) + self.assertNotIn('

    This repo is brand new!

    ', output.data.decode('utf-8')) + self.assertNotIn('Forked from', output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) + 'test project #1 ', output.data.decode('utf-8')) # Turn that repo into a fork repo = pagure.get_authorized_project(self.session, 'test') @@ -1616,11 +1616,11 @@ 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) + self.assertNotIn('

    This repo is brand new!

    ', output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #1
    ', output.data) - self.assertIn('Forked from', output.data) + 'test project #1 ', output.data.decode('utf-8')) + self.assertIn('Forked from', output.data.decode('utf-8')) # Add a fork of a fork item = pagure.lib.model.Project( @@ -1647,11 +1647,11 @@ 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) + self.assertNotIn('

    This repo is brand new!

    ', output.data.decode('utf-8')) self.assertIn( '
    \n' - 'test project #3
    ', output.data) - self.assertIn('Forked from', output.data) + 'test project #3 ', output.data.decode('utf-8')) + self.assertIn('Forked from', output.data.decode('utf-8')) def test_compare_commits(self): """ Test the compare_commits endpoint. """ @@ -1664,40 +1664,40 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertIn( 'Diff from %s to %s - test\n - Pagure' % (c2.oid.hex, c1.oid.hex), - output.data) + output.data.decode('utf-8')) self.assertIn( '
    %s .. %s
    ' % (c2.oid.hex, c1.oid.hex), - output.data) + output.data.decode('utf-8')) self.assertIn( 'Commits \n ' + '' + '\n 2\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( '- ' + - 'Row 0', output.data) + 'Row 0', output.data.decode('utf-8')) # View inverse commits comparison output = self.app.get('/test/c/%s..%s' % (c1.oid.hex, c2.oid.hex)) self.assertEqual(output.status_code, 200) self.assertIn( 'Diff from %s to %s - test\n - Pagure' % (c1.oid.hex, c2.oid.hex), - output.data) + output.data.decode('utf-8')) self.assertIn( 'Commits \n ' + '' + '\n 2\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( '
    %s .. %s
    ' % (c1.oid.hex, c2.oid.hex), - output.data) + output.data.decode('utf-8')) self.assertIn( '' + - '+ Row 0', output.data) + '+ Row 0', output.data.decode('utf-8')) def compare_all(c1, c3): # View commits comparison @@ -1705,16 +1705,16 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) self.assertIn( '
    %s .. %s
    ' % (c1.oid.hex, c3.oid.hex), - output.data) + output.data.decode('utf-8')) self.assertIn( '+ Row 0', output.data) + '#ddffdd">+ Row 0
    ', output.data.decode('utf-8')) self.assertEqual( - output.data.count( + output.data.decode('utf-8').count( '+ Row 0'), 2) self.assertIn( @@ -1722,11 +1722,14 @@ class PagureFlaskRepotests(tests.Modeltests): '' + '\n 3\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( - 'title="View file as of 4829cf">Šource
    ', output.data) + u'title="View file as of 4829cf">Šource'.encode('utf-8'), + output.data + ) self.assertIn( - '
    file added
    ', output.data) + '
    file added
    ', + output.data.decode('utf-8')) # View inverse commits comparison output = self.app.get( @@ -1734,27 +1737,30 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) self.assertIn( '
    %s .. %s
    ' % (c3.oid.hex, c1.oid.hex), - output.data) + output.data.decode('utf-8')) self.assertIn( '@@ -1,2 +1,1' + - ' @@', output.data) + ' @@', output.data.decode('utf-8')) self.assertIn( '- ' + - 'Row 0', output.data) + 'Row 0', output.data.decode('utf-8')) self.assertIn( 'Commits \n ' + '' + '\n 3\n ', - output.data) + output.data.decode('utf-8')) self.assertIn( - 'title="View file as of 000000">Šource', output.data) + u'title="View file as of 000000">Šource'.encode('utf-8'), + output.data + ) self.assertIn( - '
    file removed
    ', output.data) + '
    file removed
    ', + output.data.decode('utf-8')) output = self.app.get('/foo/bar') # No project registered in the DB @@ -1830,12 +1836,12 @@ 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.decode('utf-8')) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) self.assertTrue( - '' in output.data) + '' in output.data.decode('utf-8')) # Empty files should also be displayed tests.add_content_to_git( @@ -1847,19 +1853,19 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertIn( 'Raw', output.data) + 'title="View as raw">Raw', output.data.decode('utf-8')) self.assertIn( '
    \n' - ' \n
    ', output.data) + ' \n ', output.data.decode('utf-8')) # View what's supposed to be an image output = self.app.get('/test/blob/master/f/test.jpg') self.assertEqual(output.status_code, 200) self.assertIn( - 'Binary files cannot be rendered.
    ', output.data) + 'Binary files cannot be rendered.
    ', output.data.decode('utf-8')) self.assertIn( 'view the raw version', - output.data) + output.data.decode('utf-8')) # View by commit id repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git')) @@ -1868,33 +1874,33 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/blob/%s/f/test.jpg' % commit.oid.hex) self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('/f/test.jpg">view the raw version', output.data.decode('utf-8')) # View by image name -- somehow we support this output = self.app.get('/test/blob/sources/f/test.jpg') self.assertEqual(output.status_code, 200) 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.data.decode('utf-8')) + self.assertIn('/f/test.jpg">view the raw version', output.data.decode('utf-8')) # 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.assertIn('/f/test_binary">view the raw version', output.data.decode('utf-8')) self.assertTrue( 'Binary files cannot be rendered.
    ' - in output.data) + in output.data.decode('utf-8')) # View folder output = self.app.get('/test/blob/master/f/folder1') self.assertEqual(output.status_code, 200) self.assertIn( '', - output.data) - self.assertIn('Tree - test - Pagure', output.data) + output.data.decode('utf-8')) + self.assertIn('Tree - test - Pagure', output.data.decode('utf-8')) self.assertIn( - '
    ', output.data) + '', output.data.decode('utf-8')) # Verify the nav links correctly when viewing a nested folder/file. output = self.app.get('/test/blob/master/f/folder1/folder2/file') @@ -1903,7 +1909,7 @@ class PagureFlaskRepotests(tests.Modeltests): '
  • \n' ' ' '  folder2\n' - '
  • ', output.data) + ' ', output.data.decode('utf-8')) # View by image name -- with a non-existant file output = self.app.get('/test/blob/sources/f/testfoo.jpg') @@ -1919,16 +1925,18 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) 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( + u'  Šource'.encode('utf-8'), + output.data) + self.assertIn('
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + 'data-line-number="1">', output.data.decode('utf-8')) self.assertTrue( '' - in output.data + in output.data.decode('utf-8') or - '' in output.data + '' in output.data.decode('utf-8') ) # Add a fork of a fork @@ -1958,17 +1966,17 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertIn( '
  • \n' '   ' - 'folder2\n
  • ', output.data) + 'folder2\n ', output.data.decode('utf-8')) 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) + self.assertIn('
    ', output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) self.assertIn( - '', output.data) + '', output.data.decode('utf-8')) @patch( 'pagure.lib.encoding_utils.decode', @@ -1991,7 +1999,7 @@ 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) + self.assertIn('Binary files cannot be rendered.
    ', output.data.decode('utf-8')) def test_view_raw_file(self): """ Test the view_raw_file endpoint. """ @@ -2018,7 +2026,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertEqual(output.headers['Content-Type'].lower(), 'text/plain; charset=ascii') - self.assertTrue(':Author: Pierre-Yves Chibon' in output.data) + self.assertTrue(':Author: Pierre-Yves Chibon' in output.data.decode('utf-8')) # Add some more content to the repo tests.add_content_git_repo(os.path.join(self.path, 'repos', @@ -2036,12 +2044,12 @@ 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) + self.assertTrue('foo\n bar' in output.data.decode('utf-8')) # 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')) + self.assertTrue(output.data.startswith(b'\x00\x00\x01\x00')) # View by commit id repo = pygit2.Repository(os.path.join(self.path, 'repos', 'test.git')) @@ -2049,19 +2057,19 @@ 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')) + self.assertTrue(output.data.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')) + self.assertTrue(output.data.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) self.assertEqual(output.headers['Content-Type'].lower(), 'application/octet-stream') - self.assertTrue(output.data.startswith('\x00\x00\x01\x00')) + self.assertTrue(output.data.startswith(b'\x00\x00\x01\x00')) # View folder output = self.app.get('/test/raw/master/f/folder1') @@ -2080,12 +2088,12 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertEqual(output.headers['Content-Type'].lower(), 'text/plain; charset=ascii') - self.assertTrue(output.data.startswith( + self.assertTrue(output.data.decode('utf-8').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( + self.assertTrue(output.data.decode('utf-8').startswith( 'diff --git a/test_binary b/test_binary\n')) # Add a fork of a fork @@ -2112,7 +2120,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertEqual(output.headers['Content-Type'].lower(), 'text/plain; charset=ascii') - self.assertTrue('foo\n bar' in output.data) + self.assertTrue('foo\n bar' in output.data.decode('utf-8')) def test_view_blame_file(self): """ Test the view_blame_file endpoint. """ @@ -2150,25 +2158,25 @@ 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) + self.assertIn('
    ', output.data.decode('utf-8')) self.assertIn( - b'', output.data) + '', output.data.decode('utf-8')) self.assertIn( - b'', output.data) - data = regex.findall(output.data) + b'', output.data.decode('utf-8')) + data = regex.findall(output.data.decode('utf-8')) 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) + self.assertIn(b'
    ', output.data.decode('utf-8')) self.assertIn( b'', output.data) + b'data-line-number="1">', output.data.decode('utf-8')) self.assertIn( - b'', output.data) - data2 = regex.findall(output.data) + b'', output.data.decode('utf-8')) + data2 = regex.findall(output.data.decode('utf-8')) self.assertEqual(len(data2), 2) self.assertNotEqual(data, data2) @@ -2176,16 +2184,16 @@ class PagureFlaskRepotests(tests.Modeltests): output = self.app.get('/test/blame/test.jpg') self.assertEqual(output.status_code, 400) self.assertIn( - b'400 Bad Request', output.data) + '400 Bad Request', output.data.decode('utf-8')) self.assertIn( - b'

    Binary files cannot be blamed

    ', output.data) + '

    Binary files cannot be blamed

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

    Page not found (404)

    ', output.data) + '

    Page not found (404)

    ', output.data.decode('utf-8')) # View by image name -- with a non-existant file output = self.app.get('/test/blame/testfoo.jpg') @@ -2201,16 +2209,21 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) 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( + u'  Šource'.encode('utf-8'), + output.data + ) + self.assertIn( + '
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + 'data-line-number="1">', output.data.decode('utf-8')) self.assertTrue( '' - in output.data + in output.data.decode('utf-8') or - '' in output.data + '' + in output.data.decode('utf-8') ) # Add a fork of a fork @@ -2238,12 +2251,12 @@ class PagureFlaskRepotests(tests.Modeltests): 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) + self.assertIn('
    ', output.data.decode('utf-8')) self.assertIn( '', output.data) + 'data-line-number="1">', output.data.decode('utf-8')) self.assertIn( - '', output.data) + '', output.data.decode('utf-8')) def test_view_commit(self): """ Test the view_commit endpoint. """ @@ -2272,15 +2285,15 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertTrue( '', output.data.decode('utf-8')) + self.assertIn('Tree - test3 - Pagure', output.data.decode('utf-8')) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) self.assertTrue( '' - in output.data) + in output.data.decode('utf-8')) self.assertFalse( - 'No content found in this repository' in output.data) + 'No content found in this repository' in output.data.decode('utf-8')) output = self.app.get( '/fork/pingou/test3/blob/master/f/folder1/folder2') self.assertEqual(output.status_code, 200) self.assertTrue( '' in output.data) + 'f/folder1/folder2/file%C5%A0">' in output.data.decode('utf-8')) @patch.dict('pagure.APP.config', {'ENABLE_DEL_PROJECTS': False}) @patch('pagure.lib.notify.send_email') @@ -2682,10 +2695,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 6', output.data) + 'class="label label-default">6', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # add issues repo = pagure.get_authorized_project(self.session, 'test') @@ -2774,10 +2787,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 6', output.data) + 'class="label label-default">6', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) output = self.app.post('/test/delete', follow_redirects=True) self.assertEqual(output.status_code, 404) @@ -2811,10 +2824,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 6', output.data) + 'class="label label-default">6', output.data.decode('utf-8')) self.assertIn( 'Forks 1', - output.data) + output.data.decode('utf-8')) output = self.app.post( '/fork/pingou/test3/delete', follow_redirects=True) @@ -2917,10 +2930,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 2', output.data) + 'class="label label-default">2', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # Only git repo item = pagure.lib.model.Project( @@ -2938,10 +2951,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 2', output.data) + 'class="label label-default">2', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # Only git and doc repo item = pagure.lib.model.Project( @@ -2959,10 +2972,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 2', output.data) + 'class="label label-default">2', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # All repo there item = pagure.lib.model.Project( @@ -2988,10 +3001,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 3', output.data) + 'class="label label-default">3', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # add issues repo = pagure.get_authorized_project(self.session, 'test') @@ -3080,19 +3093,19 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 3', output.data) + 'class="label label-default">3', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) output = self.app.post('/test/delete', follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 2', output.data) + 'class="label label-default">2', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertEqual(repo, None) @@ -3124,20 +3137,20 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 2', output.data) + 'class="label label-default">2', output.data.decode('utf-8')) self.assertIn( 'Forks 1', - output.data) + output.data.decode('utf-8')) output = self.app.post( '/fork/pingou/test3/delete', follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 2', output.data) + 'class="label label-default">2', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) @patch.dict('pagure.APP.config', {'TICKETS_FOLDER': None}) @patch('pagure.lib.notify.send_email', MagicMock(return_value=True)) @@ -3214,10 +3227,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 1', output.data) + 'class="label label-default">1', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # add user repo = pagure.get_authorized_project(self.session, 'test') @@ -3242,10 +3255,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 1', output.data) + 'class="label label-default">1', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertNotEqual(repo, None) repo = pagure.get_authorized_project(self.session, 'test2') @@ -3256,10 +3269,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 0', output.data) + 'class="label label-default">0', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # Check after repo = pagure.get_authorized_project(self.session, 'test') @@ -3302,10 +3315,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 1', output.data) + 'class="label label-default">1', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # Create group msg = pagure.lib.add_group( @@ -3348,10 +3361,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 1', output.data) + 'class="label label-default">1', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertNotEqual(repo, None) @@ -3360,10 +3373,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 0', output.data) + 'class="label label-default">0', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # Check after repo = pagure.get_authorized_project(self.session, 'test') @@ -3404,10 +3417,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 1', output.data) + 'class="label label-default">1', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # Create the issue repo = pagure.get_authorized_project(self.session, 'test') @@ -3439,10 +3452,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n My Projects 1', output.data) + 'class="label label-default">1', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) repo = pagure.get_authorized_project(self.session, 'test') self.assertNotEqual(repo, None) repo = pagure.get_authorized_project(self.session, 'test2') @@ -3453,10 +3466,10 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Projects 0', output.data) + 'class="label label-default">0', output.data.decode('utf-8')) self.assertIn( 'Forks 0', - output.data) + output.data.decode('utf-8')) # Check after repo = pagure.get_authorized_project(self.session, 'test') @@ -3479,9 +3492,9 @@ index 0000000..fb7093d pagure.APP.config['WEBHOOK'] = True output = self.app.get('/new/') self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] output = self.app.post('/foo/hook_token') @@ -3516,7 +3529,7 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '\n New hook token generated', - output.data) + output.data.decode('utf-8')) pagure.APP.config['WEBHOOK'] = False repo = pagure.get_authorized_project(self.session, 'test') @@ -3537,9 +3550,9 @@ index 0000000..fb7093d with tests.user_set(pagure.APP, user): output = self.app.get('/new/') self.assertEqual(output.status_code, 200) - self.assertIn('Create new Project', output.data) + self.assertIn('Create new Project', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] output = self.app.post('/foo/regenerate') @@ -3586,7 +3599,7 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '\n Tickets git repo updated', - output.data) + output.data.decode('utf-8')) # Create a request to play with repo = pagure.get_authorized_project(self.session, 'test') @@ -3609,7 +3622,7 @@ index 0000000..fb7093d self.assertEqual(output.status_code, 200) self.assertIn( '\n Requests git repo updated', - output.data) + output.data.decode('utf-8')) def test_view_tags(self): """ Test the view_tags endpoint. """ @@ -3627,7 +3640,7 @@ index 0000000..fb7093d output = self.app.get('/test/releases') self.assertEqual(output.status_code, 200) - self.assertIn('This project has not been tagged.', output.data) + self.assertIn('This project has not been tagged.', output.data.decode('utf-8')) # Add a README to the git repo - First commit tests.add_readme_git_repo(os.path.join(self.path, 'repos', 'test.git')) @@ -3640,9 +3653,9 @@ index 0000000..fb7093d output = self.app.get('/test/releases') self.assertEqual(output.status_code, 200) - self.assertIn('0.0.1', output.data) - self.assertIn('', output.data) - self.assertTrue(output.data.count('tagid'), 1) + self.assertIn('0.0.1', output.data.decode('utf-8')) + self.assertIn('', output.data.decode('utf-8')) + self.assertTrue(output.data.decode('utf-8').count('tagid'), 1) def test_edit_file(self): """ Test the edit_file endpoint. """ @@ -3697,10 +3710,10 @@ index 0000000..fb7093d '  master' '
  • ' '  sources
  • ', - output.data) + output.data.decode('utf-8')) self.assertIn( '', - output.data) + output.data.decode('utf-8')) # Verify the nav links correctly when editing a file. output = self.app.get('/test/blob/master/f/folder1/folder2/file') @@ -3709,20 +3722,20 @@ index 0000000..fb7093d '
  • \n' ' ' '  folder2\n' - '
  • ', output.data) + ' ', output.data.decode('utf-8')) - csrf_token = output.data.split( + csrf_token = output.data.decode('utf-8').split( 'name="csrf_token" type="hidden" value="')[1].split('">')[0] # View what's supposed to be an image output = self.app.get('/test/edit/master/f/test.jpg') self.assertEqual(output.status_code, 400) - self.assertIn('

    Cannot edit binary files

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

    Cannot edit binary files

    ', output.data.decode('utf-8')) # Check file before the commit: output = self.app.get('/test/raw/master/f/sources') self.assertEqual(output.status_code, 200) - self.assertEqual(output.data, 'foo\n bar') + self.assertEqual(output.data.decode('utf-8'), 'foo\n bar') # No CSRF Token data = { @@ -3733,25 +3746,25 @@ index 0000000..fb7093d output = self.app.post('/test/edit/master/f/sources', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Edit - test - Pagure', output.data) + 'Edit - test - Pagure', output.data.decode('utf-8')) # Check that nothing changed output = self.app.get('/test/raw/master/f/sources') self.assertEqual(output.status_code, 200) - self.assertEqual(output.data, 'foo\n bar') + self.assertEqual(output.data.decode('utf-8'), 'foo\n bar') # Missing email data['csrf_token'] = csrf_token output = self.app.post('/test/edit/master/f/sources', data=data) self.assertEqual(output.status_code, 200) self.assertIn( - 'Edit - test - Pagure', output.data) + 'Edit - test - Pagure', output.data.decode('utf-8')) # Invalid email data['email'] = 'pingou@fp.o' output = self.app.post('/test/edit/master/f/sources', data=data) self.assertIn( - 'Edit - test - Pagure', output.data) + 'Edit - test - Pagure', output.data.decode('utf-8')) # Works data['email'] = 'bar@pingou.com' @@ -3761,13 +3774,13 @@ index 0000000..fb7093d follow_redirects=True) self.assertEqual(output.status_code, 200) self.assertIn( - 'Commits - test - Pagure', output.data) - self.assertIn('test commit', output.data) + 'Commits - test - Pagure', output.data.decode('utf-8')) + self.assertIn('test commit', output.data.decode('utf-8')) # Check file after the commit: output = self.app.get('/test/raw/master/f/sources') self.assertEqual(output.status_code, 200) - self.assertEqual(output.data, 'foo\n bar\n baz') + self.assertEqual(output.data.decode('utf-8'), 'foo\n bar\n baz') # Add a fork of a fork item = pagure.lib.model.Project( @@ -3797,7 +3810,7 @@ index 0000000..fb7093d '
  •   ' - 'folder2\n
  • ', output.data) + 'folder2\n ', output.data.decode('utf-8')) output = self.app.get('/fork/pingou/test3/edit/master/f/sources') self.assertEqual(output.status_code, 200) @@ -3806,10 +3819,10 @@ index 0000000..fb7093d '  master' '
  • ' '  sources' - '
  • ', output.data) + '', output.data.decode('utf-8')) self.assertIn( '', output.data) + '', output.data.decode('utf-8')) @patch.dict('pagure.APP.config', {'LOCAL_SSH_KEY': False}) @patch('pagure.ui.app.admin_session_timedout') @@ -608,10 +608,10 @@ class PagureFlaskApptests(tests.Modeltests): self.assertEqual(output.status_code, 200) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertNotIn( '', output.data) + '', output.data.decode('utf-8')) # Before user = pagure.lib.get_user(self.session, 'foo') @@ -631,13 +631,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) + self.assertNotIn('Public ssh key updated', + output.data.decode('utf-8')) self.assertIn( '
    \n Basic Information\n' - '
    ', output.data) + '
    ', output.data.decode('utf-8')) self.assertNotIn( '
     barRow 0
     barRow 0