Ejemplo n.º 1
0
        public void UpdateProviderPropertyTest()
        {
            IDataService service = this.serviceFactory.CreateService<CustomUpdateProvider2Service>();
            ODataProtocolVersion[] versions = new[] { ODataProtocolVersion.V4 };
            bool[] boolValues = new[] { true, false };
            List<string> failureCombinations = new List<string>();

            foreach (var version in versions)
            {
                foreach (var hasReflectionOrEFProviderQueryBehavior in boolValues)
                {
                    foreach (var implementsIUpdatable in boolValues)
                    {
                        foreach (var implementsIDSUP in boolValues)
                        {
                            foreach (var implementsIDSUP2 in boolValues)
                            {
                                service.Configuration.DataServiceBehavior.MaxProtocolVersion = version;
                                CustomUpdateProvider2Service.ImplementsIUpdatable = implementsIUpdatable;
                                CustomUpdateProvider2Service.ImplementsIDSUP = implementsIDSUP;
                                CustomUpdateProvider2Service.ImplementsIDSUP2 = implementsIDSUP2;
                                CustomUpdateProvider2Service.IUpdatableGetCount = 0;
                                CustomUpdateProvider2Service.IDataServiceUpdateProviderGetCount = 0;
                                CustomUpdateProvider2Service.IDataServiceUpdateProvider2GetCount = 0;

                                ((DataServiceSimulator)service).Provider = CreateProviderWrapper(service.Configuration, hasReflectionOrEFProviderQueryBehavior);
                                UpdatableWrapper updatable = new UpdatableWrapper(service);
                                try
                                {
                                    var instance = updatable.GetType().GetProperty("UpdateProvider", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(updatable, null);
                                    Assert.IsNotNull(instance, "UpdatableWrapper should throw if UpdateProvider fails to get the interface.");
                                    Assert.AreEqual(1, CustomUpdateProvider2Service.IDataServiceUpdateProvider2GetCount);

                                    // None of this code is actually hit, we need to investigate this.
                                    if (!CustomUpdateProvider2Service.ImplementsIDSUP2)
                                    {
                                        if (hasReflectionOrEFProviderQueryBehavior)
                                        {
                                            Assert.AreEqual(1, CustomUpdateProvider2Service.IUpdatableGetCount);
                                        }
                                        else
                                        {
                                            Assert.AreEqual(0, CustomUpdateProvider2Service.IUpdatableGetCount);
                                        }

                                        if (!CustomUpdateProvider2Service.ImplementsIUpdatable)
                                        {
                                            Assert.AreEqual(1, CustomUpdateProvider2Service.IDataServiceUpdateProviderGetCount);
                                        }
                                        else
                                        {
                                            if (hasReflectionOrEFProviderQueryBehavior)
                                            {
                                                Assert.AreEqual(0, CustomUpdateProvider2Service.IDataServiceUpdateProviderGetCount);
                                            }
                                            else
                                            {
                                                Assert.AreEqual(1, CustomUpdateProvider2Service.IDataServiceUpdateProviderGetCount);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        Assert.AreEqual(0, CustomUpdateProvider2Service.IUpdatableGetCount);
                                        Assert.AreEqual(0, CustomUpdateProvider2Service.IDataServiceUpdateProviderGetCount);
                                    }
                                }
                                catch (TargetInvocationException tie)
                                {
                                    string errorCaseVariation = string.Format("Version:{0}, hasReflectionOrEFProviderQueryBehavior:{1}, implementsIUpdatable:{2}, implementsIDSUP:{3}, implementsIDSUP2:{4}", version, hasReflectionOrEFProviderQueryBehavior, implementsIUpdatable, implementsIDSUP, implementsIDSUP2);
                                    failureCombinations.Add(errorCaseVariation);
                                    DataServiceException e = (DataServiceException)tie.InnerException;
                                    Assert.AreEqual(501, e.StatusCode);
                                    if (hasReflectionOrEFProviderQueryBehavior)
                                    {
                                        Assert.AreEqual("The data source must implement IUpdatable, IDataServiceUpdateProvider or IDataServiceUpdateProvider2 to support updates.", e.Message);
                                    }
                                    else
                                    {
                                        Assert.AreEqual("The data source must implement IDataServiceUpdateProvider or IDataServiceUpdateProvider2 to support updates.", e.Message);
                                    }
                                }
                            }
                        }
                    }
                }
            }

        }
Ejemplo n.º 2
0
 public void UpdateProvider2PropertyTest()
 {
     IDataService service = this.serviceFactory.CreateService<CustomUpdatableProviderService>();
     UpdatableWrapper updatable = new UpdatableWrapper(service);
     foreach (ODataProtocolVersion version in new[] { ODataProtocolVersion.V4 })
     {
         service.Configuration.DataServiceBehavior.MaxProtocolVersion = version;
         try
         {
             updatable.GetType().GetProperty("UpdateProvider2", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(updatable, null);
         }
         catch (TargetInvocationException tie)
         {
             InvalidOperationException e = (InvalidOperationException)tie.InnerException;
             Assert.AreEqual("To support service actions, the data service must implement IServiceProvider.GetService() to return an implementation of IDataServiceUpdateProvider2 or the data source must implement IDataServiceUpdateProvider2.", e.Message);
         }
     }
 }