File: test_files.py

package info (click to toggle)
python-azure 20251118%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 783,356 kB
  • sloc: python: 6,474,533; ansic: 804; javascript: 287; sh: 205; makefile: 198; xml: 109
file content (74 lines) | stat: -rw-r--r-- 3,508 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------

import re
import pytest
from pathlib import Path
from test_base import TestBase, servicePreparer
from devtools_testutils import recorded_by_proxy, is_live_and_not_recording


@pytest.mark.skipif(
    condition=(not is_live_and_not_recording()),
    reason="Skipped because we cannot record network calls with AOAI client",
)
class TestFiles(TestBase):

    # To run this test, use the following command in the \sdk\ai\azure-ai-projects folder:
    # cls & pytest tests\test_files.py::TestFiles::test_files -s
    @servicePreparer()
    @recorded_by_proxy
    def test_files(self, **kwargs):

        file_purpose = self.test_files_params["file_purpose"]
        test_file_name = self.test_files_params["test_file_name"]

        test_data_dir = Path(__file__).parent.parent / "test_data" / "files"
        test_file_path = test_data_dir / test_file_name

        assert test_file_path.exists(), f"Test file not found: {test_file_path}"

        with self.create_client(**kwargs) as project_client:

            with project_client.get_openai_client() as openai_client:

                print(f"[test_files] Create (upload) a file with purpose '{file_purpose}'")
                with open(test_file_path, "rb") as f:
                    uploaded_file = openai_client.files.create(file=f, purpose=file_purpose)
                TestBase.validate_file(uploaded_file, expected_purpose=file_purpose)
                file_id = uploaded_file.id
                print(f"[test_files] Uploaded file with ID: {file_id}")

                processed_file = openai_client.files.wait_for_processing(file_id)
                TestBase.assert_equal_or_not_none(processed_file.status, "processed")
                print(f"[test_files] File processed successfully with ID: {file_id}")

                print(f"[test_files] Retrieve file metadata by ID: {file_id}")
                retrieved_file = openai_client.files.retrieve(file_id)
                TestBase.validate_file(retrieved_file, expected_file_id=file_id, expected_purpose=file_purpose)
                print(f"[test_files] Retrieved file: {retrieved_file.filename}")

                print(f"[test_files] Retrieve file content for ID: {file_id}")
                file_content = openai_client.files.content(file_id)
                assert file_content is not None
                assert file_content.content is not None
                assert len(file_content.content) > 0
                print(f"[test_files] File content retrieved ({len(file_content.content)} bytes)")

                print("[test_files] List all files")
                found_uploaded_file = False
                for file in openai_client.files.list():
                    if file.id == file_id:
                        found_uploaded_file = True
                        TestBase.validate_file(file)
                        print(f"[test_files] Found uploaded file in list: {file.id}")
                        break
                assert found_uploaded_file, "Uploaded file not found in list"

                print(f"[test_files] Delete file with ID: {file_id}")
                deleted_file = openai_client.files.delete(file_id)
                TestBase.assert_equal_or_not_none(deleted_file.id, file_id)
                assert deleted_file.deleted is True
                print(f"[test_files] Successfully deleted file: {deleted_file.id}")