Add type check for meta on REST API & add tests (#2184)

* Add type check for meta & add tests

* Improve tests

* Handle properly the ValueError ad an HTTPException

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Sara Zan 2022-02-16 10:32:22 +01:00 committed by GitHub
parent ed6e64494e
commit 00795bd71e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 1 deletions

View File

@ -91,7 +91,10 @@ def upload_file(
file_paths: list = []
file_metas: list = []
meta_form = json.loads(meta) # type: ignore
meta_form = json.loads(meta) or {} # type: ignore
if not isinstance(meta_form, dict):
raise HTTPException(status_code=500, detail=f"The meta field must be a dict or None, not {type(meta_form)}")
for file in files:
try:

View File

@ -124,6 +124,9 @@ def test_delete_documents(populated_client: TestClient):
def test_file_upload(client: TestClient):
response = client.post(url="/documents/get_by_filters", data='{"filters": {}}')
assert len(response.json()) == 0
file_to_upload = {"files": (Path(__file__).parent / "samples" / "pdf" / "sample_pdf_1.pdf").open("rb")}
response = client.post(
url="/file-upload",
@ -132,6 +135,41 @@ def test_file_upload(client: TestClient):
)
assert 200 == response.status_code
response = client.post(url="/documents/get_by_filters", data='{"filters": {}}')
assert len(response.json()) > 0
def test_file_upload_with_no_meta(client: TestClient):
response = client.post(url="/documents/get_by_filters", data='{"filters": {}}')
assert len(response.json()) == 0
file_to_upload = {"files": (Path(__file__).parent / "samples" / "pdf" / "sample_pdf_1.pdf").open("rb")}
response = client.post(
url="/file-upload",
files=file_to_upload,
data={"meta": ""},
)
assert 200 == response.status_code
response = client.post(url="/documents/get_by_filters", data='{"filters": {}}')
assert len(response.json()) > 0
def test_file_upload_with_wrong_meta(client: TestClient):
response = client.post(url="/documents/get_by_filters", data='{"filters": {}}')
assert len(response.json()) == 0
file_to_upload = {"files": (Path(__file__).parent / "samples" / "pdf" / "sample_pdf_1.pdf").open("rb")}
response = client.post(
url="/file-upload",
files=file_to_upload,
data={"meta": "1"},
)
assert 500 == response.status_code
response = client.post(url="/documents/get_by_filters", data='{"filters": {}}')
assert len(response.json()) == 0
def test_query_with_no_filter(populated_client: TestClient):
query_with_no_filter_value = {"query": "Who made the PDF specification?"}