22using Moq ;
33using Xunit ;
44using mcp_nexus . Infrastructure ;
5+ using System ;
6+ using System . IO ;
7+ using System . Threading . Tasks ;
58
69namespace mcp_nexus_tests . Infrastructure
710{
@@ -10,11 +13,237 @@ namespace mcp_nexus_tests.Infrastructure
1013 /// </summary>
1114 public class InstallationValidatorTests
1215 {
16+ private readonly Mock < ILogger > _mockLogger ;
17+
18+ public InstallationValidatorTests ( )
19+ {
20+ _mockLogger = new Mock < ILogger > ( ) ;
21+ }
22+
1323 [ Fact ]
1424 public void InstallationValidator_Class_Exists ( )
1525 {
1626 // This test verifies that the InstallationValidator class exists and can be instantiated
1727 Assert . True ( typeof ( InstallationValidator ) != null ) ;
1828 }
29+
30+ [ Fact ]
31+ public async Task ValidateInstallationPrerequisitesAsync_WithNullLogger_DoesNotThrow ( )
32+ {
33+ // Act & Assert
34+ var result = await InstallationValidator . ValidateInstallationPrerequisitesAsync ( null ) ;
35+
36+ // The result depends on the actual system state, but the method should not throw
37+ Assert . True ( result == true || result == false ) ;
38+ }
39+
40+ [ Fact ]
41+ public async Task ValidateInstallationPrerequisitesAsync_WithLogger_DoesNotThrow ( )
42+ {
43+ // Act & Assert
44+ var result = await InstallationValidator . ValidateInstallationPrerequisitesAsync ( _mockLogger . Object ) ;
45+
46+ // The result depends on the actual system state, but the method should not throw
47+ Assert . True ( result == true || result == false ) ;
48+ }
49+
50+ [ Fact ]
51+ public async Task ValidateUninstallationPrerequisitesAsync_WithNullLogger_DoesNotThrow ( )
52+ {
53+ // Act & Assert
54+ var result = await InstallationValidator . ValidateUninstallationPrerequisitesAsync ( null ) ;
55+
56+ // The result depends on the actual system state, but the method should not throw
57+ Assert . True ( result == true || result == false ) ;
58+ }
59+
60+ [ Fact ]
61+ public async Task ValidateUninstallationPrerequisitesAsync_WithLogger_DoesNotThrow ( )
62+ {
63+ // Act & Assert
64+ var result = await InstallationValidator . ValidateUninstallationPrerequisitesAsync ( _mockLogger . Object ) ;
65+
66+ // The result depends on the actual system state, but the method should not throw
67+ Assert . True ( result == true || result == false ) ;
68+ }
69+
70+ [ Fact ]
71+ public async Task ValidateUpdatePrerequisitesAsync_WithNullLogger_DoesNotThrow ( )
72+ {
73+ // Act & Assert
74+ var result = await InstallationValidator . ValidateUpdatePrerequisitesAsync ( null ) ;
75+
76+ // The result depends on the actual system state, but the method should not throw
77+ Assert . True ( result == true || result == false ) ;
78+ }
79+
80+ [ Fact ]
81+ public async Task ValidateUpdatePrerequisitesAsync_WithLogger_DoesNotThrow ( )
82+ {
83+ // Act & Assert
84+ var result = await InstallationValidator . ValidateUpdatePrerequisitesAsync ( _mockLogger . Object ) ;
85+
86+ // The result depends on the actual system state, but the method should not throw
87+ Assert . True ( result == true || result == false ) ;
88+ }
89+
90+ [ Fact ]
91+ public void ValidateInstallationSuccess_WithNullLogger_DoesNotThrow ( )
92+ {
93+ // Act & Assert
94+ var result = InstallationValidator . ValidateInstallationSuccess ( null ) ;
95+
96+ // The result depends on the actual system state, but the method should not throw
97+ Assert . True ( result == true || result == false ) ;
98+ }
99+
100+ [ Fact ]
101+ public void ValidateInstallationSuccess_WithLogger_DoesNotThrow ( )
102+ {
103+ // Act & Assert
104+ var result = InstallationValidator . ValidateInstallationSuccess ( _mockLogger . Object ) ;
105+
106+ // The result depends on the actual system state, but the method should not throw
107+ Assert . True ( result == true || result == false ) ;
108+ }
109+
110+ [ Fact ]
111+ public void ValidateInstallationSuccess_WithLogger_LogsAppropriately ( )
112+ {
113+ // Arrange
114+ var loggerMock = new Mock < ILogger > ( ) ;
115+ loggerMock . Setup ( x => x . Log (
116+ It . IsAny < LogLevel > ( ) ,
117+ It . IsAny < EventId > ( ) ,
118+ It . IsAny < It . IsAnyType > ( ) ,
119+ It . IsAny < Exception > ( ) ,
120+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ) ;
121+
122+ // Act
123+ var result = InstallationValidator . ValidateInstallationSuccess ( loggerMock . Object ) ;
124+
125+ // Assert
126+ // The result depends on the actual system state, but the method should not throw
127+ Assert . True ( result == true || result == false ) ;
128+
129+ // Verify that logging was attempted (the exact log level depends on the result)
130+ loggerMock . Verify (
131+ x => x . Log (
132+ It . IsAny < LogLevel > ( ) ,
133+ It . IsAny < EventId > ( ) ,
134+ It . IsAny < It . IsAnyType > ( ) ,
135+ It . IsAny < Exception > ( ) ,
136+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ,
137+ Times . AtLeastOnce ) ;
138+ }
139+
140+ [ Fact ]
141+ public async Task ValidateInstallationPrerequisitesAsync_WithLogger_LogsAppropriately ( )
142+ {
143+ // Arrange
144+ var loggerMock = new Mock < ILogger > ( ) ;
145+ loggerMock . Setup ( x => x . Log (
146+ It . IsAny < LogLevel > ( ) ,
147+ It . IsAny < EventId > ( ) ,
148+ It . IsAny < It . IsAnyType > ( ) ,
149+ It . IsAny < Exception > ( ) ,
150+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ) ;
151+
152+ // Act
153+ var result = await InstallationValidator . ValidateInstallationPrerequisitesAsync ( loggerMock . Object ) ;
154+
155+ // Assert
156+ // The result depends on the actual system state, but the method should not throw
157+ Assert . True ( result == true || result == false ) ;
158+
159+ // Verify that logging was attempted (the exact log level depends on the result)
160+ loggerMock . Verify (
161+ x => x . Log (
162+ It . IsAny < LogLevel > ( ) ,
163+ It . IsAny < EventId > ( ) ,
164+ It . IsAny < It . IsAnyType > ( ) ,
165+ It . IsAny < Exception > ( ) ,
166+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ,
167+ Times . AtLeastOnce ) ;
168+ }
169+
170+ [ Fact ]
171+ public async Task ValidateUninstallationPrerequisitesAsync_WithLogger_LogsAppropriately ( )
172+ {
173+ // Arrange
174+ var loggerMock = new Mock < ILogger > ( ) ;
175+ loggerMock . Setup ( x => x . Log (
176+ It . IsAny < LogLevel > ( ) ,
177+ It . IsAny < EventId > ( ) ,
178+ It . IsAny < It . IsAnyType > ( ) ,
179+ It . IsAny < Exception > ( ) ,
180+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ) ;
181+
182+ // Act
183+ var result = await InstallationValidator . ValidateUninstallationPrerequisitesAsync ( loggerMock . Object ) ;
184+
185+ // Assert
186+ // The result depends on the actual system state, but the method should not throw
187+ Assert . True ( result == true || result == false ) ;
188+
189+ // Verify that logging was attempted (the exact log level depends on the result)
190+ loggerMock . Verify (
191+ x => x . Log (
192+ It . IsAny < LogLevel > ( ) ,
193+ It . IsAny < EventId > ( ) ,
194+ It . IsAny < It . IsAnyType > ( ) ,
195+ It . IsAny < Exception > ( ) ,
196+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ,
197+ Times . AtLeastOnce ) ;
198+ }
199+
200+ [ Fact ]
201+ public async Task ValidateUpdatePrerequisitesAsync_WithLogger_LogsAppropriately ( )
202+ {
203+ // Arrange
204+ var loggerMock = new Mock < ILogger > ( ) ;
205+ loggerMock . Setup ( x => x . Log (
206+ It . IsAny < LogLevel > ( ) ,
207+ It . IsAny < EventId > ( ) ,
208+ It . IsAny < It . IsAnyType > ( ) ,
209+ It . IsAny < Exception > ( ) ,
210+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ) ;
211+
212+ // Act
213+ var result = await InstallationValidator . ValidateUpdatePrerequisitesAsync ( loggerMock . Object ) ;
214+
215+ // Assert
216+ // The result depends on the actual system state, but the method should not throw
217+ Assert . True ( result == true || result == false ) ;
218+
219+ // Verify that logging was attempted (the exact log level depends on the result)
220+ loggerMock . Verify (
221+ x => x . Log (
222+ It . IsAny < LogLevel > ( ) ,
223+ It . IsAny < EventId > ( ) ,
224+ It . IsAny < It . IsAnyType > ( ) ,
225+ It . IsAny < Exception > ( ) ,
226+ It . IsAny < Func < It . IsAnyType , Exception ? , string > > ( ) ) ,
227+ Times . AtLeastOnce ) ;
228+ }
229+
230+ [ Fact ]
231+ public void InstallationValidator_IsStaticClass ( )
232+ {
233+ // Assert
234+ Assert . True ( typeof ( InstallationValidator ) . IsAbstract && typeof ( InstallationValidator ) . IsSealed ) ;
235+ }
236+
237+ [ Fact ]
238+ public void InstallationValidator_HasSupportedOSPlatformAttribute ( )
239+ {
240+ // Arrange
241+ var attributes = typeof ( InstallationValidator ) . GetCustomAttributes ( typeof ( System . Runtime . Versioning . SupportedOSPlatformAttribute ) , false ) ;
242+
243+ // Assert
244+ Assert . NotEmpty ( attributes ) ;
245+ var platformAttribute = ( System . Runtime . Versioning . SupportedOSPlatformAttribute ) attributes [ 0 ] ;
246+ Assert . Equal ( "windows" , platformAttribute . PlatformName ) ;
247+ }
19248 }
20249}
0 commit comments