Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: Set up pre-commit hooks and fix quality nits #308

Merged
merged 2 commits into from
Aug 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
coverage:
status:
project:
default: false
tests:
paths: tests
informational: true
knox:
paths: knox
informational: true
patch: off
5 changes: 5 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[run]
branch = True
source = knox
omit =
*/migrations/*
8 changes: 7 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,14 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade tox tox-gh-actions
python -m pip install --upgrade tox tox-gh-actions coverage

- name: Tox tests
run: |
tox -v

- name: Generate coverage XML report
run: coverage xml

- name: Codecov
uses: codecov/codecov-action@v3
9 changes: 9 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
repos:
- repo: https://github.com/PyCQA/isort
rev: 5.11.5
hooks:
- id: isort
- repo: https://github.com/PyCQA/flake8
rev: 6.1.0
hooks:
- id: flake8
16 changes: 12 additions & 4 deletions tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def get_basic_auth_header(username, password):
token_prefix_too_long_knox = knox_settings.defaults.copy()
token_prefix_too_long_knox["TOKEN_PREFIX"] = token_prefix_too_long


class AuthTestCase(TestCase):

def setUp(self):
Expand Down Expand Up @@ -325,7 +326,10 @@ def handler(sender, username, **kwargs):

token_expired.connect(handler)

instance, token = AuthToken.objects.create(user=self.user, expiry=timedelta(seconds=-1))
instance, token = AuthToken.objects.create(
user=self.user,
expiry=timedelta(seconds=-1),
)
self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % token))
self.client.post(root_url, {}, format='json')

Expand Down Expand Up @@ -461,13 +465,15 @@ def test_token_with_prefix_returns_200(self):
)
self.assertEqual(response.status_code, 200)
self.assertTrue(response.data['token'].startswith(token_prefix))
self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % response.data['token']))
self.client.credentials(
HTTP_AUTHORIZATION=('Token %s' % response.data['token'])
)
response = self.client.get(root_url, {}, format='json')
self.assertEqual(response.status_code, 200)
reload_module(views)

def test_prefix_set_longer_than_max_length_raises_valueerror(self):
with self.assertRaises(ValueError):
with self.assertRaises(ValueError):
with override_settings(REST_KNOX=token_prefix_too_long_knox):
pass

Expand All @@ -484,7 +490,9 @@ def test_tokens_created_before_prefix_still_work(self):
self.assertFalse(response.data['token'].startswith(token_prefix))
with override_settings(REST_KNOX=token_prefix_knox):
reload_module(views)
self.client.credentials(HTTP_AUTHORIZATION=('Token %s' % response.data['token']))
self.client.credentials(
HTTP_AUTHORIZATION=('Token %s' % response.data['token'])
)
response = self.client.get(root_url, {}, format='json')
self.assertEqual(response.status_code, 200)
reload_module(views)
4 changes: 3 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ commands = isort --check-only --diff \
[testenv]
commands =
python manage.py migrate
python manage.py test
coverage run manage.py test
coverage report
setenv =
DJANGO_SETTINGS_MODULE = knox_project.settings
PIP_INDEX_URL = https://pypi.python.org/simple/
Expand All @@ -38,6 +39,7 @@ deps =
setuptools
twine
wheel
coverage

[gh-actions]
python =
Expand Down