Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Debian New Member Process
nm.debian.org
Commits
619455eb
Commit
619455eb
authored
May 01, 2020
by
Enrico Zini
Browse files
Sync impersonation with changes from contributors.d.o. refs:
#25
parent
53f5bb2e
Changes
4
Hide whitespace changes
Inline
Side-by-side
backend/unittest.py
View file @
619455eb
...
@@ -574,3 +574,19 @@ class SignonFixtureMixin(BaseFixtureMixin):
...
@@ -574,3 +574,19 @@ class SignonFixtureMixin(BaseFixtureMixin):
cls
.
user1
=
cls
.
persons
.
user1
cls
.
user1
=
cls
.
persons
.
user1
cls
.
user2
=
cls
.
persons
.
user2
cls
.
user2
=
cls
.
persons
.
user2
class
ImpersonateFixtureMixin
(
BaseFixtureMixin
):
"""
Base test fixture for impersonate tests
"""
@
classmethod
def
setUpClass
(
cls
):
super
().
setUpClass
()
cls
.
create_person
(
"admin"
,
status
=
const
.
STATUS_DD_NU
,
is_staff
=
True
,
is_superuser
=
True
)
cls
.
create_person
(
"user1"
,
status
=
const
.
STATUS_DD_NU
)
cls
.
create_person
(
"user2"
,
status
=
const
.
STATUS_DD_NU
)
cls
.
admin
=
cls
.
persons
.
admin
cls
.
user1
=
cls
.
persons
.
user1
cls
.
user2
=
cls
.
persons
.
user2
impersonate/tests.py
View file @
619455eb
from
__future__
import
annotations
from
__future__
import
annotations
from
django.test
import
TestCase
from
django.test
import
TestCase
from
django.urls
import
reverse
from
django.urls
import
reverse
from
backend.unittest
import
TestBase
from
impersonate.unittest
import
ImpersonateFixtureMixin
from
django.contrib.auth
import
get_user_model
class
TestPermissions
(
TestBase
,
TestCase
):
class
TestPermissions
(
ImpersonateFixtureMixin
,
TestCase
):
def
test_impersonate_staff
(
self
):
def
test_impersonate_staff
(
self
):
User
=
get_user_model
()
visitor
=
self
.
admin
visitor
=
User
.
objects
.
create_superuser
(
email
=
"admin@example.org"
,
fullname
=
"Admin"
,
audit_skip
=
True
)
visited
=
self
.
user1
visited
=
User
.
objects
.
create_user
(
email
=
"user@example.org"
,
fullname
=
"User"
,
audit_skip
=
True
)
client
=
self
.
make_test_client
(
visitor
)
client
=
self
.
make_test_client
(
visitor
)
response
=
client
.
get
(
reverse
(
"impersonate:whoami"
))
response
=
client
.
get
(
reverse
(
"impersonate:whoami"
))
...
@@ -32,9 +30,8 @@ class TestPermissions(TestBase, TestCase):
...
@@ -32,9 +30,8 @@ class TestPermissions(TestBase, TestCase):
})
})
def
test_impersonate_user
(
self
):
def
test_impersonate_user
(
self
):
User
=
get_user_model
()
visitor
=
self
.
user1
visitor
=
User
.
objects
.
create_user
(
email
=
"user@example.org"
,
fullname
=
"User"
,
audit_skip
=
True
)
visited
=
self
.
user2
visited
=
User
.
objects
.
create_user
(
email
=
"user1@example.org"
,
fullname
=
"User1"
,
audit_skip
=
True
)
client
=
self
.
make_test_client
(
visitor
)
client
=
self
.
make_test_client
(
visitor
)
response
=
client
.
post
(
reverse
(
"impersonate:impersonate"
),
data
=
{
"pk"
:
visited
.
pk
})
response
=
client
.
post
(
reverse
(
"impersonate:impersonate"
),
data
=
{
"pk"
:
visited
.
pk
})
self
.
assertPermissionDenied
(
response
)
self
.
assertPermissionDenied
(
response
)
...
@@ -48,8 +45,7 @@ class TestPermissions(TestBase, TestCase):
...
@@ -48,8 +45,7 @@ class TestPermissions(TestBase, TestCase):
})
})
def
test_impersonate_anonymous
(
self
):
def
test_impersonate_anonymous
(
self
):
User
=
get_user_model
()
visited
=
self
.
user1
visited
=
User
.
objects
.
create_user
(
email
=
"user@example.org"
,
fullname
=
"User"
,
audit_skip
=
True
)
client
=
self
.
make_test_client
(
None
)
client
=
self
.
make_test_client
(
None
)
response
=
client
.
post
(
reverse
(
"impersonate:impersonate"
),
data
=
{
"pk"
:
visited
.
pk
})
response
=
client
.
post
(
reverse
(
"impersonate:impersonate"
),
data
=
{
"pk"
:
visited
.
pk
})
self
.
assertPermissionDenied
(
response
)
self
.
assertPermissionDenied
(
response
)
...
...
impersonate/unittest.py
0 → 100644
View file @
619455eb
from
__future__
import
annotations
from
django.utils.module_loading
import
import_string
from
django.core.exceptions
import
ImproperlyConfigured
from
django.conf
import
settings
from
signon
import
providers
_name
=
getattr
(
settings
,
"IMPERSONATE_TEST_FIXTURE"
,
None
)
if
_name
is
None
:
raise
ImproperlyConfigured
(
"You need to set IMPERSONATE_TEST_FIXTURE to a valid dotted module.class path, to use impersonate unittests"
)
class
ImpersonateFixtureMixin
(
import_string
(
_name
)):
def
setUp
(
self
):
super
().
setUp
()
# Reset the providers cache before each test
providers
.
providers_by_name
=
None
__all__
=
[
"ImpersonateFixtureMixin"
]
nm2/settings.py
View file @
619455eb
...
@@ -253,6 +253,7 @@ SIGNON_PROVIDERS = [
...
@@ -253,6 +253,7 @@ SIGNON_PROVIDERS = [
SIGNON_AUTO_BIND
=
False
SIGNON_AUTO_BIND
=
False
SIGNON_TEST_FIXTURE
=
"backend.unittest.SignonFixtureMixin"
SIGNON_TEST_FIXTURE
=
"backend.unittest.SignonFixtureMixin"
IMPERSONATE_TEST_FIXTURE
=
"backend.unittest.ImpersonateFixtureMixin"
# Sync with this salsa host
# Sync with this salsa host
SALSA_HOST
=
"https://salsa-test.debian.net"
SALSA_HOST
=
"https://salsa-test.debian.net"
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment