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]);
 }
Exemplo n.º 4
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);
 }