-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathRuntimeCommunicationProblemsTests.cs
More file actions
82 lines (66 loc) · 3.4 KB
/
RuntimeCommunicationProblemsTests.cs
File metadata and controls
82 lines (66 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
namespace DotPilot.Tests;
public class RuntimeCommunicationProblemsTests
{
[TestCase(ProviderConnectionStatus.Unavailable, RuntimeCommunicationProblemCode.ProviderUnavailable, System.Net.HttpStatusCode.ServiceUnavailable)]
[TestCase(ProviderConnectionStatus.RequiresAuthentication, RuntimeCommunicationProblemCode.ProviderAuthenticationRequired, System.Net.HttpStatusCode.Unauthorized)]
[TestCase(ProviderConnectionStatus.Misconfigured, RuntimeCommunicationProblemCode.ProviderMisconfigured, System.Net.HttpStatusCode.FailedDependency)]
[TestCase(ProviderConnectionStatus.Outdated, RuntimeCommunicationProblemCode.ProviderOutdated, System.Net.HttpStatusCode.PreconditionFailed)]
public void ProviderUnavailableMapsStatusesToExplicitProblemCodes(
ProviderConnectionStatus status,
RuntimeCommunicationProblemCode expectedCode,
System.Net.HttpStatusCode expectedStatusCode)
{
var problem = RuntimeCommunicationProblems.ProviderUnavailable(status, "Codex");
problem.HasErrorCode(expectedCode).Should().BeTrue();
problem.StatusCode.Should().Be((int)expectedStatusCode);
problem.Detail.Should().Contain("Codex");
}
[Test]
public void ProviderUnavailableRejectsAvailableStatus()
{
var action = () => RuntimeCommunicationProblems.ProviderUnavailable(ProviderConnectionStatus.Available, "Codex");
action.Should().Throw<ArgumentOutOfRangeException>();
}
[Test]
public void ProviderUnavailableRejectsBlankProviderNames()
{
var action = () => RuntimeCommunicationProblems.ProviderUnavailable(ProviderConnectionStatus.Unavailable, " ");
action.Should().Throw<ArgumentException>();
}
[Test]
public void InvalidPromptCreatesValidationProblem()
{
var problem = RuntimeCommunicationProblems.InvalidPrompt();
problem.HasErrorCode(RuntimeCommunicationProblemCode.PromptRequired).Should().BeTrue();
problem.StatusCode.Should().Be((int)System.Net.HttpStatusCode.BadRequest);
problem.InvalidField("Prompt").Should().BeTrue();
}
[Test]
public void RuntimeHostUnavailableCreatesServiceUnavailableProblem()
{
var problem = RuntimeCommunicationProblems.RuntimeHostUnavailable();
problem.HasErrorCode(RuntimeCommunicationProblemCode.RuntimeHostUnavailable).Should().BeTrue();
problem.StatusCode.Should().Be((int)System.Net.HttpStatusCode.ServiceUnavailable);
}
[Test]
public void OrchestrationUnavailableCreatesServiceUnavailableProblem()
{
var problem = RuntimeCommunicationProblems.OrchestrationUnavailable();
problem.HasErrorCode(RuntimeCommunicationProblemCode.OrchestrationUnavailable).Should().BeTrue();
problem.StatusCode.Should().Be((int)System.Net.HttpStatusCode.ServiceUnavailable);
}
[Test]
public void PolicyRejectedCreatesForbiddenProblem()
{
var problem = RuntimeCommunicationProblems.PolicyRejected("file-write policy");
problem.HasErrorCode(RuntimeCommunicationProblemCode.PolicyRejected).Should().BeTrue();
problem.StatusCode.Should().Be((int)System.Net.HttpStatusCode.Forbidden);
problem.Detail.Should().Contain("file-write policy");
}
[Test]
public void PolicyRejectedRejectsBlankPolicyNames()
{
var action = () => RuntimeCommunicationProblems.PolicyRejected(" ");
action.Should().Throw<ArgumentException>();
}
}