Example #1
0
        private static void SetUpActionWithLargeParameterPayload(MyDSPActionProvider actionProvider, Provider.IDataServiceMetadataProvider metadata, Provider.ResourceType bindingParameterType)
        {
            List <Provider.ServiceActionParameter> parameters = new List <Provider.ServiceActionParameter>();

            if (bindingParameterType != null)
            {
                parameters.Add(new Provider.ServiceActionParameter("bindingParam", bindingParameterType));
            }

            int j = 0;

            for (int i = 0; i < ActionTestsWithLargePayload.ParameterPayloadSize; ++i)
            {
                string pName = "p_int_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(Int32))));

                pName = "p_string_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(string))));

                pName = "p_double_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(double))));

                pName = "p_datetimeoffset_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(DateTimeOffset))));

                pName = "p_complex_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, ActionTestsWithLargePayload.ComplexType));
            }

            actionProvider.AddAction("ActionWithLargeParameterPayload", null, null, parameters, Provider.OperationParameterBindingKind.Sometimes, null, null);
        }
Example #2
0
        private static void SetUpActionWithLargeCollectionParameterPayload(MyDSPActionProvider actionProvider, Provider.IDataServiceMetadataProvider metadata, Provider.ResourceType bindingParameterType)
        {
            List <Provider.ServiceActionParameter> parameters = new List <Provider.ServiceActionParameter>();

            if (bindingParameterType != null)
            {
                parameters.Add(new Provider.ServiceActionParameter("bindingParam", bindingParameterType));
            }

            parameters.Add(new Provider.ServiceActionParameter("collectionParameter", Provider.ResourceType.GetCollectionResourceType(Provider.ResourceType.GetPrimitiveResourceType(typeof(string)))));
            actionProvider.AddAction("ActionWithLargeCollectionParameterPayload", null, null, parameters, Provider.OperationParameterBindingKind.Sometimes, null, null);
        }
Example #3
0
        private static void SetupLargeNumberOfActions(MyDSPActionProvider actionProvider, Provider.IDataServiceMetadataProvider metadata, Provider.ResourceType bindingParameterType)
        {
            List <Provider.ServiceActionParameter> parameters = new List <Provider.ServiceActionParameter>();

            if (bindingParameterType != null)
            {
                parameters.Add(new Provider.ServiceActionParameter("bindingParam", bindingParameterType));
            }

            for (int i = 0; i < NumberOfActions; ++i)
            {
                actionProvider.AddAction("Action_" + i, null, null, parameters, Provider.OperationParameterBindingKind.Sometimes, null, null);
            }
        }
        private static void RunPositiveTest(ODataFormat format, TestCase testCase)
        {
            MyDSPActionProvider  actionProvider = new MyDSPActionProvider();
            DSPServiceDefinition service        = new DSPServiceDefinition()
            {
                Metadata = Metadata, CreateDataSource = CreateDataSource, ActionProvider = actionProvider
            };

            service.DataServiceBehavior.MaxProtocolVersion = ODataProtocolVersion.V4;

            using (TestWebRequest request = service.CreateForInProcessWcf())
            {
                request.StartService();
                DataServiceContext ctx = new DataServiceContext(request.ServiceRoot, ODataProtocolVersion.V4);
                //ctx.EnableAtom = true;

                Uri uri = new Uri(request.ServiceRoot + "/" + testCase.RequestUriString);

                MakeFinalChangesToTestCase(testCase, format, actionProvider, request);

                if (format == ODataFormat.Json)
                {
                    JsonLightTestUtil.ConfigureContextForJsonLight(ctx, null);
                }
                else
                {
                    //ctx.Format.UseAtom();
                }

                QueryOperationResponse <CustomerEntity> qor = (QueryOperationResponse <CustomerEntity>)ctx.Execute <CustomerEntity>(uri);
                Assert.IsNotNull(qor);
                Assert.IsNull(qor.Error);

                IEnumerator <CustomerEntity> entities = qor.GetEnumerator();

                int expectedDescriptorsPerEntity = 0;

                while (entities.MoveNext())
                {
                    CustomerEntity   c  = entities.Current;
                    EntityDescriptor ed = ctx.GetEntityDescriptor(c);
                    IEnumerable <OperationDescriptor> actualDescriptors = ed.OperationDescriptors;
                    TestEquality(actualDescriptors, testCase.GetExpectedDescriptors(format)[expectedDescriptorsPerEntity++]);
                }
            }
        }
