|
|
|
@ -43,9 +43,11 @@ def test_user_principal(id_):
@@ -43,9 +43,11 @@ def test_user_principal(id_):
|
|
|
|
|
) |
|
|
|
|
def test_user_principals(name, principals): |
|
|
|
|
from ordr.models.account import User, Role |
|
|
|
|
|
|
|
|
|
user = User(id=1, role=Role[name]) |
|
|
|
|
expected = ['user:1'] |
|
|
|
|
expected.extend(principals) |
|
|
|
|
|
|
|
|
|
assert expected == user.principals |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -68,9 +70,11 @@ def test_user_is_active(name, expected):
@@ -68,9 +70,11 @@ def test_user_is_active(name, expected):
|
|
|
|
|
def test_user_set_password(): |
|
|
|
|
from ordr.models.account import User |
|
|
|
|
from ordr.security import password_context |
|
|
|
|
|
|
|
|
|
password_context.update(schemes=['argon2']) |
|
|
|
|
user = User() |
|
|
|
|
assert user.password_hash is None |
|
|
|
|
|
|
|
|
|
user.set_password('password') |
|
|
|
|
assert user.password_hash.startswith('$argon2') |
|
|
|
|
|
|
|
|
@ -85,17 +89,20 @@ def test_user_set_password():
@@ -85,17 +89,20 @@ def test_user_set_password():
|
|
|
|
|
def test_user_check_password(password, expected): |
|
|
|
|
from ordr.models.account import User |
|
|
|
|
from ordr.security import password_context |
|
|
|
|
|
|
|
|
|
password_context.update(schemes=['argon2']) |
|
|
|
|
hash = ('$argon2i$v=19$m=512,t=2,p=2$' |
|
|
|
|
'YcyZMyak9D7nvFfKmVOq1Q$fnzNh58HWfvxHvRDGjhTqA' |
|
|
|
|
) |
|
|
|
|
user = User(password_hash=hash) |
|
|
|
|
|
|
|
|
|
assert user.check_password(password) == expected |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_user_check_password_updates_old_sheme(): |
|
|
|
|
from ordr.models.account import User |
|
|
|
|
from ordr.security import password_context |
|
|
|
|
|
|
|
|
|
password_context.update( |
|
|
|
|
schemes=['argon2', 'bcrypt'], |
|
|
|
|
default='argon2', |
|
|
|
@ -103,6 +110,7 @@ def test_user_check_password_updates_old_sheme():
@@ -103,6 +110,7 @@ def test_user_check_password_updates_old_sheme():
|
|
|
|
|
) |
|
|
|
|
old_hash = '$2b$12$6ljSfpLaXBeEVOeaP1scUe6IAa0cztM.UBbjc1PdrI4j0vwgoYgpi' |
|
|
|
|
user = User(password_hash=old_hash) |
|
|
|
|
|
|
|
|
|
assert user.check_password('password') |
|
|
|
|
assert user.password_hash.startswith('$argon2') |
|
|
|
|
assert user.check_password('password') |
|
|
|
@ -116,9 +124,11 @@ def test_user__str__():
@@ -116,9 +124,11 @@ def test_user__str__():
|
|
|
|
|
|
|
|
|
|
def test_user_issue_token(app_config): # noqa: F811 |
|
|
|
|
from ordr.models.account import User, Token, TokenSubject |
|
|
|
|
|
|
|
|
|
request = DummyRequest() |
|
|
|
|
user = User() |
|
|
|
|
token = user.issue_token(request, TokenSubject.REGISTRATION, {'foo': 1}) |
|
|
|
|
|
|
|
|
|
assert isinstance(token, Token) |
|
|
|
|
assert token.hash is not None |
|
|
|
|
assert token.subject == TokenSubject.REGISTRATION |
|
|
|
@ -128,10 +138,12 @@ def test_user_issue_token(app_config): # noqa: F811
@@ -128,10 +138,12 @@ def test_user_issue_token(app_config): # noqa: F811
|
|
|
|
|
|
|
|
|
|
def test_token_issue_token(app_config): # noqa: F811 |
|
|
|
|
from ordr.models.account import User, Token, TokenSubject |
|
|
|
|
|
|
|
|
|
request = DummyRequest() |
|
|
|
|
user = User() |
|
|
|
|
token = Token.issue(request, user, TokenSubject.REGISTRATION, {'foo': 1}) |
|
|
|
|
expected_expires = datetime.utcnow() + timedelta(minutes=5) |
|
|
|
|
|
|
|
|
|
assert isinstance(token, Token) |
|
|
|
|
assert token.hash is not None |
|
|
|
|
assert token.subject == TokenSubject.REGISTRATION |
|
|
|
@ -148,12 +160,14 @@ def test_token_issue_token(app_config): # noqa: F811
@@ -148,12 +160,14 @@ def test_token_issue_token(app_config): # noqa: F811
|
|
|
|
|
) |
|
|
|
|
def test_token_issue_token_time_from_settings(app_config, subject, delta): |
|
|
|
|
from ordr.models.account import User, Token, TokenSubject |
|
|
|
|
|
|
|
|
|
request = DummyRequest() |
|
|
|
|
request.registry.settings['token_expiry.reset_password'] = 10 |
|
|
|
|
user = User() |
|
|
|
|
token_subject = TokenSubject[subject] |
|
|
|
|
token = Token.issue(request, user, token_subject, None) |
|
|
|
|
expected_expires = datetime.utcnow() + timedelta(minutes=delta) |
|
|
|
|
|
|
|
|
|
assert token.expires.timestamp() == pytest.approx( |
|
|
|
|
expected_expires.timestamp(), |
|
|
|
|
abs=1 |
|
|
|
|