Пример #1
0
        /// <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
        }
Пример #2
0
        /// <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();
        }
Пример #4
0
        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);
        }