Skip to content

Commit 30f13c7

Browse files
committed
next set to ClientTestBase
1 parent 632549a commit 30f13c7

File tree

13 files changed

+417
-1292
lines changed

13 files changed

+417
-1292
lines changed

tests/Containers/ContainerTests.cs

Lines changed: 145 additions & 508 deletions
Large diffs are not rendered by default.

tests/Embeddings/EmbeddingsMockTests.cs

Lines changed: 22 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111

1212
namespace OpenAI.Tests.Embeddings;
1313

14-
[TestFixture(true)]
15-
[TestFixture(false)]
1614
[Parallelizable(ParallelScope.All)]
1715
[Category("Embeddings")]
1816
[Category("Smoke")]
19-
public class EmbeddingsMockTests : SyncAsyncTestBase
17+
public class EmbeddingsMockTests : ClientTestBase
2018
{
2119
private static readonly ApiKeyCredential s_fakeCredential = new ApiKeyCredential("key");
2220

@@ -51,11 +49,9 @@ public async Task GenerateEmbeddingDeserializesVector()
5149
]
5250
}
5351
""");
54-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential, clientOptions);
52+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential, clientOptions));
5553

56-
OpenAIEmbedding embedding = IsAsync
57-
? await client.GenerateEmbeddingAsync("prompt")
58-
: client.GenerateEmbedding("prompt");
54+
OpenAIEmbedding embedding = await client.GenerateEmbeddingAsync("prompt");
5955

6056
float[] vector = embedding.ToFloats().ToArray();
6157
Assert.That(vector.SequenceEqual([1f, 2f, 3f]));
@@ -64,20 +60,12 @@ public async Task GenerateEmbeddingDeserializesVector()
6460
[Test]
6561
public void GenerateEmbeddingRespectsTheCancellationToken()
6662
{
67-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential);
63+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential));
6864
using CancellationTokenSource cancellationSource = new();
6965
cancellationSource.Cancel();
7066

71-
if (IsAsync)
72-
{
73-
Assert.That(async () => await client.GenerateEmbeddingAsync("prompt", cancellationToken: cancellationSource.Token),
67+
Assert.That(async () => await client.GenerateEmbeddingAsync("prompt", cancellationToken: cancellationSource.Token),
7468
Throws.InstanceOf<OperationCanceledException>());
75-
}
76-
else
77-
{
78-
Assert.That(() => client.GenerateEmbedding("prompt", cancellationToken: cancellationSource.Token),
79-
Throws.InstanceOf<OperationCanceledException>());
80-
}
8169
}
8270

8371
[Test]
@@ -92,11 +80,9 @@ public async Task GenerateEmbeddingsWithStringsDeserializesUsage()
9280
}
9381
}
9482
""");
95-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential, clientOptions);
83+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential, clientOptions));
9684

97-
OpenAIEmbeddingCollection embeddings = IsAsync
98-
? await client.GenerateEmbeddingsAsync(["prompt"])
99-
: client.GenerateEmbeddings(["prompt"]);
85+
OpenAIEmbeddingCollection embeddings = await client.GenerateEmbeddingsAsync(["prompt"]);
10086

10187
Assert.That(embeddings.Usage.InputTokenCount, Is.EqualTo(10));
10288
Assert.That(embeddings.Usage.TotalTokenCount, Is.EqualTo(20));
@@ -128,11 +114,9 @@ public async Task GenerateEmbeddingsWithStringsDeserializesVector()
128114
]
129115
}
130116
""");
131-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential, clientOptions);
117+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential, clientOptions));
132118

133-
OpenAIEmbeddingCollection embeddings = IsAsync
134-
? await client.GenerateEmbeddingsAsync(["prompt"])
135-
: client.GenerateEmbeddings(["prompt"]);
119+
OpenAIEmbeddingCollection embeddings = await client.GenerateEmbeddingsAsync(["prompt"]);
136120
OpenAIEmbedding embedding = embeddings.Single();
137121

138122
float[] vector = embedding.ToFloats().ToArray();
@@ -142,20 +126,12 @@ public async Task GenerateEmbeddingsWithStringsDeserializesVector()
142126
[Test]
143127
public void GenerateEmbeddingsWithStringsRespectsTheCancellationToken()
144128
{
145-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential);
129+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential));
146130
using CancellationTokenSource cancellationSource = new();
147131
cancellationSource.Cancel();
148132

149-
if (IsAsync)
150-
{
151-
Assert.That(async () => await client.GenerateEmbeddingsAsync(["prompt"], cancellationToken: cancellationSource.Token),
152-
Throws.InstanceOf<OperationCanceledException>());
153-
}
154-
else
155-
{
156-
Assert.That(() => client.GenerateEmbeddings(["prompt"], cancellationToken: cancellationSource.Token),
157-
Throws.InstanceOf<OperationCanceledException>());
158-
}
133+
Assert.That(async () => await client.GenerateEmbeddingsAsync(["prompt"], cancellationToken: cancellationSource.Token),
134+
Throws.InstanceOf<OperationCanceledException>());
159135
}
160136

161137
[Test]
@@ -170,11 +146,9 @@ public async Task GenerateEmbeddingsWithIntegersDeserializesUsage()
170146
}
171147
}
172148
""");
173-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential, clientOptions);
149+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential, clientOptions));
174150

