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)
|
test_session_maker = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
@pytest.fixture(scope="session")
|
||||||
def test_db():
|
def test_db():
|
||||||
connection = engine.connect()
|
connection = engine.connect()
|
||||||
transaction = connection.begin()
|
transaction = connection.begin()
|
||||||
@@ -25,7 +25,7 @@ def test_db():
|
|||||||
transaction.rollback()
|
transaction.rollback()
|
||||||
connection.close()
|
connection.close()
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
@pytest.fixture(scope="session")
|
||||||
def test_client(test_db):
|
def test_client(test_db):
|
||||||
def get_test_db():
|
def get_test_db():
|
||||||
try:
|
try:
|
||||||
@@ -56,9 +56,24 @@ def test_user(test_db):
|
|||||||
dicUser["password"] = password
|
dicUser["password"] = password
|
||||||
return dicUser
|
return dicUser
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
@pytest.fixture(scope="session")
|
||||||
def test_admin(test_db):
|
def password():
|
||||||
password ="admin"
|
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(
|
user = models.User(
|
||||||
email = "admin@test.com",
|
email = "admin@test.com",
|
||||||
first_name = "admin",
|
first_name = "admin",
|
||||||
@@ -67,12 +82,23 @@ def test_admin(test_db):
|
|||||||
is_active = True,
|
is_active = True,
|
||||||
is_superuser = 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.add(user)
|
||||||
test_db.commit()
|
test_db.commit()
|
||||||
test_db.refresh(user)
|
test_db.refresh(user)
|
||||||
dicUser = user.__dict__
|
response = test_client.post("/api/token", data={"username": user.email, "password":password })
|
||||||
dicUser["password"] = password
|
return response.json()["access_token"]
|
||||||
return dicUser
|
|
||||||
|
@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
|
# @pytest.fixture
|
||||||
# def test_password() -> str:
|
# 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"]})
|
from fastapi import security
|
||||||
assert "access_token" in response.json()
|
import jwt
|
||||||
admin_token =response.json()["access_token"]
|
|
||||||
|
|
||||||
response = test_client.get("/api/v1/users", headers={"Authorization": "Bearer " + user_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
|
assert response.status_code == 200
|
||||||
data = response.json()
|
data = response.json()
|
||||||
assert len(data["data"]) == 1
|
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 " + admin_token})
|
response = test_client.get("/api/v1/users", headers={"Authorization": "Bearer " + login_admin})
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
data = response.json()
|
data = response.json()
|
||||||
assert len(data["data"]) == 2
|
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