Exemplo n.º 1
0
            public void Projections_Batch()
            {
                using (TestUtil.MetadataCacheCleaner())
                    using (ocs.PopulateData.CreateTableAndPopulateData())
                        using (TestWebRequest request = TestWebRequest.CreateForInProcess())
                        {
                            TestUtil.RunCombinations(
                                new Type[] { typeof(CustomDataContext), typeof(ocs.CustomObjectContext), typeof(CustomRowBasedContext), typeof(CustomRowBasedOpenTypesContext) },
                                CustomerSelects.Variations(2),
                                (dataServiceType, selects) =>
                            {
                                request.DataServiceType = dataServiceType;

                                BatchWebRequest batchRequest = new BatchWebRequest();
                                foreach (var select in selects)
                                {
                                    InMemoryWebRequest part = new InMemoryWebRequest();
                                    part.Accept             = "application/atom+xml,application/xml";
                                    part.RequestUriString   = "/Customers?$select=" + select.Select;
                                    batchRequest.Parts.Add(part);
                                }

                                batchRequest.SendRequest(request);

                                for (int i = 0; i < selects.Length; i++)
                                {
                                    UnitTestsUtil.VerifyXPathExists(UnitTestsUtil.GetResponseAsAtomXLinq(batchRequest.Parts[i]), selects[i].VerificationXPaths);
                                }
                            });
                        }
            }
Exemplo n.º 2
0
        public void BatchSmokeTestWhereRequestUriIsNotRelativeToService()
        {
            Run(request =>
            {
                request.HttpMethod = "POST";

                request.RequestUriString = "NotBatchAtAll";
                request.RequestHeaders["MyCustomRequestUri"] = "http://myservicebase/path1/path2/$batch";
                request.RequestHeaders["MyCustomServiceUri"] = "http://myservicebase/path1/path2/";

                var batch        = new BatchWebRequest();
                var innerRequest = new InMemoryWebRequest();

                innerRequest.RequestUriString = "SomethingThatWillNotBeUsedAtAll";
                innerRequest.RequestHeaders["MyCustomRequestUri"] = "http://myservicebase/path2/Customers(0)";

                batch.Parts.Add(innerRequest);
                batch.SetContentTypeAndRequestStream(request);

                TestUtil.RunCatching(request.SendRequest);
                Assert.AreEqual(202, request.ResponseStatusCode);
                batch.ParseResponseFromRequest(request, true);
                Assert.AreEqual(400, innerRequest.ResponseStatusCode);
                var innerPayload = innerRequest.GetResponseStreamAsXDocument();
                UnitTestsUtil.VerifyXPathExists(innerPayload, "adsm:error/adsm:message[text()=\"The URI 'http://myservicebase/path2/Customers(0)' is not valid because it is not based on 'http://myservicebase/path1/path2/'.\"]");
            });
        }
Exemplo n.º 3
0
            private void VerifyEntryIDsAndXPaths(string requestUri, TestWebRequest request, int[] expectedIDs, params string[] xpaths)
            {
                var           response = UnitTestsUtil.GetResponseAsAtomXLinq(request, requestUri);
                List <string> ids      = response.Root.Elements(UnitTestsUtil.AtomNamespace + "entry").Elements(UnitTestsUtil.AtomNamespace + "id")
                                         .Select(e => (string)e).ToList();

                Assert.AreEqual(expectedIDs.Length, ids.Count, "The number of returned entries doesn't match.");
                for (int i = 0; i < expectedIDs.Length; i++)
                {
                    if (!ids[i].Contains("(" + expectedIDs[i].ToString() + ")"))
                    {
                        Assert.Fail("Entries not reported correctly, \r\nexpected: " + expectedIDs.Select(n => n.ToString()).Concatenate(", ") +
                                    "\r\nactual: " + ids.Concatenate(", ") +
                                    "\r\n" + response.ToString());
                    }
                }

                UnitTestsUtil.VerifyXPathExists(response, xpaths);
            }
Exemplo n.º 4
0
        private static void RunBatchTest(TestWebRequest request, Action <TestWebRequest> configureBatchRequest, Action <TestWebRequest> configureInnerRequest, string innerRequestXPath)
        {
            request.HttpMethod = "POST";

            var batch        = new BatchWebRequest();
            var innerRequest = new InMemoryWebRequest();

            innerRequest.Accept = "application/atom+xml,application/xml";

            configureBatchRequest(request);
            configureInnerRequest(innerRequest);

            batch.Parts.Add(innerRequest);
            batch.SetContentTypeAndRequestStream(request);
            TestUtil.RunCatching(request.SendRequest);
            Assert.AreEqual(202, request.ResponseStatusCode);
            batch.ParseResponseFromRequest(request, true);
            Assert.AreEqual(200, innerRequest.ResponseStatusCode);
            var innerPayload = innerRequest.GetResponseStreamAsXDocument();

            UnitTestsUtil.VerifyXPathExists(innerPayload, innerRequestXPath);
        }