core -- Apply black + isort to all files

This commit is contained in:
Aurélien Delobelle 2018-10-06 12:35:49 +02:00
parent 104e71dcf6
commit fdd2b35289
196 changed files with 10727 additions and 8365 deletions

View file

@ -1,10 +1,9 @@
from decimal import Decimal
import djconfig
from django.test import TestCase
from django.utils import timezone
import djconfig
from gestioncof.models import User
from kfet.config import kfet_config
from kfet.models import Account
@ -18,18 +17,18 @@ class ConfigTest(TestCase):
djconfig.reload_maybe()
def test_get(self):
self.assertTrue(hasattr(kfet_config, 'subvention_cof'))
self.assertTrue(hasattr(kfet_config, "subvention_cof"))
def test_subvention_cof(self):
reduction_cof = Decimal('20')
subvention_cof = Decimal('25')
reduction_cof = Decimal("20")
subvention_cof = Decimal("25")
kfet_config.set(reduction_cof=reduction_cof)
self.assertEqual(kfet_config.subvention_cof, subvention_cof)
def test_set_decimal(self):
"""Test field of decimal type."""
reduction_cof = Decimal('10')
reduction_cof = Decimal("10")
# IUT
kfet_config.set(reduction_cof=reduction_cof)
# check
@ -37,9 +36,8 @@ class ConfigTest(TestCase):
def test_set_modelinstance(self):
"""Test field of model instance type."""
user = User.objects.create(username='foo_user')
account = Account.objects.create(trigramme='FOO',
cofprofile=user.profile)
user = User.objects.create(username="foo_user")
account = Account.objects.create(trigramme="FOO", cofprofile=user.profile)
# IUT
kfet_config.set(addcost_for=account)
# check

View file

@ -11,14 +11,14 @@ from .utils import create_user
class KPsulCheckoutFormTests(TestCase):
def setUp(self):
self.now = timezone.now()
user = create_user()
self.c1 = Checkout.objects.create(
name='C1', balance=10,
name="C1",
balance=10,
created_by=user.profile.account_kfet,
valid_from=self.now,
valid_to=self.now + datetime.timedelta(days=1),
@ -27,13 +27,12 @@ class KPsulCheckoutFormTests(TestCase):
self.form = KPsulCheckoutForm()
def test_checkout(self):
checkout_f = self.form.fields['checkout']
self.assertListEqual(list(checkout_f.choices), [
('', '---------'),
(self.c1.pk, 'C1'),
])
checkout_f = self.form.fields["checkout"]
self.assertListEqual(
list(checkout_f.choices), [("", "---------"), (self.c1.pk, "C1")]
)
@mock.patch('django.utils.timezone.now')
@mock.patch("django.utils.timezone.now")
def test_checkout_valid(self, mock_now):
"""
Checkout are filtered using the current datetime.
@ -44,5 +43,5 @@ class KPsulCheckoutFormTests(TestCase):
form = KPsulCheckoutForm()
checkout_f = form.fields['checkout']
self.assertListEqual(list(checkout_f.choices), [('', '---------')])
checkout_f = form.fields["checkout"]
self.assertListEqual(list(checkout_f.choices), [("", "---------")])

View file

@ -12,26 +12,24 @@ User = get_user_model()
class AccountTests(TestCase):
def setUp(self):
self.account = Account(trigramme='000')
self.account.save({'username': 'user'})
self.account = Account(trigramme="000")
self.account.save({"username": "user"})
def test_password(self):
self.account.change_pwd('anna')
self.account.change_pwd("anna")
self.account.save()
self.assertEqual(Account.objects.get_by_password('anna'), self.account)
self.assertEqual(Account.objects.get_by_password("anna"), self.account)
with self.assertRaises(Account.DoesNotExist):
Account.objects.get_by_password(None)
with self.assertRaises(Account.DoesNotExist):
Account.objects.get_by_password('bernard')
Account.objects.get_by_password("bernard")
class CheckoutTests(TestCase):
def setUp(self):
self.now = timezone.now()

View file

@ -1,14 +1,13 @@
from unittest.mock import patch
from django.test import TestCase, Client
from django.contrib.auth.models import User, Permission
from django.contrib.auth.models import Permission, User
from django.test import Client, TestCase
from kfet.models import Account, Article, ArticleCategory
class TestStats(TestCase):
@patch('gestioncof.signals.messages')
@patch("gestioncof.signals.messages")
def test_user_stats(self, mock_messages):
"""
Checks that we can get the stat-related pages without any problem.
@ -28,8 +27,7 @@ class TestStats(TestCase):
Account.objects.create(trigramme="BAR", cofprofile=user2.profile)
article = Article.objects.create(
name="article",
category=ArticleCategory.objects.create(name="C")
name="article", category=ArticleCategory.objects.create(name="C")
)
# Each user have its own client
@ -43,12 +41,17 @@ class TestStats(TestCase):
user_urls = [
"/k-fet/accounts/FOO/stat/operations/list",
"/k-fet/accounts/FOO/stat/operations?{}".format(
'&'.join(["scale=day",
"types=['purchase']",
"scale_args={'n_steps':+7,+'last':+True}",
"format=json"])),
"&".join(
[
"scale=day",
"types=['purchase']",
"scale_args={'n_steps':+7,+'last':+True}",
"format=json",
]
)
),
"/k-fet/accounts/FOO/stat/balance/list",
"/k-fet/accounts/FOO/stat/balance?format=json"
"/k-fet/accounts/FOO/stat/balance?format=json",
]
for url in user_urls:
resp = client.get(url)
@ -60,7 +63,7 @@ class TestStats(TestCase):
# receives a Redirect response
articles_urls = [
"/k-fet/articles/{}/stat/sales/list".format(article.pk),
"/k-fet/articles/{}/stat/sales".format(article.pk)
"/k-fet/articles/{}/stat/sales".format(article.pk),
]
for url in articles_urls:
resp = client.get(url)

