2 passed in 0.82s, 32% coverage
This commit is contained in:
16
pytest.ini
16
pytest.ini
@@ -8,16 +8,16 @@ env_files =
|
|||||||
.env
|
.env
|
||||||
|
|
||||||
# do not search for tests in these folders
|
# do not search for tests in these folders
|
||||||
norecursedirs = venv
|
norecursedirs = .vscode .tox docs example img mfa venv .coverage django_mfa2.egg-info
|
||||||
|
|
||||||
# Add folder to PYTHONPATH
|
# Add folder to PYTHONPATH
|
||||||
# requires pytest >= 7.0.0
|
# requires pytest >= 7.0.0
|
||||||
pythonpath = mfa
|
pythonpath = .
|
||||||
|
|
||||||
|
|
||||||
# https://pytest-django.readthedocs.io/en/latest/usage.html
|
# https://pytest-django.readthedocs.io/en/latest/usage.html
|
||||||
; DJANGO_SETTINGS_MODULE =
|
DJANGO_SETTINGS_MODULE = tests.settings
|
||||||
;
|
|
||||||
|
|
||||||
# do not override the debug mode (True/False) set in the django settings module
|
# do not override the debug mode (True/False) set in the django settings module
|
||||||
# https://pytest-django.readthedocs.io/en/latest/usage.html#additional-pytest-ini-settings
|
# https://pytest-django.readthedocs.io/en/latest/usage.html#additional-pytest-ini-settings
|
||||||
@@ -42,7 +42,7 @@ addopts =
|
|||||||
# generates coverage report
|
# generates coverage report
|
||||||
# note that enabling pytest coverage will cause debugging pytest to fail on pycharm
|
# note that enabling pytest coverage will cause debugging pytest to fail on pycharm
|
||||||
# add the --no-cov to the pytest configuration on pycharm to allow for debugging pytest
|
# add the --no-cov to the pytest configuration on pycharm to allow for debugging pytest
|
||||||
--cov=./src
|
--cov=./mfa
|
||||||
# surpress generating converage if one or more tests failed
|
# surpress generating converage if one or more tests failed
|
||||||
; --no-cov-on-fail
|
; --no-cov-on-fail
|
||||||
# do not run migrations => faster test initialization
|
# do not run migrations => faster test initialization
|
||||||
@@ -53,6 +53,8 @@ addopts =
|
|||||||
# black
|
# black
|
||||||
# --black
|
# --black
|
||||||
--hypothesis-show-statistics
|
--hypothesis-show-statistics
|
||||||
|
# Add --reuse-db if you want to speed up tests by reusing the database between test runs.
|
||||||
|
#--reuse-db
|
||||||
|
|
||||||
|
|
||||||
# Define additional pytest markers so that using them in test will not trigger warnings
|
# Define additional pytest markers so that using them in test will not trigger warnings
|
||||||
@@ -91,11 +93,11 @@ markers =
|
|||||||
|
|
||||||
PRIVILEGED_USER: tests for privileged users
|
PRIVILEGED_USER: tests for privileged users
|
||||||
NON_PRIVILEGED_USER: tests for non-privileged users
|
NON_PRIVILEGED_USER: tests for non-privileged users
|
||||||
PERMISSIONS: tests related to inspectre permissions
|
PERMISSIONS: tests related to permissions
|
||||||
|
|
||||||
ENDPOINTS: tests for endpoints (API nodes)
|
ENDPOINTS: tests for endpoints (API nodes)
|
||||||
SERIALIZERS: tests for serializers
|
SERIALIZERS: tests for serializers
|
||||||
VIEWSETS: tests for DRF viewsets
|
VIEWS: tests for DRF viewsets
|
||||||
FILTERS: tests for DRF filters
|
FILTERS: tests for DRF filters
|
||||||
MODELS: tests for models
|
MODELS: tests for models
|
||||||
VALIDATORS: tests for validators
|
VALIDATORS: tests for validators
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import pytest
|
||||||
|
|
||||||
|
# @pytest.fixture
|
||||||
|
# def api_request(rf):
|
||||||
|
# request = rf.get('/url')
|
||||||
|
# # Modify the request object as needed (e.g., set user, add data)
|
||||||
|
# return request
|
||||||
|
|
||||||
|
# @pytest.fixture
|
||||||
|
# def create_test_model(db):
|
||||||
|
# def make_model(**kwargs):
|
||||||
|
# return MyModel.objects.create(**kwargs)
|
||||||
|
# return make_model
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def authenticated_user(client, django_user_model):
|
||||||
|
user = django_user_model.objects.create_user(username='test', password='123')
|
||||||
|
client.login(username='test', password='123')
|
||||||
|
return user
|
||||||
51
tests/settings.py
Normal file
51
tests/settings.py
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
SECRET_KEY = 'fake-key-for-testing'
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'mfa'
|
||||||
|
]
|
||||||
|
ROOT_URLCONF="mfa.urls"
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
|
'NAME': ':memory:',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MIDDLEWARE = [
|
||||||
|
'django.middleware.security.SecurityMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
]
|
||||||
|
|
||||||
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
|
||||||
|
TEMPLATES = [
|
||||||
|
{
|
||||||
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
|
'DIRS': [
|
||||||
|
os.path.join(BASE_DIR ,'mfa','templates' ),
|
||||||
|
os.path.join(BASE_DIR ,'tests','templates' )
|
||||||
|
],
|
||||||
|
'APP_DIRS': True,
|
||||||
|
'OPTIONS': {
|
||||||
|
'context_processors': [
|
||||||
|
'django.template.context_processors.debug',
|
||||||
|
'django.template.context_processors.request',
|
||||||
|
'django.contrib.auth.context_processors.auth',
|
||||||
|
'django.contrib.messages.context_processors.messages',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
MFA_UNALLOWED_METHODS = []
|
||||||
11
tests/templates/base.html
Normal file
11
tests/templates/base.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
{% block head %}
|
||||||
|
{% endblock %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,2 +1,25 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
from django.urls import reverse
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_index_unauthenticated(client):
|
||||||
|
url = reverse("mfa_home")
|
||||||
|
response = client.get(url)
|
||||||
|
assert response is not None
|
||||||
|
assert response.status_code == 302
|
||||||
|
assert response.url=="/accounts/login/?next=/"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_index_authenticated(client, authenticated_user):
|
||||||
|
url = reverse("mfa_home")
|
||||||
|
response = client.get(url)
|
||||||
|
assert response is not None
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert isinstance(response.templates, list)
|
||||||
|
assert len(response.templates) == 4
|
||||||
|
for template in response.templates:
|
||||||
|
assert template.name in ["modal.html", "base.html", "mfa_base.html", "MFA.html"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user