Example #5
0
        private static DSPServiceDefinition SetupService()
        {
            DSPMetadata metadata = new DSPMetadata("ActionsWithLargePayload", "AstoriaUnitTests.ActionTestsWithLargePayload");
            var         customer = metadata.AddEntityType("Customer", null, null, false);

            metadata.AddKeyProperty(customer, "ID", typeof(int));
            var customers = metadata.AddResourceSet("Customers", customer);

            ComplexType = metadata.AddComplexType("AddressComplexType", null, null, false);
            metadata.AddPrimitiveProperty(ComplexType, "ZipCode", typeof(int));
            metadata.AddPrimitiveProperty(ComplexType, "City", typeof(string));

            DSPContext context = new DSPContext();

            metadata.SetReadOnly();

            DSPResource customer1 = new DSPResource(customer);

            customer1.SetValue("ID", 1);
            context.GetResourceSetEntities("Customers").Add(customer1);

            MyDSPActionProvider actionProvider = new MyDSPActionProvider();

            SetUpActionWithLargeParameterPayload(actionProvider, metadata, customer);
            SetUpActionWithLargeCollectionParameterPayload(actionProvider, metadata, customer);
            SetupLargeNumberOfActions(actionProvider, metadata, customer);

            DSPServiceDefinition service = new DSPServiceDefinition()
            {
                Metadata           = metadata,
                CreateDataSource   = (m) => context,
                ForceVerboseErrors = true,
                Writable           = true,
                ActionProvider     = actionProvider,
            };

            return(service);
        }
        /// <summary>
        /// Make final changes to the testcase before sending the request.
        /// </summary>
        private static void MakeFinalChangesToTestCase(TestCase testCase, ODataFormat format, MyDSPActionProvider actionProvider, TestWebRequest request)
        {
            foreach (var action in testCase.Operations)
            {
                actionProvider.AddAction((ServiceAction)action);
            }

            testCase.AddBaseUriStringToExpectedDescriptors(request.ServiceRoot.OriginalString, format);

            if (testCase.SubstituteAdvertiseServiceAction != null)
            {
                actionProvider.SubstituteAdvertiseServiceAction = testCase.SubstituteAdvertiseServiceAction;
            }
        }
        private static DSPServiceDefinition SetupService()
        {
            DSPMetadata metadata = new DSPMetadata("ActionsWithLargePayload", "AstoriaUnitTests.ActionTestsWithLargePayload");
            var customer = metadata.AddEntityType("Customer", null, null, false);
            metadata.AddKeyProperty(customer, "ID", typeof(int));
            var customers = metadata.AddResourceSet("Customers", customer);

            ComplexType = metadata.AddComplexType("AddressComplexType", null, null, false);
            metadata.AddPrimitiveProperty(ComplexType, "ZipCode", typeof(int));
            metadata.AddPrimitiveProperty(ComplexType, "City", typeof(string));

            DSPContext context = new DSPContext();
            metadata.SetReadOnly();

            DSPResource customer1 = new DSPResource(customer);
            customer1.SetValue("ID", 1);
            context.GetResourceSetEntities("Customers").Add(customer1);

            MyDSPActionProvider actionProvider = new MyDSPActionProvider();
            SetUpActionWithLargeParameterPayload(actionProvider, metadata, customer);
            SetUpActionWithLargeCollectionParameterPayload(actionProvider, metadata, customer);
            SetupLargeNumberOfActions(actionProvider, metadata, customer);

            DSPServiceDefinition service = new DSPServiceDefinition()
            {
                Metadata = metadata,
                CreateDataSource = (m) => context,
                ForceVerboseErrors = true,
                Writable = true,
                ActionProvider = actionProvider,
            };

            return service;
        }
        private static void SetUpActionWithLargeParameterPayload(MyDSPActionProvider actionProvider, Provider.IDataServiceMetadataProvider metadata, Provider.ResourceType bindingParameterType)
        {    
            List<Provider.ServiceActionParameter> parameters = new List<Provider.ServiceActionParameter>();
            if(bindingParameterType != null) 
            {
                parameters.Add(new Provider.ServiceActionParameter("bindingParam", bindingParameterType));
            }

            int j = 0;
            for (int i = 0; i < ActionTestsWithLargePayload.ParameterPayloadSize; ++i)
            {
                string pName = "p_int_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(Int32))));

                pName = "p_string_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(string))));

                pName = "p_double_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(double))));

                pName = "p_datetimeoffset_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, Provider.ResourceType.GetPrimitiveResourceType(typeof(DateTimeOffset))));

                pName = "p_complex_" + j++;
                parameters.Add(new Provider.ServiceActionParameter(pName, ActionTestsWithLargePayload.ComplexType));
            }

            actionProvider.AddAction("ActionWithLargeParameterPayload", null, null, parameters, Provider.OperationParameterBindingKind.Sometimes, null, null);
        }
        private static void SetupLargeNumberOfActions(MyDSPActionProvider actionProvider, Provider.IDataServiceMetadataProvider metadata, Provider.ResourceType bindingParameterType)
        {
            List<Provider.ServiceActionParameter> parameters = new List<Provider.ServiceActionParameter>();

            if (bindingParameterType != null)
            {
                parameters.Add(new Provider.ServiceActionParameter("bindingParam", bindingParameterType));
            }

            for (int i = 0; i < NumberOfActions; ++i)
            {
                actionProvider.AddAction("Action_" + i, null, null, parameters, Provider.OperationParameterBindingKind.Sometimes, null, null);
            }
        }
        private static void SetUpActionWithLargeCollectionParameterPayload(MyDSPActionProvider actionProvider, Provider.IDataServiceMetadataProvider metadata, Provider.ResourceType bindingParameterType)
        {
            List<Provider.ServiceActionParameter> parameters = new List<Provider.ServiceActionParameter>();

            if (bindingParameterType != null)
            {
                parameters.Add(new Provider.ServiceActionParameter("bindingParam", bindingParameterType));
            }

            parameters.Add(new Provider.ServiceActionParameter("collectionParameter", Provider.ResourceType.GetCollectionResourceType(Provider.ResourceType.GetPrimitiveResourceType(typeof(string)))));
            actionProvider.AddAction("ActionWithLargeCollectionParameterPayload", null, null, parameters, Provider.OperationParameterBindingKind.Sometimes, null, null);
        }
        private static void RunPositiveTest(ODataFormat format, TestCase testCase)
        {
            MyDSPActionProvider actionProvider = new MyDSPActionProvider();
            DSPServiceDefinition service = new DSPServiceDefinition() {Metadata = Metadata, CreateDataSource = CreateDataSource, ActionProvider = actionProvider};
            service.DataServiceBehavior.MaxProtocolVersion = ODataProtocolVersion.V4;

            using (TestWebRequest request = service.CreateForInProcessWcf())
            {
                request.StartService();
                DataServiceContext ctx = new DataServiceContext(request.ServiceRoot, ODataProtocolVersion.V4);
                ctx.EnableAtom = true;

                Uri uri = new Uri(request.ServiceRoot + "/" + testCase.RequestUriString);

                MakeFinalChangesToTestCase(testCase, format, actionProvider, request);

                if (format == ODataFormat.Json)
                {
                    JsonLightTestUtil.ConfigureContextForJsonLight(ctx, null);
                }
                else
                {
                    ctx.Format.UseAtom();
                }

                QueryOperationResponse<CustomerEntity> qor = (QueryOperationResponse<CustomerEntity>)ctx.Execute<CustomerEntity>(uri);
                Assert.IsNotNull(qor);
                Assert.IsNull(qor.Error);

                IEnumerator<CustomerEntity> entities = qor.GetEnumerator();

                int expectedDescriptorsPerEntity = 0;

                while (entities.MoveNext())
                {
                    CustomerEntity c = entities.Current;
                    EntityDescriptor ed = ctx.GetEntityDescriptor(c);
                    IEnumerable<OperationDescriptor> actualDescriptors = ed.OperationDescriptors;
                    TestEquality(actualDescriptors, testCase.GetExpectedDescriptors(format)[expectedDescriptorsPerEntity++]);
                }
            }
        }
        /// <summary>
        /// Make final changes to the testcase before sending the request.
        /// </summary>
        private static void MakeFinalChangesToTestCase(TestCase testCase, ODataFormat format, MyDSPActionProvider actionProvider, TestWebRequest request)
        {
            foreach (var action in testCase.Operations)
            {
                actionProvider.AddAction((ServiceAction)action);
            }

            testCase.AddBaseUriStringToExpectedDescriptors(request.ServiceRoot.OriginalString, format);

            if (testCase.SubstituteAdvertiseServiceAction != null)
            {
                actionProvider.SubstituteAdvertiseServiceAction = testCase.SubstituteAdvertiseServiceAction;
            }
        }