private static DataServiceQueryException TopLevelErrorPayloadWithTransportException(int statusCode, Action <DataServiceContextWithCustomTransportLayer> contextAction) { IODataRequestMessage requestMessage = new ODataTestMessage(); TopLevelBatchResponseMessage topLevelResponse = new TopLevelBatchResponseMessage(); byte[] payload = Encoding.UTF8.GetBytes("<?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>"); topLevelResponse.SetHeader("OData-Version", "4.0"); topLevelResponse.SetHeader("Content-Type", "application/xml"); topLevelResponse.SetHeader("Content-Length", payload.Length.ToString()); topLevelResponse.StatusCode = statusCode; topLevelResponse.GetStreamFunc = () => { return(new MemoryStream(payload)); }; var context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, () => requestMessage, () => { throw new DataServiceTransportException(topLevelResponse, new WebException()); }); context.EnableAtom = true; Action test = () => contextAction(context); var exception = test.ShouldThrow <DataServiceQueryException>().And; return(exception); }
private static TopLevelBatchResponseMessage CreateResponseMessageWithGetStreamThrowingObjectDisposeException() { var responseMessage = new TopLevelBatchResponseMessage(); responseMessage.SetHeader("OData-Version", "4.0"); responseMessage.SetHeader("Content-Type", "application/atom+xml"); responseMessage.SetHeader("Content-Length", "0"); responseMessage.StatusCode = 400; responseMessage.GetStreamFunc = () => { throw new ObjectDisposedException("Stream already disposed"); }; return(responseMessage); }
private static TopLevelBatchResponseMessage CreateResponseMessageWithGetStreamThrowingObjectDisposeException() { var responseMessage = new TopLevelBatchResponseMessage(); responseMessage.SetHeader("OData-Version", "4.0"); responseMessage.SetHeader("Content-Type", "application/atom+xml"); responseMessage.SetHeader("Content-Length", "0"); responseMessage.StatusCode = 400; responseMessage.GetStreamFunc = () => { throw new ObjectDisposedException("Stream already disposed"); }; return responseMessage; }
private static DataServiceQueryException TopLevelErrorPayloadWithTransportException(int statusCode, Action<DataServiceContextWithCustomTransportLayer> contextAction) { IODataRequestMessage requestMessage = new ODataTestMessage(); TopLevelBatchResponseMessage topLevelResponse = new TopLevelBatchResponseMessage(); byte[] payload = Encoding.UTF8.GetBytes("<?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>"); topLevelResponse.SetHeader("OData-Version", "4.0"); topLevelResponse.SetHeader("Content-Type", "application/xml"); topLevelResponse.SetHeader("Content-Length", payload.Length.ToString()); topLevelResponse.StatusCode = statusCode; topLevelResponse.GetStreamFunc = () => { return new MemoryStream(payload); }; var context = new DataServiceContextWithCustomTransportLayer(ODataProtocolVersion.V4, () => requestMessage, () => { throw new DataServiceTransportException(topLevelResponse, new WebException()); }); context.EnableAtom = true; Action test = () => contextAction(context); var exception = test.ShouldThrow<DataServiceQueryException>().And; return exception; }