Beispiel #1
0
        private static void RunNegotiatedFormatTest(string requestAccept, string requestMaxVersion, Microsoft.OData.Client.ODataProtocolVersion maxProtocolVersion, ODataFormat expectedFormat)
        {
            DataServiceHostSimulator host = new DataServiceHostSimulator
            {
                RequestHttpMethod = "GET",
                RequestAccept     = requestAccept,
                RequestMaxVersion = requestMaxVersion,
                RequestVersion    = "4.0",
            };
            DataServiceSimulator service = new DataServiceSimulator
            {
                OperationContext = new DataServiceOperationContext(host),
                Configuration    = new DataServiceConfiguration(new DataServiceProviderSimulator()),
            };

            service.Configuration.DataServiceBehavior.MaxProtocolVersion = maxProtocolVersion;
            service.OperationContext.InitializeAndCacheHeaders(service);
            service.OperationContext.RequestMessage.InitializeRequestVersionHeaders(VersionUtil.ToVersion(maxProtocolVersion));

            var d = new RequestDescription(RequestTargetKind.Primitive, RequestTargetSource.Property, new Uri("http://temp.org/"));

            d.DetermineWhetherResponseBodyOrETagShouldBeWritten(service.OperationContext.RequestMessage.HttpVerb);
            d.DetermineWhetherResponseBodyShouldBeWritten(service.OperationContext.RequestMessage.HttpVerb);
            d.DetermineResponseFormat(service);
            d.ResponseFormat.Should().NotBeNull();
            d.ResponseFormat.Format.Should().BeSameAs(expectedFormat);
        }
        private static RequestDescription CreateRequestDescription(DataServiceSimulator service, bool shouldWriteResponseBody)
        {
            service.Configuration = new DataServiceConfiguration(new DataServiceProviderSimulator());
            service.Configuration.DataServiceBehavior.MaxProtocolVersion = ODataProtocolVersion.V4;
            var host = new DataServiceHost2Simulator();

            host.RequestHeaders["Prefer"] = "odata.include-annotations=\"*\"";
            host.RequestVersion           = "4.0;";
            host.RequestMaxVersion        = "4.0;";
            host.RequestHttpMethod        = shouldWriteResponseBody ? "GET" : "DELETE";
            service.OperationContext      = new DataServiceOperationContext(false, host);
            service.OperationContext.InitializeAndCacheHeaders(service);
            service.OperationContext.RequestMessage.InitializeRequestVersionHeaders(V4);

            RequestDescription descrption = new RequestDescription(RequestTargetKind.Resource, RequestTargetSource.EntitySet, new Uri("http://service/set"));

            descrption.AnalyzeClientPreference(service);
            descrption.Preference.AnnotationFilter.Should().Be("*");

            HttpVerbs verb = shouldWriteResponseBody ? HttpVerbs.GET : HttpVerbs.PATCH;

            descrption.DetermineWhetherResponseBodyOrETagShouldBeWritten(verb);
            descrption.DetermineWhetherResponseBodyShouldBeWritten(verb);
            return(descrption);
        }
Beispiel #3
0
        private MessageWriterBuilder ForNormalRequest(RequestDescription requestDescription)
        {
            this.dataServiceSimulator.OperationContext.InitializeAndCacheHeaders(this.dataServiceSimulator);
            this.dataServiceSimulator.OperationContext.RequestMessage.CacheHeaders();
            this.dataServiceSimulator.OperationContext.RequestMessage.InitializeRequestVersionHeaders(VersionUtil.Version4Dot0);

            requestDescription.ParseExpandAndSelect(this.dataServiceSimulator);
            requestDescription.DetermineWhetherResponseBodyOrETagShouldBeWritten(HttpVerbs.GET);
            requestDescription.DetermineWhetherResponseBodyShouldBeWritten(HttpVerbs.GET);
            requestDescription.DetermineResponseFormat(this.dataServiceSimulator);
            var testSubject = MessageWriterBuilder.ForNormalRequest(this.dataServiceSimulator, requestDescription, this.responseMessageSimulator, new EdmModel());

            return(testSubject);
        }