public void CreateResponse_OnNullConfiguration_ThrowsException()
 {
     Assert.Throws <InvalidOperationException>(() =>
     {
         HttpRequestMessageExtensions.CreateResponse(_request, HttpStatusCode.OK, _value, configuration: null);
     }, "The request does not have an associated configuration object or the provided configuration was null.");
 }
        public void CreateResponse_WhenNoContentNegotiatorInstanceRegistered_Throws()
        {
            // Arrange
            _config.ServiceResolver.SetServices(typeof(IContentNegotiator), new object[] { null });

            // Act & Assert
            Assert.Throws <InvalidOperationException>(() => HttpRequestMessageExtensions.CreateResponse(_request, HttpStatusCode.OK, _value, _config),
                                                      "The provided configuration does not have an instance of the 'System.Net.Http.Formatting.IContentNegotiator' service registered.");
        }
        public void CreateResponse_OnNullRequest_ThrowsException()
        {
            Assert.ThrowsArgumentNull(() =>
            {
                HttpRequestMessageExtensions.CreateResponse(null, HttpStatusCode.OK, _value);
            }, "request");

            Assert.ThrowsArgumentNull(() =>
            {
                HttpRequestMessageExtensions.CreateResponse(null, HttpStatusCode.OK, _value, configuration: null);
            }, "request");
        }
        public void CreateResponse_WhenContentNegotiatorReturnsNullResult_Throws()
        {
            // Arrange
            _negotiatorMock.Setup(r => r.Negotiate(typeof(string), _request, _config.Formatters)).Returns(value: null);
            _config.ServiceResolver.SetServices(typeof(IContentNegotiator), _negotiatorMock.Object);

            // Act
            var response = HttpRequestMessageExtensions.CreateResponse <string>(_request, HttpStatusCode.OK, "", _config);

            // Assert
            Assert.Equal(HttpStatusCode.NotAcceptable, response.StatusCode);
            Assert.Same(_request, response.RequestMessage);
        }
        public void CreateResponse_RetrievesContentNegotiatorFromServiceResolver()
        {
            // Arrange
            Mock <IDependencyResolver> resolverMock = new Mock <IDependencyResolver>();

            _config.ServiceResolver.SetResolver(resolverMock.Object);

            // Act
            HttpRequestMessageExtensions.CreateResponse(_request, HttpStatusCode.OK, _value, _config);

            // Assert
            resolverMock.Verify(r => r.GetService(typeof(IContentNegotiator)), Times.Once());
        }
        public void CreateResponse_PerformsContentNegotiationAndCreatesContentUsingResults()
        {
            // Arrange
            XmlMediaTypeFormatter formatter = new XmlMediaTypeFormatter();

            _negotiatorMock.Setup(r => r.Negotiate(typeof(string), _request, _config.Formatters))
            .Returns(new ContentNegotiationResult(formatter, null));
            _config.ServiceResolver.SetService(typeof(IContentNegotiator), _negotiatorMock.Object);

            // Act
            var response = HttpRequestMessageExtensions.CreateResponse <string>(_request, HttpStatusCode.NoContent, "42", _config);

            // Assert
            Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
            Assert.Same(_request, response.RequestMessage);
            var objectContent = Assert.IsType <ObjectContent <string> >(response.Content);

            Assert.Equal("42", objectContent.Value);
            Assert.Same(formatter, objectContent.Formatter);
        }
 public void GetSynchronizationContextThrowsOnNull()
 {
     Assert.ThrowsArgumentNull(() => HttpRequestMessageExtensions.GetSynchronizationContext(null), "request");
 }
 public void GetConfigurationThrowsOnNull()
 {
     Assert.ThrowsArgumentNull(() => HttpRequestMessageExtensions.GetConfiguration(null), "request");
 }
 public void DisposeRequestResources_WhenRequestParameterIsNull_Throws()
 {
     Assert.ThrowsArgumentNull(
         () => HttpRequestMessageExtensions.DisposeRequestResources(request: null), "request");
 }
 public void RegisterForDispose_WhenRequestParameterIsNull_Throws()
 {
     Assert.ThrowsArgumentNull(
         () => HttpRequestMessageExtensions.RegisterForDispose(request: null, resource: null), "request");
 }