openai/openai-dotnet
Publicmirrored from https://github.com/openai/openai-dotnetAvailable
tests/Models/ModelsTests.cs
106lines · modecode
| 1 | using NUnit.Framework; |
| 2 | using OpenAI.Models; |
| 3 | using OpenAI.Tests.Utility; |
| 4 | using System; |
| 5 | using System.ClientModel; |
| 6 | using System.Linq; |
| 7 | using System.Threading.Tasks; |
| 8 | using static OpenAI.Tests.TestHelpers; |
| 9 | |
| 10 | namespace OpenAI.Tests.Models; |
| 11 | |
| 12 | [TestFixture(true)] |
| 13 | [TestFixture(false)] |
| 14 | [Parallelizable(ParallelScope.All)] |
| 15 | [Category("Models")] |
| 16 | public 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 | |