openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
achandmsft-patch-2

Branches

Tags

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

Clone

HTTPS

Download ZIP

tests/Models/ModelsTests.cs

106lines · modecode

1using NUnit.Framework;
2using OpenAI.Models;
3using OpenAI.Tests.Utility;
4using System;
5using System.ClientModel;
6using System.Linq;
7using System.Threading.Tasks;
8using static OpenAI.Tests.TestHelpers;
9
10namespace OpenAI.Tests.Models;
11
12[TestFixture(true)]
13[TestFixture(false)]
14[Parallelizable(ParallelScope.All)]
15[Category("Models")]
16public class ModelsTests : SyncAsyncTestBase
17{
18 public ModelsTests(bool isAsync) : base(isAsync)
19 {
20 }
21
22 [Test]
23 public async Task ListModels()
24 {
25 OpenAIModelClient client = GetTestClient<OpenAIModelClient>(TestScenario.Models);
26
27 OpenAIModelCollection allModels = IsAsync
28 ? await client.GetModelsAsync()
29 : client.GetModels();
30
31 OpenAIModel whisper = allModels.First(m => m.Id.Contains("whisper", StringComparison.InvariantCultureIgnoreCase));
32 OpenAIModel turbo = allModels.First(m => m.Id.Contains("turbo", StringComparison.InvariantCultureIgnoreCase));
33 long unixTime2020 = (new DateTimeOffset(2020, 01, 01, 0, 0, 0, TimeSpan.Zero)).ToUnixTimeSeconds();
34
35 Assert.That(whisper.Id, Is.Not.EqualTo(turbo.Id));
36 Assert.That(whisper.CreatedAt.ToUnixTimeSeconds(), Is.GreaterThan(unixTime2020));
37 Assert.That(turbo.CreatedAt.ToUnixTimeSeconds(), Is.GreaterThan(unixTime2020));
38 Assert.That(whisper.OwnedBy.ToLowerInvariant(), Contains.Substring("system").Or.Contains("openai"));
39 Assert.That(turbo.OwnedBy.ToLowerInvariant(), Contains.Substring("system").Or.Contains("openai"));
40
41 Console.WriteLine($"Total model count: {allModels.Count}");
42 }
43
44 [Test]
45 public async Task GetModelInfo()
46 {
47 OpenAIModelClient client = GetTestClient<OpenAIModelClient>(TestScenario.Models);
48 string modelId = "gpt-4o-mini";
49
50 OpenAIModel model = IsAsync
51 ? await client.GetModelAsync(modelId)
52 : client.GetModel(modelId);
53
54 long unixTime2020 = (new DateTimeOffset(2020, 01, 01, 0, 0, 0, TimeSpan.Zero)).ToUnixTimeSeconds();
55
56 Assert.That(model, Is.Not.Null);
57 Assert.That(model.Id, Is.EqualTo(modelId));
58 Assert.That(model.CreatedAt.ToUnixTimeSeconds(), Is.GreaterThan(unixTime2020));
59 Assert.That(model.OwnedBy.ToLowerInvariant(), Does.Contain("system"));
60 }
61
62 [Test]
63 public void GetModelCanParseServiceError()
64 {
65 OpenAIModelClient client = GetTestClient<OpenAIModelClient>(TestScenario.Models);
66 ClientResultException ex = null;
67
68 if (IsAsync)
69 {
70 ex = Assert.ThrowsAsync<ClientResultException>(async () => await client.GetModelAsync("fake_id"));
71 }
72 else
73 {
74 ex = Assert.Throws<ClientResultException>(() => client.GetModel("fake_id"));
75 }
76
77 Assert.That(ex.Status, Is.EqualTo(404));
78 }
79
80 [Test]
81 public void DeleteModelCanParseServiceError()
82 {
83 OpenAIModelClient client = GetTestClient<OpenAIModelClient>(TestScenario.Models);
84 ClientResultException ex = null;
85
86 if (IsAsync)
87 {
88 ex = Assert.ThrowsAsync<ClientResultException>(async () => await client.DeleteModelAsync("fake_id"));
89 }
90 else
91 {
92 ex = Assert.Throws<ClientResultException>(() => client.DeleteModel("fake_id"));
93 }
94
95 // If the model exists but the user doesn't own it, the service returns 403.
96 // If the model doesn't exist at all, the service returns 404.
97 // The service has changed the behavior in the past.
98 Assert.That((ex.Status == 403 || ex.Status == 404), Is.True);
99 }
100
101 [Test]
102 public void SerializeModelCollection()
103 {
104 // TODO: Add this test.
105 }
106}
107