private static HttpConfiguration CreateConfiguration(bool tracingEnabled = false) { IEdmModel model = ODataTestUtil.GetEdmModel(); HttpConfiguration configuration = CreateConfiguration(model); if (tracingEnabled) { configuration.Services.Replace(typeof(ITraceWriter), new Mock <ITraceWriter>().Object); } return(configuration); }
public void Conditionally_Support_OData_If_Query_String_Present() { ODataMediaTypeFormatter odataFormatter = _serverFormatter; odataFormatter.SupportedMediaTypes.Clear(); odataFormatter.MediaTypeMappings.Add(new ODataMediaTypeMapping(ODataTestUtil.ApplicationAtomMediaTypeWithQuality)); odataFormatter.MediaTypeMappings.Add(new ODataMediaTypeMapping(ODataTestUtil.ApplicationJsonMediaTypeWithQuality)); _config.Formatters.Insert(0, odataFormatter); using (HttpServer host = new HttpServer(_config)) { _client = new HttpClient(host); // this request should return response in OData atom format HttpRequestMessage requestMessage = ODataTestUtil.GenerateRequestMessage(new Uri(baseAddress + "People(10)?format=odata"), isAtom: true); using (HttpResponseMessage response = _client.SendAsync(requestMessage).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(ODataTestUtil.ApplicationAtomMediaTypeWithQuality.MediaType, response.Content.Headers.ContentType.MediaType); Assert.Equal(ODataTestUtil.Version3NumberString, ODataTestUtil.GetDataServiceVersion(response.Content.Headers)); ODataTestUtil.VerifyResponse(response.Content, BaselineResource.EntryTypePersonAtom); } // this request should return response in OData json format HttpRequestMessage messageWithJsonHeader = ODataTestUtil.GenerateRequestMessage(new Uri(baseAddress + "People(10)?format=odata"), isAtom: false); using (HttpResponseMessage response = _client.SendAsync(messageWithJsonHeader).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(ODataTestUtil.ApplicationJsonMediaType.MediaType, response.Content.Headers.ContentType.MediaType); Assert.Equal(ODataTestUtil.Version3NumberString, ODataTestUtil.GetDataServiceVersion(response.Content.Headers)); // this request should be handled by OData Json ODataTestUtil.VerifyJsonResponse(response.Content, BaselineResource.EntryTypePersonODataJson); } // when the query string is not present, request should be handled by the regular Json Formatter messageWithJsonHeader = ODataTestUtil.GenerateRequestMessage(new Uri(baseAddress + "People(10)"), isAtom: false); using (HttpResponseMessage response = _client.SendAsync(messageWithJsonHeader).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(response.Content.Headers.ContentType.MediaType, ODataTestUtil.ApplicationJsonMediaTypeWithQuality.MediaType); Assert.Null(ODataTestUtil.GetDataServiceVersion(response.Content.Headers)); ODataTestUtil.VerifyJsonResponse(response.Content, BaselineResource.EntryTypePersonRegularJson); } } }
public void TryMatchMediaTypeWithNonRawvalueRequestDoesntMatchRequest() { IEdmModel model = ODataTestUtil.GetEdmModel(); PropertyAccessPathSegment propertySegment = new PropertyAccessPathSegment((model.GetEdmType(typeof(FormatterPerson)) as IEdmEntityType).FindProperty("Age")); ODataPath path = new ODataPath(new EntitySetPathSegment("People"), new KeyValuePathSegment("1"), propertySegment); ODataPrimitiveValueMediaTypeMapping mapping = new ODataPrimitiveValueMediaTypeMapping(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/People(1)/Age/"); request.ODataProperties().Model = model; request.ODataProperties().Path = path; double mapResult = mapping.TryMatchMediaType(request); Assert.Equal(0, mapResult); }
public void Get_Entry_In_OData_Atom_Format() { using (HttpServer host = new HttpServer(_config)) { _client = new HttpClient(host); HttpRequestMessage requestMessage = new HttpRequestMessage(System.Net.Http.HttpMethod.Get, new Uri(baseAddress + "People(10)")); requestMessage.Headers.Accept.Add(_atomMediaType); requestMessage.Headers.Add("DataServiceVersion", "2.0"); requestMessage.Headers.Add("MaxDataServiceVersion", "3.0"); using (HttpResponseMessage response = _client.SendAsync(requestMessage).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(response.Content.Headers.ContentType.MediaType, _atomMediaType.MediaType); Assert.Equal(ODataTestUtil.GetDataServiceVersion(response.Content.Headers), ODataTestUtil.Version3NumberString); ODataTestUtil.VerifyResponse(response.Content, BaselineResource.EntryTypePersonAtom); } } }
public void Support_Only_OData_Atom_Format() { ODataMediaTypeFormatter odataFormatter = _serverFormatter; odataFormatter.SupportedMediaTypes.Remove(ODataTestUtil.ApplicationJsonMediaType); _config.Formatters.Insert(0, odataFormatter); using (HttpServer host = new HttpServer(_config)) { _client = new HttpClient(host); HttpRequestMessage requestMessage = new HttpRequestMessage(System.Net.Http.HttpMethod.Get, new Uri(baseAddress + "People(10)")); requestMessage.Headers.Accept.Add(_atomMediaType); requestMessage.Headers.Add("DataServiceVersion", "2.0"); requestMessage.Headers.Add("MaxDataServiceVersion", "3.0"); using (HttpResponseMessage response = _client.SendAsync(requestMessage).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(response.Content.Headers.ContentType.MediaType, _atomMediaType.MediaType); Assert.Equal(ODataTestUtil.GetDataServiceVersion(response.Content.Headers), ODataTestUtil.Version3NumberString); ODataTestUtil.VerifyResponse(response.Content, BaselineResource.EntryTypePersonAtom); } HttpRequestMessage messageWithJsonHeader = new HttpRequestMessage(System.Net.Http.HttpMethod.Get, new Uri(baseAddress + "People(10)")); messageWithJsonHeader.Headers.Accept.Add(ODataTestUtil.ApplicationJsonMediaTypeWithQuality); messageWithJsonHeader.Headers.Add("DataServiceVersion", "2.0"); messageWithJsonHeader.Headers.Add("MaxDataServiceVersion", "3.0"); using (HttpResponseMessage response = _client.SendAsync(messageWithJsonHeader).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(response.Content.Headers.ContentType.MediaType, ODataTestUtil.ApplicationJsonMediaTypeWithQuality.MediaType); Assert.Null(ODataTestUtil.GetDataServiceVersion(response.Content.Headers)); ODataTestUtil.VerifyJsonResponse(response.Content, BaselineResource.EntryTypePersonRegularJson); } } }
public void SupportOnlyODataAtomFormat() { // Arrange #1 and #2 using (HttpConfiguration configuration = CreateConfiguration()) { foreach (ODataMediaTypeFormatter odataFormatter in configuration.Formatters.OfType <ODataMediaTypeFormatter>()) { odataFormatter.SupportedMediaTypes.Remove(ODataMediaTypes.ApplicationJsonODataVerbose); odataFormatter.SupportedMediaTypes.Remove(ODataMediaTypes.ApplicationJson); } using (HttpServer host = new HttpServer(configuration)) using (HttpClient client = new HttpClient(host)) { // Arrange #1 using (HttpRequestMessage request = CreateRequestWithDataServiceVersionHeaders("People(10)", ODataTestUtil.ApplicationAtomMediaTypeWithQuality)) // Act #1 using (HttpResponseMessage response = client.SendAsync(request).Result) { // Assert #1 AssertODataVersion3AtomResponse(Resources.PersonEntryInAtom, response); } // Arrange #2 using (HttpRequestMessage request = CreateRequestWithDataServiceVersionHeaders("People(10)", ODataTestUtil.ApplicationJsonMediaTypeWithQuality)) // Act #2 using (HttpResponseMessage response = client.SendAsync(request).Result) { // Assert #2 Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(ODataTestUtil.ApplicationJsonMediaTypeWithQuality.MediaType, response.Content.Headers.ContentType.MediaType); ODataTestUtil.VerifyJsonResponse(response.Content, Resources.PersonEntryInPlainOldJson); } } } }
public void PostEntry_InODataAtomFormat() { var _config = new HttpConfiguration(); _config.EnableOData(ODataTestUtil.GetEdmModel()); using (HttpServer host = new HttpServer(_config)) { var _client = new HttpClient(host); HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, new Uri(baseAddress + "People")); requestMessage.Content = new StringContent(BaselineResource.EntryTypePersonAtom, Encoding.UTF8, "application/atom+xml"); using (HttpResponseMessage response = _client.SendAsync(requestMessage).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.Created, response.StatusCode); Assert.Equal("application/atom+xml", response.Content.Headers.ContentType.MediaType); ODataTestUtil.VerifyResponse(response.Content, BaselineResource.EntryTypePersonAtom); } } }
public void PostEntry_InODataJsonVerboseFormat() { var config = new HttpConfiguration(); config.Routes.MapODataRoute(ODataTestUtil.GetEdmModel()); using (HttpServer host = new HttpServer(config)) { var client = new HttpClient(host); HttpRequestMessage requestMessage = new HttpRequestMessage(System.Net.Http.HttpMethod.Post, new Uri(baseAddress + "People")); requestMessage.Content = new StringContent(Resources.PersonRequestEntryInPlainOldJson); requestMessage.Content.Headers.ContentType = ODataTestUtil.ApplicationJsonMediaType; using (HttpResponseMessage response = client.SendAsync(requestMessage).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.Created, response.StatusCode); Assert.Equal("application/json", response.Content.Headers.ContentType.MediaType); ODataTestUtil.VerifyJsonResponse(response.Content, Resources.PersonEntryInJsonVerbose); } } }
public void Get_Entry_In_OData_Json_Format() { using (HttpServer host = new HttpServer(_config)) { _client = new HttpClient(host); HttpRequestMessage requestMessage = new HttpRequestMessage(System.Net.Http.HttpMethod.Get, new Uri(baseAddress + "People(10)")); requestMessage.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json;odata=verbose")); requestMessage.Headers.Add("DataServiceVersion", "2.0"); requestMessage.Headers.Add("MaxDataServiceVersion", "3.0"); using (HttpResponseMessage response = _client.SendAsync(requestMessage).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(response.Content.Headers.ContentType.MediaType, _jsonMediaType.MediaType); Assert.Equal(ODataTestUtil.GetDataServiceVersion(response.Content.Headers), ODataTestUtil.Version3NumberString); // this request should be handled by OData Json ODataTestUtil.VerifyJsonResponse(response.Content, BaselineResource.EntryTypePersonODataJson); } } }
public void PostEntry_InODataJsonFormat() { var _config = new HttpConfiguration(); _config.Routes.MapHttpRoute(ODataRouteNames.GetById, "{controller}({id})"); _config.Routes.MapHttpRoute(ODataRouteNames.Default, "{controller}"); _config.Formatters.Insert(0, new ODataMediaTypeFormatter(ODataTestUtil.GetEdmModel())); using (HttpServer host = new HttpServer(_config)) { var _client = new HttpClient(host); HttpRequestMessage requestMessage = new HttpRequestMessage(System.Net.Http.HttpMethod.Post, new Uri(baseAddress + "People")); requestMessage.Content = new StringContent(BaselineResource.ODataJsonPersonRequest); requestMessage.Content.Headers.ContentType = ODataTestUtil.ApplicationJsonMediaType; using (HttpResponseMessage response = _client.SendAsync(requestMessage).Result) { Assert.NotNull(response); Assert.Equal(HttpStatusCode.Created, response.StatusCode); Assert.Equal("application/json", response.Content.Headers.ContentType.MediaType); ODataTestUtil.VerifyJsonResponse(response.Content, BaselineResource.EntryTypePersonODataJson); } } }
public ODataFormatterTests() { _config = new HttpConfiguration(); _config.EnableOData(ODataTestUtil.GetEdmModel()); _serverFormatters = _config.Formatters.OfType <ODataMediaTypeFormatter>(); }