public void TopBatchReturingODataError() { const string payload = @"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?> <error xmlns=""http://docs.oasis-open.org/odata/ns/metadata""> <code></code> <message xml:lang=""en-US"">This error must show up in the error returned below</message> </error>"; IODataRequestMessage requestMessage = new ODataTestMessage(); var responseMessage = new ODataTestMessage(); responseMessage.SetHeader("Content-Type", "application\atom+xml"); responseMessage.SetHeader("OData-Version", "4.0"); responseMessage.StatusCode = 400; responseMessage.WriteToStream(payload); responseMessage.SetHeader("Content-Length", "0"); var context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, requestMessage, responseMessage); context.AddObject("Products", new SimpleNorthwind.Product() { ID = 1 }); Action test = () => context.SaveChanges(SaveChangesOptions.BatchWithSingleChangeset); // we should be returning an ODataErrorException instead of the full contents test.ShouldThrow <DataServiceRequestException>() .WithInnerException <DataServiceClientException>() .And.InnerException.Message.Should().Be("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\r\n<error xmlns=\"http://docs.oasis-open.org/odata/ns/metadata\">\r\n <code></code>\r\n <message xml:lang=\"en-US\">This error must show up in the error returned below</message>\r\n</error>"); }
public void TopBatchReturingODataError() { const string payload = @"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?> <error xmlns=""http://docs.oasis-open.org/odata/ns/metadata""> <code></code> <message xml:lang=""en-US"">This error must show up in the error returned below</message> </error>"; IODataRequestMessage requestMessage = new ODataTestMessage(); var responseMessage = new ODataTestMessage(); responseMessage.SetHeader("Content-Type", "application\atom+xml"); responseMessage.SetHeader("OData-Version", "4.0"); responseMessage.StatusCode = 400; responseMessage.WriteToStream(payload); responseMessage.SetHeader("Content-Length", "0"); var context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, requestMessage, responseMessage); context.AddObject("Products", new SimpleNorthwind.Product() { ID = 1 }); Action test = () => context.SaveChanges(SaveChangesOptions.BatchWithSingleChangeset); // we should be returning an ODataErrorException instead of the full contents test.ShouldThrow<DataServiceRequestException>() .WithInnerException<DataServiceClientException>() .And.InnerException.Message.Should().Be("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\r\n<error xmlns=\"http://docs.oasis-open.org/odata/ns/metadata\">\r\n <code></code>\r\n <message xml:lang=\"en-US\">This error must show up in the error returned below</message>\r\n</error>"); }
public void AttachEntityAddEntityAndBindSaveChanges() { var odataRequestMessage = new ODataTestMessage(); var odataResponseMessage = new ODataTestMessage() { StatusCode = 202, MemoryStream = new MemoryStream(Encoding.UTF8.GetBytes(@"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?> <entry xml:base=""http://services.odata.org/OData/OData.svc/"" xmlns:d=""http://schemas.microsoft.com/ado/2007/08/dataservices"" xmlns:m=""http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"" xmlns=""http://www.w3.org/2005/Atom""> <id>http://services.odata.org/OData/OData.svc/Suppliers(2)</id> <category term=""ODataDemo.Product"" scheme=""http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"" /> <link rel=""edit"" title=""AnnotationTests_Product"" href=""Products(2)"" /> <title /> <updated>2012-11-15T19:29:45Z</updated> <author> <name /> </author> <content type=""application/xml""> <m:properties> <d:ID m:type=""Edm.Int32"">1</d:ID> </m:properties> </content> </entry>")) }; odataResponseMessage.SetHeader("DataServiceId", "http://service/foo/Products(2)"); odataResponseMessage.SetHeader("Location", "http://service/foo/Products(2)"); odataResponseMessage.SetHeader("Content-Type", "application/atom+xml"); DataServiceContextWithCustomTransportLayer context = new DataServiceContextWithCustomTransportLayer(DataServiceProtocolVersion.V3, () => odataRequestMessage, () => odataResponseMessage); WritingNavigationLinkArgs startingNavigLinkArgs = null; WritingNavigationLinkArgs endingNavigLinkArgs = null; WritingEntityReferenceLinkArgs args = null; context.Configurations.RequestPipeline.OnNavigationLinkStarting((r => startingNavigLinkArgs = r)); context.Configurations.RequestPipeline.OnNavigationLinkEnding((r => endingNavigLinkArgs = r)); context.Configurations.RequestPipeline.OnEntityReferenceLink((r => args = r)); SimpleNorthwind.Product product = new SimpleNorthwind.Product() { ID = 1 }; SimpleNorthwind.Supplier supplier = new SimpleNorthwind.Supplier() { ID = 2 }; context.AddObject("Products", product); context.AttachTo("Suppliers", supplier); context.SetLink(product, "Supplier", supplier); context.SaveChanges(); VerifyWritingNavigationLinkArgs(startingNavigLinkArgs, null, product, supplier, "Supplier"); VerifyWritingNavigationLinkArgs(endingNavigLinkArgs, null, product, supplier, "Supplier"); args.Should().NotBeNull(); args.EntityReferenceLink.Url.AbsoluteUri.Should().Be("http://somedummyuri/myService.svc/Suppliers(2)"); }
private DataServiceContextWithCustomTransportLayer CreateTransportLayerContext(string payload, string odataVersion) { IODataRequestMessage requestMessage = new ODataTestMessage(); var responseMessage = new ODataTestMessage(); responseMessage.SetHeader("Content-Type", "application/json"); responseMessage.SetHeader("OData-Version", odataVersion); responseMessage.StatusCode = 200; responseMessage.WriteToStream(payload); responseMessage.SetHeader("Content-Length", responseMessage.MemoryStream.Length.ToString()); var context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, requestMessage, responseMessage); context.ResolveName = ResolveName; context.ResolveType = ResolveType; context.Format.UseJson(Model); return(context); }
public void NotModifiedTest() { var odataRequestMessage = new ODataTestMessage(); var odataResponseMessage = new ODataTestMessage() { StatusCode = 304, MemoryStream = new MemoryStream(Encoding.UTF8.GetBytes(@"")) }; odataResponseMessage.SetHeader("Content-Type", "0"); DataServiceContextWithCustomTransportLayer context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, () => odataRequestMessage, () => odataResponseMessage); Action test = () => context.CreateQuery <SimpleNorthwind.Product>("Products").ToList(); test.ShouldThrow <DataServiceQueryException>().WithInnerMessage("NotModified"); }
private DataServiceContextWithCustomTransportLayer CreateTransportLayerContext(string payload, string odataVersion) { IODataRequestMessage requestMessage = new ODataTestMessage(); var responseMessage = new ODataTestMessage(); responseMessage.SetHeader("Content-Type", "application/json"); responseMessage.SetHeader("OData-Version", odataVersion); responseMessage.StatusCode = 200; responseMessage.WriteToStream(payload); responseMessage.SetHeader("Content-Length", responseMessage.MemoryStream.Length.ToString()); var context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, requestMessage, responseMessage); context.ResolveName = ResolveName; context.ResolveType = ResolveType; context.Format.UseJson(Model); return context; }
public void NotModifiedTest() { var odataRequestMessage = new ODataTestMessage(); var odataResponseMessage = new ODataTestMessage() { StatusCode = 304, MemoryStream = new MemoryStream(Encoding.UTF8.GetBytes(@"")) }; odataResponseMessage.SetHeader("Content-Type", "0"); DataServiceContextWithCustomTransportLayer context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, () => odataRequestMessage, () => odataResponseMessage); Action test = () => context.CreateQuery<SimpleNorthwind.Product>("Products").ToList(); test.ShouldThrow<DataServiceQueryException>().WithInnerMessage("NotModified"); }