openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.0.0-beta.10

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

tests/Files/FileTests.cs

127lines · modecode

1using NUnit.Framework;
2using OpenAI.Files;
3using OpenAI.Tests.Utility;
4using System;
5using System.IO;
6using System.Threading.Tasks;
7using static OpenAI.Tests.TestHelpers;
8
9namespace OpenAI.Tests.Files;
10
11[TestFixture(true)]
12[TestFixture(false)]
13[Parallelizable(ParallelScope.Fixtures)]
14[Category("Files")]
15public partial class FileTests : SyncAsyncTestBase
16{
17 public FileTests(bool isAsync) : base(isAsync)
18 {
19 }
20
21 [Test]
22 public async Task ListFiles()
23 {
24 FileClient client = GetTestClient();
25
26 OpenAIFileInfoCollection allFiles = IsAsync
27 ? await client.GetFilesAsync()
28 : client.GetFiles();
29 Assert.That(allFiles.Count, Is.GreaterThan(0));
30 Console.WriteLine($"Total files count: {allFiles.Count}");
31
32 OpenAIFileInfoCollection assistantsFiles = IsAsync
33 ? await client.GetFilesAsync(OpenAIFilePurpose.Assistants)
34 : client.GetFiles(OpenAIFilePurpose.Assistants);
35 Assert.That(assistantsFiles.Count, Is.GreaterThan(0).And.LessThan(allFiles.Count));
36 Console.WriteLine($"Assistant files count: {assistantsFiles.Count}");
37 }
38
39 [Test]
40 public async Task UploadAndRetrieve()
41 {
42 FileClient client = GetTestClient();
43 string fileContent = "Hello! This is a test text file. Please delete me.";
44 using Stream file = BinaryData.FromString(fileContent).ToStream();
45 string filename = "test-file-delete-me.txt";
46
47 // Upload file.
48 OpenAIFileInfo uploadedFile = IsAsync
49 ? await client.UploadFileAsync(file, filename, FileUploadPurpose.Assistants)
50 : client.UploadFile(file, filename, FileUploadPurpose.Assistants);
51 Assert.That(uploadedFile, Is.Not.Null);
52
53 try
54 {
55 Assert.That(uploadedFile.Filename, Is.EqualTo(filename));
56 Assert.That(uploadedFile.Purpose, Is.EqualTo(OpenAIFilePurpose.Assistants));
57
58 // Retrieve file.
59 OpenAIFileInfo retrievedFile = IsAsync
60 ? await client.GetFileAsync(uploadedFile.Id)
61 : client.GetFile(uploadedFile.Id);
62 Assert.That(retrievedFile.Id, Is.EqualTo(uploadedFile.Id));
63 Assert.That(retrievedFile.Filename, Is.EqualTo(uploadedFile.Filename));
64 }
65 finally
66 {
67 // Delete file.
68 bool deleted = IsAsync
69 ? await client.DeleteFileAsync(uploadedFile.Id)
70 : client.DeleteFile(uploadedFile.Id);
71 Assert.That(deleted, Is.True);
72 }
73 }
74
75 [Test]
76 public async Task UploadAndDownloadContent()
77 {
78 FileClient client = GetTestClient();
79 string imagePath = Path.Combine("Assets", "images_dog_and_cat.png");
80
81 // Upload file.
82 OpenAIFileInfo uploadedFile = IsAsync
83 ? await client.UploadFileAsync(imagePath, FileUploadPurpose.Vision)
84 : client.UploadFile(imagePath, FileUploadPurpose.Vision);
85 Assert.That(uploadedFile, Is.Not.Null);
86
87 try
88 {
89 Assert.That(uploadedFile.Filename, Is.EqualTo(imagePath));
90 Assert.That(uploadedFile.Purpose, Is.EqualTo(OpenAIFilePurpose.Vision));
91
92 // Download file content.
93 BinaryData downloadedContent = IsAsync
94 ? await client.DownloadFileAsync(uploadedFile.Id)
95 : client.DownloadFile(uploadedFile.Id);
96 Assert.That(downloadedContent, Is.Not.Null);
97 }
98 finally
99 {
100 // Delete file.
101 bool deleted = IsAsync
102 ? await client.DeleteFileAsync(uploadedFile.Id)
103 : client.DeleteFile(uploadedFile.Id);
104 Assert.That(deleted, Is.True);
105 }
106 }
107
108 [Test]
109 public void SerializeFileCollection()
110 {
111 // TODO: Add this test.
112 }
113
114 [Test]
115 public async Task NonAsciiFilename()
116 {
117 FileClient client = GetTestClient();
118 string filename = "你好.txt";
119 BinaryData fileContent = BinaryData.FromString("世界您好!这是个测试。");
120 OpenAIFileInfo uploadedFile = IsAsync
121 ? await client.UploadFileAsync(fileContent, filename, FileUploadPurpose.Assistants)
122 : client.UploadFile(fileContent, filename, FileUploadPurpose.Assistants);
123 Assert.That(uploadedFile?.Filename, Is.EqualTo(filename));
124 }
125
126 private static FileClient GetTestClient() => GetTestClient<FileClient>(TestScenario.Files);
127}