From 22d4833ae0171b39f3b0aaa5826d8ce64d1b8199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B5=D0=BF=D0=B0=D0=BD=D0=B5=D0=BD=D0=BA?= =?UTF-8?q?=D0=BE=20=D0=9E=D0=BB=D1=8C=D0=B3=D0=B0?= Date: Thu, 6 May 2021 17:53:28 +0300 Subject: [PATCH] Pylint for lesson --- README.md | 2 +- access_controller/settings.py | 4 +--- main/models.py | 3 +-- main/tests.py | 35 ++++++++++++++++++++++++++++++++--- 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4835b7e..8885598 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ docker run -d -p 8000:8000 \ Пример полной конфигурации можно найти в [.env.example](.env.example). Почту и токен админа ZenDesk взять у руководителя (если вы не админ). ## Для проверки pylint используем: -pylint ../access_controller +pylint ../access_controller (каталог, где лежит проект) ## Для приведения файлов к стандарту PEP8 используем: autopep8 --in-place filename diff --git a/access_controller/settings.py b/access_controller/settings.py index 37a7e63..b1b98a9 100644 --- a/access_controller/settings.py +++ b/access_controller/settings.py @@ -13,7 +13,7 @@ import os from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. -import django as django + BASE_DIR = Path(__file__).resolve().parent.parent @@ -181,5 +181,3 @@ ACTRL_ZENDESK_SUBDOMAIN = os.getenv('ACTRL_ZENDESK_SUBDOMAIN') or os.getenv('ZD_ ACTRL_API_EMAIL = os.getenv('ACTRL_API_EMAIL') or os.getenv('ACCESS_CONTROLLER_API_EMAIL') ACTRL_API_TOKEN = os.getenv('ACTRL_API_TOKEN') or os.getenv('ACCESS_CONTROLLER_API_TOKEN') ACTRL_API_PASSWORD = os.getenv('ACTRL_API_PASSWORD') or os.getenv('ACCESS_CONTROLLER_API_PASSWORD') - - diff --git a/main/models.py b/main/models.py index 24db2f2..6c5563a 100644 --- a/main/models.py +++ b/main/models.py @@ -40,9 +40,8 @@ class UserProfile(models.Model): :return: Роль пользователя в Zendesk """ - id = self.custom_role_id for role, r_id in ZENDESK_ROLES.items(): - if r_id == id: + if r_id == self.custom_role_id: return role return 'UNDEFINED' diff --git a/main/tests.py b/main/tests.py index 42c8542..b36c130 100644 --- a/main/tests.py +++ b/main/tests.py @@ -1,3 +1,8 @@ +""" +Тесты. +""" + + from urllib.parse import urlparse from django.contrib.auth import get_user_model @@ -11,31 +16,49 @@ from main.zendesk_admin import zenpy class RegistrationTestCase(TestCase): + """ + Класс тестирования регистрации пользователя. + """ fixtures = ['fixtures/data.json'] - def setUp(self): + def setUp(self) -> None: + """ + Функция предтестовых настроек. + """ self.email_backend = 'django.core.mail.backends.locmem.EmailBackend' self.any_zendesk_user_email = 'idar.sokurov.05@mail.ru' self.zendesk_admin_email = 'idar.sokurov.05@mail.ru' self.client = Client() - def test_registration_complete_redirect(self): + def test_registration_complete_redirect(self) -> None: + """ + Функция тестирования успешно завершенной регистрации. + """ with self.settings(EMAIL_BACKEND=self.email_backend): resp = self.client.post(reverse('registration'), data={'email': self.any_zendesk_user_email}) self.assertRedirects(resp, reverse('password_reset_done')) def test_registration_fail_redirect(self): + """ + Функция тестирования неуспешной регистрации. + """ with self.settings(EMAIL_BACKEND=self.email_backend): resp = self.client.post(reverse('registration'), data={'email': self.any_zendesk_user_email + 'asd'}) self.assertRedirects(resp, reverse('django_registration_disallowed')) def test_registration_user_already_exist(self): + """ + Функция тестирования попытки регистрации уже зарегистрированного пользователя. + """ with self.settings(EMAIL_BACKEND=self.email_backend) and translation.override('ru'): resp = self.client.post(reverse('registration'), data={'email': '123@test.ru'}) self.assertContains(resp, 'Этот адрес электронной почты уже используется', count=1, status_code=200) def test_registration_email_sending(self): + """ + Функция тестирования отправки email. # TODO: Найти способ лучше проверять сообщения + """ email_template = [ '', 'Вы получили это письмо, потому что вы (или кто-то другой) запросили восстановление пароля ' @@ -62,13 +85,16 @@ class RegistrationTestCase(TestCase): self.assertEqual(mail.outbox[0].from_email, sets.DEFAULT_FROM_EMAIL) message = mail.outbox[0].body.split('\n') - for i in range(len(message)): + for i in enumerate(message): if email_template[i] != 'url': self.assertEqual(message[i], email_template[i]) else: self.assertTrue(urlparse(message[i]).scheme) def test_registration_user_creating(self): + """ + Функция тестирования регистрации пользователя (сверяем имя с именем в Zendesk. + """ with self.settings(EMAIL_BACKEND=self.email_backend): self.client.post(reverse('registration'), data={'email': self.any_zendesk_user_email}) user = get_user_model().objects.get(email=self.any_zendesk_user_email) @@ -76,6 +102,9 @@ class RegistrationTestCase(TestCase): self.assertEqual(user.userprofile.name, zendesk_user.name) def test_permissions_applying(self): + """ + Функция тестирования проверке присвоения роли admin. + """ with self.settings(EMAIL_BACKEND=self.email_backend): self.client.post(reverse('registration'), data={'email': self.zendesk_admin_email}) user = get_user_model().objects.get(email=self.zendesk_admin_email)