11
11
12
12
namespace ModelContextProtocol . Tests . Server ;
13
13
14
- public class McpServerTests
14
+ public class McpServerTests : LoggedTest
15
15
{
16
16
private readonly Mock < IServerTransport > _serverTransport ;
17
- private readonly Mock < ILoggerFactory > _loggerFactory ;
18
17
private readonly Mock < ILogger > _logger ;
19
18
private readonly McpServerOptions _options ;
20
19
private readonly IServiceProvider _serviceProvider ;
21
20
22
- public McpServerTests ( )
21
+ public McpServerTests ( ITestOutputHelper testOutputHelper )
22
+ : base ( testOutputHelper )
23
23
{
24
24
_serverTransport = new Mock < IServerTransport > ( ) ;
25
- _loggerFactory = new Mock < ILoggerFactory > ( ) ;
26
25
_logger = new Mock < ILogger > ( ) ;
27
- _loggerFactory . Setup ( f => f . CreateLogger ( It . IsAny < string > ( ) ) ) . Returns ( _logger . Object ) ;
28
26
_options = CreateOptions ( ) ;
29
27
_serviceProvider = new Mock < IServiceProvider > ( ) . Object ;
30
28
}
@@ -44,7 +42,7 @@ private static McpServerOptions CreateOptions(ServerCapabilities? capabilities =
44
42
public async Task Constructor_Should_Initialize_With_Valid_Parameters ( )
45
43
{
46
44
// Arrange & Act
47
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , _serviceProvider ) ;
45
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , _serviceProvider ) ;
48
46
49
47
// Assert
50
48
Assert . NotNull ( server ) ;
@@ -54,14 +52,14 @@ public async Task Constructor_Should_Initialize_With_Valid_Parameters()
54
52
public void Constructor_Throws_For_Null_Transport ( )
55
53
{
56
54
// Arrange, Act & Assert
57
- Assert . Throws < ArgumentNullException > ( ( ) => McpServerFactory . Create ( null ! , _options , _loggerFactory . Object , _serviceProvider ) ) ;
55
+ Assert . Throws < ArgumentNullException > ( ( ) => McpServerFactory . Create ( null ! , _options , LoggerFactory , _serviceProvider ) ) ;
58
56
}
59
57
60
58
[ Fact ]
61
59
public void Constructor_Throws_For_Null_Options ( )
62
60
{
63
61
// Arrange, Act & Assert
64
- Assert . Throws < ArgumentNullException > ( ( ) => McpServerFactory . Create ( _serverTransport . Object , null ! , _loggerFactory . Object , _serviceProvider ) ) ;
62
+ Assert . Throws < ArgumentNullException > ( ( ) => McpServerFactory . Create ( _serverTransport . Object , null ! , LoggerFactory , _serviceProvider ) ) ;
65
63
}
66
64
67
65
[ Fact ]
@@ -78,7 +76,7 @@ public async Task Constructor_Does_Not_Throw_For_Null_Logger()
78
76
public async Task Constructor_Does_Not_Throw_For_Null_ServiceProvider ( )
79
77
{
80
78
// Arrange & Act
81
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , null ) ;
79
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , null ) ;
82
80
83
81
// Assert
84
82
Assert . NotNull ( server ) ;
@@ -88,7 +86,7 @@ public async Task Constructor_Does_Not_Throw_For_Null_ServiceProvider()
88
86
public async Task StartAsync_Should_Throw_InvalidOperationException_If_Already_Initializing ( )
89
87
{
90
88
// Arrange
91
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , _serviceProvider ) ;
89
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , _serviceProvider ) ;
92
90
var task = server . StartAsync ( TestContext . Current . CancellationToken ) ;
93
91
94
92
// Act & Assert
@@ -101,7 +99,7 @@ public async Task StartAsync_Should_Throw_InvalidOperationException_If_Already_I
101
99
public async Task StartAsync_Should_Do_Nothing_If_Already_Initialized ( )
102
100
{
103
101
// Arrange
104
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , _serviceProvider ) ;
102
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , _serviceProvider ) ;
105
103
SetInitialized ( server , true ) ;
106
104
107
105
await server . StartAsync ( TestContext . Current . CancellationToken ) ;
@@ -114,7 +112,7 @@ public async Task StartAsync_Should_Do_Nothing_If_Already_Initialized()
114
112
public async Task StartAsync_ShouldStartListening ( )
115
113
{
116
114
// Arrange
117
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , _serviceProvider ) ;
115
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , _serviceProvider ) ;
118
116
119
117
// Act
120
118
await server . StartAsync ( TestContext . Current . CancellationToken ) ;
@@ -127,7 +125,7 @@ public async Task StartAsync_ShouldStartListening()
127
125
public async Task StartAsync_Sets_Initialized_After_Transport_Responses_Initialized_Notification ( )
128
126
{
129
127
await using var transport = new TestServerTransport ( ) ;
130
- await using var server = McpServerFactory . Create ( transport , _options , _loggerFactory . Object , _serviceProvider ) ;
128
+ await using var server = McpServerFactory . Create ( transport , _options , LoggerFactory , _serviceProvider ) ;
131
129
132
130
await server . StartAsync ( TestContext . Current . CancellationToken ) ;
133
131
@@ -147,7 +145,7 @@ await transport.SendMessageAsync(new JsonRpcNotification
147
145
public async Task RequestSamplingAsync_Should_Throw_McpServerException_If_Client_Does_Not_Support_Sampling ( )
148
146
{
149
147
// Arrange
150
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , _serviceProvider ) ;
148
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , _serviceProvider ) ;
151
149
SetClientCapabilities ( server , new ClientCapabilities ( ) ) ;
152
150
153
151
var action = ( ) => server . RequestSamplingAsync ( new CreateMessageRequestParams { Messages = [ ] } , CancellationToken . None ) ;
@@ -161,7 +159,7 @@ public async Task RequestSamplingAsync_Should_SendRequest()
161
159
{
162
160
// Arrange
163
161
await using var transport = new TestServerTransport ( ) ;
164
- await using var server = McpServerFactory . Create ( transport , _options , _loggerFactory . Object , _serviceProvider ) ;
162
+ await using var server = McpServerFactory . Create ( transport , _options , LoggerFactory , _serviceProvider ) ;
165
163
SetClientCapabilities ( server , new ClientCapabilities { Sampling = new SamplingCapability ( ) } ) ;
166
164
167
165
await server . StartAsync ( TestContext . Current . CancellationToken ) ;
@@ -179,7 +177,7 @@ public async Task RequestSamplingAsync_Should_SendRequest()
179
177
public async Task RequestRootsAsync_Should_Throw_McpServerException_If_Client_Does_Not_Support_Roots ( )
180
178
{
181
179
// Arrange
182
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , _serviceProvider ) ;
180
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , _serviceProvider ) ;
183
181
SetClientCapabilities ( server , new ClientCapabilities ( ) ) ;
184
182
185
183
// Act & Assert
@@ -191,7 +189,7 @@ public async Task RequestRootsAsync_Should_SendRequest()
191
189
{
192
190
// Arrange
193
191
await using var transport = new TestServerTransport ( ) ;
194
- await using var server = McpServerFactory . Create ( transport , _options , _loggerFactory . Object , _serviceProvider ) ;
192
+ await using var server = McpServerFactory . Create ( transport , _options , LoggerFactory , _serviceProvider ) ;
195
193
SetClientCapabilities ( server , new ClientCapabilities { Roots = new RootsCapability ( ) } ) ;
196
194
await server . StartAsync ( TestContext . Current . CancellationToken ) ;
197
195
@@ -208,7 +206,7 @@ public async Task RequestRootsAsync_Should_SendRequest()
208
206
[ Fact ]
209
207
public async Task Throws_Exception_If_Not_Connected ( )
210
208
{
211
- await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , _loggerFactory . Object , _serviceProvider ) ;
209
+ await using var server = McpServerFactory . Create ( _serverTransport . Object , _options , LoggerFactory , _serviceProvider ) ;
212
210
SetClientCapabilities ( server , new ClientCapabilities { Roots = new RootsCapability ( ) } ) ;
213
211
_serverTransport . SetupGet ( t => t . IsConnected ) . Returns ( false ) ;
214
212
@@ -555,7 +553,7 @@ private async Task Can_Handle_Requests(ServerCapabilities? serverCapabilities, s
555
553
var options = CreateOptions ( serverCapabilities ) ;
556
554
configureOptions ? . Invoke ( options ) ;
557
555
558
- await using var server = McpServerFactory . Create ( transport , options , _loggerFactory . Object , _serviceProvider ) ;
556
+ await using var server = McpServerFactory . Create ( transport , options , LoggerFactory , _serviceProvider ) ;
559
557
560
558
await server . StartAsync ( ) ;
561
559
@@ -587,7 +585,7 @@ private async Task Throws_Exception_If_No_Handler_Assigned(ServerCapabilities se
587
585
await using var transport = new TestServerTransport ( ) ;
588
586
var options = CreateOptions ( serverCapabilities ) ;
589
587
590
- Assert . Throws < McpServerException > ( ( ) => McpServerFactory . Create ( transport , options , _loggerFactory . Object , _serviceProvider ) ) ;
588
+ Assert . Throws < McpServerException > ( ( ) => McpServerFactory . Create ( transport , options , LoggerFactory , _serviceProvider ) ) ;
591
589
}
592
590
593
591
[ Fact ]
0 commit comments