public void GetHelpPageApiModel_ReturnsTheModel_WhenIdIsValid(string apiId) { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute("Default", "{controller}/{id}", new { id = RouteParameter.Optional }); HelpPageApiModel model = config.GetHelpPageApiModel(apiId); Assert.NotNull(model); Assert.Same(model, config.GetHelpPageApiModel(apiId)); Assert.Equal(apiId, model.ApiDescription.GetFriendlyId(), StringComparer.OrdinalIgnoreCase); }
public void GetHelpPageApiModel_ReturnsNull_WhenIdIsInvalid(string apiId) { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute("Default", "{controller}/{id}", new { id = RouteParameter.Optional }); HelpPageApiModel model = config.GetHelpPageApiModel(apiId); Assert.Null(model); }
public void GetHelpPageApiModel_HandlesException_ThrownDuringSampleGeneration() { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute("Default", "{controller}/{id}", new { id = RouteParameter.Optional }); Mock<HelpPageSampleGenerator> faultyGenerator = new Mock<HelpPageSampleGenerator>(); faultyGenerator.Setup(g => g.GetSample(It.IsAny<ApiDescription>(), It.IsAny<SampleDirection>())).Returns(() => { throw new InvalidOperationException("This is a faulty sample generator."); }); config.SetHelpPageSampleGenerator(faultyGenerator.Object); HelpPageApiModel model = config.GetHelpPageApiModel("Get-Values"); Assert.NotNull(model); Assert.NotEmpty(model.ErrorMessages); Assert.Equal("An exception has occurred while generating the sample. Exception Message: This is a faulty sample generator.", model.ErrorMessages[0]); }
public void API_ReturnsCachedModels(string apiDescriptionId) { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute("Default", "{controller}/{id}", new { id = RouteParameter.Optional }); HelpController controller = new HelpController(config); ViewResult result = Assert.IsType<ViewResult>(controller.Api(apiDescriptionId)); ViewResult result2 = Assert.IsType<ViewResult>(controller.Api(apiDescriptionId)); Assert.NotNull(result.Model); Assert.NotNull(result2.Model); // Make sure the model is cached Assert.Same(config.GetHelpPageApiModel(apiDescriptionId), result.Model); Assert.Same(result.Model, result2.Model); }
public void GetHelpPageApiModel_TypeConverterModel_GeneratesUriParameter() { // If class Point with properties X and Y is defined with a TypeConverter, // the UriParameters should be a single parameter name "point" instead of two member properties X and Y, // because X and Y do not appear in the Relative Path and it is the user that should specify how the query // string is parsed. // Arrange HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute("Default", "{controller}/{id}", new { id = RouteParameter.Optional }); // Act HelpPageApiModel model = config.GetHelpPageApiModel("GET-Values_point"); // Assert Assert.NotNull(model); string expectedParameter = Assert.Single(model.ApiDescription.ParameterDescriptions).Name; ParameterDescription parameterDescription = Assert.Single(model.UriParameters); Assert.Equal(expectedParameter, parameterDescription.Name); }
public void GetHelpPageApiModel_ReturnsExpectedRequestModelDescription(string apiId, bool hasRequestModelDescription) { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute("Default", "{controller}/{id}", new { id = RouteParameter.Optional }); HelpPageApiModel model = config.GetHelpPageApiModel(apiId); Assert.NotNull(model); if (hasRequestModelDescription) { Assert.NotNull(model.RequestModelDescription); } else { Assert.Null(model.RequestModelDescription); } }
public void GetHelpPageApiModel_HandlesException_ThrownDuringSampleObjectSerialization() { HttpConfiguration config = new HttpConfiguration(); config.Formatters.Clear(); config.Formatters.Add(new JQueryMvcFormUrlEncodedFormatter()); config.SetSampleObjects(new Dictionary<Type, object> { { typeof(string), "sample" } }); config.Routes.MapHttpRoute("Default", "{controller}/{id}", new { id = RouteParameter.Optional }); HelpPageApiModel model = config.GetHelpPageApiModel("Post-Values"); Assert.NotNull(model); Assert.NotEmpty(model.ErrorMessages); Assert.Equal("Failed to generate the sample for media type 'application/x-www-form-urlencoded'. Cannot use formatter 'JQueryMvcFormUrlEncodedFormatter' to write type 'String'.", model.ErrorMessages[0]); }
public void GetHelpPageApiModel_ReturnsNull_IfNoRoute(string apiId) { HttpConfiguration config = new HttpConfiguration(); HelpPageApiModel model = config.GetHelpPageApiModel(apiId); Assert.Null(model); }