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

Commit 4033c20

Browse files
authored
Merge branch 'master' into patch-1
2 parents ee9454c + 49c8058 commit 4033c20

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2348
-504
lines changed

src/APIM_ARMTemplate/README.md

Lines changed: 184 additions & 91 deletions
Large diffs are not rendered by default.

src/APIM_ARMTemplate/apimtemplate.test/Common/FileHandlerTests/OpenAPISpecReaderTests.cs

Lines changed: 0 additions & 24 deletions
This file was deleted.

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
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common;
2+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create;
3+
4+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Test
5+
{
6+
public class ProductTemplateCreatorFactory
7+
{
8+
public static ProductTemplateCreator GenerateProductTemplateCreator()
9+
{
10+
PolicyTemplateCreator policyTemplateCreator = PolicyTemplateCreatorFactory.GeneratePolicyTemplateCreator();
11+
ProductTemplateCreator productTemplateCreator = new ProductTemplateCreator(policyTemplateCreator);
12+
return productTemplateCreator;
13+
}
14+
}
15+
}

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

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
using Microsoft.OpenApi.Models;
2-
using Xunit;
1+
using Xunit;
32
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common;
43
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create;
54
using System.Collections.Generic;
5+
using System.Linq;
66

77
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Test
88
{
99
public class APITemplateCreatorTests
1010
{
1111
[Fact]
12-
public async void ShouldCreateInitialAPITemplateResourceFromCreatorConfig()
12+
public void ShouldCreateInitialAPITemplateResourceFromCreatorConfig()
1313
{
1414
// arrange
1515
APITemplateCreator apiTemplateCreator = APITemplateCreatorFactory.GenerateAPITemplateCreator();
@@ -20,8 +20,8 @@ public async void ShouldCreateInitialAPITemplateResourceFromCreatorConfig()
2020
apiVersion = "apiVersion",
2121
apiVersionDescription = "apiVersionDescription",
2222
apiVersionSetId = "apiVersionSetId",
23-
revision = "revision",
24-
revisionDescription = "revisionDescription",
23+
apiRevision = "revision",
24+
apiRevisionDescription = "revisionDescription",
2525
suffix = "suffix",
2626
subscriptionRequired = true,
2727
authenticationSettings = new APITemplateAuthenticationSettings()
@@ -38,21 +38,28 @@ public async void ShouldCreateInitialAPITemplateResourceFromCreatorConfig()
3838
},
3939
subscriptionKeyRequired = true
4040
},
41-
openApiSpec = "https://petstore.swagger.io/v2/swagger.json"
41+
openApiSpec = "https://petstore.swagger.io/v2/swagger.json",
42+
protocols = "https",
43+
isCurrent = true,
44+
type = "http"
4245
};
4346
creatorConfig.apis.Add(api);
4447

4548
// act
46-
APITemplateResource apiTemplateResource = await apiTemplateCreator.CreateAPITemplateResourceAsync(api, true, true);
49+
APITemplateResource apiTemplateResource = apiTemplateCreator.CreateAPITemplateResource(api, true, true);
4750

4851
// assert
4952
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{api.name}')]", apiTemplateResource.name);
5053
Assert.Equal(api.name, apiTemplateResource.properties.displayName);
5154
Assert.Equal(api.apiVersion, apiTemplateResource.properties.apiVersion);
5255
Assert.Equal(api.apiVersionDescription, apiTemplateResource.properties.apiVersionDescription);
56+
Assert.Equal(api.type, apiTemplateResource.properties.type);
57+
Assert.Equal(api.type, apiTemplateResource.properties.apiType);
58+
Assert.Equal(api.isCurrent, apiTemplateResource.properties.isCurrent);
59+
Assert.Equal(new string[] { api.protocols }, apiTemplateResource.properties.protocols);
5360
Assert.Equal($"[resourceId('Microsoft.ApiManagement/service/apiVersionSets', parameters('ApimServiceName'), '{api.apiVersionSetId}')]", apiTemplateResource.properties.apiVersionSetId);
54-
Assert.Equal(api.revision, apiTemplateResource.properties.apiRevision);
55-
Assert.Equal(api.revisionDescription, apiTemplateResource.properties.apiRevisionDescription);
61+
Assert.Equal(api.apiRevision, apiTemplateResource.properties.apiRevision);
62+
Assert.Equal(api.apiRevisionDescription, apiTemplateResource.properties.apiRevisionDescription);
5663
Assert.Equal(api.suffix, apiTemplateResource.properties.path);
5764
Assert.Equal(api.subscriptionRequired, apiTemplateResource.properties.subscriptionRequired);
5865
Assert.Equal(api.authenticationSettings.oAuth2.authorizationServerId, apiTemplateResource.properties.authenticationSettings.oAuth2.authorizationServerId);
@@ -63,7 +70,7 @@ public async void ShouldCreateInitialAPITemplateResourceFromCreatorConfig()
6370
}
6471

