edit: faiss 전용 rest 서버 추가
This commit is contained in:
0
vactor_rest/tests/__init__.py
Normal file
0
vactor_rest/tests/__init__.py
Normal file
79
vactor_rest/tests/conftest.py
Normal file
79
vactor_rest/tests/conftest.py
Normal 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
vactor_rest/tests/test_auth.py
Normal file
44
vactor_rest/tests/test_auth.py
Normal 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
vactor_rest/tests/test_user.py
Normal file
33
vactor_rest/tests/test_user.py
Normal 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']
|
||||
|
||||
Reference in New Issue
Block a user