public void GetMissingQueryStringItemReturnsNullIfHostReturnsNull()
        {
            var host = new DataServiceHost2Simulator();
            DataServiceOperationContext context = new DataServiceOperationContext(host);

            context.GetQueryStringValue("some-key").Should().Be(null);
        }
        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);
        }
예제 #3
0
        public void InitTest()
        {
            this.host = new DataServiceHost2Simulator();
            this.host.AbsoluteServiceUri = new Uri("http://service/");
            this.host.AbsoluteServiceUri = new Uri("http://service/set1");

            var providerSimulator = new DataServiceProviderSimulator();

            this.service = new DataServiceSimulator
            {
                OperationContext = new DataServiceOperationContext(false, this.host),
                Configuration    = new DataServiceConfiguration(providerSimulator)
            };

            DataServiceStaticConfiguration staticConfiguration = new DataServiceStaticConfiguration(this.service.Instance.GetType(), providerSimulator);
            IDataServiceProviderBehavior   providerBehavior    = DataServiceProviderBehavior.CustomDataServiceProviderBehavior;

            this.service.ProcessingPipeline = new DataServiceProcessingPipeline();
            this.service.Provider           = new DataServiceProviderWrapper(
                new DataServiceCacheItem(
                    this.service.Configuration,
                    staticConfiguration),
                providerSimulator,
                providerSimulator,
                this.service,
                false);
            this.service.Provider.ProviderBehavior = providerBehavior;
            this.service.OperationContext.InitializeAndCacheHeaders(this.service);
        }
        public void GetQueryStringItemAsksHost()
        {
            var host = new DataServiceHost2Simulator();

            host.SetQueryStringItem("some-key", "test-value");
            DataServiceOperationContext context = new DataServiceOperationContext(host);

            context.GetQueryStringValue("some-key").Should().Be("test-value");
        }
예제 #5
0
        public void Initialize()
        {
            this.host = new DataServiceHost2Simulator();

            var context = new DataServiceOperationContext(this.host);

            this.dataServiceSimulator = new DataServiceSimulator {
                OperationContext = context
            };

            var providerSimulator = new DataServiceProviderSimulator();

            DataServiceStaticConfiguration staticConfiguration = new DataServiceStaticConfiguration(this.dataServiceSimulator.Instance.GetType(), providerSimulator);
            IDataServiceProviderBehavior   providerBehavior    = DataServiceProviderBehavior.CustomDataServiceProviderBehavior;

            var resourceType = new ResourceType(typeof(object), ResourceTypeKind.EntityType, null, "SelectTestNamespace", "Fake", false)
            {
                CanReflectOnInstanceType = false, IsOpenType = true
            };

            resourceType.AddProperty(new ResourceProperty("Id", ResourcePropertyKind.Key | ResourcePropertyKind.Primitive, ResourceType.GetPrimitiveResourceType(typeof(int)))
            {
                CanReflectOnInstanceTypeProperty = false
            });
            var resourceSet = new ResourceSet("FakeSet", resourceType);

            resourceSet.SetReadOnly();

            providerSimulator.AddResourceSet(resourceSet);

            var configuration = new DataServiceConfiguration(providerSimulator);

            configuration.SetEntitySetAccessRule("*", EntitySetRights.All);

            var provider = new DataServiceProviderWrapper(
                new DataServiceCacheItem(
                    configuration,
                    staticConfiguration),
                providerSimulator,
                providerSimulator,
                this.dataServiceSimulator,
                false);

            this.dataServiceSimulator.ProcessingPipeline = new DataServiceProcessingPipeline();
            this.dataServiceSimulator.Provider           = provider;
            provider.ProviderBehavior = providerBehavior;
            this.dataServiceSimulator.Configuration = new DataServiceConfiguration(providerSimulator);
            this.dataServiceSimulator.Configuration.DataServiceBehavior.MaxProtocolVersion = ODataProtocolVersion.V4;

            this.responseMessageSimulator = new ODataResponseMessageSimulator();
        }
예제 #6
0
        public void RequestHeadersIsFromHost()
        {
            var value = new WebHeaderCollection {
                { "RequestVersion", "2.0" }, { "Accept", "json" }, { "Custom", "customValue" }
            };
            var host = new DataServiceHost2Simulator {
                RequestHeaders = value
            };
            var requestMessage = new AstoriaRequestMessage(host);

            requestMessage.RequestHeaders.Should().BeEquivalentTo(value);
            requestMessage.RequestHeaders["RequestVersion"] = "2.0";
            requestMessage.RequestHeaders["Accept"]         = "json";
            requestMessage.RequestHeaders["Custom"]         = "customValue";
        }
예제 #7
0
        public void UrlConventionIntegrationTest()
        {
            var host = new DataServiceHost2Simulator
            {
                RequestHeaders = new WebHeaderCollection {
                    { UrlConventionsConstants.UrlConventionHeaderName, "KeyAsSegment" }
                },
            };
            var service = new DataServiceSimulator
            {
                Configuration    = new DataServiceConfiguration(new DataServiceProviderSimulator()),
                OperationContext = new DataServiceOperationContext(host)
            };

            service.OperationContext.InitializeAndCacheHeaders(service);

            service.Configuration.DataServiceBehavior.UrlConventions = DataServiceUrlConventions.KeyAsSegment;
            UrlConvention.Create(service).GenerateKeyAsSegment.Should().BeTrue();
        }