Skip to main content
Glama

Azure MCP Server

Official
MIT License
1,161
  • Linux
  • Apple
RulesGetCommandTests.cs6.2 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System.CommandLine.Parsing; using AzureMcp.Core.Models.Command; using AzureMcp.Deploy.Commands.Infrastructure; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NSubstitute; using Xunit; namespace AzureMcp.Deploy.UnitTests.Commands.Infrastructure; public class RulesGetCommandTests { private readonly IServiceProvider _serviceProvider; private readonly ILogger<RulesGetCommand> _logger; private readonly Parser _parser; private readonly CommandContext _context; private readonly RulesGetCommand _command; public RulesGetCommandTests() { _logger = Substitute.For<ILogger<RulesGetCommand>>(); var collection = new ServiceCollection(); _serviceProvider = collection.BuildServiceProvider(); _context = new(_serviceProvider); _command = new(_logger); _parser = new(_command.GetCommand()); } [Fact] public async Task Should_get_infrastructure_code_rules() { // arrange var args = _parser.Parse([ "--deployment-tool", "azd", "--iac-type", "bicep", "--resource-types", "appservice, azurestorage" ]); // act var result = await _command.ExecuteAsync(_context, args); // assert Assert.NotNull(result); Assert.Equal(200, result.Status); Assert.NotNull(result.Message); Assert.Contains("Deployment Tool azd rules", result.Message, StringComparison.OrdinalIgnoreCase); } [Fact] public async Task Should_get_infrastructure_rules_for_terraform() { // arrange var args = _parser.Parse([ "--deployment-tool", "azd", "--iac-type", "terraform", "--resource-types", "containerapp, azurecosmosdb" ]); // act var result = await _command.ExecuteAsync(_context, args); // assert Assert.NotNull(result); Assert.Equal(200, result.Status); Assert.NotNull(result.Message); Assert.Contains("Expected parameters in terraform parameters", result.Message, StringComparison.OrdinalIgnoreCase); } [Fact] public async Task Should_get_infrastructure_rules_for_function_app() { // arrange var args = _parser.Parse([ "--deployment-tool", "azd", "--iac-type", "bicep", "--resource-types", "function" ]); // act var result = await _command.ExecuteAsync(_context, args); // assert Assert.NotNull(result); Assert.Equal(200, result.Status); Assert.NotNull(result.Message); Assert.Contains("Additional requirements for Function Apps", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("Storage Blob Data Owner", result.Message, StringComparison.OrdinalIgnoreCase); } [Fact] public async Task Should_get_infrastructure_rules_for_container_app() { // arrange var args = _parser.Parse([ "--deployment-tool", "azd", "--iac-type", "bicep", "--resource-types", "containerapp" ]); // act var result = await _command.ExecuteAsync(_context, args); // assert Assert.NotNull(result); Assert.Equal(200, result.Status); Assert.NotNull(result.Message); Assert.Contains("Additional requirements for Container Apps", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("mcr.microsoft.com/azuredocs/containerapps-helloworld:latest", result.Message, StringComparison.OrdinalIgnoreCase); } [Fact] public async Task Should_get_infrastructure_rules_for_azcli_deployment_tool() { // arrange var args = _parser.Parse([ "--deployment-tool", "AzCli", "--iac-type", "", "--resource-types", "aks" ]); // act var result = await _command.ExecuteAsync(_context, args); // assert Assert.NotNull(result); Assert.Equal(200, result.Status); Assert.NotNull(result.Message); Assert.Contains("If creating AzCli script, the script should stop if any command fails.", result.Message, StringComparison.OrdinalIgnoreCase); } [Fact] public async Task Should_include_necessary_tools_in_response() { // arrange var args = _parser.Parse([ "--deployment-tool", "azd", "--iac-type", "terraform", "--resource-types", "containerapp" ]); // act var result = await _command.ExecuteAsync(_context, args); // assert Assert.NotNull(result); Assert.Equal(200, result.Status); Assert.NotNull(result.Message); Assert.Contains("Tools needed:", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("az cli", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("azd", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("docker", result.Message, StringComparison.OrdinalIgnoreCase); } [Fact] public async Task Should_handle_multiple_resource_types() { // arrange var args = _parser.Parse([ "--deployment-tool", "azd", "--iac-type", "bicep", "--resource-types", "appservice,containerapp,function" ]); // act var result = await _command.ExecuteAsync(_context, args); // assert Assert.NotNull(result); Assert.Equal(200, result.Status); Assert.NotNull(result.Message); Assert.Contains("Resources: appservice, containerapp, function", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("App Service Rules", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("Additional requirements for Container Apps", result.Message, StringComparison.OrdinalIgnoreCase); Assert.Contains("Additional requirements for Function Apps", result.Message, StringComparison.OrdinalIgnoreCase); } }

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/Azure/azure-mcp'

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