modify conftest & add testcase
This commit is contained in:
@@ -15,7 +15,7 @@ engine = create_engine(SQLALCHEMY_DATABASE_URI,echo=True)
|
||||
|
||||
test_session_maker = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
@pytest.fixture(scope="session")
|
||||
def test_db():
|
||||
connection = engine.connect()
|
||||
transaction = connection.begin()
|
||||
@@ -25,7 +25,7 @@ def test_db():
|
||||
transaction.rollback()
|
||||
connection.close()
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
@pytest.fixture(scope="session")
|
||||
def test_client(test_db):
|
||||
def get_test_db():
|
||||
try:
|
||||
@@ -56,9 +56,24 @@ def test_user(test_db):
|
||||
dicUser["password"] = password
|
||||
return dicUser
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def test_admin(test_db):
|
||||
password ="admin"
|
||||
@pytest.fixture(scope="session")
|
||||
def password():
|
||||
return "password"
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def user(password):
|
||||
user = models.User(
|
||||
email = "user@test.com",
|
||||
first_name = "user",
|
||||
last_name = "abc",
|
||||
hashed_password = security.get_password_hash(password),
|
||||
is_active = True,
|
||||
is_superuser = False
|
||||
)
|
||||
return user
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def admin(password):
|
||||
user = models.User(
|
||||
email = "admin@test.com",
|
||||
first_name = "admin",
|
||||
@@ -67,12 +82,23 @@ def test_admin(test_db):
|
||||
is_active = True,
|
||||
is_superuser = True
|
||||
)
|
||||
return user
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def login_user(test_db,test_client,user,password):
|
||||
test_db.add(user)
|
||||
test_db.commit()
|
||||
test_db.refresh(user)
|
||||
dicUser = user.__dict__
|
||||
dicUser["password"] = password
|
||||
return dicUser
|
||||
response = test_client.post("/api/token", data={"username": user.email, "password":password })
|
||||
return response.json()["access_token"]
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def login_admin(test_db,test_client,admin,password):
|
||||
test_db.add(admin)
|
||||
test_db.commit()
|
||||
test_db.refresh(admin)
|
||||
response = test_client.post("/api/token", data={"username": admin.email, "password":password })
|
||||
return response.json()["access_token"]
|
||||
|
||||
# @pytest.fixture
|
||||
# def test_password() -> str:
|
||||
|
||||
0
backend/app/tests/test_domain.py
Normal file
0
backend/app/tests/test_domain.py
Normal file
@@ -1,22 +1,85 @@
|
||||
|
||||
def test_users_list(test_client,test_user,test_admin):
|
||||
response = test_client.post("/api/token", data={"username": test_user["email"], "password": test_user["password"]})
|
||||
assert "access_token" in response.json()
|
||||
user_token =response.json()["access_token"]
|
||||
|
||||
response = test_client.post("/api/token", data={"username": test_admin["email"], "password": test_admin["password"]})
|
||||
assert "access_token" in response.json()
|
||||
admin_token =response.json()["access_token"]
|
||||
from fastapi import security
|
||||
import jwt
|
||||
|
||||
response = test_client.get("/api/v1/users", headers={"Authorization": "Bearer " + user_token})
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert len(data["data"]) == 1
|
||||
|
||||
response = test_client.get("/api/v1/users", headers={"Authorization": "Bearer " + admin_token})
|
||||
def test_users_list(test_client,login_user):
|
||||
|
||||
response = test_client.get("/api/v1/users", headers={"Authorization": "Bearer " + login_user})
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert len(data["data"]) == 2
|
||||
|
||||
def test_users_list_for_admin(test_client,login_admin):
|
||||
|
||||
response = test_client.get("/api/v1/users", headers={"Authorization": "Bearer " + login_admin})
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert len(data["data"]) == 3
|
||||
|
||||
def test_user_create(test_client,login_user):
|
||||
user_data = {
|
||||
"email": "newuser@example.com",
|
||||
"password": "password123",
|
||||
"first_name": "New",
|
||||
"last_name": "User",
|
||||
"is_active": True,
|
||||
"is_superuser": False
|
||||
}
|
||||
response = test_client.post("/api/v1/users", json=user_data, headers={"Authorization": "Bearer " + login_user})
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert "data" in data
|
||||
assert data["data"] is not None
|
||||
assert data["data"]["email"] == user_data["email"]
|
||||
assert data["data"]["first_name"] == user_data["first_name"]
|
||||
assert data["data"]["last_name"] == user_data["last_name"]
|
||||
assert data["data"]["is_active"] == user_data["is_active"]
|
||||
assert data["data"]["is_superuser"] == user_data["is_superuser"]
|
||||
|
||||
def test_admin_create(test_client,login_user):
|
||||
user_data = {
|
||||
"email": "newuser@example.com",
|
||||
"password": "password123",
|
||||
"first_name": "New",
|
||||
"last_name": "User",
|
||||
"is_active": True,
|
||||
"is_superuser": True
|
||||
}
|
||||
response = test_client.post("/api/v1/users", json=user_data, headers={"Authorization": "Bearer " + login_user})
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert "data" not in data
|
||||
|
||||
def test_admin_create_for_admin(test_client,login_admin):
|
||||
user_data = {
|
||||
"email": "admin@example.com",
|
||||
"password": "password123",
|
||||
"first_name": "New",
|
||||
"last_name": "User",
|
||||
"is_active": True,
|
||||
"is_superuser": True
|
||||
}
|
||||
response = test_client.post("/api/v1/users", json=user_data, headers={"Authorization": "Bearer " + login_admin})
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert "data" in data
|
||||
assert data["data"] is not None
|
||||
assert data["data"]["email"] == user_data["email"]
|
||||
assert data["data"]["first_name"] == user_data["first_name"]
|
||||
assert data["data"]["last_name"] == user_data["last_name"]
|
||||
assert data["data"]["is_active"] == user_data["is_active"]
|
||||
assert data["data"]["is_superuser"] == user_data["is_superuser"]
|
||||
|
||||
def test_user_details(test_client, login_user,user):
|
||||
payload = jwt.decode(login_user, security.SECRET_KEY, algorithms=[security.ALGORITHM])
|
||||
id = payload.get("sub")
|
||||
response = test_client.get("/api/v1/users/"+ id)
|
||||
assert response.status_code == 200
|
||||
assert response.json()["data"]["email"] ==user["email"]
|
||||
assert data["data"]["first_name"] == user["first_name"]
|
||||
assert data["data"]["last_name"] == user["last_name"]
|
||||
assert data["data"]["is_active"] == user["is_active"]
|
||||
assert data["data"]["is_superuser"] == user["is_superuser"]
|
||||
assert response.json()["data"]["id"] == id
|
||||
Reference in New Issue
Block a user