public ProductApiTemplateResource CreateProductAPITemplateResource(string productID, string apiName, string[] dependsOn)
        {
            // create products/apis resource with properties
            ProductApiTemplateResource productAPITemplateResource = new ProductApiTemplateResource()
            {
                Name       = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{productID}/{apiName}')]",
                Type       = ResourceTypeConstants.ProductApi,
                ApiVersion = GlobalConstants.ApiVersion,
                DependsOn  = dependsOn
            };

            return(productAPITemplateResource);
        }
Exemple #2
0
        public void ShouldCreateProductAPITemplateResourceFromValues()
        {
            // arrange
            ProductAPITemplateCreator productAPITemplateCreator = new ProductAPITemplateCreator(new TemplateBuilder());
            string productId = "productId";
            string apiName   = "apiName";

            string[] dependsOn = new string[] { "dependsOn" };

            // act
            ProductApiTemplateResource productAPITemplateResource = productAPITemplateCreator.CreateProductAPITemplateResource(productId, apiName, dependsOn);

            // assert
            Assert.Equal($"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{productId}/{apiName}')]", productAPITemplateResource.Name);
            Assert.Equal(dependsOn, productAPITemplateResource.DependsOn);
        }
        public List <ProductApiTemplateResource> CreateProductAPITemplateResources(APIConfig api, string[] dependsOn)
        {
            // create a products/apis association resource for each product provided in the config file
            List <ProductApiTemplateResource> productAPITemplates = new List <ProductApiTemplateResource>();

            // products is comma separated list of productIds
            string[] productIDs   = (api.products ?? "").Split(", ", System.StringSplitOptions.RemoveEmptyEntries);
            string[] allDependsOn = dependsOn;
            foreach (string productID in productIDs)
            {
                ProductApiTemplateResource productAPITemplate = this.CreateProductAPITemplateResource(productID, api.name, allDependsOn);
                // Add previous product/API resource as a dependency for next product/API resource
                allDependsOn = new string[dependsOn.Length + 1];
                dependsOn.CopyTo(allDependsOn, 1);
                allDependsOn[0] = $"[resourceId('Microsoft.ApiManagement/service/products/apis', parameters('{ParameterNames.ApimServiceName}'), '{productID}', '{api.name}')]";
                productAPITemplates.Add(productAPITemplate);
            }
            return(productAPITemplates);
        }
Exemple #4
0
        public List <ProductApiTemplateResource> CreateProductApiTemplateResources(ApiDeploymentDefinition api, string[] dependsOn)
        {
            var productApiTemplates = new List <ProductApiTemplateResource>();

            var productDisplayNames = api.ProductList;

            foreach (string productDisplayName in productDisplayNames)
            {
                var productName = GetProductName(productDisplayName);

                var productApiTemplate = new ProductApiTemplateResource()
                {
                    Name       = $"[concat(parameters('ApimServiceName'), '/{productName}/{api.Name}')]",
                    Properties = new ProductApiTemplateProperties(),
                    DependsOn  = dependsOn
                };

                productApiTemplates.Add(productApiTemplate);
            }
            return(productApiTemplates);
        }
Exemple #5
0
        public void ShouldCreateProductAPIFromCreatorConfig()
        {
            // arrange
            ProductAPITemplateCreator productAPITemplateCreator = new ProductAPITemplateCreator(new TemplateBuilder());
            CreatorConfig             creatorConfig             = new CreatorConfig()
            {
                products = new List <ProductConfig>(), apis = new List <APIConfig>()
            };
            ProductConfig product = new ProductConfig()
            {
                Name                 = "productName",
                DisplayName          = "display name",
                Description          = "description",
                Terms                = "terms",
                SubscriptionRequired = true,
                ApprovalRequired     = true,
                SubscriptionsLimit   = 1,
                State                = "state"
            };

            creatorConfig.products.Add(product);
            APIConfig api = new APIConfig()
            {
                name                   = "apiName",
                apiVersion             = "apiVersion",
                apiVersionDescription  = "apiVersionDescription",
                apiVersionSetId        = "apiVersionSetId",
                apiRevision            = "revision",
                apiRevisionDescription = "revisionDescription",
                suffix                 = "suffix",
                products               = "productName",
                subscriptionRequired   = true,
                authenticationSettings = new APITemplateAuthenticationSettings()
                {
                    OAuth2 = new APITemplateOAuth2()
                    {
                        AuthorizationServerId = "",
                        Scope = ""
                    },
                    Openid = new APITemplateOpenID()
                    {
                        OpenIdProviderId          = "",
                        BearerTokenSendingMethods = new string[] { }
                    },
                    SubscriptionKeyRequired = true
                },
                openApiSpec = "https://petstore.swagger.io/v2/swagger.json",
                protocols   = "https",
                isCurrent   = true,
                type        = "http"
            };

            creatorConfig.apis.Add(api);

            // act
            Template productAPITemplate = productAPITemplateCreator.CreateProductAPITemplate(creatorConfig);
            ProductApiTemplateResource productAPITemplateResource = (ProductApiTemplateResource)productAPITemplate.Resources[0];

            // assert
            Assert.Equal($"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{product.Name}/{api.name}')]", productAPITemplateResource.Name);
        }