edit : 기본 rest서버구조 추가

This commit is contained in:
2025-01-14 17:26:27 +09:00
parent e53282d7e7
commit bd28fcdca4
37 changed files with 4194 additions and 1 deletions

0
rest/tests/__init__.py Normal file
View File

79
rest/tests/conftest.py Normal file
View File

@@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
"""
@File: conftest.py
@Date: 2020-09-14
@author: A2TEC
@section MODIFYINFO 수정정보
- 수정자/수정일 : 수정내역
- 2022-01-14/hsj100@a2tec.co.kr : refactoring
@brief: test config
"""
import asyncio
import os
from os import path
from typing import List
import pytest
from fastapi.testclient import TestClient
from sqlalchemy.orm import Session
from app.database.schema import Users
from app.main import create_app
from app.database.conn import db, Base
from app.models import UserToken
from app.routes.auth import create_access_token
"""
1. DB 생성
2. 테이블 생성
3. 테스트 코드 작동
4. 테이블 레코드 삭제
"""
@pytest.fixture(scope='session')
def app():
os.environ['API_ENV'] = 'test'
return create_app()
@pytest.fixture(scope='session')
def client(app):
# Create tables
Base.metadata.create_all(db.engine)
return TestClient(app=app)
@pytest.fixture(scope='function', autouse=True)
def session():
sess = next(db.session())
yield sess
clear_all_table_data(
session=sess,
metadata=Base.metadata,
except_tables=[]
)
sess.rollback()
@pytest.fixture(scope='function')
def login(session):
"""
테스트전 사용자 미리 등록
:param session:
:return:
"""
db_user = Users.create(session=session, email='ryan_test@dingrr.com', pw='123')
session.commit()
access_token = create_access_token(data=UserToken.from_orm(db_user).dict(exclude={'pw', 'marketing_agree'}),)
return dict(Authorization=f'Bearer {access_token}')
def clear_all_table_data(session: Session, metadata, except_tables: List[str] = None):
session.execute('SET FOREIGN_KEY_CHECKS = 0;')
for table in metadata.sorted_tables:
if table.name not in except_tables:
session.execute(table.delete())
session.execute('SET FOREIGN_KEY_CHECKS = 1;')
session.commit()

44
rest/tests/test_auth.py Normal file
View File

@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
"""
@File: test_auth.py
@Date: 2020-09-14
@author: A2TEC
@section MODIFYINFO 수정정보
- 수정자/수정일 : 수정내역
- 2022-01-14/hsj100@a2tec.co.kr : refactoring
@brief: test auth.
"""
from app.database.conn import db
from app.database.schema import Users
def test_registration(client, session):
"""
레버 로그인
:param client:
:param session:
:return:
"""
user = dict(email='ryan@dingrr.com', pw='123', name='라이언', phone='01099999999')
res = client.post('api/auth/register/email', json=user)
res_body = res.json()
print(res.json())
assert res.status_code == 201
assert 'Authorization' in res_body.keys()
def test_registration_exist_email(client, session):
"""
레버 로그인
:param client:
:param session:
:return:
"""
user = dict(email='Hello@dingrr.com', pw='123', name='라이언', phone='01099999999')
db_user = Users.create(session=session, **user)
session.commit()
res = client.post('api/auth/register/email', json=user)
res_body = res.json()
assert res.status_code == 400
assert 'EMAIL_EXISTS' == res_body['msg']

33
rest/tests/test_user.py Normal file
View File

@@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
"""
@File: test_user.py
@Date: 2020-09-14
@author: A2TEC
@section MODIFYINFO 수정정보
- 수정자/수정일 : 수정내역
- 2022-01-14/hsj100@a2tec.co.kr : refactoring
@brief: test user
"""
from app.database.conn import db
from app.database.schema import Users
def test_create_get_apikey(client, session, login):
"""
레버 로그인
:param client:
:param session:
:return:
"""
key = dict(user_memo='ryan__key')
res = client.post('api/user/apikeys', json=key, headers=login)
res_body = res.json()
assert res.status_code == 200
assert 'secret_key' in res_body
res = client.get('api/user/apikeys', headers=login)
res_body = res.json()
assert res.status_code == 200
assert 'ryan__key' in res_body[0]['user_memo']