Skip to content

Commit e76dbb5

Browse files
authored
Fix private reflection (#60)
* Fix private reflection Two changes in this PR - Remove private reflection from one of the tests - Move to use `TaskCompletionSource` (feedback from previous PR) * fix * spelling
1 parent d18da9a commit e76dbb5

File tree

2 files changed

+17
-19
lines changed

2 files changed

+17
-19
lines changed

tests/ModelContextProtocol.Tests/Server/McpServerTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,12 @@ public async Task StartAsync_Should_Throw_InvalidOperationException_If_Already_I
8989
{
9090
// Arrange
9191
await using var server = McpServerFactory.Create(_serverTransport.Object, _options, _loggerFactory.Object, _serviceProvider);
92-
server.GetType().GetField("_isInitializing", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(server, true);
92+
var task = server.StartAsync(TestContext.Current.CancellationToken);
9393

9494
// Act & Assert
9595
await Assert.ThrowsAsync<InvalidOperationException>(() => server.StartAsync(TestContext.Current.CancellationToken));
96+
97+
await task;
9698
}
9799

98100
[Fact]

tests/ModelContextProtocol.Tests/Transport/SseClientTransportTests.cs

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -110,48 +110,44 @@ public async Task ConnectAsync_Throws_If_Already_Connected()
110110
using var mockHttpHandler = new MockHttpHandler();
111111
using var httpClient = new HttpClient(mockHttpHandler);
112112
await using var transport = new SseClientTransport(_transportOptions, _serverConfig, httpClient, NullLoggerFactory.Instance);
113-
using var mreConnected = new ManualResetEventSlim(false);
114-
using var mreDone = new ManualResetEventSlim(false);
113+
var tcsConnected = new TaskCompletionSource();
114+
var tcsDone = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
115115
var callIndex = 0;
116116

117-
mockHttpHandler.RequestHandler = (request) =>
117+
mockHttpHandler.RequestHandler = async (request) =>
118118
{
119119
switch (callIndex++)
120120
{
121121
case 0:
122-
return Task.FromResult(new HttpResponseMessage
122+
return new HttpResponseMessage
123123
{
124124
StatusCode = HttpStatusCode.OK,
125125
Content = new StringContent("event: endpoint\r\ndata: http://localhost\r\n\r\n")
126-
});
126+
};
127127
case 1:
128-
mreConnected.Set();
129-
mreDone.Wait();
130-
return Task.FromResult(new HttpResponseMessage
128+
tcsConnected.SetResult();
129+
await tcsDone.Task;
130+
return new HttpResponseMessage
131131
{
132132
StatusCode = HttpStatusCode.OK,
133133
Content = new StringContent("")
134-
});
134+
};
135135
default:
136-
return Task.FromResult(new HttpResponseMessage
136+
return new HttpResponseMessage
137137
{
138138
StatusCode = HttpStatusCode.OK,
139139
Content = new StringContent("")
140-
});
140+
};
141141
}
142142
};
143143

144-
var task = Task.Run(async () =>
145-
{
146-
await transport.ConnectAsync(TestContext.Current.CancellationToken);
147-
}, TestContext.Current.CancellationToken);
148-
149-
mreConnected.Wait(TestContext.Current.CancellationToken);
144+
var task = transport.ConnectAsync(TestContext.Current.CancellationToken);
145+
await tcsConnected.Task;
150146
Assert.True(transport.IsConnected);
151147
var action = async () => await transport.ConnectAsync();
152148
var exception = await Assert.ThrowsAsync<McpTransportException>(action);
153149
Assert.Equal("Transport is already connected", exception.Message);
154-
mreDone.Set();
150+
tcsDone.SetResult();
155151
await transport.CloseAsync();
156152
await task;
157153
}

0 commit comments

Comments
 (0)