Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit df80d71

Browse files
committed
add creator unit tests for releases, product policies, and api names given revisions
1 parent b867085 commit df80d71

File tree

5 files changed

+102
-5
lines changed

5 files changed

+102
-5
lines changed

src/APIM_ARMTemplate/apimtemplate.test/Creator/TemplateCreatorFactories/APITemplateCreatorFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ public static APITemplateCreator GenerateAPITemplateCreator()
1212
PolicyTemplateCreator policyTemplateCreator = new PolicyTemplateCreator(fileReader);
1313
ProductAPITemplateCreator productAPITemplateCreator = new ProductAPITemplateCreator();
1414
DiagnosticTemplateCreator diagnosticTemplateCreator = new DiagnosticTemplateCreator();
15-
APITemplateCreator apiTemplateCreator = new APITemplateCreator(fileReader, policyTemplateCreator, productAPITemplateCreator, diagnosticTemplateCreator);
15+
ReleaseTemplateCreator releaseTemplateCreator = new ReleaseTemplateCreator();
16+
APITemplateCreator apiTemplateCreator = new APITemplateCreator(fileReader, policyTemplateCreator, productAPITemplateCreator, diagnosticTemplateCreator, releaseTemplateCreator);
1617
return apiTemplateCreator;
1718
}
1819
}

src/APIM_ARMTemplate/apimtemplate.test/Creator/TemplateCreatorTests/APITemplateCreatorTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common;
44
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create;
55
using System.Collections.Generic;
6+
using System.Linq;
67

78
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Test
89
{
@@ -140,6 +141,32 @@ public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
140141
Assert.Equal(api.openApiSpec, apiTemplateResource.properties.value);
141142
}
142143

144+
[Fact]
145+
public async void ShouldAppendRevisionToAPIName()
146+
{
147+
// arrange
148+
APITemplateCreator apiTemplateCreator = APITemplateCreatorFactory.GenerateAPITemplateCreator();
149+
CreatorConfig creatorConfig = new CreatorConfig() { apis = new List<APIConfig>() };
150+
APIConfig api = new APIConfig()
151+
{
152+
name = "name",
153+
apiRevision = "2",
154+
isCurrent = true,
155+
suffix = "suffix",
156+
subscriptionRequired = true,
157+
openApiSpec = "https://petstore.swagger.io/v2/swagger.json",
158+
};
159+
creatorConfig.apis.Add(api);
160+
161+
// act
162+
// the above api config will create a unified api template with a single resource
163+
List<Template> apiTemplates = await apiTemplateCreator.CreateAPITemplatesAsync(api);
164+
APITemplateResource apiTemplateResource = apiTemplates.FirstOrDefault().resources[0] as APITemplateResource;
165+
166+
// assert
167+
Assert.Contains(";rev", apiTemplateResource.name);
168+
}
169+
143170
[Fact]
144171
public void ShouldCreateProtocolsFromOpenApiDocument()
145172
{

src/APIM_ARMTemplate/apimtemplate.test/Creator/TemplateCreatorTests/PolicyTemplateCreatorTests.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,37 @@ public void ShouldCreateAPIPolicyTemplateResourceFromCreatorConfigWithCorrectCon
3131
Assert.Equal(dependsOn, policyTemplateResource.dependsOn);
3232
}
3333

34+
[Fact]
35+
public void ShouldCreateProductPolicyTemplateResourceFromCreatorConfigWithCorrectContent()
36+
{
37+
// arrange
38+
PolicyTemplateCreator policyTemplateCreator = PolicyTemplateCreatorFactory.GeneratePolicyTemplateCreator();
39+
CreatorConfig creatorConfig = new CreatorConfig() { products = new List<ProductConfig>() };
40+
ProductConfig product = new ProductConfig()
41+
{
42+
displayName = "displayName",
43+
description = "description",
44+
terms = "terms",
45+
subscriptionRequired = true,
46+
approvalRequired = true,
47+
subscriptionsLimit = 1,
48+
state = "state",
49+
policy = "http://someurl.com"
50+
51+
};
52+
creatorConfig.products.Add(product);
53+
string[] dependsOn = new string[] { "dependsOn" };
54+
55+
// act
56+
PolicyTemplateResource policyTemplateResource = policyTemplateCreator.CreateProductPolicyTemplateResource(product, dependsOn);
57+
58+
// assert
59+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{product.displayName}/policy')]", policyTemplateResource.name);
60+
Assert.Equal("rawxml-link", policyTemplateResource.properties.format);
61+
Assert.Equal(product.policy, policyTemplateResource.properties.value);
62+
Assert.Equal(dependsOn, policyTemplateResource.dependsOn);
63+
}
64+
3465
[Fact]
3566
public void ShouldCreateOperationPolicyTemplateResourceFromPairWithCorrectContent()
3667
{

src/APIM_ARMTemplate/apimtemplate.test/Creator/TemplateCreatorTests/ProductTemplateCreatorTests.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@ public void ShouldCreateProductFromCreatorConfig()
2121
subscriptionRequired = true,
2222
approvalRequired = true,
2323
subscriptionsLimit = 1,
24-
state = "state",
25-
policy = "<inbound></inbound>"
24+
state = "state"
2625
};
2726
creatorConfig.products.Add(product);
2827

2928
// act
30-
Template loggerTemplate = productTemplateCreator.CreateProductTemplate(creatorConfig);
31-
ProductsTemplateResource productsTemplateResource = (ProductsTemplateResource)loggerTemplate.resources[0];
29+
Template productTemplate = productTemplateCreator.CreateProductTemplate(creatorConfig);
30+
ProductsTemplateResource productsTemplateResource = (ProductsTemplateResource)productTemplate.resources[0];
3231

3332
// assert
3433
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{product.displayName}')]", productsTemplateResource.name);
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using Xunit;
2+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common;
3+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create;
4+
using System.Collections.Generic;
5+
6+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Test
7+
{
8+
public class ReleaseTemplateCreatorTests
9+
{
10+
[Fact]
11+
public void ShouldCreateReleaseTemplateResourceFromCreatorConfig()
12+
{
13+
// arrange
14+
ReleaseTemplateCreator releaseTemplateCreator = new ReleaseTemplateCreator();
15+
CreatorConfig creatorConfig = new CreatorConfig() { apis = new List<APIConfig>() };
16+
APIConfig api = new APIConfig()
17+
{
18+
name = "name",
19+
apiRevision = "2",
20+
isCurrent = true,
21+
suffix = "suffix",
22+
subscriptionRequired = true,
23+
openApiSpec = "https://petstore.swagger.io/v2/swagger.json",
24+
};
25+
creatorConfig.apis.Add(api);
26+
27+
// act
28+
string[] dependsOn = new string[] { "dependsOn" };
29+
ReleaseTemplateResource releaseTemplateResource = releaseTemplateCreator.CreateAPIReleaseTemplateResource(api, dependsOn);
30+
31+
// assert
32+
string releaseName = $"";
33+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{api.name}/release-revision-{api.apiRevision}')]", releaseTemplateResource.name);
34+
Assert.Equal(dependsOn, releaseTemplateResource.dependsOn);
35+
Assert.Equal($"Release created to make revision {api.apiRevision} current.", releaseTemplateResource.properties.notes);
36+
Assert.Equal($"[resourceId('Microsoft.ApiManagement/service/apis', parameters('ApimServiceName'), '{api.name}')]", releaseTemplateResource.properties.apiId);
37+
}
38+
}
39+
}

0 commit comments

Comments
 (0)