Skip to content

Commit 10283c1

Browse files
committed
complete unit tests + hide tokens in admin
1 parent 8306e0a commit 10283c1

File tree

4 files changed

+113
-7
lines changed

4 files changed

+113
-7
lines changed

demo/demo/accounts/admin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class EmailConfirmationAdmin(admin.ModelAdmin):
1818

1919

2020
class APITokenAdmin(admin.ModelAdmin):
21-
list_display = ('key', 'user', 'created')
21+
list_display = ('__str__', 'created')
2222
ordering = ('user', '-created')
2323
date_hierarchy = 'created'
2424
readonly_fields = ('key', 'created')

rest_auth_toolkit/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class Meta:
103103
abstract = True
104104

105105
def __str__(self):
106-
return self.key
106+
return 'API token for {user}'.format(user=self.user)
107107

108108
def save(self, *args, **kwargs):
109109
if not self.key:

tests/unit/conftest.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,27 @@
11
import pytest
22

3-
from demo.accounts.models import User
3+
from demo.accounts.models import User, APIToken
44

55

66
@pytest.fixture
77
def user0(db):
8-
return User.objects.create(
8+
return User.objects.create_user(
99
10+
is_active=True,
11+
)
12+
13+
14+
@pytest.fixture
15+
def user1(db):
16+
return User.objects.create_user(
17+
18+
password='unitpass123',
19+
is_active=True,
20+
)
21+
22+
23+
@pytest.fixture
24+
def token0(user0):
25+
return APIToken.objects.create_token(
26+
user=user0,
1027
)

tests/unit/test_models.py

Lines changed: 92 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,99 @@
1-
def test_baseemailuser_str(user0):
1+
import pytest
2+
3+
from demo.accounts.models import User, APIToken
4+
5+
6+
def test_user_str(user0):
27
assert str(user0) == '[email protected]'
38

49

5-
def test_baseemailuser_get_short_name(user0):
10+
def test_user_get_short_name(user0):
611
assert user0.get_short_name() == '[email protected]'
712

813

9-
def test_baseemailuser_natural_key(user0):
14+
def test_user_natural_key(user0):
1015
assert user0.natural_key() == '[email protected]'
16+
17+
18+
def test_user_manager_get_by_natural_key(user0, user1):
19+
user = User.objects.get_by_natural_key('[email protected]')
20+
21+
assert user == user1
22+
23+
24+
def test_user_manager_create_user(db):
25+
user = User.objects.create_user('[email protected]', 'superpassword')
26+
27+
assert user.id >= 1
28+
assert user.email == '[email protected]'
29+
assert user.has_usable_password()
30+
assert user.is_active
31+
assert not user.is_staff
32+
assert not user.is_superuser
33+
34+
35+
def test_user_manager_create_superuser(db):
36+
user = User.objects.create_superuser('[email protected]', 'wowpassword')
37+
38+
assert user.id >= 1
39+
assert user.email == '[email protected]'
40+
assert user.has_usable_password()
41+
assert user.is_active
42+
assert user.is_staff
43+
assert user.is_superuser
44+
45+
46+
@pytest.mark.parametrize('fields', [
47+
{'is_staff': False},
48+
{'is_superuser': False},
49+
{'is_staff': False, 'is_superuser': False},
50+
])
51+
def test_user_manager_create_superuser_bad_fields(db, fields):
52+
with pytest.raises(ValueError):
53+
User.objects.create_superuser('[email protected]', 'wowpassword', **fields)
54+
55+
56+
def test_apitoken_str(token0):
57+
assert str(token0) == 'API token for [email protected]'
58+
59+
60+
def test_apitoken_save_create_generates_key(user0):
61+
token = APIToken(user=user0)
62+
assert token.key == ''
63+
64+
token.save()
65+
66+
assert isinstance(token.key, str)
67+
assert len(token.key) == 40
68+
69+
70+
def test_apitoken_save_create_keeps_key(user0):
71+
token = APIToken(user=user0, key='1234abcd')
72+
73+
token.save()
74+
75+
assert token.key == '1234abcd'
76+
77+
78+
def test_apitoken_save_update_keeps_key(token0, user1):
79+
key = token0.key
80+
81+
token0.user = user1
82+
token0.save()
83+
84+
assert token0.key == key
85+
86+
87+
def test_apitoken_custom_generate_key(monkeypatch, user0):
88+
monkeypatch.setattr(APIToken, 'generate_key', lambda self: '2345bcde')
89+
token = APIToken(user=user0)
90+
91+
token.save()
92+
93+
assert token.key == '2345bcde'
94+
95+
96+
def test_apitoken_manager_create_token(user0):
97+
token = APIToken.objects.create_token(user=user0)
98+
99+
assert len(token.key) == 40

0 commit comments

Comments
 (0)