Skip to main content
Glama
by V0v1kkk
NamespaceToolServiceTests.cs3.24 kB
using DotNetMetadataMcpServer; using DotNetMetadataMcpServer.Services; namespace MetadataExplorerTest.Services; [TestFixture] [NonParallelizable] // Uses DependenciesScanner which calls MSBuildLocator.RegisterDefaults() public class NamespaceToolServiceTests { private string _testProjectPath; private DependenciesScanner _scanner; private NamespaceToolService _service; [SetUp] public void Setup() { var testDirectory = TestContext.CurrentContext.TestDirectory; var relativePath = Path.Combine(testDirectory, "../../../../DotNetMetadataMcpServer/DotNetMetadataMcpServer.csproj"); _testProjectPath = Path.GetFullPath(relativePath); _scanner = new DependenciesScanner(new MsBuildHelper(), new ReflectionTypesCollector()); _service = new NamespaceToolService(_scanner); } [TearDown] public void TearDown() { _scanner.Dispose(); } [Test] public void GetNamespaces_WithAllowedAssemblies_ReturnsFilteredResults() { const string allowedAssembly = "DotNetMetadataMcpServer"; var allowedAssemblies = new List<string> { allowedAssembly }; var response = _service.GetNamespaces(_testProjectPath, allowedAssemblies, [], 1, 20); Assert.That(response.Namespaces, Is.Not.Empty); Assert.That(response.Namespaces, Is.All.Matches<string>(ns => ns.StartsWith(allowedAssembly))); } [Test] public void GetNamespaces_WithFilters_ReturnsFilteredResults() { const string filter = "Helpers"; const string filterWildCard = "*" + filter; var filters = new List<string> { filterWildCard }; var response = _service.GetNamespaces(_testProjectPath, [], filters, 1, 20); Assert.That(response.Namespaces, Is.Not.Empty); Assert.That(response.Namespaces, Is.All.Contains(filter)); } [Test] public void GetNamespaces_Pagination_ReturnsCorrectPage() { const int pageSize = 5; var response1 = _service.GetNamespaces(_testProjectPath, new List<string>(), [], 1, pageSize); var response2 = _service.GetNamespaces(_testProjectPath, new List<string>(), [], 2, pageSize); Assert.That(response1.Namespaces, Is.Not.Empty); Assert.That(response2.Namespaces, Is.Not.Empty); Assert.That(response1.Namespaces, Is.Not.EqualTo(response2.Namespaces)); Assert.That(response1.Namespaces, Is.Not.EquivalentTo(response2.Namespaces)); Assert.That(response1.CurrentPage, Is.EqualTo(1)); Assert.That(response2.CurrentPage, Is.EqualTo(2)); Assert.That(response1.AvailablePages, Is.EquivalentTo(response2.AvailablePages)); } [Test] public void GetNamespaces_WithInvalidPageNumber_ReturnsEmptyResults() { const int invalidPageNumber = 10000; var response = _service.GetNamespaces(_testProjectPath, new List<string>(), [], invalidPageNumber, 20); Assert.That(response.Namespaces, Is.Empty); Assert.That(response.CurrentPage, Is.EqualTo(invalidPageNumber)); Assert.That(response.AvailablePages, Is.Not.Empty); } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/V0v1kkk/DotNetMetadataMcpServer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server