51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
import json
|
|
from random import randbytes
|
|
|
|
from bson.objectid import ObjectId
|
|
from pytest import fixture
|
|
|
|
from roc_fnb.util.base64 import base64_decode
|
|
from roc_fnb.website.database import Database
|
|
from roc_fnb.website.models.user import User
|
|
|
|
|
|
@fixture
|
|
def user() -> User:
|
|
return User.create('test@t.co', 'name', 'monkey')
|
|
|
|
|
|
@fixture
|
|
def database() -> Database:
|
|
return Database.from_env()
|
|
|
|
|
|
def test_user_and_check_password(user):
|
|
assert user.name == 'name'
|
|
assert user.email == 'test@t.co'
|
|
assert user._id is None
|
|
assert user.check_password('monkey')
|
|
|
|
|
|
def test_store_and_retreive(user: User, database: Database):
|
|
try:
|
|
database.store_user(user)
|
|
assert user._id is not None
|
|
retreived = database.get_user_by_email(user.email)
|
|
assert retreived is not None
|
|
assert retreived._id == user._id
|
|
assert retreived == user
|
|
finally:
|
|
if id := user._id:
|
|
database.delete_user(id)
|
|
|
|
|
|
def test_store_and_retreive_by_id(user: User, database: Database):
|
|
try:
|
|
database.store_user(user)
|
|
assert user._id is not None
|
|
retreived = database.get_user_by_id(user._id)
|
|
assert retreived == user
|
|
finally:
|
|
if id := user._id:
|
|
database.delete_user(id)
|