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); }
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); }
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); }
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); }