accounts: Add new accounts and add users and balance to accounts
Close #5
This commit is contained in:
@@ -5,7 +5,7 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from allmende_payment_system.app import app
|
||||
from allmende_payment_system.database import ensure_user
|
||||
from allmende_payment_system.models import Permission, User, UserGroup
|
||||
from allmende_payment_system.models import Account, Permission, User, UserGroup
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -15,6 +15,7 @@ def admin_user(test_db):
|
||||
|
||||
group = UserGroup(id=1, name="Admins")
|
||||
group.permissions.append(Permission(scope="user", action="edit"))
|
||||
group.permissions.append(Permission(scope="account", action="edit"))
|
||||
user.user_groups.append(group)
|
||||
test_db.add(group)
|
||||
test_db.flush()
|
||||
@@ -97,6 +98,7 @@ def test_group_add_permission_illegal_format(test_db, client, admin_user):
|
||||
|
||||
def test_group_remove_permission(test_db, client, admin_user):
|
||||
group = test_db.query(UserGroup).scalar()
|
||||
num_permissions_before = len(group.permissions)
|
||||
response = client.get(
|
||||
f"/admin/groups/{group.id}/remove_permission/1",
|
||||
user=admin_user,
|
||||
@@ -104,7 +106,7 @@ def test_group_remove_permission(test_db, client, admin_user):
|
||||
)
|
||||
assert response.status_code == 303
|
||||
group = test_db.execute(select(UserGroup).where(UserGroup.id == group.id)).scalar()
|
||||
assert 0 == len(group.permissions)
|
||||
assert num_permissions_before - 1 == len(group.permissions)
|
||||
|
||||
|
||||
def test_create_group(test_db, client, admin_user):
|
||||
@@ -128,3 +130,60 @@ def test_delete_group(test_db, client, admin_user):
|
||||
test_db.execute(select(UserGroup).where(UserGroup.id == group.id)).scalar()
|
||||
is None
|
||||
)
|
||||
|
||||
|
||||
def test_create_account(test_db, client, admin_user):
|
||||
response = client.post(
|
||||
"/admin/accounts/new",
|
||||
data={"account_name": "New Account"},
|
||||
user=admin_user,
|
||||
follow_redirects=False,
|
||||
)
|
||||
assert response.status_code == 303
|
||||
assert test_db.query(Account).filter_by(name="New Account").scalar() is not None
|
||||
|
||||
# try to create another account with the same name, should fail
|
||||
response = client.post(
|
||||
"/admin/accounts/new",
|
||||
data={"account_name": "New Account"},
|
||||
user=admin_user,
|
||||
follow_redirects=False,
|
||||
)
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
def test_add_user_to_account(test_db, client, admin_user):
|
||||
user_info = {"username": "test", "display_name": "Display Test"}
|
||||
user = ensure_user(user_info, test_db)
|
||||
|
||||
account = Account(name="Test Account")
|
||||
test_db.add(account)
|
||||
test_db.flush()
|
||||
|
||||
response = client.post(
|
||||
f"/admin/accounts/{account.id}/add_user",
|
||||
data={"user_id": user.id},
|
||||
user=admin_user,
|
||||
follow_redirects=False,
|
||||
)
|
||||
assert response.status_code == 303
|
||||
|
||||
account = test_db.execute(select(Account).where(Account.id == account.id)).scalar()
|
||||
assert any(u.username == "test" for u in account.users)
|
||||
|
||||
|
||||
def test_add_balance_to_account(test_db, client, admin_user):
|
||||
account = Account(name="Test Account")
|
||||
test_db.add(account)
|
||||
test_db.flush()
|
||||
|
||||
response = client.post(
|
||||
f"/admin/accounts/{account.id}/add_balance",
|
||||
data={"amount": "100.00"},
|
||||
user=admin_user,
|
||||
follow_redirects=False,
|
||||
)
|
||||
assert response.status_code == 303
|
||||
|
||||
account = test_db.execute(select(Account).where(Account.id == account.id)).scalar()
|
||||
assert account.balance == 100.00
|
||||
|
||||
Reference in New Issue
Block a user