private string WriteAndVerifyCarEntry(StreamResponseMessage responseMessage, ODataWriter odataWriter, bool hasModel, string mimeType) { var carEntry = WritePayloadHelper.CreateCarEntry(hasModel); odataWriter.WriteStart(carEntry); // Finish writing the entry. odataWriter.WriteEnd(); // Some very basic verification for the payload. bool verifyEntryCalled = false; Action <ODataEntry> verifyEntry = (entry) => { Assert.AreEqual(4, entry.Properties.Count(), "entry.Properties.Count"); Assert.IsNotNull(entry.MediaResource, "entry.MediaResource"); Assert.IsTrue(entry.EditLink.AbsoluteUri.Contains("Car(11)"), "entry.EditLink"); Assert.IsTrue(entry.ReadLink == null || entry.ReadLink.AbsoluteUri.Contains("Car(11)"), "entry.ReadLink"); Assert.AreEqual(1, entry.InstanceAnnotations.Count, "entry.InstanceAnnotations.Count"); verifyEntryCalled = true; }; Stream stream = responseMessage.GetStream(); if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata)) { stream.Seek(0, SeekOrigin.Begin); WritePayloadHelper.ReadAndVerifyFeedEntryMessage(false, responseMessage, WritePayloadHelper.CarSet, WritePayloadHelper.CarType, null, verifyEntry, null); Assert.IsTrue(verifyEntryCalled, "Verification action not called."); } return(WritePayloadHelper.ReadStreamContent(stream)); }
private string ReadFeedEntryMessage(bool isFeed, StreamResponseMessage responseMessage, string mimeType, IEdmEntitySet edmEntitySet, IEdmEntityType edmEntityType) { Stream stream = responseMessage.GetStream(); stream.Seek(0, SeekOrigin.Begin); if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata)) { // read the response message using ODL reader, verify the read completed successfully WritePayloadHelper.ReadAndVerifyFeedEntryMessage(isFeed, responseMessage, edmEntitySet, edmEntityType, null, null, null); } return(WritePayloadHelper.ReadStreamContent(stream)); }
private string WriteAndVerifyEmployeeEntry(StreamResponseMessage responseMessage, ODataWriter odataWriter, bool hasExpectedType, string mimeType) { ODataEntry employeeEntry = WritePayloadHelper.CreateEmployeeEntry(false); ODataFeedAndEntrySerializationInfo serializationInfo = new ODataFeedAndEntrySerializationInfo() { NavigationSourceName = "Person", NavigationSourceEntityTypeName = NameSpace + "Person", }; if (hasExpectedType) { serializationInfo.ExpectedTypeName = NameSpace + "Employee"; } employeeEntry.SetSerializationInfo(serializationInfo); odataWriter.WriteStart(employeeEntry); var employeeNavigation1 = new ODataNavigationLink() { Name = "PersonMetadata", IsCollection = true, Url = new Uri("Person(-3)/" + NameSpace + "Employee" + "/PersonMetadata", UriKind.Relative) }; odataWriter.WriteStart(employeeNavigation1); odataWriter.WriteEnd(); var employeeNavigation2 = new ODataNavigationLink() { Name = "Manager", IsCollection = false, Url = new Uri("Person(-3)/" + NameSpace + "Employee" + "/Manager", UriKind.Relative) }; odataWriter.WriteStart(employeeNavigation2); odataWriter.WriteEnd(); // Finish writing employeeEntry. odataWriter.WriteEnd(); // Some very basic verification for the payload. bool verifyEntryCalled = false; bool verifyNavigationCalled = false; Action <ODataEntry> verifyEntry = (entry) => { Assert.IsTrue(entry.EditLink.AbsoluteUri.Contains("Person"), "entry.EditLink"); verifyEntryCalled = true; }; Action <ODataNavigationLink> verifyNavigation = (navigation) => { Assert.IsTrue(navigation.Name == "PersonMetadata" || navigation.Name == "Manager", "navigation.Name"); verifyNavigationCalled = true; }; Stream stream = responseMessage.GetStream(); if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata)) { stream.Seek(0, SeekOrigin.Begin); WritePayloadHelper.ReadAndVerifyFeedEntryMessage(false, responseMessage, WritePayloadHelper.PersonSet, WritePayloadHelper.PersonType, null, verifyEntry, verifyNavigation); Assert.IsTrue(verifyEntryCalled && verifyNavigationCalled, "Verification action not called."); } return(WritePayloadHelper.ReadStreamContent(stream)); }
private string WriteAndVerifyPersonFeed(StreamResponseMessage responseMessage, ODataWriter odataWriter, bool hasModel, string mimeType) { var personFeed = new ODataFeed() { Id = new Uri(this.ServiceUri + "Person"), DeltaLink = new Uri(this.ServiceUri + "Person") }; if (!hasModel) { personFeed.SetSerializationInfo(new ODataFeedAndEntrySerializationInfo() { NavigationSourceName = "Person", NavigationSourceEntityTypeName = NameSpace + "Person" }); } odataWriter.WriteStart(personFeed); ODataEntry personEntry = WritePayloadHelper.CreatePersonEntry(hasModel); odataWriter.WriteStart(personEntry); var personNavigation = new ODataNavigationLink() { Name = "PersonMetadata", IsCollection = true, Url = new Uri("Person(-5)/PersonMetadata", UriKind.Relative) }; odataWriter.WriteStart(personNavigation); odataWriter.WriteEnd(); // Finish writing personEntry. odataWriter.WriteEnd(); ODataEntry employeeEntry = WritePayloadHelper.CreateEmployeeEntry(hasModel); odataWriter.WriteStart(employeeEntry); var employeeNavigation1 = new ODataNavigationLink() { Name = "PersonMetadata", IsCollection = true, Url = new Uri("Person(-3)/" + NameSpace + "Employee" + "/PersonMetadata", UriKind.Relative) }; odataWriter.WriteStart(employeeNavigation1); odataWriter.WriteEnd(); var employeeNavigation2 = new ODataNavigationLink() { Name = "Manager", IsCollection = false, Url = new Uri("Person(-3)/" + NameSpace + "Employee" + "/Manager", UriKind.Relative) }; odataWriter.WriteStart(employeeNavigation2); odataWriter.WriteEnd(); // Finish writing employeeEntry. odataWriter.WriteEnd(); ODataEntry specialEmployeeEntry = WritePayloadHelper.CreateSpecialEmployeeEntry(hasModel); odataWriter.WriteStart(specialEmployeeEntry); var specialEmployeeNavigation1 = new ODataNavigationLink() { Name = "PersonMetadata", IsCollection = true, Url = new Uri("Person(-10)/" + NameSpace + "SpecialEmployee" + "/PersonMetadata", UriKind.Relative) }; odataWriter.WriteStart(specialEmployeeNavigation1); odataWriter.WriteEnd(); var specialEmployeeNavigation2 = new ODataNavigationLink() { Name = "Manager", IsCollection = false, Url = new Uri("Person(-10)/" + NameSpace + "SpecialEmployee" + "/Manager", UriKind.Relative) }; odataWriter.WriteStart(specialEmployeeNavigation2); odataWriter.WriteEnd(); var specialEmployeeNavigation3 = new ODataNavigationLink() { Name = "Car", IsCollection = false, Url = new Uri("Person(-10)/" + NameSpace + "SpecialEmployee" + "/Manager", UriKind.Relative) }; odataWriter.WriteStart(specialEmployeeNavigation3); odataWriter.WriteEnd(); // Finish writing specialEmployeeEntry. odataWriter.WriteEnd(); // Finish writing the feed. odataWriter.WriteEnd(); // Some very basic verification for the payload. bool verifyFeedCalled = false; bool verifyEntryCalled = false; bool verifyNavigationCalled = false; Action <ODataFeed> verifyFeed = (feed) => { if (mimeType != MimeTypes.ApplicationAtomXml) { Assert.IsTrue(feed.DeltaLink.AbsoluteUri.Contains("Person")); } verifyFeedCalled = true; }; Action <ODataEntry> verifyEntry = (entry) => { Assert.IsTrue(entry.EditLink.AbsoluteUri.EndsWith("Person(-5)") || entry.EditLink.AbsoluteUri.EndsWith("Person(-3)/" + NameSpace + "Employee") || entry.EditLink.AbsoluteUri.EndsWith("Person(-10)/" + NameSpace + "SpecialEmployee")); verifyEntryCalled = true; }; Action <ODataNavigationLink> verifyNavigation = (navigation) => { Assert.IsTrue(navigation.Name == "PersonMetadata" || navigation.Name == "Manager" || navigation.Name == "Car"); verifyNavigationCalled = true; }; Stream stream = responseMessage.GetStream(); if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata)) { stream.Seek(0, SeekOrigin.Begin); WritePayloadHelper.ReadAndVerifyFeedEntryMessage(true, responseMessage, WritePayloadHelper.PersonSet, WritePayloadHelper.PersonType, verifyFeed, verifyEntry, verifyNavigation); Assert.IsTrue(verifyFeedCalled && verifyEntryCalled && verifyNavigationCalled, "Verification action not called."); } return(WritePayloadHelper.ReadStreamContent(stream)); }
private string WriteAndVerifyExpandedCustomerEntry(StreamResponseMessage responseMessage, ODataWriter odataWriter, bool hasModel, string mimeType) { ODataEntry customerEntry = WritePayloadHelper.CreateCustomerEntry(hasModel); odataWriter.WriteStart(customerEntry); // write non-expanded navigations foreach (var navigation in WritePayloadHelper.CreateCustomerNavigationLinks()) { odataWriter.WriteStart(navigation); odataWriter.WriteEnd(); } // write expanded navigation var expandedNavigation = new ODataNavigationLink() { Name = "Logins", IsCollection = true, Url = new Uri(this.ServiceUri + "Customer(-9)/Logins") }; odataWriter.WriteStart(expandedNavigation); var loginFeed = new ODataFeed() { Id = new Uri(this.ServiceUri + "Customer(-9)/Logins") }; if (!hasModel) { loginFeed.SetSerializationInfo(new ODataFeedAndEntrySerializationInfo() { NavigationSourceName = "Login", NavigationSourceEntityTypeName = NameSpace + "Login" }); } odataWriter.WriteStart(loginFeed); var loginEntry = WritePayloadHelper.CreateLoginEntry(hasModel); odataWriter.WriteStart(loginEntry); foreach (var navigation in WritePayloadHelper.CreateLoginNavigationLinks()) { odataWriter.WriteStart(navigation); odataWriter.WriteEnd(); } // Finish writing loginEntry. odataWriter.WriteEnd(); // Finish writing the loginFeed. odataWriter.WriteEnd(); // Finish writing expandedNavigation. odataWriter.WriteEnd(); // Finish writing customerEntry. odataWriter.WriteEnd(); // Some very basic verification for the payload. bool verifyFeedCalled = false; int verifyEntryCalled = 0; bool verifyNavigationCalled = false; Action <ODataFeed> verifyFeed = (feed) => { verifyFeedCalled = true; }; Action <ODataEntry> verifyEntry = (entry) => { if (entry.TypeName.Contains("Customer")) { Assert.AreEqual(7, entry.Properties.Count()); } if (entry.TypeName.Contains("Login")) { Assert.AreEqual(2, entry.Properties.Count()); } verifyEntryCalled++; }; Action <ODataNavigationLink> verifyNavigation = (navigation) => { Assert.IsNotNull(navigation.Name); verifyNavigationCalled = true; }; Stream stream = responseMessage.GetStream(); if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata)) { stream.Seek(0, SeekOrigin.Begin); WritePayloadHelper.ReadAndVerifyFeedEntryMessage(false, responseMessage, WritePayloadHelper.CustomerSet, WritePayloadHelper.CustomerType, verifyFeed, verifyEntry, verifyNavigation); Assert.IsTrue(verifyFeedCalled && verifyEntryCalled == 2 && verifyNavigationCalled, "Verification action not called."); } return(WritePayloadHelper.ReadStreamContent(stream)); }
private string WriteAndVerifyOrderFeed(StreamResponseMessage responseMessage, ODataWriter odataWriter, bool hasModel, string mimeType) { var orderFeed = new ODataFeed() { Id = new Uri(this.ServiceUri + "Order"), NextPageLink = new Uri(this.ServiceUri + "Order?$skiptoken=-9"), }; if (!hasModel) { orderFeed.SetSerializationInfo(new ODataFeedAndEntrySerializationInfo() { NavigationSourceName = "Order", NavigationSourceEntityTypeName = NameSpace + "Order" }); } odataWriter.WriteStart(orderFeed); var orderEntry1 = WritePayloadHelper.CreateOrderEntry1(hasModel); odataWriter.WriteStart(orderEntry1); var orderEntry1Navigation1 = new ODataNavigationLink() { Name = "Customer", IsCollection = false, Url = new Uri(this.ServiceUri + "Order(-10)/Customer") }; odataWriter.WriteStart(orderEntry1Navigation1); odataWriter.WriteEnd(); var orderEntry1Navigation2 = new ODataNavigationLink() { Name = "Login", IsCollection = false, Url = new Uri(this.ServiceUri + "Order(-10)/Login") }; odataWriter.WriteStart(orderEntry1Navigation2); odataWriter.WriteEnd(); // Finish writing orderEntry1. odataWriter.WriteEnd(); var orderEntry2 = WritePayloadHelper.CreateOrderEntry2(hasModel); odataWriter.WriteStart(orderEntry2); var orderEntry2Navigation1 = new ODataNavigationLink() { Name = "Customer", IsCollection = false, Url = new Uri(this.ServiceUri + "Order(-9)/Customer") }; odataWriter.WriteStart(orderEntry2Navigation1); odataWriter.WriteEnd(); var orderEntry2Navigation2 = new ODataNavigationLink() { Name = "Login", IsCollection = false, Url = new Uri(this.ServiceUri + "Order(-9)/Login") }; odataWriter.WriteStart(orderEntry2Navigation2); odataWriter.WriteEnd(); // Finish writing orderEntry2. odataWriter.WriteEnd(); // Finish writing the feed. odataWriter.WriteEnd(); // Some very basic verification for the payload. bool verifyFeedCalled = false; bool verifyEntryCalled = false; bool verifyNavigationCalled = false; Action <ODataFeed> verifyFeed = (feed) => { Assert.IsNotNull(feed.NextPageLink, "feed.NextPageLink"); verifyFeedCalled = true; }; Action <ODataEntry> verifyEntry = (entry) => { Assert.AreEqual(3, entry.Properties.Count(), "entry.Properties.Count"); verifyEntryCalled = true; }; Action <ODataNavigationLink> verifyNavigation = (navigation) => { Assert.IsTrue(navigation.Name == "Customer" || navigation.Name == "Login", "navigation.Name"); verifyNavigationCalled = true; }; Stream stream = responseMessage.GetStream(); if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata)) { stream.Seek(0, SeekOrigin.Begin); WritePayloadHelper.ReadAndVerifyFeedEntryMessage(true, responseMessage, WritePayloadHelper.OrderSet, WritePayloadHelper.OrderType, verifyFeed, verifyEntry, verifyNavigation); Assert.IsTrue(verifyFeedCalled && verifyEntryCalled && verifyNavigationCalled, "Verification action not called."); } return(WritePayloadHelper.ReadStreamContent(stream)); }