public void ShouldCreateAPIVersionSetTemplateFromCreatorConfig() { // arrange APIVersionSetTemplateCreator apiVersionSetTemplateCreator = APIVersionSetTemplateCreatorFactory.GenerateAPIVersionSetTemplateCreator(); CreatorConfig creatorConfig = new CreatorConfig() { apiVersionSet = new APIVersionSetConfig() { id = "id", description = "description", displayName = "displayName", versionHeaderName = "versionHeaderName", versioningScheme = "versioningScheme", versionQueryName = "versionQueryName" } }; // act Template versionSetTemplate = apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig); APIVersionSetTemplateResource apiVersionSetTemplateResource = (APIVersionSetTemplateResource)versionSetTemplate.resources[0]; // assert Assert.Equal(creatorConfig.apiVersionSet.description, apiVersionSetTemplateResource.properties.description); Assert.Equal(creatorConfig.apiVersionSet.displayName, apiVersionSetTemplateResource.properties.displayName); Assert.Equal(creatorConfig.apiVersionSet.versionHeaderName, apiVersionSetTemplateResource.properties.versionHeaderName); Assert.Equal(creatorConfig.apiVersionSet.versioningScheme, apiVersionSetTemplateResource.properties.versioningScheme); Assert.Equal(creatorConfig.apiVersionSet.versionQueryName, apiVersionSetTemplateResource.properties.versionQueryName); }
public async Task <Template> Create(DeploymentDefinition creatorConfig) { var template = EmptyTemplate; template.Parameters.Add(ApiServiceNameParameter.Key, ApiServiceNameParameter.Value); var resources = new List <TemplateResource>(); foreach (var apiVersionSet in creatorConfig.ApiVersionSets) { var apiVersionSetTemplateResource = new APIVersionSetTemplateResource() { Name = $"[concat(parameters('ApimServiceName'), '/{apiVersionSet.Name}')]", Properties = new ApiVersionSetProperties() { DisplayName = apiVersionSet.DisplayName, Description = apiVersionSet.Description, VersionHeaderName = apiVersionSet.VersionHeaderName, VersionQueryName = apiVersionSet.VersionQueryName, VersioningScheme = apiVersionSet.VersioningScheme, }, DependsOn = new string[] { } }; resources.Add(apiVersionSetTemplateResource); } template.Resources = resources.ToArray(); return(await Task.FromResult(template)); }
public void ShouldUseDefaultResourceNameWithoutProvidedId() { // arrange APIVersionSetTemplateCreator apiVersionSetTemplateCreator = APIVersionSetTemplateCreatorFactory.GenerateAPIVersionSetTemplateCreator(); CreatorConfig creatorConfig = new CreatorConfig() { apiVersionSet = new APIVersionSetConfig() }; // act Template versionSetTemplate = apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig); APIVersionSetTemplateResource apiVersionSetTemplateResource = (APIVersionSetTemplateResource)versionSetTemplate.resources[0]; // assert Assert.Equal("[concat(parameters('ApimServiceName'), '/versionset')]", apiVersionSetTemplateResource.name); }
public void ShouldUseProvidedIdInResourceName() { // arrange APIVersionSetTemplateCreator apiVersionSetTemplateCreator = APIVersionSetTemplateCreatorFactory.GenerateAPIVersionSetTemplateCreator(); CreatorConfig creatorConfig = new CreatorConfig() { apiVersionSet = new APIVersionSetConfig() { id = "id" } }; // act Template versionSetTemplate = apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig); APIVersionSetTemplateResource apiVersionSetTemplateResource = (APIVersionSetTemplateResource)versionSetTemplate.resources[0]; // assert Assert.Equal($"[concat(parameters('ApimServiceName'), '/{creatorConfig.apiVersionSet.id}')]", apiVersionSetTemplateResource.name); }
public Template CreateAPIVersionSetTemplate(CreatorConfig creatorConfig) { // create empty template Template apiVersionSetTemplate = CreateEmptyTemplate(); // add parameters apiVersionSetTemplate.parameters = new Dictionary <string, TemplateParameterProperties> { { ParameterNames.ApimServiceName, new TemplateParameterProperties() { type = "string" } } }; List <TemplateResource> resources = new List <TemplateResource>(); foreach (APIVersionSetConfig apiVersionSet in creatorConfig.apiVersionSets) { // create apiVersionSet resource with properties // default version set id to version set if id is not provided string versionSetId = (apiVersionSet != null && apiVersionSet.id != null) ? apiVersionSet.id : "versionset"; APIVersionSetTemplateResource apiVersionSetTemplateResource = new APIVersionSetTemplateResource() { name = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{versionSetId}')]", type = ResourceTypeConstants.APIVersionSet, apiVersion = GlobalConstants.APIVersion, properties = new APIVersionSetProperties() { displayName = apiVersionSet.displayName, description = apiVersionSet.description, versionHeaderName = apiVersionSet.versionHeaderName, versionQueryName = apiVersionSet.versionQueryName, versioningScheme = apiVersionSet.versioningScheme, }, dependsOn = new string[] { } }; resources.Add(apiVersionSetTemplateResource); } apiVersionSetTemplate.resources = resources.ToArray(); return(apiVersionSetTemplate); }
private void GenerateVersionSetARMTemplate(string apimname, string resourceGroup, string versionSetName, string fileFolder) { APIExtractor apiExtractor = new APIExtractor(); Template armTemplate = GenerateEmptyTemplateWithParameters(); List <TemplateResource> templateResources = new List <TemplateResource>(); string versionSet = apiExtractor.GetAPIVersionSet(apimname, resourceGroup, versionSetName).Result; APIVersionSetTemplateResource versionSetResource = JsonConvert.DeserializeObject <APIVersionSetTemplateResource>(versionSet); string filePath = fileFolder + Path.DirectorySeparatorChar + string.Format(versionSetResource.name, "/", "-") + ".json"; versionSetResource.name = $"[concat(parameters('ApimServiceName'), '/{versionSetResource.name}')]"; versionSetResource.apiVersion = "2018-06-01-preview"; templateResources.Add(versionSetResource); armTemplate.resources = templateResources.ToArray(); FileWriter fileWriter = new FileWriter(); fileWriter.WriteJSONToFile(armTemplate, filePath); }
public Template CreateAPIVersionSetTemplate(CreatorConfig creatorConfig) { // create empty template Template apiVersionSetTemplate = this.templateCreator.CreateEmptyTemplate(); // add parameters apiVersionSetTemplate.parameters = new Dictionary <string, TemplateParameterProperties> { { "ApimServiceName", new TemplateParameterProperties() { type = "string" } } }; List <TemplateResource> resources = new List <TemplateResource>(); // create apiVersionSet resource with properties string versionSetId = (creatorConfig.apiVersionSet != null && creatorConfig.apiVersionSet.id != null) ? creatorConfig.apiVersionSet.id : "versionset"; APIVersionSetTemplateResource apiVersionSetTemplateResource = new APIVersionSetTemplateResource() { name = $"[concat(parameters('ApimServiceName'), '/{versionSetId}')]", type = "Microsoft.ApiManagement/service/api-version-sets", apiVersion = "2018-01-01", properties = new APIVersionSetProperties() { displayName = creatorConfig.apiVersionSet.displayName, description = creatorConfig.apiVersionSet.description, versionHeaderName = creatorConfig.apiVersionSet.versionHeaderName, versionQueryName = creatorConfig.apiVersionSet.versionQueryName, versioningScheme = creatorConfig.apiVersionSet.versioningScheme, }, dependsOn = new string[] { } }; resources.Add(apiVersionSetTemplateResource); apiVersionSetTemplate.resources = resources.ToArray(); return(apiVersionSetTemplate); }
public async Task <Template> GenerateAPIVersionSetsARMTemplateAsync(string apimname, string resourceGroup, string singleApiName, List <TemplateResource> apiTemplateResources, string policyXMLBaseUrl, string policyXMLSasToken) { Console.WriteLine("------------------------------------------"); Console.WriteLine("Extracting API version sets from service"); Template armTemplate = GenerateEmptyTemplateWithParameters(policyXMLBaseUrl, policyXMLSasToken); // isolate apis in the case of a single api extraction var apiResources = apiTemplateResources.Where(resource => resource.type == ResourceTypeConstants.API); List <TemplateResource> templateResources = new List <TemplateResource>(); // pull all version sets for service string versionSets = await GetAPIVersionSetsAsync(apimname, resourceGroup); JObject oVersionSets = JObject.Parse(versionSets); foreach (var item in oVersionSets["value"]) { string versionSetName = ((JValue)item["name"]).Value.ToString(); string versionSetDetails = await GetAPIVersionSetDetailsAsync(apimname, resourceGroup, versionSetName); // convert returned product to template resource class APIVersionSetTemplateResource versionSetTemplateResource = JsonConvert.DeserializeObject <APIVersionSetTemplateResource>(versionSetDetails); versionSetTemplateResource.name = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{versionSetName}')]"; versionSetTemplateResource.apiVersion = GlobalConstants.APIVersion; // only extract the product if this is a full extraction, or in the case of a single api, if it is found in products associated with the api if (singleApiName == null || apiResources.SingleOrDefault(api => (api as APITemplateResource).properties.apiVersionSetId != null && (api as APITemplateResource).properties.apiVersionSetId.Contains(versionSetName)) != null) { Console.WriteLine("'{0}' API version set found", versionSetName); templateResources.Add(versionSetTemplateResource); } } armTemplate.resources = templateResources.ToArray(); return(armTemplate); }
private void GenerateVersionSetARMTemplate(string apimname, string resourceGroup, string versionSetName, string fileFolder) { APIExtractor apiExtractor = new APIExtractor(); Template armTemplate = new Template() { schema = "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", contentVersion = "1.0.0.0", parameters = new Dictionary <string, TemplateParameterProperties> { { "ApimServiceName", new TemplateParameterProperties() { type = "string" } } }, variables = { }, resources = { }, outputs = { } }; List <TemplateResource> templateResources = new List <TemplateResource>(); string versionSet = apiExtractor.GetAPIVersionSet(apimname, resourceGroup, versionSetName).Result; APIVersionSetTemplateResource versionSetResource = JsonConvert.DeserializeObject <APIVersionSetTemplateResource>(versionSet); string filePath = fileFolder + Path.DirectorySeparatorChar + string.Format(versionSetResource.name, "/", "-") + ".json"; versionSetResource.name = $"[concat(parameters('ApimServiceName'), '/{versionSetResource.name}')]"; versionSetResource.apiVersion = "2018-06-01-preview"; templateResources.Add(versionSetResource); armTemplate.resources = templateResources.ToArray(); FileWriter fileWriter = new FileWriter(); fileWriter.WriteJSONToFile(armTemplate, filePath); }