public bool TryCreateOperationContract(MethodInfo method, out OperationContract contract) { try { contract = new OperationContract(); if (method.IsSpecialName) { return(false); } var parameters = method.GetParameters(); if (parameters.Length > 1) { if (Log.IsEnabled(Serilog.Events.LogEventLevel.Warning)) { Log.Warning("Operations with multiple parameters are not supported: {0}.", method.Name); } contract = null; return(false); } else if (parameters.Length == 1) { contract.ParameterType = parameters[0].ParameterType; } contract.ReturnType = method.ReturnType; var displayAttribute = method.GetCustomAttribute <DisplayAttribute>(); contract.Description = displayAttribute?.Description; var roleAttribute = method.GetCustomAttribute <RoleAttribute>(); if (roleAttribute != null) { contract.Role = roleAttribute.Role; } return(true); } catch { contract = null; return(false); } }
public void ApiOperationsCreateListUpdateDelete() { TestUtilities.StartTest("SmapiFunctionalTests", "ApiOperationsCreateListUpdateDelete"); try { // there should be 'Echo API' which is created by default for every new instance of API Management var apis = ApiManagementClient.Apis.List( ResourceGroupName, ApiManagementServiceName, null); var api = apis.Result.Values.Single(); // list operations var listResponse = ApiManagementClient.ApiOperations.List( ResourceGroupName, ApiManagementServiceName, api.Id, null); Assert.NotNull(listResponse); Assert.NotNull(listResponse.Result.Values); Assert.Equal(6, listResponse.Result.TotalCount); Assert.Equal(6, listResponse.Result.Values.Count); Assert.Null(listResponse.Result.NextLink); foreach (var operationContract in listResponse.Result.Values) { Assert.Equal(api.Id, operationContract.ApiId); } // list paged listResponse = ApiManagementClient.ApiOperations.List( ResourceGroupName, ApiManagementServiceName, api.Id, new QueryParameters { Top = 3 }); Assert.NotNull(listResponse); Assert.NotNull(listResponse.Result.Values); Assert.Equal(6, listResponse.Result.TotalCount); Assert.Equal(3, listResponse.Result.Values.Count); Assert.NotNull(listResponse.Result.NextLink); // list next page listResponse = ApiManagementClient.ApiOperations.ListNext(listResponse.Result.NextLink); Assert.NotNull(listResponse); Assert.NotNull(listResponse.Result.Values); Assert.Equal(6, listResponse.Result.TotalCount); Assert.Equal(3, listResponse.Result.Values.Count); // get first operation var firstOperation = listResponse.Result.Values.First(); var getResponse = ApiManagementClient.ApiOperations.Get( ResourceGroupName, ApiManagementServiceName, api.Id, firstOperation.OperationId); Assert.NotNull(getResponse); Assert.Equal(firstOperation.ApiId, getResponse.Value.ApiId); Assert.Equal(firstOperation.OperationId, getResponse.Value.OperationId); Assert.Equal(firstOperation.Method, getResponse.Value.Method); Assert.Equal(firstOperation.Name, getResponse.Value.Name); Assert.Equal(firstOperation.UrlTemplate, getResponse.Value.UrlTemplate); // add new operation string newOperationId = TestUtilities.GenerateName("operationid"); string newOperationName = TestUtilities.GenerateName("operationName"); string newOperationMethod = "PATCH"; string newperationUrlTemplate = "/newresource"; string newOperationDescription = TestUtilities.GenerateName("operationDescription"); string newOperationRequestDescription = TestUtilities.GenerateName("operationRequestDescription"); string newOperationRequestHeaderParamName = TestUtilities.GenerateName("newOperationRequestHeaderParmName"); string newOperationRequestHeaderParamDescr = TestUtilities.GenerateName("newOperationRequestHeaderParamDescr"); bool newOperationRequestHeaderParamIsRequired = true; string newOperationRequestHeaderParamDefaultValue = TestUtilities.GenerateName("newOperationRequestHeaderParamDefaultValue"); string newOperationRequestHeaderParamType = "string"; string newOperationRequestParmName = TestUtilities.GenerateName("newOperationRequestParmName"); string newOperationRequestParamDescr = TestUtilities.GenerateName("newOperationRequestParamDescr"); bool newOperationRequestParamIsRequired = true; string newOperationRequestParamDefaultValue = TestUtilities.GenerateName("newOperationRequestParamDefaultValue"); string newOperationRequestParamType = "string"; string newOperationRequestRepresentationContentType = TestUtilities.GenerateName("newOperationRequestRepresentationContentType"); string newOperationRequestRepresentationSample = TestUtilities.GenerateName("newOperationRequestRepresentationSample"); string newOperationResponseDescription = TestUtilities.GenerateName("newOperationResponseDescription"); int newOperationResponseStatusCode = 1980785443; string newOperationResponseRepresentationContentType = TestUtilities.GenerateName("newOperationResponseRepresentationContentType"); string newOperationResponseRepresentationSample = TestUtilities.GenerateName("newOperationResponseRepresentationSample"); var newOperation = new OperationContract { Name = newOperationName, Method = newOperationMethod, UrlTemplate = newperationUrlTemplate, Description = newOperationDescription, Request = new RequestContract { Description = newOperationRequestDescription, Headers = new[] { new ParameterContract { Name = newOperationRequestHeaderParamName, Description = newOperationRequestHeaderParamDescr, Required = newOperationRequestHeaderParamIsRequired, DefaultValue = newOperationRequestHeaderParamDefaultValue, Type = newOperationRequestHeaderParamType, Values = new[] { newOperationRequestHeaderParamDefaultValue, "1", "2", "3" } } }, QueryParameters = new[] { new ParameterContract { Name = newOperationRequestParmName, Description = newOperationRequestParamDescr, Required = newOperationRequestParamIsRequired, DefaultValue = newOperationRequestParamDefaultValue, Type = newOperationRequestParamType, Values = new[] { newOperationRequestParamDefaultValue, "1", "2", "3" } } }, Representations = new[] { new RepresentationContract { ContentType = newOperationRequestRepresentationContentType, Sample = newOperationRequestRepresentationSample } } }, Responses = new[] { new ResponseContract { Description = newOperationResponseDescription, StatusCode = newOperationResponseStatusCode, Representations = new[] { new RepresentationContract { ContentType = newOperationResponseRepresentationContentType, Sample = newOperationResponseRepresentationSample } } } } }; var createResponse = ApiManagementClient.ApiOperations.Create( ResourceGroupName, ApiManagementServiceName, api.Id, newOperationId, new OperationCreateOrUpdateParameters(newOperation)); Assert.NotNull(createResponse); Assert.Equal(HttpStatusCode.Created, createResponse.StatusCode); // get the operation to check it was created getResponse = ApiManagementClient.ApiOperations.Get( ResourceGroupName, ApiManagementServiceName, api.Id, newOperationId); Assert.NotNull(getResponse); Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); Assert.Equal(api.Id, getResponse.Value.ApiId); Assert.Equal(newOperationId, getResponse.Value.OperationId); Assert.Equal(newOperationName, getResponse.Value.Name); Assert.Equal(newOperationMethod, getResponse.Value.Method); Assert.Equal(newperationUrlTemplate, getResponse.Value.UrlTemplate); Assert.Equal(newOperationDescription, getResponse.Value.Description); Assert.NotNull(getResponse.Value.Request); Assert.Equal(newOperationRequestDescription, getResponse.Value.Request.Description); Assert.NotNull(getResponse.Value.Request.Headers); Assert.Equal(1, getResponse.Value.Request.Headers.Count); Assert.Equal(newOperationRequestHeaderParamName, getResponse.Value.Request.Headers[0].Name); Assert.Equal(newOperationRequestHeaderParamDescr, getResponse.Value.Request.Headers[0].Description); Assert.Equal(newOperationRequestHeaderParamIsRequired, getResponse.Value.Request.Headers[0].Required); Assert.Equal(newOperationRequestHeaderParamDefaultValue, getResponse.Value.Request.Headers[0].DefaultValue); Assert.Equal(newOperationRequestHeaderParamType, getResponse.Value.Request.Headers[0].Type); Assert.NotNull(getResponse.Value.Request.Headers[0].Values); Assert.Equal(4, getResponse.Value.Request.Headers[0].Values.Count); Assert.True(newOperation.Request.Headers[0].Values.All(value => getResponse.Value.Request.Headers[0].Values.Contains(value))); Assert.NotNull(getResponse.Value.Request.QueryParameters); Assert.Equal(1, getResponse.Value.Request.QueryParameters.Count); Assert.Equal(newOperationRequestParmName, getResponse.Value.Request.QueryParameters[0].Name); Assert.Equal(newOperationRequestParamDescr, getResponse.Value.Request.QueryParameters[0].Description); Assert.Equal(newOperationRequestParamIsRequired, getResponse.Value.Request.QueryParameters[0].Required); Assert.Equal(newOperationRequestParamDefaultValue, getResponse.Value.Request.QueryParameters[0].DefaultValue); Assert.Equal(newOperationRequestParamType, getResponse.Value.Request.QueryParameters[0].Type); Assert.True(newOperation.Request.QueryParameters[0].Values.All(value => getResponse.Value.Request.QueryParameters[0].Values.Contains(value))); Assert.NotNull(getResponse.Value.Request.Representations); Assert.Equal(1, getResponse.Value.Request.Representations.Count); Assert.Equal(newOperationRequestRepresentationContentType, getResponse.Value.Request.Representations[0].ContentType); Assert.Equal(newOperationRequestRepresentationSample, getResponse.Value.Request.Representations[0].Sample); Assert.NotNull(getResponse.Value.Responses); Assert.Equal(1, getResponse.Value.Responses.Count); Assert.Equal(newOperationResponseDescription, getResponse.Value.Responses[0].Description); Assert.Equal(newOperationResponseStatusCode, getResponse.Value.Responses[0].StatusCode); Assert.NotNull(getResponse.Value.Responses[0].Representations); Assert.Equal(1, getResponse.Value.Responses[0].Representations.Count); Assert.Equal(newOperationResponseRepresentationContentType, getResponse.Value.Responses[0].Representations[0].ContentType); Assert.Equal(newOperationResponseRepresentationSample, getResponse.Value.Responses[0].Representations[0].Sample); // patch the operation string patchedName = TestUtilities.GenerateName("patchedName"); string patchedDescription = TestUtilities.GenerateName("patchedDescription"); string patchedMethod = "HEAD"; var patchResponse = ApiManagementClient.ApiOperations.Patch( ResourceGroupName, ApiManagementServiceName, api.Id, newOperationId, new PatchParameters { RawJson = JsonConvert.SerializeObject( new { Name = patchedName, Description = patchedDescription, Method = patchedMethod }) }, getResponse.ETag); Assert.NotNull(patchResponse); Assert.Equal(HttpStatusCode.NoContent, patchResponse.StatusCode); // get the operation to check it was patched getResponse = ApiManagementClient.ApiOperations.Get( ResourceGroupName, ApiManagementServiceName, api.Id, newOperationId); Assert.NotNull(getResponse); Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); Assert.Equal(api.Id, getResponse.Value.ApiId); Assert.Equal(newOperationId, getResponse.Value.OperationId); Assert.Equal(patchedName, getResponse.Value.Name); Assert.Equal(patchedMethod, getResponse.Value.Method); Assert.Equal(newperationUrlTemplate, getResponse.Value.UrlTemplate); Assert.Equal(patchedDescription, getResponse.Value.Description); Assert.NotNull(getResponse.Value.Request); Assert.Equal(newOperationRequestDescription, getResponse.Value.Request.Description); Assert.NotNull(getResponse.Value.Request.Headers); Assert.Equal(1, getResponse.Value.Request.Headers.Count); Assert.Equal(newOperationRequestHeaderParamName, getResponse.Value.Request.Headers[0].Name); Assert.Equal(newOperationRequestHeaderParamDescr, getResponse.Value.Request.Headers[0].Description); Assert.Equal(newOperationRequestHeaderParamIsRequired, getResponse.Value.Request.Headers[0].Required); Assert.Equal(newOperationRequestHeaderParamDefaultValue, getResponse.Value.Request.Headers[0].DefaultValue); Assert.Equal(newOperationRequestHeaderParamType, getResponse.Value.Request.Headers[0].Type); Assert.NotNull(getResponse.Value.Request.Headers[0].Values); Assert.Equal(4, getResponse.Value.Request.Headers[0].Values.Count); Assert.True(newOperation.Request.Headers[0].Values.All(value => getResponse.Value.Request.Headers[0].Values.Contains(value))); Assert.NotNull(getResponse.Value.Request.QueryParameters); Assert.Equal(1, getResponse.Value.Request.QueryParameters.Count); Assert.Equal(newOperationRequestParmName, getResponse.Value.Request.QueryParameters[0].Name); Assert.Equal(newOperationRequestParamDescr, getResponse.Value.Request.QueryParameters[0].Description); Assert.Equal(newOperationRequestParamIsRequired, getResponse.Value.Request.QueryParameters[0].Required); Assert.Equal(newOperationRequestParamDefaultValue, getResponse.Value.Request.QueryParameters[0].DefaultValue); Assert.Equal(newOperationRequestParamType, getResponse.Value.Request.QueryParameters[0].Type); Assert.True(newOperation.Request.QueryParameters[0].Values.All(value => getResponse.Value.Request.QueryParameters[0].Values.Contains(value))); Assert.NotNull(getResponse.Value.Request.Representations); Assert.Equal(1, getResponse.Value.Request.Representations.Count); Assert.Equal(newOperationRequestRepresentationContentType, getResponse.Value.Request.Representations[0].ContentType); Assert.Equal(newOperationRequestRepresentationSample, getResponse.Value.Request.Representations[0].Sample); Assert.NotNull(getResponse.Value.Responses); Assert.Equal(1, getResponse.Value.Responses.Count); Assert.Equal(newOperationResponseDescription, getResponse.Value.Responses[0].Description); Assert.Equal(newOperationResponseStatusCode, getResponse.Value.Responses[0].StatusCode); Assert.NotNull(getResponse.Value.Responses[0].Representations); Assert.Equal(1, getResponse.Value.Responses[0].Representations.Count); Assert.Equal(newOperationResponseRepresentationContentType, getResponse.Value.Responses[0].Representations[0].ContentType); Assert.Equal(newOperationResponseRepresentationSample, getResponse.Value.Responses[0].Representations[0].Sample); // delete the operation var deleteResponse = ApiManagementClient.ApiOperations.Delete( ResourceGroupName, ApiManagementServiceName, api.Id, newOperationId, "*"); Assert.NotNull(deleteResponse); Assert.Equal(HttpStatusCode.NoContent, deleteResponse.StatusCode); // get the deleted operation to make sure it was deleted try { ApiManagementClient.ApiOperations.Get(ResourceGroupName, ApiManagementServiceName, api.Id, newOperationId); throw new Exception("This code should not have been executed."); } catch (CloudException ex) { Assert.Equal(HttpStatusCode.NotFound, ex.Response.StatusCode); } } finally { TestUtilities.EndTest(); } }
public async Task CreateListUpdateDelete() { Environment.SetEnvironmentVariable("AZURE_TEST_MODE", "Playback"); using (MockContext context = MockContext.Start(this.GetType())) { var testBase = new ApiManagementTestBase(context); testBase.TryCreateApiManagementService(); // there should be 'Echo API' which is created by default for every new instance of API Management var apis = testBase.client.Api.ListByService( testBase.rgName, testBase.serviceName); Assert.Single(apis); var api = apis.Single(); // list operations var listResponse = testBase.client.ApiOperation.ListByApi( testBase.rgName, testBase.serviceName, api.Name); Assert.NotNull(listResponse);; Assert.Equal(6, listResponse.Count()); Assert.Null(listResponse.NextPageLink); foreach (var operationContract in listResponse) { Assert.Equal(api.Name, operationContract.ApiIdentifier); } // list paged listResponse = testBase.client.ApiOperation.ListByApi( testBase.rgName, testBase.serviceName, api.Name, new Microsoft.Rest.Azure.OData.ODataQuery <OperationContract> { Top = 3 }); Assert.NotNull(listResponse); Assert.Equal(3, listResponse.Count()); Assert.NotNull(listResponse.NextPageLink); Assert.NotEmpty(listResponse.NextPageLink); // list next page listResponse = testBase.client.ApiOperation.ListByApiNext(listResponse.NextPageLink); Assert.NotNull(listResponse); Assert.Equal(3, listResponse.Count()); // get first operation var firstOperation = listResponse.First(); var getResponse = testBase.client.ApiOperation.Get( testBase.rgName, testBase.serviceName, api.Name, firstOperation.Name); Assert.NotNull(getResponse); //Assert.Equal(firstOperation., getResponse.ApiId); Assert.Equal(firstOperation.Name, getResponse.Name); Assert.Equal(firstOperation.Method, getResponse.Method); Assert.Equal(firstOperation.Name, getResponse.Name); Assert.Equal(firstOperation.UrlTemplate, getResponse.UrlTemplate); // add new operation string newOperationId = TestUtilities.GenerateName("operationid"); try { string newOperationName = TestUtilities.GenerateName("operationName"); string newOperationMethod = "PATCH"; string newperationUrlTemplate = "/newresource"; string newOperationDescription = TestUtilities.GenerateName("operationDescription"); string newOperationRequestDescription = TestUtilities.GenerateName("operationRequestDescription"); string newOperationRequestHeaderParamName = TestUtilities.GenerateName("newOperationRequestHeaderParmName"); string newOperationRequestHeaderParamDescr = TestUtilities.GenerateName("newOperationRequestHeaderParamDescr"); bool newOperationRequestHeaderParamIsRequired = true; string newOperationRequestHeaderParamDefaultValue = TestUtilities.GenerateName("newOperationRequestHeaderParamDefaultValue"); string newOperationRequestHeaderParamType = "string"; string newOperationRequestParmName = TestUtilities.GenerateName("newOperationRequestParmName"); string newOperationRequestParamDescr = TestUtilities.GenerateName("newOperationRequestParamDescr"); bool newOperationRequestParamIsRequired = true; string newOperationRequestParamDefaultValue = TestUtilities.GenerateName("newOperationRequestParamDefaultValue"); string newOperationRequestParamType = "string"; string newOperationRequestRepresentationContentType = TestUtilities.GenerateName("newOperationRequestRepresentationContentType"); string newOperationRequestRepresentationSample = TestUtilities.GenerateName("newOperationRequestRepresentationSample"); string newOperationResponseDescription = TestUtilities.GenerateName("newOperationResponseDescription"); int newOperationResponseStatusCode = 1980785443; string newOperationResponseRepresentationContentType = TestUtilities.GenerateName("newOperationResponseRepresentationContentType"); string newOperationResponseRepresentationSample = TestUtilities.GenerateName("newOperationResponseRepresentationSample"); var newOperation = new OperationContract { DisplayName = newOperationName, Method = newOperationMethod, UrlTemplate = newperationUrlTemplate, Description = newOperationDescription, Request = new RequestContract { Description = newOperationRequestDescription, Headers = new[] { new ParameterContract { Name = newOperationRequestHeaderParamName, Description = newOperationRequestHeaderParamDescr, Required = newOperationRequestHeaderParamIsRequired, DefaultValue = newOperationRequestHeaderParamDefaultValue, Type = newOperationRequestHeaderParamType, Values = new[] { newOperationRequestHeaderParamDefaultValue, "1", "2", "3" } } }, QueryParameters = new[] { new ParameterContract { Name = newOperationRequestParmName, Description = newOperationRequestParamDescr, Required = newOperationRequestParamIsRequired, DefaultValue = newOperationRequestParamDefaultValue, Type = newOperationRequestParamType, Values = new[] { newOperationRequestParamDefaultValue, "1", "2", "3" } } }, Representations = new[] { new RepresentationContract { ContentType = newOperationRequestRepresentationContentType, Sample = newOperationRequestRepresentationSample } } }, Responses = new[] { new ResponseContract { Description = newOperationResponseDescription, StatusCode = newOperationResponseStatusCode, Representations = new[] { new RepresentationContract { ContentType = newOperationResponseRepresentationContentType, Sample = newOperationResponseRepresentationSample } } } } }; OperationContract createResponse = testBase.client.ApiOperation.CreateOrUpdate( testBase.rgName, testBase.serviceName, api.Name, newOperationId, newOperation); Assert.NotNull(createResponse); // get the operation to check it was created OperationContract apiOperationResponse = await testBase.client.ApiOperation.GetAsync( testBase.rgName, testBase.serviceName, api.Name, newOperationId); Assert.NotNull(getResponse); Assert.Equal(api.Name, apiOperationResponse.ApiIdentifier); Assert.Equal(newOperationId, apiOperationResponse.Name); Assert.Equal(newOperationName, apiOperationResponse.DisplayName); Assert.Equal(newOperationMethod, apiOperationResponse.Method); Assert.Equal(newperationUrlTemplate, apiOperationResponse.UrlTemplate); Assert.Equal(newOperationDescription, apiOperationResponse.Description); Assert.NotNull(apiOperationResponse.Request); Assert.Equal(newOperationRequestDescription, apiOperationResponse.Request.Description); Assert.NotNull(apiOperationResponse.Request.Headers); Assert.Equal(1, apiOperationResponse.Request.Headers.Count); Assert.Equal(newOperationRequestHeaderParamName, apiOperationResponse.Request.Headers[0].Name); Assert.Equal(newOperationRequestHeaderParamDescr, apiOperationResponse.Request.Headers[0].Description); Assert.Equal(newOperationRequestHeaderParamIsRequired, apiOperationResponse.Request.Headers[0].Required); Assert.Equal(newOperationRequestHeaderParamDefaultValue, apiOperationResponse.Request.Headers[0].DefaultValue); Assert.Equal(newOperationRequestHeaderParamType, apiOperationResponse.Request.Headers[0].Type); Assert.NotNull(apiOperationResponse.Request.Headers[0].Values); Assert.Equal(4, apiOperationResponse.Request.Headers[0].Values.Count); Assert.True(newOperation.Request.Headers[0].Values.All(value => apiOperationResponse.Request.Headers[0].Values.Contains(value))); Assert.NotNull(apiOperationResponse.Request.QueryParameters); Assert.Equal(1, apiOperationResponse.Request.QueryParameters.Count); Assert.Equal(newOperationRequestParmName, apiOperationResponse.Request.QueryParameters[0].Name); Assert.Equal(newOperationRequestParamDescr, apiOperationResponse.Request.QueryParameters[0].Description); Assert.Equal(newOperationRequestParamIsRequired, apiOperationResponse.Request.QueryParameters[0].Required); Assert.Equal(newOperationRequestParamDefaultValue, apiOperationResponse.Request.QueryParameters[0].DefaultValue); Assert.Equal(newOperationRequestParamType, apiOperationResponse.Request.QueryParameters[0].Type); Assert.True(newOperation.Request.QueryParameters[0].Values.All(value => apiOperationResponse.Request.QueryParameters[0].Values.Contains(value))); Assert.NotNull(apiOperationResponse.Request.Representations); Assert.Equal(1, apiOperationResponse.Request.Representations.Count); Assert.Equal(newOperationRequestRepresentationContentType, apiOperationResponse.Request.Representations[0].ContentType); Assert.Equal(newOperationRequestRepresentationSample, apiOperationResponse.Request.Representations[0].Sample); Assert.NotNull(apiOperationResponse.Responses); Assert.Equal(1, apiOperationResponse.Responses.Count); Assert.Equal(newOperationResponseDescription, apiOperationResponse.Responses[0].Description); Assert.Equal(newOperationResponseStatusCode, apiOperationResponse.Responses[0].StatusCode); Assert.NotNull(apiOperationResponse.Responses[0].Representations); Assert.Equal(1, apiOperationResponse.Responses[0].Representations.Count); Assert.Equal(newOperationResponseRepresentationContentType, apiOperationResponse.Responses[0].Representations[0].ContentType); Assert.Equal(newOperationResponseRepresentationSample, apiOperationResponse.Responses[0].Representations[0].Sample); // get the Api Operation Etag ApiOperationGetEntityTagHeaders operationTag = await testBase.client.ApiOperation.GetEntityTagAsync( testBase.rgName, testBase.serviceName, api.Name, newOperationId); Assert.NotNull(operationTag); Assert.NotNull(operationTag.ETag); // patch the operation string patchedName = TestUtilities.GenerateName("patchedName"); string patchedDescription = TestUtilities.GenerateName("patchedDescription"); string patchedMethod = "HEAD"; testBase.client.ApiOperation.Update( testBase.rgName, testBase.serviceName, api.Name, newOperationId, new OperationUpdateContract { DisplayName = patchedName, Description = patchedDescription, Method = patchedMethod }, operationTag.ETag); // get the operation to check it was patched getResponse = testBase.client.ApiOperation.Get( testBase.rgName, testBase.serviceName, api.Name, newOperationId); Assert.NotNull(getResponse); Assert.Equal(api.Name, getResponse.ApiIdentifier); Assert.Equal(newOperationId, getResponse.Name); Assert.Equal(patchedName, getResponse.DisplayName); Assert.Equal(patchedMethod, getResponse.Method); Assert.Equal(newperationUrlTemplate, getResponse.UrlTemplate); Assert.Equal(patchedDescription, getResponse.Description); Assert.NotNull(getResponse.Request); Assert.Equal(newOperationRequestDescription, getResponse.Request.Description); Assert.NotNull(getResponse.Request.Headers); Assert.Equal(1, getResponse.Request.Headers.Count); Assert.Equal(newOperationRequestHeaderParamName, getResponse.Request.Headers[0].Name); Assert.Equal(newOperationRequestHeaderParamDescr, getResponse.Request.Headers[0].Description); Assert.Equal(newOperationRequestHeaderParamIsRequired, getResponse.Request.Headers[0].Required); Assert.Equal(newOperationRequestHeaderParamDefaultValue, getResponse.Request.Headers[0].DefaultValue); Assert.Equal(newOperationRequestHeaderParamType, getResponse.Request.Headers[0].Type); Assert.NotNull(getResponse.Request.Headers[0].Values); Assert.Equal(4, getResponse.Request.Headers[0].Values.Count); Assert.True(newOperation.Request.Headers[0].Values.All(value => getResponse.Request.Headers[0].Values.Contains(value))); Assert.NotNull(getResponse.Request.QueryParameters); Assert.Equal(1, getResponse.Request.QueryParameters.Count); Assert.Equal(newOperationRequestParmName, getResponse.Request.QueryParameters[0].Name); Assert.Equal(newOperationRequestParamDescr, getResponse.Request.QueryParameters[0].Description); Assert.Equal(newOperationRequestParamIsRequired, getResponse.Request.QueryParameters[0].Required); Assert.Equal(newOperationRequestParamDefaultValue, getResponse.Request.QueryParameters[0].DefaultValue); Assert.Equal(newOperationRequestParamType, getResponse.Request.QueryParameters[0].Type); Assert.True(newOperation.Request.QueryParameters[0].Values.All(value => getResponse.Request.QueryParameters[0].Values.Contains(value))); Assert.NotNull(getResponse.Request.Representations); Assert.Equal(1, getResponse.Request.Representations.Count); Assert.Equal(newOperationRequestRepresentationContentType, getResponse.Request.Representations[0].ContentType); Assert.Equal(newOperationRequestRepresentationSample, getResponse.Request.Representations[0].Sample); Assert.NotNull(getResponse.Responses); Assert.Equal(1, getResponse.Responses.Count); Assert.Equal(newOperationResponseDescription, getResponse.Responses[0].Description); Assert.Equal(newOperationResponseStatusCode, getResponse.Responses[0].StatusCode); Assert.NotNull(getResponse.Responses[0].Representations); Assert.Equal(1, getResponse.Responses[0].Representations.Count); Assert.Equal(newOperationResponseRepresentationContentType, getResponse.Responses[0].Representations[0].ContentType); Assert.Equal(newOperationResponseRepresentationSample, getResponse.Responses[0].Representations[0].Sample); // get the tag again operationTag = await testBase.client.ApiOperation.GetEntityTagAsync( testBase.rgName, testBase.serviceName, api.Name, newOperationId); Assert.NotNull(operationTag); Assert.NotNull(operationTag.ETag); // delete the operation testBase.client.ApiOperation.Delete( testBase.rgName, testBase.serviceName, api.Name, newOperationId, operationTag.ETag); // get the deleted operation to make sure it was deleted try { testBase.client.ApiOperation.Get(testBase.rgName, testBase.serviceName, api.Name, newOperationId); throw new Exception("This code should not have been executed."); } catch (ErrorResponseException ex) { Assert.Equal(HttpStatusCode.NotFound, ex.Response.StatusCode); } } finally { testBase.client.ApiOperation.Delete(testBase.rgName, testBase.serviceName, api.Name, newOperationId, "*"); } } }
/// <summary> /// Creates a new operation in the API or updates an existing one. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. /// </param> /// <param name='serviceName'> /// The name of the API Management service. /// </param> /// <param name='apiId'> /// API revision identifier. Must be unique in the current API Management /// service instance. Non-current revision has ;rev=n as a suffix where n is /// the revision number. /// </param> /// <param name='operationId'> /// Operation identifier within an API. Must be unique in the current API /// Management service instance. /// </param> /// <param name='parameters'> /// Create parameters. /// </param> /// <param name='ifMatch'> /// ETag of the Entity. Not required when creating an entity, but required when /// updating an entity. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <OperationContract> CreateOrUpdateAsync(this IApiOperationOperations operations, string resourceGroupName, string serviceName, string apiId, string operationId, OperationContract parameters, string ifMatch = default(string), CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, serviceName, apiId, operationId, parameters, ifMatch, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Creates a new operation in the API or updates an existing one. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. /// </param> /// <param name='serviceName'> /// The name of the API Management service. /// </param> /// <param name='apiId'> /// API revision identifier. Must be unique in the current API Management /// service instance. Non-current revision has ;rev=n as a suffix where n is /// the revision number. /// </param> /// <param name='operationId'> /// Operation identifier within an API. Must be unique in the current API /// Management service instance. /// </param> /// <param name='parameters'> /// Create parameters. /// </param> /// <param name='ifMatch'> /// ETag of the Entity. Not required when creating an entity, but required when /// updating an entity. /// </param> public static OperationContract CreateOrUpdate(this IApiOperationOperations operations, string resourceGroupName, string serviceName, string apiId, string operationId, OperationContract parameters, string ifMatch = default(string)) { return(operations.CreateOrUpdateAsync(resourceGroupName, serviceName, apiId, operationId, parameters, ifMatch).GetAwaiter().GetResult()); }
public bool TryGetOperationContract(string title, out OperationContract contract) { return(OperationContracts.TryGetValue(title, out contract)); }