/// <summary> /// Constructor /// </summary> /// <param name="stream">The stream to use.</param> /// <param name="close">Should the stream be closed before SaveChanges returns.</param> /// <param name="args">Additional arguments to apply to the request before sending it.</param> internal DataServiceSaveStream(Stream stream, bool close, DataServiceRequestArgs args) { Debug.Assert(stream != null, "stream must not be null."); this.stream = stream; this.close = close; this.args = args; #if DEBUG this.deserializing = false; #endif }
public void HeadersInArgsShouldNotBeModifiedDuringGetReadStream() { // Regression coverage for: SendingRequest cannot set Accept-Charset header for SetSaveStream if reusing request arg new TransportLayerThatAlwaysSendsBack204(this.testSubject); var entity = new TestEntityType(); var descriptor = this.AttachAndGetDescriptor(entity); descriptor.ReadStreamUri = new Uri("http://fakeReadStreamUri.org/"); var args = new DataServiceRequestArgs(); this.testSubject.GetReadStream(entity, args); args.Headers.Should().BeEmpty(); }
IEnumerable<Tuple<Action<DataServiceContext, SaveChangesOptions>, List<Version>, string>> GetNamedStreamTests() { // attach and save named stream, expect failure yield return new Tuple<Action<DataServiceContext, SaveChangesOptions>, List<Version>, string>( (ctx, saveChangeOption) => { PeopleManager andy = new PeopleManager { ID = 2 }; ctx.AttachTo("People", andy); ctx.SetSaveStream(andy, "Photo", new MemoryStream(), true, "abc/pqr"); ctx.SaveChanges(saveChangeOption); }, new List<Version>() { V4 }, "The stream named 'Photo' cannot be modified because it does not have an edit-media link. Make sure that the stream name is correct and that an edit-media link for this stream is included in the entry element in the response."); // attach and load named stream, expect failure yield return new Tuple<Action<DataServiceContext, SaveChangesOptions>, List<Version>, string>( (ctx, saveChangeOption) => { PeopleManager andy = new PeopleManager { ID = 2 }; ctx.AttachTo("People", andy); ctx.GetReadStream(andy, "Photo", new DataServiceRequestArgs()); ctx.SaveChanges(saveChangeOption); }, new List<Version>() { V4 }, "The entity does not have a stream named 'Photo'. Make sure that the name of the stream is correct.\r\nParameter name: name"); // retrive entity and save/load named stream yield return new Tuple<Action<DataServiceContext, SaveChangesOptions>, List<Version>, string>( (ctx, saveChangeOption) => { var query = ctx.CreateQuery<Person>("People").Where(p => p.ID == 3); Employee pratik = (Employee)query.Single(); ctx.SetSaveStream(pratik, "Photo", new MemoryStream(new byte[] { 1,2,3}), true, "abc/pqr"); ctx.SaveChanges(saveChangeOption); DataServiceRequestArgs arg = new DataServiceRequestArgs() { AcceptContentType = "abc/pqr" }; var response = ctx.GetReadStream(pratik, "Photo", new DataServiceRequestArgs() { AcceptContentType = "abc/pqr" }); byte[] buffer = new byte[4]; Assert.AreEqual(3, response.Stream.Read(buffer, 0, 4)); Assert.IsTrue(buffer[0] == 1 && buffer[1] == 2 && buffer[2] == 3); }, new List<Version>() { V4, V4, V4 }, null); }