public async Task GenerateProductApisTemplates_ProperlyLaysTheInformation() { // arrange var currentTestDirectory = Path.Combine(this.OutputDirectory, nameof(GenerateProductApisTemplates_ProperlyLaysTheInformation)); var extractorConfig = this.GetMockedExtractorConsoleAppConfiguration( splitApis: false, apiVersionSetName: string.Empty, multipleApiNames: string.Empty, includeAllRevisions: false); var extractorParameters = new ExtractorParameters(extractorConfig); var mockedServiceApisApiClient = MockApisClient.GetMockedApiClientWithDefaultValues(); var mockedServiceApisProductsApiClient = MockProductsClient.GetMockedApiClientWithDefaultValues(); var productApisExtractor = new ProductApisExtractor( this.GetTestLogger <ProductApisExtractor>(), mockedServiceApisProductsApiClient, mockedServiceApisApiClient, new TemplateBuilder()); var extractorExecutor = ExtractorExecutor.BuildExtractorExecutor( this.GetTestLogger <ExtractorExecutor>(), productApisExtractor: productApisExtractor); extractorExecutor.SetExtractorParameters(extractorParameters); // act var productApisTemplate = await extractorExecutor.GenerateProductApisTemplateAsync( singleApiName : It.IsAny <string>(), multipleApiNames : It.IsAny <List <string> >(), currentTestDirectory); // assert File.Exists(Path.Combine(currentTestDirectory, extractorParameters.FileNames.ProductAPIs)).Should().BeTrue(); productApisTemplate.Parameters.Should().ContainKey(ParameterNames.ApimServiceName); productApisTemplate.TypedResources.ProductApis.Count().Should().Be(2); productApisTemplate.Resources.Count().Should().Be(2); var productApi1 = productApisTemplate.TypedResources.ProductApis.First(); productApi1.ApiVersion.Should().Be(GlobalConstants.ApiVersion); productApi1.Name.Should().NotBeNullOrEmpty(); productApi1.Type.Should().Be(ResourceTypeConstants.ProductApi); productApi1.Properties.DisplayName.Should().NotBeNullOrEmpty(); productApi1.Properties.Description.Should().NotBeNullOrEmpty(); var productApi2 = productApisTemplate.TypedResources.ProductApis.Last(); productApi2.ApiVersion.Should().Be(GlobalConstants.ApiVersion); productApi2.Name.Should().NotBeNullOrEmpty(); productApi2.Type.Should().Be(ResourceTypeConstants.ProductApi); productApi2.Properties.DisplayName.Should().NotBeNullOrEmpty(); productApi2.Properties.Description.Should().NotBeNullOrEmpty(); productApi2.DependsOn.Should().NotBeNullOrEmpty(); }
public async Task GenerateGatewayApisTemplates_ProperlyLaysTheInformation() { // arrange var currentTestDirectory = Path.Combine(this.OutputDirectory, nameof(GenerateGatewayApisTemplates_ProperlyLaysTheInformation)); var extractorConfig = this.GetMockedExtractorConsoleAppConfiguration( splitApis: false, apiVersionSetName: string.Empty, multipleApiNames: string.Empty, includeAllRevisions: false); var extractorParameters = new ExtractorParameters(extractorConfig); var mockedGatewayClient = MockGatewayClient.GetMockedApiClientWithDefaultValues(); var mockedApisClient = MockApisClient.GetMockedApiClientWithDefaultValues(); var gatewayApiExtractor = new GatewayApiExtractor( this.GetTestLogger <GatewayApiExtractor>(), new TemplateBuilder(), mockedGatewayClient, mockedApisClient); var extractorExecutor = ExtractorExecutor.BuildExtractorExecutor( this.GetTestLogger <ExtractorExecutor>(), gatewayApiExtractor: gatewayApiExtractor); extractorExecutor.SetExtractorParameters(extractorParameters); // act var gatewayApiTemplate = await extractorExecutor.GenerateGatewayApiTemplateAsync( It.IsAny <string>(), It.IsAny <List <string> >(), currentTestDirectory); // assert File.Exists(Path.Combine(currentTestDirectory, extractorParameters.FileNames.GatewayApi)).Should().BeTrue(); gatewayApiTemplate.Should().NotBeNull(); gatewayApiTemplate.Parameters.Should().ContainKey(ParameterNames.ApimServiceName); gatewayApiTemplate.TypedResources.GatewayApis.Count().Should().Be(4); gatewayApiTemplate.Resources.Count().Should().Be(4); var gatewayResources = gatewayApiTemplate.TypedResources.GatewayApis; gatewayResources.Where(x => x.Name.Contains(MockGatewayClient.GatewayName1)).Count().Should().Be(2); gatewayResources.Where(x => x.Name.Contains(MockGatewayClient.GatewayName2)).Count().Should().Be(2); gatewayResources.All(x => x.ApiVersion == GlobalConstants.ApiVersion).Should().BeTrue(); gatewayResources.All(x => x.Type == ResourceTypeConstants.GatewayApi).Should().BeTrue(); gatewayResources.All(x => x.Properties is not null).Should().BeTrue(); }
public async Task GenerateTagApiTemplates_ProperlyLaysTheInformation() { // arrange var currentTestDirectory = Path.Combine(this.OutputDirectory, nameof(GenerateTagApiTemplates_ProperlyLaysTheInformation)); var extractorConfig = this.GetMockedExtractorConsoleAppConfiguration( splitApis: false, apiVersionSetName: string.Empty, multipleApiNames: string.Empty, includeAllRevisions: false); var extractorParameters = new ExtractorParameters(extractorConfig); var mockedTagClient = MockTagClient.GetMockedApiClientWithDefaultValues(); var mockedApiClient = MockApisClient.GetMockedApiClientWithDefaultValues(); var tagApiExtractor = new TagApiExtractor( this.GetTestLogger <TagApiExtractor>(), new TemplateBuilder(), mockedApiClient, mockedTagClient); var extractorExecutor = ExtractorExecutor.BuildExtractorExecutor( this.GetTestLogger <ExtractorExecutor>(), tagApiExtractor: tagApiExtractor); extractorExecutor.SetExtractorParameters(extractorParameters); // act var tagApiTemplate = await extractorExecutor.GenerateTagApiTemplateAsync( It.IsAny <string>(), It.IsAny <List <string> >(), currentTestDirectory); // assert File.Exists(Path.Combine(currentTestDirectory, extractorParameters.FileNames.TagApi)).Should().BeTrue(); tagApiTemplate.Parameters.Should().ContainKey(ParameterNames.ApimServiceName); tagApiTemplate.TypedResources.Tags.Count().Should().Be(4); tagApiTemplate.Resources.Count().Should().Be(4); var resources = tagApiTemplate.TypedResources; resources.Tags.Any(x => x.Name.Contains(MockTagClient.TagName1)).Should().BeTrue(); resources.Tags.Any(x => x.Name.Contains(MockTagClient.TagName2)).Should().BeTrue(); resources.Tags.All(x => x.ApiVersion == GlobalConstants.ApiVersion).Should().BeTrue(); resources.Tags.All(x => !x.DependsOn.IsNullOrEmpty() && !string.IsNullOrEmpty(x.DependsOn.First())).Should().BeTrue(); }
public async Task GenerateProductsTemplates_ProperlyLaysTheInformation() { // arrange var currentTestDirectory = Path.Combine(this.OutputDirectory, nameof(GenerateProductsTemplates_ProperlyLaysTheInformation)); var extractorConfig = this.GetMockedExtractorConsoleAppConfiguration( splitApis: false, apiVersionSetName: string.Empty, multipleApiNames: string.Empty, includeAllRevisions: false); var extractorParameters = new ExtractorParameters(extractorConfig); var mockedPolicyClient = MockPolicyClient.GetMockedApiClientWithDefaultValues(); var mockedPolicyExtractor = new PolicyExtractor(this.GetTestLogger <PolicyExtractor>(), mockedPolicyClient, new TemplateBuilder()); var mockedApisClient = MockApisClient.GetMockedApiClientWithDefaultValues(); var mockedProductsClient = MockProductsClient.GetMockedApiClientWithDefaultValues(); var mockedGroupsClient = MockGroupsClient.GetMockedApiClientWithDefaultValues(); var mockedTagClient = MockTagClient.GetMockedApiClientWithDefaultValues(); var productExtractor = new ProductExtractor( this.GetTestLogger <ProductExtractor>(), mockedPolicyExtractor, mockedProductsClient, mockedGroupsClient, mockedTagClient, new TemplateBuilder()); var extractorExecutor = ExtractorExecutor.BuildExtractorExecutor( this.GetTestLogger <ExtractorExecutor>(), productExtractor: productExtractor); extractorExecutor.SetExtractorParameters(extractorParameters); // act var productTemplate = await extractorExecutor.GenerateProductsTemplateAsync( singleApiName : It.IsAny <string>(), currentTestDirectory, productApiResources : It.IsAny <List <ProductApiTemplateResource> >()); // assert // generated product policy files var policyFileName = string.Format(PolicyExtractor.ProductPolicyFileNameFormat, MockProductsClient.ProductName1); File.Exists(Path.Combine(currentTestDirectory, PolicyExtractor.PoliciesDirectoryName, policyFileName)).Should().BeTrue(); // generated product template files File.Exists(Path.Combine(currentTestDirectory, extractorParameters.FileNames.Products)).Should().BeTrue(); var templateParameters = productTemplate.Parameters; templateParameters.Should().ContainKey(ParameterNames.ApimServiceName); templateParameters.Should().ContainKey(ParameterNames.PolicyXMLBaseUrl); templateParameters.Should().ContainKey(ParameterNames.PolicyXMLSasToken); templateParameters.Should().ContainKey(ParameterNames.ServiceUrl); templateParameters.Should().ContainKey(ParameterNames.ApiLoggerId); var templateResources = productTemplate.Resources; // product resource var productResource = templateResources.First(x => x.Type == ResourceTypeConstants.Product); productResource.Name.Should().Contain(MockProductsClient.ProductName1); // group resources var groupResources = templateResources.Where(x => x.Type == ResourceTypeConstants.ProductGroup).ToList(); groupResources.Should().HaveCount(2); (groupResources[0].Name.Contains(MockGroupsClient.GroupName1) || groupResources[1].Name.Contains(MockGroupsClient.GroupName1)).Should().BeTrue(); (groupResources[0].Name.Contains(MockGroupsClient.GroupName2) || groupResources[1].Name.Contains(MockGroupsClient.GroupName2)).Should().BeTrue(); // policy resources var policyResource = templateResources.First(x => x.Type == ResourceTypeConstants.ProductPolicy); policyResource.Name.Should().Contain(MockProductsClient.ProductName1); // tag resources var tagResources = templateResources.Where(x => x.Type == ResourceTypeConstants.ProductTag).ToList(); tagResources.Should().HaveCount(2); (tagResources[0].Name.Contains(MockTagClient.TagName1) || tagResources[1].Name.Contains(MockTagClient.TagName1)).Should().BeTrue(); (tagResources[0].Name.Contains(MockTagClient.TagName2) || tagResources[1].Name.Contains(MockTagClient.TagName2)).Should().BeTrue(); }
public async Task GenerateApiTemplates_ProperlyLaysTheInformation() { // arrange var currentTestDirectory = Path.Combine(this.OutputDirectory, nameof(GenerateApiTemplates_ProperlyLaysTheInformation)); var extractorConfig = this.GetMockedExtractorConsoleAppConfiguration( splitApis: false, apiVersionSetName: string.Empty, multipleApiNames: string.Empty, includeAllRevisions: false); var extractorParameters = new ExtractorParameters(extractorConfig); // mocked clients var mockedApiClient = MockApisClient.GetMockedApiClientWithDefaultValues(); var mockedProductClient = MockProductsClient.GetMockedApiClientWithDefaultValues(); var mockedApiSchemaClient = MockApiSchemaClient.GetMockedApiClientWithDefaultValues(); var mockedPolicyClient = MockPolicyClient.GetMockedApiClientWithDefaultValues(); var mockedTagClient = MockTagClient.GetMockedApiClientWithDefaultValues(); var mockedApiOperationClient = MockApiOperationClient.GetMockedApiClientWithDefaultValues(); var mockedDiagnosticClient = MockDiagnosticClient.GetMockedClientWithApiDependentValues(); // mocked extractors var mockedDiagnosticExtractor = new DiagnosticExtractor(this.GetTestLogger <DiagnosticExtractor>(), mockedDiagnosticClient); var mockedApiSchemaExtractor = new ApiSchemaExtractor(this.GetTestLogger <ApiSchemaExtractor>(), mockedApiSchemaClient); var mockedPolicyExtractor = new PolicyExtractor(this.GetTestLogger <PolicyExtractor>(), mockedPolicyClient, new TemplateBuilder()); var mockedProductApisExtractor = new ProductApisExtractor(this.GetTestLogger <ProductApisExtractor>(), mockedProductClient, mockedApiClient, new TemplateBuilder()); var mockedTagExtractor = new TagExtractor(this.GetTestLogger <TagExtractor>(), mockedTagClient, new TemplateBuilder()); var mockedApiOperationExtractor = new ApiOperationExtractor(this.GetTestLogger <ApiOperationExtractor>(), mockedApiOperationClient); var apiExtractor = new ApiExtractor( this.GetTestLogger <ApiExtractor>(), new TemplateBuilder(), mockedApiClient, mockedDiagnosticExtractor, mockedApiSchemaExtractor, mockedPolicyExtractor, mockedProductApisExtractor, mockedTagExtractor, mockedApiOperationExtractor); var extractorExecutor = ExtractorExecutor.BuildExtractorExecutor( this.GetTestLogger <ExtractorExecutor>(), apiExtractor: apiExtractor); extractorExecutor.SetExtractorParameters(extractorParameters); // act var apiTemplate = await extractorExecutor.GenerateApiTemplateAsync( singleApiName : It.IsAny <string>(), multipleApiNames : It.IsAny <List <string> >(), currentTestDirectory); // assert File.Exists(Path.Combine(currentTestDirectory, apiTemplate.TypedResources.FileName)).Should().BeTrue(); Directory.GetFiles(Path.Combine(currentTestDirectory, PolicyExtractor.PoliciesDirectoryName)).Count().Should().Be(4); apiTemplate.Parameters.Should().NotBeNull(); apiTemplate.Parameters.Should().ContainKey(ParameterNames.ApimServiceName); apiTemplate.Parameters.Should().ContainKey(ParameterNames.ServiceUrl); apiTemplate.Parameters.Should().ContainKey(ParameterNames.ApiLoggerId); apiTemplate.Parameters.Should().ContainKey(ParameterNames.PolicyXMLBaseUrl); apiTemplate.Parameters.Should().ContainKey(ParameterNames.PolicyXMLSasToken); apiTemplate.Resources.Count().Should().Be(23); // apis apiTemplate.TypedResources.Apis.Count().Should().Be(2); apiTemplate.TypedResources.Apis.All(x => x.Type == ResourceTypeConstants.API).Should().BeTrue(); apiTemplate.TypedResources.Apis.All(x => x.Properties is not null).Should().BeTrue(); // api schemas apiTemplate.TypedResources.ApiSchemas.Count().Should().Be(2); apiTemplate.TypedResources.ApiSchemas.All(x => x.Type == ResourceTypeConstants.APISchema).Should().BeTrue(); apiTemplate.TypedResources.ApiSchemas.All(x => x.Properties is not null).Should().BeTrue(); // diagnostics apiTemplate.TypedResources.Diagnostics.Count().Should().Be(3); apiTemplate.TypedResources.Diagnostics.All(x => x.Type == ResourceTypeConstants.APIServiceDiagnostic || x.Type == ResourceTypeConstants.APIDiagnostic).Should().BeTrue(); apiTemplate.TypedResources.Diagnostics.All(x => x.Properties is not null).Should().BeTrue(); // tags apiTemplate.TypedResources.Tags.Count().Should().Be(4); apiTemplate.TypedResources.Tags.All(x => x.Type == ResourceTypeConstants.ProductTag).Should().BeTrue(); // api products apiTemplate.TypedResources.ApiProducts.Count().Should().Be(2); apiTemplate.TypedResources.ApiProducts.All(x => x.Type == ResourceTypeConstants.ProductApi).Should().BeTrue(); apiTemplate.TypedResources.ApiProducts.All(x => x.Properties is not null).Should().BeTrue(); // api policies apiTemplate.TypedResources.ApiPolicies.Count().Should().Be(2); apiTemplate.TypedResources.ApiPolicies.All(x => x.Properties is not null).Should().BeTrue(); // api operations apiTemplate.TypedResources.ApiOperations.Count().Should().Be(2); apiTemplate.TypedResources.ApiOperations.All(x => x.Type == ResourceTypeConstants.APIOperation).Should().BeTrue(); apiTemplate.TypedResources.ApiOperations.All(x => x.Properties is not null).Should().BeTrue(); apiTemplate.TypedResources.ApiOperations.SelectMany(x => x.DependsOn).Any(x => x.Contains($"'{ResourceTypeConstants.API}'")).Should().BeTrue(); apiTemplate.TypedResources.ApiOperations.SelectMany(x => x.DependsOn).Any(x => x.Contains($"'{ResourceTypeConstants.APIOperation}'")).Should().BeFalse(); // api operations policies apiTemplate.TypedResources.ApiOperationsPolicies.Count().Should().Be(2); apiTemplate.TypedResources.ApiOperations.All(x => x.Properties is not null).Should().BeTrue(); // api operations tags apiTemplate.TypedResources.ApiOperationsPolicies.Count().Should().Be(2); apiTemplate.TypedResources.ApiOperations.All(x => x.Properties is not null).Should().BeTrue(); }