View file

@ -7,86 +7,79 @@ from gestioncof.models import CofProfile
from ..models import Account
from .testcases import TestCaseMixin
from .utils import (
create_user, create_team, create_root, get_perms, user_add_perms,
)
from .utils import create_root, create_team, create_user, get_perms, user_add_perms
User = get_user_model()
class UserHelpersTests(TestCaseMixin, TestCase):
def test_create_user(self):
"""create_user creates a basic user and its account."""
u = create_user()
a = u.profile.account_kfet
self.assertInstanceExpected(u, {
'get_full_name': 'first last',
'username': 'user',
})
self.assertInstanceExpected(
u, {"get_full_name": "first last", "username": "user"}
)
self.assertFalse(u.user_permissions.exists())
self.assertEqual('000', a.trigramme)
self.assertEqual("000", a.trigramme)
def test_create_team(self):
u = create_team()
a = u.profile.account_kfet
self.assertInstanceExpected(u, {
'get_full_name': 'team member',
'username': 'team',
})
self.assertTrue(u.has_perm('kfet.is_team'))
self.assertInstanceExpected(
u, {"get_full_name": "team member", "username": "team"}
)
self.assertTrue(u.has_perm("kfet.is_team"))
self.assertEqual('100', a.trigramme)
self.assertEqual("100", a.trigramme)
def test_create_root(self):
u = create_root()
a = u.profile.account_kfet
self.assertInstanceExpected(u, {
'get_full_name': 'super user',
'username': 'root',
'is_superuser': True,
'is_staff': True,
})
self.assertInstanceExpected(
u,
{
"get_full_name": "super user",
"username": "root",
"is_superuser": True,
"is_staff": True,
},
)
self.assertEqual('200', a.trigramme)
self.assertEqual("200", a.trigramme)
class PermHelpersTest(TestCaseMixin, TestCase):
def setUp(self):
cts = ContentType.objects.get_for_models(Account, CofProfile)
self.perm1 = Permission.objects.create(
content_type=cts[Account],
codename='test_perm',
name='Perm for test',
content_type=cts[Account], codename="test_perm", name="Perm for test"
)
self.perm2 = Permission.objects.create(
content_type=cts[CofProfile],
codename='another_test_perm',
name='Another one',
codename="another_test_perm",
name="Another one",
)
self.perm_team = Permission.objects.get(
content_type__app_label='kfet',
codename='is_team',
content_type__app_label="kfet", codename="is_team"
)
def test_get_perms(self):
perms = get_perms('kfet.test_perm', 'gestioncof.another_test_perm')
self.assertDictEqual(perms, {
'kfet.test_perm': self.perm1,
'gestioncof.another_test_perm': self.perm2,
})
perms = get_perms("kfet.test_perm", "gestioncof.another_test_perm")
self.assertDictEqual(
perms,
{"kfet.test_perm": self.perm1, "gestioncof.another_test_perm": self.perm2},
)
def test_user_add_perms(self):
user = User.objects.create_user(username='user', password='user')
user = User.objects.create_user(username="user", password="user")
user.user_permissions.add(self.perm1)
user_add_perms(user, ['kfet.is_team', 'gestioncof.another_test_perm'])
user_add_perms(user, ["kfet.is_team", "gestioncof.another_test_perm"])
self.assertQuerysetEqual(
user.user_permissions.all(),

File diff suppressed because it is too large Load diff

View file

@ -37,34 +37,32 @@ class TestCaseMixin:
full_path = request.get_full_path()
querystring = QueryDict(mutable=True)
querystring['next'] = full_path
querystring["next"] = full_path
login_url = '/login?' + querystring.urlencode(safe='/')
login_url = "/login?" + querystring.urlencode(safe="/")
# We don't focus on what the login view does.
# So don't fetch the redirect.
self.assertRedirects(
response, login_url,
fetch_redirect_response=False,
)
self.assertRedirects(response, login_url, fetch_redirect_response=False)
except AssertionError:
raise AssertionError(
"%(http_method)s request at %(path)s should be forbidden for "
"%(username)s user.\n"
"Response isn't 403, nor a redirect to login view. Instead, "
"response code is %(code)d." % {
'http_method': request.method,
'path': request.get_full_path(),
'username': (
"response code is %(code)d."
% {
"http_method": request.method,
"path": request.get_full_path(),
"username": (
"'{}'".format(request.user)
if request.user.is_authenticated
else 'anonymous'
else "anonymous"
),
'code': response.status_code,
"code": response.status_code,
}
)
def assertForbiddenKfet(self, response, form_ctx='form'):
def assertForbiddenKfet(self, response, form_ctx="form"):
"""
Test that a response (retrieved with a Client) contains error due to
lack of kfet permissions.
@ -83,7 +81,7 @@ class TestCaseMixin:
form = response.context[form_ctx]
self.assertIn("Permission refusée", form.non_field_errors())
except (AssertionError, AttributeError, KeyError):
messages = [str(msg) for msg in response.context['messages']]
messages = [str(msg) for msg in response.context["messages"]]
self.assertIn("Permission refusée", messages)
except AssertionError:
request = response.wsgi_request
@ -91,15 +89,16 @@ class TestCaseMixin:
"%(http_method)s request at %(path)s should raise an error "
"for %(username)s user.\n"
"Cannot find any errors in non-field errors of form "
"'%(form_ctx)s', nor in messages." % {
'http_method': request.method,
'path': request.get_full_path(),
'username': (
"'%(form_ctx)s', nor in messages."
% {
"http_method": request.method,
"path": request.get_full_path(),
"username": (
"'%s'" % request.user
if request.user.is_authenticated
else 'anonymous'
else "anonymous"
),
'form_ctx': form_ctx,
"form_ctx": form_ctx,
}
)
@ -131,10 +130,9 @@ class TestCaseMixin:
if type(expected) == dict:
parsed = urlparse(actual)
for part, expected_part in expected.items():
if part == 'query':
if part == "query":
self.assertDictEqual(
parse_qs(parsed.query),
expected.get('query', {}),
parse_qs(parsed.query), expected.get("query", {})
)
else:
self.assertEqual(getattr(parsed, part), expected_part)
@ -215,10 +213,11 @@ class ViewTestCaseMixin(TestCaseMixin):
can be given by defining an attribute '<method(lowercase)>_data'.
"""
url_name = None
url_expected = None
http_methods = ['GET']
http_methods = ["GET"]
auth_user = None
auth_forbidden = []
@ -232,7 +231,7 @@ class ViewTestCaseMixin(TestCaseMixin):
# Signals handlers on login/logout send messages.
# Due to the way the Django' test Client performs login, this raise an
# error. As workaround, we mock the Django' messages module.
patcher_messages = mock.patch('gestioncof.signals.messages')
patcher_messages = mock.patch("gestioncof.signals.messages")
patcher_messages.start()
self.addCleanup(patcher_messages.stop)
@ -268,14 +267,14 @@ class ViewTestCaseMixin(TestCaseMixin):
# Format desc: username, password, trigramme
users_base = {
# user, user, 000
'user': create_user(),
"user": create_user(),
# team, team, 100
'team': create_team(),
"team": create_team(),
# root, root, 200
'root': create_root(),
"root": create_root(),
}
if self.with_liq:
users_base['liq'] = create_user('liq', 'LIQ')
users_base["liq"] = create_user("liq", "LIQ")
return users_base
@cached_property
@ -300,7 +299,7 @@ class ViewTestCaseMixin(TestCaseMixin):
def register_user(self, label, user):
self.users[label] = user
if hasattr(user.profile, 'account_kfet'):
if hasattr(user.profile, "account_kfet"):
self.accounts[label] = user.profile.account_kfet
def get_user(self, label):
@ -310,22 +309,25 @@ class ViewTestCaseMixin(TestCaseMixin):
@property
def urls_conf(self):
return [{
'name': self.url_name,
'args': getattr(self, 'url_args', []),
'kwargs': getattr(self, 'url_kwargs', {}),
'expected': self.url_expected,
}]
return [
{
"name": self.url_name,
"args": getattr(self, "url_args", []),
"kwargs": getattr(self, "url_kwargs", {}),
"expected": self.url_expected,
}
]
@property
def t_urls(self):
return [
reverse(
url_conf['name'],
args=url_conf.get('args', []),
kwargs=url_conf.get('kwargs', {}),
url_conf["name"],
args=url_conf.get("args", []),
kwargs=url_conf.get("kwargs", {}),
)
for url_conf in self.urls_conf]
for url_conf in self.urls_conf
]
@property
def url(self):
@ -333,7 +335,7 @@ class ViewTestCaseMixin(TestCaseMixin):
def test_urls(self):
for url, conf in zip(self.t_urls, self.urls_conf):
self.assertEqual(url, conf['expected'])
self.assertEqual(url, conf["expected"])
def test_forbidden(self):
for method in self.http_methods:
@ -348,7 +350,7 @@ class ViewTestCaseMixin(TestCaseMixin):
client.login(username=user, password=user)
send_request = getattr(client, method)
data = getattr(self, '{}_data'.format(method), {})
data = getattr(self, "{}_data".format(method), {})
r = send_request(url, data)
self.assertForbidden(r)

View file

@ -3,7 +3,6 @@ from django.contrib.auth.models import Permission
from ..models import Account
User = get_user_model()
@ -23,27 +22,27 @@ def _create_user_and_account(user_attrs, account_attrs, perms=None):
the account password is 'kfetpwd_<user pwd>'.
"""
user_pwd = user_attrs.pop('password', user_attrs['username'])
user_pwd = user_attrs.pop("password", user_attrs["username"])
user = User.objects.create(**user_attrs)
user.set_password(user_pwd)
user.save()
account_attrs['cofprofile'] = user.profile
kfet_pwd = account_attrs.pop('password', 'kfetpwd_{}'.format(user_pwd))
account_attrs["cofprofile"] = user.profile
kfet_pwd = account_attrs.pop("password", "kfetpwd_{}".format(user_pwd))
account = Account.objects.create(**account_attrs)
if perms is not None:
user = user_add_perms(user, perms)
if 'kfet.is_team' in perms:
if "kfet.is_team" in perms:
account.change_pwd(kfet_pwd)
account.save()
return user
def create_user(username='user', trigramme='000', **kwargs):
def create_user(username="user", trigramme="000", **kwargs):
"""
Create a user without any permission and its kfet account.
@ -65,20 +64,20 @@ def create_user(username='user', trigramme='000', **kwargs):
* trigramme: 000
"""
user_attrs = kwargs.setdefault('user_attrs', {})
user_attrs = kwargs.setdefault("user_attrs", {})
user_attrs.setdefault('username', username)
user_attrs.setdefault('first_name', 'first')
user_attrs.setdefault('last_name', 'last')
user_attrs.setdefault('email', 'mail@user.net')
user_attrs.setdefault("username", username)
user_attrs.setdefault("first_name", "first")
user_attrs.setdefault("last_name", "last")
user_attrs.setdefault("email", "mail@user.net")
account_attrs = kwargs.setdefault('account_attrs', {})
account_attrs.setdefault('trigramme', trigramme)
account_attrs = kwargs.setdefault("account_attrs", {})
account_attrs.setdefault("trigramme", trigramme)
return _create_user_and_account(**kwargs)
def create_team(username='team', trigramme='100', **kwargs):
def create_team(username="team", trigramme="100", **kwargs):
"""
Create a user, member of the kfet team, and its kfet account.
@ -101,23 +100,23 @@ def create_team(username='team', trigramme='100', **kwargs):
* kfet password: kfetpwd_team
"""
user_attrs = kwargs.setdefault('user_attrs', {})
user_attrs = kwargs.setdefault("user_attrs", {})
user_attrs.setdefault('username', username)
user_attrs.setdefault('first_name', 'team')
user_attrs.setdefault('last_name', 'member')
user_attrs.setdefault('email', 'mail@team.net')
user_attrs.setdefault("username", username)
user_attrs.setdefault("first_name", "team")
user_attrs.setdefault("last_name", "member")
user_attrs.setdefault("email", "mail@team.net")
account_attrs = kwargs.setdefault('account_attrs', {})
account_attrs.setdefault('trigramme', trigramme)
account_attrs = kwargs.setdefault("account_attrs", {})
account_attrs.setdefault("trigramme", trigramme)
perms = kwargs.setdefault('perms', [])
perms.append('kfet.is_team')
perms = kwargs.setdefault("perms", [])
perms.append("kfet.is_team")
return _create_user_and_account(**kwargs)
def create_root(username='root', trigramme='200', **kwargs):
def create_root(username="root", trigramme="200", **kwargs):
"""
Create a superuser and its kfet account.
@ -141,16 +140,16 @@ def create_root(username='root', trigramme='200', **kwargs):
* kfet password: kfetpwd_root
"""
user_attrs = kwargs.setdefault('user_attrs', {})
user_attrs = kwargs.setdefault("user_attrs", {})
user_attrs.setdefault('username', username)
user_attrs.setdefault('first_name', 'super')
user_attrs.setdefault('last_name', 'user')
user_attrs.setdefault('email', 'mail@root.net')
user_attrs['is_superuser'] = user_attrs['is_staff'] = True
user_attrs.setdefault("username", username)
user_attrs.setdefault("first_name", "super")
user_attrs.setdefault("last_name", "user")
user_attrs.setdefault("email", "mail@root.net")
user_attrs["is_superuser"] = user_attrs["is_staff"] = True
account_attrs = kwargs.setdefault('account_attrs', {})
account_attrs.setdefault('trigramme', trigramme)
account_attrs = kwargs.setdefault("account_attrs", {})
account_attrs.setdefault("trigramme", trigramme)
return _create_user_and_account(**kwargs)
@ -159,10 +158,9 @@ def get_perms(*labels):
"""Return Permission instances from a list of '<app>.<perm_codename>'."""
perms = {}
for label in set(labels):
app_label, codename = label.split('.', 1)
app_label, codename = label.split(".", 1)
perms[label] = Permission.objects.get(
content_type__app_label=app_label,
codename=codename,
content_type__app_label=app_label, codename=codename
)
return perms