175-
OpenAIEmbeddingCollection embeddings = IsAsync
176-
? await client.GenerateEmbeddingsAsync([new[] { 1 }])
177-
: client.GenerateEmbeddings([new[] { 1 }]);
151+
OpenAIEmbeddingCollection embeddings = await client.GenerateEmbeddingsAsync([new[] { 1 }]);
178152

179153
Assert.That(embeddings.Usage.InputTokenCount, Is.EqualTo(10));
180154
Assert.That(embeddings.Usage.TotalTokenCount, Is.EqualTo(20));
@@ -206,11 +180,9 @@ public async Task GenerateEmbeddingsWithIntegersDeserializesVector()
206180
]
207181
}
208182
""");
209-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential, clientOptions);
183+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential, clientOptions));
210184

211-
OpenAIEmbeddingCollection embeddings = IsAsync
212-
? await client.GenerateEmbeddingsAsync([new[] { 1 }])
213-
: client.GenerateEmbeddings([new[] { 1 }]);
185+
OpenAIEmbeddingCollection embeddings = await client.GenerateEmbeddingsAsync([new[] { 1 }]);
214186
OpenAIEmbedding embedding = embeddings.Single();
215187

216188
float[] vector = embedding.ToFloats().ToArray();
@@ -220,20 +192,12 @@ public async Task GenerateEmbeddingsWithIntegersDeserializesVector()
220192
[Test]
221193
public void GenerateEmbeddingsWithIntegersRespectsTheCancellationToken()
222194
{
223-
EmbeddingClient client = new EmbeddingClient("model", s_fakeCredential);
195+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("model", s_fakeCredential));
224196
using CancellationTokenSource cancellationSource = new();
225197
cancellationSource.Cancel();
226198

227-
if (IsAsync)
228-
{
229-
Assert.That(async () => await client.GenerateEmbeddingsAsync([new[] { 1 }], cancellationToken: cancellationSource.Token),
230-
Throws.InstanceOf<OperationCanceledException>());
231-
}
232-
else
233-
{
234-
Assert.That(() => client.GenerateEmbeddings([new[] { 1 }], cancellationToken: cancellationSource.Token),
235-
Throws.InstanceOf<OperationCanceledException>());
236-
}
199+
Assert.That(async () => await client.GenerateEmbeddingsAsync([new[] { 1 }], cancellationToken: cancellationSource.Token),
200+
Throws.InstanceOf<OperationCanceledException>());
237201
}
238202

239203
private OpenAIClientOptions GetClientOptionsWithMockResponse(int status, string content)
@@ -243,6 +207,9 @@ private OpenAIClientOptions GetClientOptionsWithMockResponse(int status, string
243207
return new OpenAIClientOptions()
244208
{
245209
Transport = new MockPipelineTransport(_ => response)
210+
{
211+
ExpectSyncPipeline = !IsAsync
212+
}
246213
};
247214
}
248215
}

tests/Embeddings/EmbeddingsTests.cs

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,11 @@
1111

1212
namespace OpenAI.Tests.Embeddings;
1313

14-
[TestFixture(true)]
15-
[TestFixture(false)]
1614
[Parallelizable(ParallelScope.All)]
1715
[Category("Embeddings")]
18-
public class EmbeddingsTests : SyncAsyncTestBase
16+
public class EmbeddingsTests : ClientTestBase
1917
{
20-
private static EmbeddingClient GetTestClient() => GetTestClient<EmbeddingClient>(TestScenario.Embeddings);
18+
private EmbeddingClient GetTestClient() => CreateProxyFromClient(GetTestClient<EmbeddingClient>(TestScenario.Embeddings));
2119

2220
public EmbeddingsTests(bool isAsync) : base(isAsync)
2321
{
@@ -32,13 +30,11 @@ public enum EmbeddingsInputKind
3230
[Test]
3331
public async Task GenerateSingleEmbedding()
3432
{
35-
EmbeddingClient client = new("text-embedding-3-small", Environment.GetEnvironmentVariable("OPENAI_API_KEY"));
33+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("text-embedding-3-small", Environment.GetEnvironmentVariable("OPENAI_API_KEY")));
3634

3735
string input = "Hello, world!";
3836

39-
OpenAIEmbedding embedding = IsAsync
40-
? await client.GenerateEmbeddingAsync(input)
41-
: client.GenerateEmbedding(input);
37+
OpenAIEmbedding embedding = await client.GenerateEmbeddingAsync(input);
4238
Assert.That(embedding, Is.Not.Null);
4339
Assert.That(embedding.Index, Is.EqualTo(0));
4440

@@ -55,7 +51,7 @@ public async Task GenerateSingleEmbedding()
5551
[TestCase(EmbeddingsInputKind.UsingIntegers)]
5652
public async Task GenerateMultipleEmbeddings(EmbeddingsInputKind embeddingsInputKind)
5753
{
58-
EmbeddingClient client = new("text-embedding-3-small", Environment.GetEnvironmentVariable("OPENAI_API_KEY"));
54+
EmbeddingClient client = CreateProxyFromClient(new EmbeddingClient("text-embedding-3-small", Environment.GetEnvironmentVariable("OPENAI_API_KEY")));
5955

6056
const int Dimensions = 456;
6157

@@ -75,9 +71,7 @@ public async Task GenerateMultipleEmbeddings(EmbeddingsInputKind embeddingsInput
7571
"Goodbye!"
7672
];
7773

78-
embeddings = IsAsync
79-
? await client.GenerateEmbeddingsAsync(prompts, options)
80-
: client.GenerateEmbeddings(prompts, options);
74+
embeddings = await client.GenerateEmbeddingsAsync(prompts, options);
8175
}
8276
else if (embeddingsInputKind == EmbeddingsInputKind.UsingIntegers)
8377
{
@@ -88,9 +82,7 @@ public async Task GenerateMultipleEmbeddings(EmbeddingsInputKind embeddingsInput
8882
new[] { 84, 69, 83, 84 }
8983
];
9084

91-
embeddings = IsAsync
92-
? await client.GenerateEmbeddingsAsync(prompts, options)
93-
: client.GenerateEmbeddings(prompts, options);
85+
embeddings = await client.GenerateEmbeddingsAsync(prompts, options);
9486
}
9587

9688
Assert.That(embeddings, Is.Not.Null);
@@ -126,9 +118,7 @@ public async Task BadOptions()
126118

127119
try
128120
{
129-
_ = IsAsync
130-
? await client.GenerateEmbeddingAsync("foo", options)
131-
: client.GenerateEmbedding("foo", options);
121+
_ = await client.GenerateEmbeddingAsync("foo", options);
132122
}
133123
catch (Exception ex)
134124
{
@@ -157,15 +147,11 @@ public async Task GenerateMultipleEmbeddingsWithBadOptions(EmbeddingsInputKind e
157147
{
158148
if (embeddingsInputKind == EmbeddingsInputKind.UsingStrings)
159149
{
160-
_ = IsAsync
161-
? await client.GenerateEmbeddingsAsync(["prompt"], options)
162-
: client.GenerateEmbeddings(["prompt"], options);
150+
_ = await client.GenerateEmbeddingsAsync(["prompt"], options);
163151
}
164152
else if (embeddingsInputKind == EmbeddingsInputKind.UsingIntegers)
165153
{
166-
_ = IsAsync
167-
? await client.GenerateEmbeddingsAsync([new[] { 1 }], options)
168-
: client.GenerateEmbeddings([new[] { 1 }], options);
154+
_ = await client.GenerateEmbeddingsAsync([new[] { 1 }], options);
169155
}
170156
}
171157
catch (Exception ex)
@@ -185,13 +171,9 @@ public async Task EmbeddingFromStringAndEmbeddingFromTokenIdsAreEqual()
185171
List<string> input1 = new List<string> { "Hello, world!" };
186172
List<ReadOnlyMemory<int>> input2 = new List<ReadOnlyMemory<int>> { new[] { 9906, 11, 1917, 0 } };
187173

188-
OpenAIEmbeddingCollection results1 = IsAsync
189-
? await client.GenerateEmbeddingsAsync(input1)
190-
: client.GenerateEmbeddings(input1);
174+
OpenAIEmbeddingCollection results1 = await client.GenerateEmbeddingsAsync(input1);
191175

192-
OpenAIEmbeddingCollection results2 = IsAsync
193-
? await client.GenerateEmbeddingsAsync(input2)
194-
: client.GenerateEmbeddings(input2);
176+
OpenAIEmbeddingCollection results2 = await client.GenerateEmbeddingsAsync(input2);
195177

196178
ReadOnlyMemory<float> vector1 = results1[0].ToFloats();
197179
ReadOnlyMemory<float> vector2 = results2[0].ToFloats();

tests/Files/Files.UploadsTests.cs

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010

1111
namespace OpenAI.Tests.Files;
1212

13-
[TestFixture(true)]
14-
[TestFixture(false)]
1513
[Parallelizable(ParallelScope.Fixtures)]
1614
[Category("Uploads")]
17-
public class UploadsTests : SyncAsyncTestBase
15+
public class UploadsTests : ClientTestBase
1816
{
19-
private static OpenAIFileClient GetTestClient() => GetTestClient<OpenAIFileClient>(TestScenario.Files);
17+
private OpenAIFileClient GetTestClient() => CreateProxyFromClient(GetTestClient<OpenAIFileClient>(TestScenario.Files));
2018

2119
public UploadsTests(bool isAsync) : base(isAsync)
2220
{
@@ -31,7 +29,7 @@ public async Task CreateUploadWorks(bool useTopLevelClient)
3129
// are setting the internal Uploads client correctly.
3230

3331
OpenAIFileClient fileClient = useTopLevelClient
34-
? TestHelpers.GetTestTopLevelClient().GetOpenAIFileClient()
32+
? CreateProxyFromClient(TestHelpers.GetTestTopLevelClient().GetOpenAIFileClient())
3533
: GetTestClient();
3634
BinaryContent content = BinaryContent.Create(BinaryData.FromObjectAsJson(new
3735
{
@@ -41,9 +39,7 @@ public async Task CreateUploadWorks(bool useTopLevelClient)
4139
mime_type = "text/jsonl"
4240
}));
4341

44-
ClientResult result = IsAsync
45-
? await fileClient.CreateUploadAsync(content)
46-
: fileClient.CreateUpload(content);
42+
ClientResult result = await fileClient.CreateUploadAsync(content);
4743

4844
BinaryData response = result.GetRawResponse().Content;
4945
using JsonDocument jsonDocument = JsonDocument.Parse(response);
@@ -70,10 +66,7 @@ public async Task AddUploadPartWorks()
7066

7167
content.Add([1, 2, 3, 4], "data", "data", "application/octet-stream");
7268

73-
ClientResult result = IsAsync
74-
? await fileClient.AddUploadPartAsync(uploadDetails.Id, content, content.ContentType)
75-
: fileClient.AddUploadPart(uploadDetails.Id, content, content.ContentType);
76-
69+
ClientResult result = await fileClient.AddUploadPartAsync(uploadDetails.Id, content, content.ContentType);
7770
BinaryData response = result.GetRawResponse().Content;
7871
using JsonDocument jsonDocument = JsonDocument.Parse(response);
7972
UploadPartDetails uploadPartDetails = GetUploadPartDetails(jsonDocument);
@@ -106,9 +99,7 @@ public async Task CompleteUploadWorks()
10699
}
107100
}));
108101

109-
ClientResult result = IsAsync
110-
? await fileClient.CompleteUploadAsync(createdUploadDetails.Id, content)
111-
: fileClient.CompleteUpload(createdUploadDetails.Id, content);
102+
ClientResult result = await fileClient.CompleteUploadAsync(createdUploadDetails.Id, content);
112103

113104
BinaryData response = result.GetRawResponse().Content;
114105
using JsonDocument jsonDocument = JsonDocument.Parse(response);
@@ -148,9 +139,7 @@ public async Task CancelUploadWorks()
148139
OpenAIFileClient fileClient = GetTestClient();
149140
UploadDetails createdUploadDetails = await CreateTestUploadAsync(fileClient);
150141

151-
ClientResult result = IsAsync
152-
? await fileClient.CancelUploadAsync(createdUploadDetails.Id)
153-
: fileClient.CancelUpload(createdUploadDetails.Id);
142+
ClientResult result = await fileClient.CancelUploadAsync(createdUploadDetails.Id);
154143

155144
BinaryData response = result.GetRawResponse().Content;
156145
using JsonDocument jsonDocument = JsonDocument.Parse(response);

0 commit comments

Comments
 (0)