public void EqualsReturnsFalseIfMediaType1IsSuperset() { string[] parameters = new string[] { ";name=value", ";q=1.0", ";version=1", }; MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer; foreach (string parameter in parameters) { MediaTypeHeaderValue mediaType1 = MediaTypeHeaderValue.Parse("text/xml" + parameter); MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEXT/xml"); Assert.NotEqual(mediaType1, mediaType2, comparer); mediaType1 = MediaTypeHeaderValue.Parse("text/*" + parameter); mediaType2 = new MediaTypeHeaderValue("TEXT/*"); Assert.NotEqual(mediaType1, mediaType2, comparer); mediaType1 = MediaTypeHeaderValue.Parse("*/*" + parameter); mediaType2 = new MediaTypeHeaderValue("*/*"); Assert.NotEqual(mediaType1, mediaType2, comparer); } }
public void ApiControllerCannotBeReused() { // Arrange var config = new HttpConfiguration(); var singletonController = new Mock <ApiController> { CallBase = true }.Object; var mockDescriptor = new Mock <HttpControllerDescriptor>(config, "MyMock", singletonController.GetType()) { CallBase = true }; mockDescriptor.Setup(d => d.CreateController(It.IsAny <HttpRequestMessage>())).Returns(singletonController); var mockSelector = new Mock <DefaultHttpControllerSelector>(config) { CallBase = true }; mockSelector.Setup(s => s.SelectController(It.IsAny <HttpRequestMessage>())).Returns(mockDescriptor.Object); config.Routes.MapHttpRoute("default", "", new { controller = "MyMock" }); config.Services.Replace(typeof(IHttpControllerSelector), mockSelector.Object); var server = new HttpServer(config); var invoker = new HttpMessageInvoker(server); // Act HttpResponseMessage response1 = invoker.SendAsync(new HttpRequestMessage(HttpMethod.Get, "http://localhost/"), CancellationToken.None).Result; HttpResponseMessage response2 = invoker.SendAsync(new HttpRequestMessage(HttpMethod.Get, "http://localhost/"), CancellationToken.None).Result; // Assert Assert.NotEqual(HttpStatusCode.InternalServerError, response1.StatusCode); Assert.Equal(HttpStatusCode.InternalServerError, response2.StatusCode); Assert.Contains("Cannot reuse an 'ApiController' instance. 'ApiController' has to be constructed per incoming message.", response2.Content.ReadAsStringAsync().Result); }
public void EqualsReturnsFalseIfMediaTypesDifferByMoreThanCase() { MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer; MediaTypeHeaderValue mediaType1 = new MediaTypeHeaderValue("text/xml"); MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEST/xml"); Assert.NotEqual(mediaType1, mediaType2, comparer); mediaType1 = new MediaTypeHeaderValue("text/*"); mediaType1.CharSet = "someCharset"; mediaType2 = new MediaTypeHeaderValue("TEXT/*"); mediaType2.CharSet = "SOMEOTHERCHARSET"; Assert.NotEqual(mediaType1, mediaType2, comparer); }
public void GetHashCodeReturnsDifferentHashCodeForDifferentMediaType() { MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer; MediaTypeHeaderValue mediaType1 = new MediaTypeHeaderValue("text/*"); MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEXT/xml"); Assert.NotEqual(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2)); mediaType1 = new MediaTypeHeaderValue("application/*"); mediaType2 = new MediaTypeHeaderValue("TEXT/*"); Assert.NotEqual(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2)); mediaType1 = new MediaTypeHeaderValue("application/*"); mediaType2 = new MediaTypeHeaderValue("*/*"); Assert.NotEqual(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2)); }