6572
[Fact]
66-
public async void ShouldCreateSubsequentlAPITemplateResourceFromCreatorConfigWithCorrectContent()
73+
public void ShouldCreateSubsequentlAPITemplateResourceFromCreatorConfigWithCorrectContent()
6774
{
6875
// arrange
6976
APITemplateCreator apiTemplateCreator = APITemplateCreatorFactory.GenerateAPITemplateCreator();
@@ -76,7 +83,7 @@ public async void ShouldCreateSubsequentlAPITemplateResourceFromCreatorConfigWit
7683
creatorConfig.apis.Add(api);
7784

7885
// act
79-
APITemplateResource apiTemplateResource = await apiTemplateCreator.CreateAPITemplateResourceAsync(api, true, false);
86+
APITemplateResource apiTemplateResource = apiTemplateCreator.CreateAPITemplateResource(api, true, false);
8087

8188
// assert
8289
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{api.name}')]", apiTemplateResource.name);
@@ -85,7 +92,7 @@ public async void ShouldCreateSubsequentlAPITemplateResourceFromCreatorConfigWit
8592
}
8693

8794
[Fact]
88-
public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
95+
public void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
8996
{
9097
// arrange
9198
APITemplateCreator apiTemplateCreator = APITemplateCreatorFactory.GenerateAPITemplateCreator();
@@ -96,8 +103,8 @@ public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
96103
apiVersion = "apiVersion",
97104
apiVersionDescription = "apiVersionDescription",
98105
apiVersionSetId = "apiVersionSetId",
99-
revision = "revision",
100-
revisionDescription = "revisionDescription",
106+
apiRevision = "revision",
107+
apiRevisionDescription = "revisionDescription",
101108
suffix = "suffix",
102109
subscriptionRequired = true,
103110
authenticationSettings = new APITemplateAuthenticationSettings()
@@ -115,20 +122,27 @@ public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
115122
subscriptionKeyRequired = true
116123
},
117124
openApiSpec = "https://petstore.swagger.io/v2/swagger.json",
125+
protocols = "https",
126+
isCurrent = true,
127+
type = "http"
118128
};
119129
creatorConfig.apis.Add(api);
120130

121131
// act
122-
APITemplateResource apiTemplateResource = await apiTemplateCreator.CreateAPITemplateResourceAsync(api, false, true);
132+
APITemplateResource apiTemplateResource = apiTemplateCreator.CreateAPITemplateResource(api, false, true);
123133

124134
// assert
125135
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{api.name}')]", apiTemplateResource.name);
126136
Assert.Equal(api.name, apiTemplateResource.properties.displayName);
127137
Assert.Equal(api.apiVersion, apiTemplateResource.properties.apiVersion);
138+
Assert.Equal(api.type, apiTemplateResource.properties.type);
139+
Assert.Equal(api.type, apiTemplateResource.properties.apiType);
140+
Assert.Equal(api.isCurrent, apiTemplateResource.properties.isCurrent);
141+
Assert.Equal(new string[] { api.protocols }, apiTemplateResource.properties.protocols);
128142
Assert.Equal(api.apiVersionDescription, apiTemplateResource.properties.apiVersionDescription);
129143
Assert.Equal($"[resourceId('Microsoft.ApiManagement/service/apiVersionSets', parameters('ApimServiceName'), '{api.apiVersionSetId}')]", apiTemplateResource.properties.apiVersionSetId);
130-
Assert.Equal(api.revision, apiTemplateResource.properties.apiRevision);
131-
Assert.Equal(api.revisionDescription, apiTemplateResource.properties.apiRevisionDescription);
144+
Assert.Equal(api.apiRevision, apiTemplateResource.properties.apiRevision);
145+
Assert.Equal(api.apiRevisionDescription, apiTemplateResource.properties.apiRevisionDescription);
132146
Assert.Equal(api.suffix, apiTemplateResource.properties.path);
133147
Assert.Equal(api.subscriptionRequired, apiTemplateResource.properties.subscriptionRequired);
134148
Assert.Equal(api.authenticationSettings.oAuth2.authorizationServerId, apiTemplateResource.properties.authenticationSettings.oAuth2.authorizationServerId);
@@ -139,29 +153,32 @@ public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
139153
Assert.Equal("swagger-link-json", apiTemplateResource.properties.format);
140154
Assert.Equal(api.openApiSpec, apiTemplateResource.properties.value);
141155
}
142-
/*
156+
143157
[Fact]
144-
public void ShouldCreateProtocolsFromOpenApiDocument()
158+
public void ShouldAppendRevisionToAPIName()
145159
{
146160
// arrange
147161
APITemplateCreator apiTemplateCreator = APITemplateCreatorFactory.GenerateAPITemplateCreator();
148-
OpenApiDocument openApiDocument = new OpenApiDocument();
149-
int count = 2;
150-
for (int i = 0; i < count; i++)
162+
CreatorConfig creatorConfig = new CreatorConfig() { apis = new List<APIConfig>() };
163+
APIConfig api = new APIConfig()
151164
{
152-
openApiDocument.Servers.Add(new OpenApiServer()
153-
{
154-
Url = $"{i}:{i}"
155-
});
156-
}
165+
name = "name",
166+
apiRevision = "2",
167+
isCurrent = true,
168+
suffix = "suffix",
169+
subscriptionRequired = true,
170+
openApiSpec = "https://petstore.swagger.io/v2/swagger.json",
171+
};
172+
creatorConfig.apis.Add(api);
157173

158174
// act
159-
string[] protocols = apiTemplateCreator.CreateProtocols(openApiDocument);
175+
// the above api config will create a unified api template with a single resource
176+
List<Template> apiTemplates = apiTemplateCreator.CreateAPITemplates(api);
177+
APITemplateResource apiTemplateResource = apiTemplates.FirstOrDefault().resources[0] as APITemplateResource;
160178

161179
// assert
162-
Assert.Equal(count, protocols.Length);
180+
Assert.Contains(";rev", apiTemplateResource.name);
163181
}
164-
*/
165182
}
166183

