Exemple #1
0
        public async Task ODataCountAndNextLinkAnnotationsAppearsOnAllMetadataLevelsWhenSpecified(string acceptHeader)
        {
            //Arrange
            StubEntity[]       entities = MetadataTestHelpers.CreateInstances <StubEntity[]>();
            HttpRequestMessage message  = new HttpRequestMessage(HttpMethod.Post, BaseAddress.ToLowerInvariant() + "/StubEntity/Default.Paged");

            message.SetAcceptHeader(acceptHeader);
            string expectedNextLink = new Uri("http://*****:*****@odata.count", result);
            JsonAssert.PropertyEquals(expectedNextLink, "@odata.nextLink", result);
        }
Exemple #2
0
        public async Task MetadataIsCorrectForThePropertiesOfAnEntryWithJustPrimitiveTypeProperties(
            string acceptHeader,
            string propertyName,
            string edmType)
        {
            // Arrange
            EntityWithSimpleProperties entity = MetadataTestHelpers.CreateInstances <EntityWithSimpleProperties[]>()
                                                .FirstOrDefault();

            Assert.NotNull(entity);

            string expectedContextUrl = BaseAddress + "/$metadata#EntityWithSimpleProperties(" + entity.Id + ")/" + propertyName;

            string[] inferableTypes = new string[] { "Edm.Int32", "Edm.Double", "Edm.String", "Edm.Boolean" };

            // Act
            var entryUrl = BaseAddress + "/EntityWithSimpleProperties(" + entity.Id + ")/" + propertyName;
            var response = await Client.GetWithAcceptAsync(entryUrl, acceptHeader);

            var result = await response.Content.ReadAsObject <JObject>();

            // Assert
            if (acceptHeader.Contains("odata.metadata=none"))
            {
                JsonAssert.DoesNotContainProperty("@odata.*", result);
            }
            else
            {
                ODataUrlAssert.UrlEquals(expectedContextUrl, result, "@odata.context", BaseAddress);
                if (!acceptHeader.Contains("odata.metadata=full") ||
                    (inferableTypes.Contains(edmType) && !result.IsSpecialValue()))
                {
                    JsonAssert.DoesNotContainProperty("@odata.type", result);
                }
                else
                {
                    var unqualifiedTypename = "#" + edmType.Substring(4);
                    JsonAssert.PropertyEquals(unqualifiedTypename, "@odata.type", result);
                }
            }
        }
Exemple #3
0
        public async Task CanFollowGeneratedNavigationLinks(string acceptHeader)
        {
            //Arrange
            OneToOneParent[] entities              = MetadataTestHelpers.CreateInstances <OneToOneParent[]>();
            OneToOneChild[]  childEntities         = entities.Select(x => x.Child).ToArray();
            JArray           returnedChildEntities = new JArray();
            JArray           returnedParentEntities;

            int[]              returnedChildrenIdentities;
            string             requestUrl = BaseAddress.ToLowerInvariant() + "/Relationships/OneToOneParent";
            HttpRequestMessage request    = new HttpRequestMessage(HttpMethod.Get, requestUrl);

            request.SetAcceptHeader(acceptHeader);

            //Act
            HttpResponseMessage response = await Client.SendAsync(request);

            JObject result = await response.Content.ReadAsObject <JObject>();

            returnedParentEntities = (JArray)result["value"];
            for (int i = 0; i < returnedParentEntities.Count; i++)
            {
                string              childUrl      = (string)returnedParentEntities[i]["*****@*****.**"];
                HttpRequestMessage  childRequest  = new HttpRequestMessage(HttpMethod.Get, childUrl);
                HttpResponseMessage childResponse = await Client.SendAsync(childRequest);

                JObject childEntry = await childResponse.Content.ReadAsObject <JObject>();

                returnedChildEntities.Add(childEntry);
            }
            returnedChildrenIdentities = returnedChildEntities.Select(x => (int)x["Id"]).ToArray();

            //Assert
            foreach (var returnedChildEntityId in returnedChildrenIdentities)
            {
                Assert.Contains(childEntities, (x) => x.Id == returnedChildEntityId);
            }
        }
Exemple #4
0
        public async Task MetadataAnnotationAppearsOnlyForFullAndMinimalMetadata(string acceptHeader)
        {
            //Arrange
            StubEntity[]       entities = MetadataTestHelpers.CreateInstances <StubEntity[]>();
            HttpRequestMessage message  = new HttpRequestMessage(HttpMethod.Get, BaseAddress.ToLowerInvariant() + "/StubEntity/");

            message.SetAcceptHeader(acceptHeader);
            string expectedMetadataUrl = BaseAddress.ToLowerInvariant() + "/$metadata#StubEntity";

            //Act
            HttpResponseMessage response = await Client.SendAsync(message);

            JObject result = await response.Content.ReadAsObject <JObject>();

            //Assert
            if (acceptHeader.Contains("odata.metadata=none"))
            {
                JsonAssert.DoesNotContainProperty("@odata.context", result);
            }
            else
            {
                JsonAssert.PropertyEquals(expectedMetadataUrl, "@odata.context", result);
            }
        }
Exemple #5
0
        public async Task CanReturnTheWholeResultSetUsingNextLink(string acceptHeader)
        {
            //Arrange
            StubEntity[] entities         = MetadataTestHelpers.CreateInstances <StubEntity[]>();
            string       nextUrlToQuery   = BaseAddress.ToLowerInvariant() + "/StubEntity/";
            JToken       token            = null;
            JArray       returnedEntities = new JArray();
            JObject      result           = null;

            //Act
            do
            {
                HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Get, nextUrlToQuery);
                message.SetAcceptHeader(acceptHeader);
                HttpResponseMessage response = await Client.SendAsync(message);

                result = await response.Content.ReadAsObject <JObject>();

                JArray currentResults = (JArray)result["value"];
                for (int i = 0; i < currentResults.Count; i++)
                {
                    returnedEntities.Add(currentResults[i]);
                }
                if (result.TryGetValue("@odata.nextLink", out token))
                {
                    nextUrlToQuery = (string)token;
                }
                else
                {
                    nextUrlToQuery = null;
                }
            }while (nextUrlToQuery != null);

            //Assert
            Assert.Equal(entities.Length, returnedEntities.Count);
        }