| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import pytest
- from app import create_app, db
- from flask_login import current_user
- from models.model import Account, TenantAccountJoin, Tenant
- @pytest.fixture
- def client(test_client, db_session):
- app = create_app()
- app.config["TESTING"] = True
- with app.app_context():
- db.create_all()
- yield test_client
- db.drop_all()
- def test_login_api_post(client, db_session):
- # create a tenant, account, and tenant account join
- tenant = Tenant(name="Test Tenant", status="normal")
- account = Account(email="test@test.com", name="Test User")
- account.password_salt = "uQ7K0/0wUJ7VPhf3qBzwNQ=="
- account.password = "A9YpfzjK7c/tOwzamrvpJg=="
- db.session.add_all([tenant, account])
- db.session.flush()
- tenant_account_join = TenantAccountJoin(tenant_id=tenant.id, account_id=account.id, is_tenant_owner=True)
- db.session.add(tenant_account_join)
- db.session.commit()
- # login with correct credentials
- response = client.post("/login", json={
- "email": "test@test.com",
- "password": "Abc123456",
- "remember_me": True
- })
- assert response.status_code == 200
- assert response.json == {"result": "success"}
- assert current_user == account
- assert 'tenant_id' in client.session
- assert client.session['tenant_id'] == tenant.id
- # login with incorrect password
- response = client.post("/login", json={
- "email": "test@test.com",
- "password": "wrong_password",
- "remember_me": True
- })
- assert response.status_code == 401
- # login with non-existent account
- response = client.post("/login", json={
- "email": "non_existent_account@test.com",
- "password": "Abc123456",
- "remember_me": True
- })
- assert response.status_code == 401
- def test_logout_api_get(client, db_session):
- # create a tenant, account, and tenant account join
- tenant = Tenant(name="Test Tenant", status="normal")
- account = Account(email="test@test.com", name="Test User")
- db.session.add_all([tenant, account])
- db.session.flush()
- tenant_account_join = TenantAccountJoin(tenant_id=tenant.id, account_id=account.id, is_tenant_owner=True)
- db.session.add(tenant_account_join)
- db.session.commit()
- # login and check if session variable and current_user are set
- with client.session_transaction() as session:
- session['tenant_id'] = tenant.id
- client.post("/login", json={
- "email": "test@test.com",
- "password": "Abc123456",
- "remember_me": True
- })
- assert current_user == account
- assert 'tenant_id' in client.session
- assert client.session['tenant_id'] == tenant.id
- # logout and check if session variable and current_user are unset
- response = client.get("/logout")
- assert response.status_code == 200
- assert current_user.is_authenticated is False
- assert 'tenant_id' not in client.session
- def test_reset_password_api_get(client, db_session):
- # create a tenant, account, and tenant account join
- tenant = Tenant(name="Test Tenant", status="normal")
- account = Account(email="test@test.com", name="Test User")
- db.session.add_all([tenant, account])
- db.session.flush()
- tenant_account_join = TenantAccountJoin(tenant_id=tenant.id, account_id=account.id, is_tenant_owner=True)
- db.session.add(tenant_account_join)
- db.session.commit()
- # reset password in cloud edition
- app = client.application
- app.config["CLOUD_EDITION"] = True
- response = client.get("/reset_password")
- assert response.status_code == 200
- assert response.json == {"result": "success"}
- # reset password in non-cloud edition
- app.config["CLOUD_EDITION"] = False
- response = client.get("/reset_password")
- assert response.status_code == 200
- assert response.json == {"result": "success"}
|