public void MetadataObjectExcludesBlacklistedEndpoints() { var builder = new MetaDataObjectBuilder(_serviceDefinition); var metaDataObjects = builder.GetMetaDataObjects(); Assert.Empty(metaDataObjects); }
public void IdentifyDuplicatePaths() { // these swagger operations have more than 1 version of it. ( usually because they come from different providers) // client will pick the last swagger definition it sees and use that. var knownDuplicates = new HashSet <string>(); knownDuplicates.Add( "https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/operations"); knownDuplicates.Add( "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/moveResources"); var root = new DirectoryInfo(Directory.GetCurrentDirectory()).Parent.Parent.Parent; var fileRelative = Path.Combine("App_Data", "SwaggerSpecs"); var swaggerDirectory = Path.Combine(root.FullName, fileRelative); var metadataObjects = new List <MetadataObject>(); foreach (var directory in Directory.GetDirectories(swaggerDirectory)) { foreach (var swaggerFile in Directory.GetFiles(directory)) { var serviceDefinition = SwaggerParser.Load(swaggerFile, new FileSystem()); var builder = new MetaDataObjectBuilder(serviceDefinition); metadataObjects.AddRange(builder.GetMetaDataObjects()); } } Assert.NotEmpty(metadataObjects); var speclessMetadataObjects = HyakUtils.GetSpeclessCsmOperations().ToList(); Assert.NotEmpty(speclessMetadataObjects); metadataObjects.AddRange(speclessMetadataObjects); var operationsCount = new Dictionary <UniqueOperation, HashSet <string> >(); foreach (var metadataObject in metadataObjects) { var uniqueOperation = new UniqueOperation(metadataObject.Url, metadataObject.HttpMethod); if (!operationsCount.ContainsKey(uniqueOperation)) { operationsCount[uniqueOperation] = new HashSet <string>(StringComparer.OrdinalIgnoreCase); } operationsCount[uniqueOperation].Add(metadataObject.ApiVersion); } foreach (var oCount in operationsCount) { if (oCount.Value.Count > 1) { Assert.True(knownDuplicates.Contains(oCount.Key.Url)); } } }
public void VerifyMetadataObject() { var builder = new MetaDataObjectBuilder(_serviceDefinition); var metaDataObjects = builder.GetMetaDataObjects(); var metadataObjects = metaDataObjects as IList <MetadataObject> ?? metaDataObjects.ToArray(); var metadataObject = metadataObjects[3]; Assert.Equal("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}", metadataObject.Url.Replace("https://", string.Empty)); Assert.Equal("DELETE", metadataObject.HttpMethod); Assert.Equal("Delete", metadataObject.MethodName); Assert.Equal("2017-06-01", metadataObject.ApiVersion); Assert.Null(metadataObject.RequestBody); Assert.Null(metadataObject.RequestBodyDoc); }
public void VerifyMetadataObject() { var builder = new MetaDataObjectBuilder(_serviceDefinition); var metaDataObjects = builder.GetMetaDataObjects(); var metadataObjects = metaDataObjects as IList <MetadataObject> ?? metaDataObjects.ToArray(); var metadataObject = metadataObjects[7]; Assert.Equal("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}", metadataObject.Url.Replace("https://", string.Empty)); Assert.Equal("PUT", metadataObject.HttpMethod); Assert.Equal("CreateOrUpdate", metadataObject.MethodName); Assert.Equal("2017-03-01", metadataObject.ApiVersion); Assert.NotNull(metadataObject.RequestBody); Assert.NotNull(metadataObject.RequestBodyDoc); }
public void VerifyUrlsInMetadataObject() { var builder = new MetaDataObjectBuilder(_serviceDefinition); var metaDataObjects = builder.GetMetaDataObjects(); var metadataObjects = metaDataObjects as IList <MetadataObject> ?? metaDataObjects.ToList(); Assert.Equal(9, metadataObjects.Count); var urls = metadataObjects.Select(metaDataObject => metaDataObject.Url.Replace("https://", string.Empty)).ToList(); Assert.Equal(3, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/routeTables"))); Assert.Equal(3, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes/{routeName}"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/routeTables/{routeTableName}/routes"))); }
public void ApiVersionInPathOverridesApiVersionInSwaggerRoot() { var resourceRoot = new DirectoryInfo(Directory.GetCurrentDirectory()).Parent.Parent; var filePath = Path.Combine(resourceRoot.FullName, Path.Combine("Resource", "arm-network", "2017-03-01", "swagger", "vmssNetworkInterface.json")); var serviceDefinition = SwaggerParser.Load(filePath, new FileSystem()); Assert.Equal("2017-03-01", serviceDefinition.Info.Version); var builder = new MetaDataObjectBuilder(serviceDefinition); var metaDataObjects = builder.GetMetaDataObjects(); Assert.Equal(3, metaDataObjects.Count()); foreach (var metaDataObject in metaDataObjects) { Assert.Equal("2016-09-01", metaDataObject.ApiVersion); } }
public void VerifyUrlsInMetadataObject() { var builder = new MetaDataObjectBuilder(_serviceDefinition); var metaDataObjects = builder.GetMetaDataObjects(); var metadataObjects = metaDataObjects as IList <MetadataObject> ?? metaDataObjects.ToList(); Assert.Equal(13, metadataObjects.Count); var urls = metadataObjects.Select(metaDataObject => metaDataObject.Url.Replace("https://", string.Empty)).ToList(); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/providers/Microsoft.Storage/operations"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Storage/checkNameAvailability"))); Assert.Equal(4, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Storage/storageAccounts"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/listKeys"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/regenerateKey"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/ListAccountSas"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/ListServiceSas"))); Assert.Equal(1, urls.Count(url => url.Equals("management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Storage/usages"))); }