1
+ using System . Diagnostics ;
2
+ using ManagedCode . OpenAI . Client ;
3
+ using ManagedCode . OpenAI . Files . Abstractions ;
4
+ using Xunit ;
5
+ using Xunit . Abstractions ;
6
+
7
+ namespace ManagedCode . OpenAI . Tests ;
8
+
9
+
10
+
11
+ public class FileTest
12
+ {
13
+ private readonly ITestOutputHelper _output ;
14
+ private readonly IGptClient _client = Mocks . Client ( ) ;
15
+ private readonly IFileManager _fileManager ;
16
+
17
+
18
+ private const string fileContent =
19
+ @"{""prompt"":""This is a test"", ""completion"":""This is a test""}" ;
20
+
21
+
22
+ public FileTest ( ITestOutputHelper output )
23
+ {
24
+ _output = output ;
25
+ _fileManager = _client . FileManager ( ) ;
26
+ }
27
+
28
+ [ Fact ]
29
+ public async Task UploadFile_Success ( )
30
+ {
31
+ const string fileName = "test.txt" ;
32
+
33
+
34
+ var file = await _fileManager . CreateFileAsync ( fileName , fileContent ) ;
35
+
36
+ Log ( $ "File id: { file . Id } ") ;
37
+
38
+ Assert . False ( string . IsNullOrWhiteSpace ( file . Id ) ) ;
39
+ Assert . Equal ( fileName , file . Filename ) ;
40
+ Assert . Equal ( fileContent . Length , file . Bytes ) ;
41
+ }
42
+
43
+
44
+ // Needs premium account
45
+ // [Fact]
46
+ public async Task ContentFile_Success ( )
47
+ {
48
+ string fileId = await _fileManager . FileListAsync ( )
49
+ . ContinueWith ( t => t . Result [ 0 ] . Id ) ;
50
+
51
+ var content = await _fileManager . FileContentAsync ( fileId ) ;
52
+
53
+ Log ( $ "File content: { content } ") ;
54
+
55
+ Assert . Equal ( fileContent , content ) ;
56
+ }
57
+
58
+ [ Fact ]
59
+ public async Task FileList_Success ( )
60
+ {
61
+ const string fileName = "test.txt" ;
62
+
63
+ var newFile = await _fileManager . CreateFileAsync ( fileName , fileContent ) ;
64
+ Assert . NotNull ( newFile ) ;
65
+
66
+ var files = await _fileManager . FileListAsync ( ) ;
67
+ Assert . NotEmpty ( files ) ;
68
+
69
+
70
+ foreach ( var file in files )
71
+ {
72
+ Log ( $ "File: { file . Id } - { file . Filename } ") ;
73
+ }
74
+
75
+ var lastFiles = files . First ( e => e . Id == newFile . Id ) ;
76
+
77
+ Assert . Equal ( newFile . Id , lastFiles . Id ) ;
78
+ Assert . Equal ( newFile . Filename , lastFiles . Filename ) ;
79
+ Assert . Equal ( newFile . Bytes , lastFiles . Bytes ) ;
80
+ }
81
+
82
+ [ Fact ]
83
+ public async Task DeleteFile_Success ( )
84
+ {
85
+ const string fileName = "test.txt" ;
86
+
87
+ var newFile = await _fileManager . CreateFileAsync ( fileName , fileContent ) ;
88
+ Assert . NotNull ( newFile ) ;
89
+
90
+ //Waiting for file to be deleted
91
+ Thread . Sleep ( 5000 ) ;
92
+
93
+ var deleted = await _fileManager . DeleteFileAsync ( newFile ) ;
94
+ Log ( deleted . ToString ( ) ) ;
95
+ Assert . True ( deleted ) ;
96
+
97
+ var files = await _fileManager . FileListAsync ( ) ;
98
+ Assert . NotEqual ( newFile . Id , files . Last ( ) . Id ) ;
99
+ }
100
+
101
+ [ Fact ]
102
+ public async Task FileInfo_Success ( )
103
+ {
104
+ const string fileName = "test.txt" ;
105
+
106
+ var newFile = await _fileManager . CreateFileAsync ( fileName , fileContent ) ;
107
+ Assert . NotNull ( newFile ) ;
108
+
109
+ var fileInfo = await _fileManager . FileInfoAsync ( newFile . Id ) ;
110
+ Assert . NotNull ( fileInfo ) ;
111
+
112
+ Assert . Equal ( newFile . Id , fileInfo . Id ) ;
113
+ Assert . Equal ( newFile . Filename , fileInfo . Filename ) ;
114
+ Assert . Equal ( newFile . Bytes , fileInfo . Bytes ) ;
115
+ }
116
+
117
+
118
+
119
+ void Log ( string log )
120
+ {
121
+ _output . WriteLine ( log ) ;
122
+ }
123
+ }
0 commit comments