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

Commit d638add

Browse files
committed
add unit tests for creator
1 parent 822c483 commit d638add

File tree

9 files changed

+328
-4
lines changed

9 files changed

+328
-4
lines changed

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

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,62 @@ public async void ShouldCreateSubsequentlAPITemplateResourceFromCreatorConfigWit
8484
Assert.Equal(api.openApiSpec, apiTemplateResource.properties.contentValue);
8585
}
8686

87+
[Fact]
88+
public async void ShouldCreateUnifiedAPITemplateResourceFromCreatorConfig()
89+
{
90+
// arrange
91+
APITemplateCreator apiTemplateCreator = APITemplateCreatorFactory.GenerateAPITemplateCreator();
92+
CreatorConfig creatorConfig = new CreatorConfig() { apis = new List<APIConfig>() };
93+
APIConfig api = new APIConfig()
94+
{
95+
name = "name",
96+
apiVersion = "apiVersion",
97+
apiVersionDescription = "apiVersionDescription",
98+
apiVersionSetId = "apiVersionSetId",
99+
revision = "revision",
100+
revisionDescription = "revisionDescription",
101+
suffix = "suffix",
102+
subscriptionRequired = true,
103+
authenticationSettings = new APITemplateAuthenticationSettings()
104+
{
105+
oAuth2 = new APITemplateOAuth2()
106+
{
107+
authorizationServerId = "",
108+
scope = ""
109+
},
110+
openid = new APITemplateOpenID()
111+
{
112+
openidProviderId = "",
113+
bearerTokenSendingMethods = new string[] { }
114+
},
115+
subscriptionKeyRequired = true
116+
},
117+
openApiSpec = "https://petstore.swagger.io/v2/swagger.json",
118+
};
119+
creatorConfig.apis.Add(api);
120+
121+
// act
122+
APITemplateResource apiTemplateResource = await apiTemplateCreator.CreateAPITemplateResourceAsync(api, false, true);
123+
124+
// assert
125+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{api.name}')]", apiTemplateResource.name);
126+
Assert.Equal(api.name, apiTemplateResource.properties.displayName);
127+
Assert.Equal(api.apiVersion, apiTemplateResource.properties.apiVersion);
128+
Assert.Equal(api.apiVersionDescription, apiTemplateResource.properties.apiVersionDescription);
129+
Assert.Equal($"[resourceId('Microsoft.ApiManagement/service/api-version-sets', parameters('ApimServiceName'), '{api.apiVersionSetId}')]", apiTemplateResource.properties.apiVersionSetId);
130+
Assert.Equal(api.revision, apiTemplateResource.properties.apiRevision);
131+
Assert.Equal(api.revisionDescription, apiTemplateResource.properties.apiRevisionDescription);
132+
Assert.Equal(api.suffix, apiTemplateResource.properties.path);
133+
Assert.Equal(api.subscriptionRequired, apiTemplateResource.properties.subscriptionRequired);
134+
Assert.Equal(api.authenticationSettings.oAuth2.authorizationServerId, apiTemplateResource.properties.authenticationSettings.oAuth2.authorizationServerId);
135+
Assert.Equal(api.authenticationSettings.oAuth2.scope, apiTemplateResource.properties.authenticationSettings.oAuth2.scope);
136+
Assert.Equal(api.authenticationSettings.openid.openidProviderId, apiTemplateResource.properties.authenticationSettings.openid.openidProviderId);
137+
Assert.Equal(api.authenticationSettings.openid.bearerTokenSendingMethods, apiTemplateResource.properties.authenticationSettings.openid.bearerTokenSendingMethods);
138+
Assert.Equal(api.authenticationSettings.subscriptionKeyRequired, apiTemplateResource.properties.authenticationSettings.subscriptionKeyRequired);
139+
Assert.Equal("swagger-link-json", apiTemplateResource.properties.contentFormat);
140+
Assert.Equal(api.openApiSpec, apiTemplateResource.properties.contentValue);
141+
}
142+
87143
[Fact]
88144
public void ShouldCreateProtocolsFromOpenApiDocument()
89145
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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 AuthorizationServerTemplateCreatorTests
9+
{
10+
[Fact]
11+
public void ShouldCreateAuthorizationServerTemplateFromCreatorConfig()
12+
{
13+
// arrange
14+
AuthorizationServerTemplateCreator authorizationServerTemplateCreator = new AuthorizationServerTemplateCreator();
15+
CreatorConfig creatorConfig = new CreatorConfig() { authorizationServers = new List<AuthorizationServerTemplateProperties>() };
16+
AuthorizationServerTemplateProperties authorizationServer = new AuthorizationServerTemplateProperties()
17+
{
18+
description = "description",
19+
displayName = "displayName",
20+
authorizationEndpoint = "endpoint.com",
21+
authorizationMethods = new string[] { "GET" },
22+
tokenBodyParameters = new AuthorizationServerTokenBodyParameter[] { new AuthorizationServerTokenBodyParameter() {
23+
name = "name",
24+
value = "value"
25+
} },
26+
clientAuthenticationMethod = new string[] { "GET" },
27+
tokenEndpoint = "endpoint.com",
28+
supportState = true,
29+
defaultScope = "defaultScope",
30+
bearerTokenSendingMethods = new string[] { "GET" },
31+
clientId = "id",
32+
clientSecret = "secret",
33+
clientRegistrationEndpoint = "endpoint.com",
34+
resourceOwnerPassword = "pass",
35+
resourceOwnerUsername = "user",
36+
grantTypes = new string[] { }
37+
};
38+
creatorConfig.authorizationServers.Add(authorizationServer);
39+
40+
// act
41+
Template authorizationServerTemplate = authorizationServerTemplateCreator.CreateAuthorizationServerTemplate(creatorConfig);
42+
AuthorizationServerTemplateResource authorizationServerTemplateResource = (AuthorizationServerTemplateResource)authorizationServerTemplate.resources[0];
43+
44+
// assert
45+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{authorizationServer.displayName}')]", authorizationServerTemplateResource.name);
46+
Assert.Equal(authorizationServer.description, authorizationServerTemplateResource.properties.description);
47+
Assert.Equal(authorizationServer.displayName, authorizationServerTemplateResource.properties.displayName);
48+
Assert.Equal(authorizationServer.authorizationEndpoint, authorizationServerTemplateResource.properties.authorizationEndpoint);
49+
Assert.Equal(authorizationServer.authorizationMethods, authorizationServerTemplateResource.properties.authorizationMethods);
50+
Assert.Equal(authorizationServer.clientAuthenticationMethod, authorizationServerTemplateResource.properties.clientAuthenticationMethod);
51+
Assert.Equal(authorizationServer.clientId, authorizationServerTemplateResource.properties.clientId);
52+
Assert.Equal(authorizationServer.clientRegistrationEndpoint, authorizationServerTemplateResource.properties.clientRegistrationEndpoint);
53+
Assert.Equal(authorizationServer.clientSecret, authorizationServerTemplateResource.properties.clientSecret);
54+
Assert.Equal(authorizationServer.bearerTokenSendingMethods, authorizationServerTemplateResource.properties.bearerTokenSendingMethods);
55+
Assert.Equal(authorizationServer.grantTypes, authorizationServerTemplateResource.properties.grantTypes);
56+
Assert.Equal(authorizationServer.resourceOwnerPassword, authorizationServerTemplateResource.properties.resourceOwnerPassword);
57+
Assert.Equal(authorizationServer.resourceOwnerUsername, authorizationServerTemplateResource.properties.resourceOwnerUsername);
58+
Assert.Equal(authorizationServer.defaultScope, authorizationServerTemplateResource.properties.defaultScope);
59+
Assert.Equal(authorizationServer.supportState, authorizationServerTemplateResource.properties.supportState);
60+
Assert.Equal(authorizationServer.tokenBodyParameters[0].name, authorizationServerTemplateResource.properties.tokenBodyParameters[0].name);
61+
Assert.Equal(authorizationServer.tokenBodyParameters[0].value, authorizationServerTemplateResource.properties.tokenBodyParameters[0].value);
62+
}
63+
}
64+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
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 BackendTemplateCreatorTests
9+
{
10+
[Fact]
11+
public void ShouldCreateBackendTemplateFromCreatorConfig()
12+
{
13+
// arrange
14+
BackendTemplateCreator backendTemplateCreator = new BackendTemplateCreator();
15+
CreatorConfig creatorConfig = new CreatorConfig() { backends = new List<BackendTemplateProperties>() };
16+
BackendTemplateProperties backend = new BackendTemplateProperties()
17+
{
18+
title = "title",
19+
description = "description",
20+
resourceId = "resourceId",
21+
url = "url",
22+
protocol = "protocol",
23+
proxy = new BackendProxy()
24+
{
25+
url = "url",
26+
username = "user",
27+
password = "pass"
28+
},
29+
tls = new BackendTLS()
30+
{
31+
validateCertificateChain = true,
32+
validateCertificateName = true
33+
},
34+
credentials = new BackendCredentials()
35+
{
36+
certificate = new string[] { "cert1" },
37+
query = new object(),
38+
header = new object(),
39+
authorization = new BackendCredentialsAuthorization()
40+
{
41+
scheme = "scheme",
42+
parameter = "parameter"
43+
}
44+
},
45+
properties = new BackendSubProperties()
46+
{
47+
serviceFabricCluster = new BackendServiceFabricCluster()
48+
{
49+
clientCertificatethumbprint = "",
50+
managementEndpoints = new string[] { "endpoint" },
51+
maxPartitionResolutionRetries = 1,
52+
serverCertificateThumbprints = new string[] { "thumbprint" },
53+
serverX509Names = new ServerX509Names[]{
54+
new ServerX509Names(){
55+
name = "name",
56+
issuerCertificateThumbprint = "thumbprint"
57+
} }
58+
}
59+
}
60+
61+
};
62+
creatorConfig.backends.Add(backend);
63+
64+
// act
65+
Template backendTemplate = backendTemplateCreator.CreateBackendTemplate(creatorConfig);
66+
BackendTemplateResource backendTemplateResource = (BackendTemplateResource)backendTemplate.resources[0];
67+
68+
// assert
69+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{backend.title}')]", backendTemplateResource.name);
70+
Assert.Equal(backend.title, backendTemplateResource.properties.title);
71+
Assert.Equal(backend.description, backendTemplateResource.properties.description);
72+
Assert.Equal(backend.resourceId, backendTemplateResource.properties.resourceId);
73+
Assert.Equal(backend.url, backendTemplateResource.properties.url);
74+
Assert.Equal(backend.protocol, backendTemplateResource.properties.protocol);
75+
Assert.Equal(backend.proxy.url, backendTemplateResource.properties.proxy.url);
76+
Assert.Equal(backend.proxy.username, backendTemplateResource.properties.proxy.username);
77+
Assert.Equal(backend.proxy.password, backendTemplateResource.properties.proxy.password);
78+
Assert.Equal(backend.tls.validateCertificateChain, backendTemplateResource.properties.tls.validateCertificateChain);
79+
Assert.Equal(backend.tls.validateCertificateName, backendTemplateResource.properties.tls.validateCertificateName);
80+
Assert.Equal(backend.credentials.certificate, backendTemplateResource.properties.credentials.certificate);
81+
Assert.Equal(backend.credentials.query, backendTemplateResource.properties.credentials.query);
82+
Assert.Equal(backend.credentials.header, backendTemplateResource.properties.credentials.header);
83+
Assert.Equal(backend.credentials.authorization.scheme, backendTemplateResource.properties.credentials.authorization.scheme);
84+
Assert.Equal(backend.credentials.authorization.parameter, backendTemplateResource.properties.credentials.authorization.parameter);
85+
Assert.Equal(backend.properties.serviceFabricCluster.clientCertificatethumbprint, backendTemplateResource.properties.properties.serviceFabricCluster.clientCertificatethumbprint);
86+
Assert.Equal(backend.properties.serviceFabricCluster.managementEndpoints, backendTemplateResource.properties.properties.serviceFabricCluster.managementEndpoints);
87+
Assert.Equal(backend.properties.serviceFabricCluster.maxPartitionResolutionRetries, backendTemplateResource.properties.properties.serviceFabricCluster.maxPartitionResolutionRetries);
88+
Assert.Equal(backend.properties.serviceFabricCluster.serverCertificateThumbprints, backendTemplateResource.properties.properties.serviceFabricCluster.serverCertificateThumbprints);
89+
Assert.Equal(backend.properties.serviceFabricCluster.serverX509Names[0].issuerCertificateThumbprint, backendTemplateResource.properties.properties.serviceFabricCluster.serverX509Names[0].issuerCertificateThumbprint);
90+
Assert.Equal(backend.properties.serviceFabricCluster.serverX509Names[0].name, backendTemplateResource.properties.properties.serviceFabricCluster.serverX509Names[0].name);
91+
}
92+
}
93+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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 LoggerTemplateCreatorTests
9+
{
10+
[Fact]
11+
public void ShouldCreateLoggerTemplateFromCreatorConfig()
12+
{
13+
// arrange
14+
LoggerTemplateCreator loggerTemplateCreator = new LoggerTemplateCreator();
15+
CreatorConfig creatorConfig = new CreatorConfig() { loggers = new List<LoggerConfig>() };
16+
LoggerConfig logger = new LoggerConfig()
17+
{
18+
name = "name",
19+
loggerType = "applicationinsights",
20+
description = "description",
21+
isBuffered = true,
22+
resourceId = "resourceId",
23+
credentials = new LoggerCredentials()
24+
{
25+
connectionString = "connString",
26+
instrumentationKey = "iKey",
27+
name = "credName"
28+
}
29+
30+
};
31+
creatorConfig.loggers.Add(logger);
32+
33+
// act
34+
Template loggerTemplate = loggerTemplateCreator.CreateLoggerTemplate(creatorConfig);
35+
LoggerTemplateResource loggerTemplateResource = (LoggerTemplateResource)loggerTemplate.resources[0];
36+
37+
// assert
38+
Assert.Equal($"[concat(parameters('ApimServiceName'), '/{logger.name}')]", loggerTemplateResource.name);
39+
Assert.Equal(logger.loggerType, loggerTemplateResource.properties.loggerType);
40+
Assert.Equal(logger.description, loggerTemplateResource.properties.description);
41+
Assert.Equal(logger.isBuffered, loggerTemplateResource.properties.isBuffered);
42+
Assert.Equal(logger.resourceId, loggerTemplateResource.properties.resourceId);
43+
Assert.Equal(logger.credentials.connectionString, loggerTemplateResource.properties.credentials.connectionString);
44+
Assert.Equal(logger.credentials.instrumentationKey, loggerTemplateResource.properties.credentials.instrumentationKey);
45+
Assert.Equal(logger.credentials.name, loggerTemplateResource.properties.credentials.name);
46+
}
47+
}
48+
}

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,28 @@ namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Test
77
{
88
public class MasterTemplateCreatorTests
99
{
10+
[Fact]
11+
public void ShouldCreateCorrectNumberOfDeploymentResources()
12+
{
13+
// arrange
14+
MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator();
15+
Template apiVersionSetsTemplate = new Template();
16+
Template productsTemplate = new Template();
17+
Template loggersTemplate = new Template();
18+
List<LinkedMasterTemplateAPIInformation> apiInfoList = new List<LinkedMasterTemplateAPIInformation>() { new LinkedMasterTemplateAPIInformation() { name = "api", isSplit = true } };
19+
FileNameGenerator fileNameGenerator = new FileNameGenerator();
20+
CreatorFileNames creatorFileNames = fileNameGenerator.GenerateCreatorLinkedFileNames();
21+
22+
// should create 5 resources (apiVersionSet, product, logger, both api templates)
23+
int count = 5;
24+
25+
// act
26+
Template masterTemplate = masterTemplateCreator.CreateLinkedMasterTemplate(apiVersionSetsTemplate, productsTemplate, loggersTemplate, null, null, apiInfoList, creatorFileNames, fileNameGenerator);
27+
28+
// assert
29+
Assert.Equal(count, masterTemplate.resources.Length);
30+
}
31+
1032
[Fact]
1133
public void ShouldCreateCorrectNumberOfParameterValuesWhenLinked()
1234
{

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public void ShouldCreateAPIPolicyTemplateResourceFromCreatorConfigWithCorrectCon
2121
creatorConfig.apis.Add(api);
2222
string[] dependsOn = new string[] { "dependsOn" };
2323

24-
2524
// act
2625
PolicyTemplateResource policyTemplateResource = policyTemplateCreator.CreateAPIPolicyTemplateResource(api, dependsOn);
2726

@@ -41,7 +40,6 @@ public void ShouldCreateOperationPolicyTemplateResourceFromPairWithCorrectConten
4140
string apiName = "apiName";
4241
string[] dependsOn = new string[] { "dependsOn" };
4342

44-
4543
// act
4644
PolicyTemplateResource policyTemplateResource = policyTemplateCreator.CreateOperationPolicyTemplateResource(policyPair, apiName, dependsOn);
4745

0 commit comments

Comments
 (0)