test: 파일 입력에 대한 테스트 코드 작성하기
nestiank opened this issue · comments
이미지를 업로드 받는 단계를 위해 주로 다음에 대한 테스트를 수행하는 코드 작성이 필요합니다.
경우에 따라, 프론트엔드(업로드 시도 시점)나 백엔드(업로드 완료 시점)에서 적용해야 합니다.
- 누군가 잘못된 입력을 넣더라도, 다른 사람의 사용에 문제가 없는 경우, 큰 문제가 되지는 않는 것들
- 파일 용량 확인(사진 한 장이 1KB이거나 1GB인 경우 오류 발생)
- 파일 크기 확인(픽셀 기준으로 4 x 4인 이미지는 rescale을 해도 의미가 없을 것임)
- 파일 유사도 확인(완전히 다른 두 장의 사진을 업로드하는 것은 의미가 없을 것임)
- 파일 인코딩 정상 여부 확인(pdf 파일을 png로 확장자 바꿔서 업로드하는 경우 오류 발생)
- 항상 문제가 될 수 있는 것들
- 이메일 형식 확인
- 파일 확장자 확인
- 파일 덮어쓰기 여부 확인(알려진 이름(
제목 없음.png
등) 혹은 같은 파일명으로 이미지를 여러 번 업로드할 경우, 같은 이메일로 여러 번 업로드할 경우에도 덮어쓰기 되면 안 됨)
파일 덮어쓰기의 경우, 백엔드에서 매번 경로에 timestamp를 포함한 새로운 디렉토리에 파일이 저장되도록 하고 있으므로 문제가 발생하지 않음을 확인했습니다.
For reference: search "unique한 user dir 만들기" at /backend/app/main.py
현재 프로젝트 파이프라인에서, 이미 업로드가 완료된 상황에서 파일의 용량이나 이미지의 크기, 인코딩 정상 여부를 확인하는 것은 큰 의미가 없다고 판단하였습니다. 따라서 메모를 남기고 이슈에서 제거합니다. 이유는 다음과 같습니다.
- 현재 사용자에게 이메일로 백엔드 처리 결과물을 사후에 보내 주고 있으므로, 사용자에게 즉각적인 오류 메시지를 보여 줄 수 없습니다.
- 이로 인해서, 비정상적인 파일이 업로드되더라도 이메일로 재업로드 요청을 할 수밖에 없습니다.
- 그러나, 이 경우에 대한 이메일 양식을 따로 작성해 두는 것은 프로젝트 규모가 설계된 것에서 벗어나게 합니다.
현재 프로젝트 파이프라인에서, 파일 유사도 확인은 할 수 없다고 판단하였습니다. 이유는 RGB 픽셀 값 관점에서 원본 사진과의 유사도가 지나치게 낮은 스케치 사진의 가구 합성을 거절할 경우, 사용자가 사진 전체를 덮는 가구를 그렸을 때 이것을 거절하게 되기 때문입니다. 따라서 메모를 남기고 이슈에서 제거합니다.
모든 이슈의 작업이 해결되었으므로, 메모를 남기고 이슈를 닫습니다.