167184
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,20 @@ public class MasterTemplateCreatorTests
1111
public void ShouldCreateCorrectNumberOfDeploymentResources()
1212
{
1313
// arrange
14+
CreatorConfig creatorConfig = new CreatorConfig() { apimServiceName = "apimService" };
1415
MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator();
1516
Template apiVersionSetsTemplate = new Template();
1617
Template productsTemplate = new Template();
1718
Template loggersTemplate = new Template();
1819
List<LinkedMasterTemplateAPIInformation> apiInfoList = new List<LinkedMasterTemplateAPIInformation>() { new LinkedMasterTemplateAPIInformation() { name = "api", isSplit = true } };
1920
FileNameGenerator fileNameGenerator = new FileNameGenerator();
20-
CreatorFileNames creatorFileNames = fileNameGenerator.GenerateCreatorLinkedFileNames();
21+
FileNames creatorFileNames = fileNameGenerator.GenerateFileNames(creatorConfig.apimServiceName);
2122

2223
// should create 5 resources (apiVersionSet, product, logger, both api templates)
2324
int count = 5;
2425

2526
// act
26-
Template masterTemplate = masterTemplateCreator.CreateLinkedMasterTemplate(apiVersionSetsTemplate, productsTemplate, loggersTemplate, null, null, apiInfoList, creatorFileNames, fileNameGenerator);
27+
Template masterTemplate = masterTemplateCreator.CreateLinkedMasterTemplate(apiVersionSetsTemplate, productsTemplate, loggersTemplate, null, null, apiInfoList, creatorFileNames, creatorConfig.apimServiceName, fileNameGenerator);
2728

2829
// assert
2930
Assert.Equal(count, masterTemplate.resources.Length);

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: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ public class ProductTemplateCreatorTests
1111
public void ShouldCreateProductFromCreatorConfig()
1212
{
1313
// arrange
14-
ProductTemplateCreator productTemplateCreator = new ProductTemplateCreator();
15-
CreatorConfig creatorConfig = new CreatorConfig() { products = new List<ProductsTemplateProperties>() };
16-
ProductsTemplateProperties product = new ProductsTemplateProperties()
14+
ProductTemplateCreator productTemplateCreator = ProductTemplateCreatorFactory.GenerateProductTemplateCreator();
15+
CreatorConfig creatorConfig = new CreatorConfig() { products = new List<ProductConfig>() };
16+
ProductConfig product = new ProductConfig()
1717
{
1818
displayName = "displayName",
1919
description = "description",
@@ -26,8 +26,8 @@ public void ShouldCreateProductFromCreatorConfig()
2626
creatorConfig.products.Add(product);
2727

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

3232
// assert
3333
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+
}

src/APIM_ARMTemplate/apimtemplate.test/apimtemplate.test.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
<PrivateAssets>all</PrivateAssets>
1919
</PackageReference>
2020
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
21-
<PackageReference Include="Microsoft.OpenApi" Version="1.1.2" />
22-
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.1.2" />
2321
<PackageReference Include="xunit" Version="2.4.0" />
2422
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
2523
</ItemGroup>

0 commit comments

Comments
 (0)