public void WriteTopLevelUIntPropertyShouldWork() { var settings = new ODataMessageWriterSettings(); settings.ODataUri.ServiceRoot = new Uri("http://host/service"); settings.SetContentType(ODataFormat.Json); var model = new EdmModel(); model.GetUInt32("MyNS", false); IODataRequestMessage request = new InMemoryMessage() { Stream = new MemoryStream() }; var writer = new ODataMessageWriter(request, settings, model); Action write = () => writer.WriteProperty(new ODataProperty() { Name = "Id", Value = (UInt32)123 }); write.ShouldNotThrow(); request.GetStream().Position = 0; var reader = new StreamReader(request.GetStream()); string output = reader.ReadToEnd(); output.Should().Be("{\"@odata.context\":\"http://host/service/$metadata#MyNS.UInt32\",\"value\":123}"); }
public void JsonPaddingEnabledWithUserSpecifiedContentType() { var settings = new ODataMessageWriterSettings { JsonPCallback = "functionName", EnableMessageStreamDisposal = false }; settings.SetServiceDocumentUri(new Uri("http://stuff")); IODataResponseMessage message = new InMemoryMessage { StatusCode = 200, Stream = new MemoryStream() }; message.SetHeader("Content-Type", "application/json"); var property = new ODataProperty { Name = "PropertyName", Value = "value" }; using (var writer = new ODataMessageWriter(message, settings)) { writer.WriteProperty(property); } var responseStream = message.GetStream(); responseStream.Position = 0; var responseString = new StreamReader(responseStream).ReadToEnd(); responseString.Should().Be("functionName({\"@odata.context\":\"http://stuff/$metadata#Edm.String\",\"value\":\"value\"})"); message.GetHeader("Content-Type").Should().StartWith("text/javascript"); }
public void StreamEncodingRemainsInvariant() { var settings = new ODataMessageWriterSettings { JsonPCallback = "functionName", EnableMessageStreamDisposal = false }; settings.SetServiceDocumentUri(new Uri("http://stuff")); StreamWriter streamWriter = new StreamWriter(new MemoryStream(), Encoding.GetEncoding("iso-8859-1")); IODataResponseMessage message = new InMemoryMessage { StatusCode = 200, Stream = streamWriter.BaseStream }; message.SetHeader("Content-Type", "application/json"); var property = new ODataProperty { Name = "PropertyName", Value = "value" }; using (var writer = new ODataMessageWriter(message, settings)) { writer.WriteProperty(property); } var responseStream = message.GetStream(); responseStream.Position = 0; var responseString = new StreamReader(responseStream, Encoding.GetEncoding("iso-8859-1")).ReadToEnd(); Assert.Equal("functionName({\"@odata.context\":\"http://stuff/$metadata#Edm.String\",\"value\":\"value\"})", responseString); Assert.StartsWith("text/javascript", message.GetHeader("Content-Type")); }
public void JsonPaddingEnabledWithRawValueSpecified() { var settings = new ODataMessageWriterSettings {JsonPCallback = "functionName", DisableMessageStreamDisposal = true}; settings.SetContentType(ODataFormat.RawValue); IODataResponseMessage message = new InMemoryMessage {StatusCode = 200, Stream = new MemoryStream()}; using (var writer = new ODataMessageWriter(message, settings)) { writer.WriteValue(123); } var responseStream = message.GetStream(); responseStream.Position = 0; var responseString = new StreamReader(responseStream).ReadToEnd(); responseString.Should().Be("functionName(123)"); message.GetHeader("Content-Type").Should().StartWith("text/javascript"); }
public void JsonPaddingEnabledWithUserSpecifiedContentType() { var settings = new ODataMessageWriterSettings {JsonPCallback = "functionName", DisableMessageStreamDisposal = true}; settings.SetServiceDocumentUri(new Uri("http://stuff")); IODataResponseMessage message = new InMemoryMessage {StatusCode = 200, Stream = new MemoryStream()}; message.SetHeader("Content-Type", "application/json"); var property = new ODataProperty {Name = "PropertyName", Value = "value"}; using (var writer = new ODataMessageWriter(message, settings)) { writer.WriteProperty(property); } var responseStream = message.GetStream(); responseStream.Position = 0; var responseString = new StreamReader(responseStream).ReadToEnd(); responseString.Should().Be("functionName({\"@odata.context\":\"http://stuff/$metadata#Edm.String\",\"value\":\"value\"})"); message.GetHeader("Content-Type").Should().StartWith("text/javascript"); }
public void JsonPaddingEnabledWithRawValueSpecified() { var settings = new ODataMessageWriterSettings { JsonPCallback = "functionName", EnableMessageStreamDisposal = false }; settings.SetContentType(ODataFormat.RawValue); IODataResponseMessage message = new InMemoryMessage { StatusCode = 200, Stream = new MemoryStream() }; using (var writer = new ODataMessageWriter(message, settings)) { writer.WriteValue(123); } var responseStream = message.GetStream(); responseStream.Position = 0; var responseString = new StreamReader(responseStream).ReadToEnd(); responseString.Should().Be("functionName(123)"); message.GetHeader("Content-Type").Should().StartWith("text/javascript"); }