コード例 #1
0
        public void SerializeGetChunkedFileRequest()
        {
            GetChunkedFileRequestMessage request = new GetChunkedFileRequestMessage();

            request.ContentPropertiesToReturn = new string[] { "prop1", "lastocssave" };
            ContentFilter filter = new ContentFilter();

            filter.ChunkingScheme     = ChunkingScheme.FullFile.ToString();
            filter.StreamId           = "MainContent";
            filter.ChunksToReturn     = ChunksToReturn.All.ToString();
            filter.AlreadyKnownChunks = new string[] { "ChunkId1", "ChunkId2" };
            request.ContentFilters    = new ContentFilter[] { filter };

            using (MemoryStream ms = new MemoryStream())
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(GetChunkedFileRequestMessage));
                ser.WriteObject(ms, request);
                ms.Seek(0, SeekOrigin.Begin);
                GetChunkedFileRequestMessage requestNew = (GetChunkedFileRequestMessage)ser.ReadObject(ms);

                // Assert
                Assert.AreEqual(2, requestNew.ContentPropertiesToReturn.Length);
                Assert.AreEqual(request.ContentPropertiesToReturn[0], requestNew.ContentPropertiesToReturn[0]);
                Assert.AreEqual(request.ContentPropertiesToReturn[1], requestNew.ContentPropertiesToReturn[1]);

                Assert.AreEqual(request.ToString(), requestNew.ToString());
                Assert.AreEqual(1, requestNew.ContentFilters.Length);
                Assert.AreEqual(request.ContentFilters[0].ChunkingScheme, requestNew.ContentFilters[0].ChunkingScheme);
                Assert.AreEqual(request.ContentFilters[0].StreamId, requestNew.ContentFilters[0].StreamId);
                Assert.AreEqual(request.ContentFilters[0].ChunksToReturn, requestNew.ContentFilters[0].ChunksToReturn);
                Assert.AreEqual(request.ContentFilters[0].AlreadyKnownChunks.Length, requestNew.ContentFilters[0].AlreadyKnownChunks.Length);
                Assert.AreEqual(request.ContentFilters[0].AlreadyKnownChunks[0], requestNew.ContentFilters[0].AlreadyKnownChunks[0]);
                Assert.AreEqual(request.ContentFilters[0].AlreadyKnownChunks[1], requestNew.ContentFilters[0].AlreadyKnownChunks[1]);
            }
        }
コード例 #2
0
        public void FrameProtocol_RoundTripOfMultiFrames_Success()
        {
            // Arrange
            GetChunkedFileRequestMessage request = CreateGetChunkedFileRequestMessage();

            // Act
            // Build a request stream from a message frame and a chunk frame
            var   builder = new FrameProtocolBuilder();
            IBlob blob1   = new MemoryBlob(Encoding.UTF8.GetBytes("Blob1"));
            IBlob blob2   = new MemoryBlob(Encoding.UTF8.GetBytes("Blob2"));

            builder.AddFrame(request);
            builder.AddFrame(blob1);
            builder.AddFrame(blob2);
            var inputStream = builder.CreateStream();

            // Parse the request stream into multiple WopiFrame
            List <Frame> frameList = FrameProtocolParser.ParseStream(inputStream);

            // Assert
            Assert.AreEqual(3, frameList.Count);
            Assert.IsNotNull(frameList[0].Payload);
            Assert.IsNull(frameList[0].ExtendedHeader);
            Assert.IsNotNull(frameList[1].Payload);
            Assert.IsNotNull(frameList[1].ExtendedHeader);
            Assert.AreEqual(blob1.BlobId, System.Convert.ToBase64String(frameList[1].ExtendedHeader));
            var spookyHash = new SpookyHash();

            Assert.AreEqual(blob1.BlobId, spookyHash.CalculateHash(frameList[1].Payload));
            Assert.IsNotNull(frameList[2].Payload);
            Assert.IsNotNull(frameList[2].ExtendedHeader);
            Assert.AreEqual(blob2.BlobId, System.Convert.ToBase64String(frameList[2].ExtendedHeader));
            Assert.AreEqual(blob2.BlobId, spookyHash.CalculateHash(new MemoryStream(frameList[2].Payload)));
        }
コード例 #3
0
        private FrameProtocolBuilder BuildMessageJSONFrame(GetChunkedFileRequestMessage getChunkedFileRequestMessage)
        {
            FrameProtocolBuilder builder = new FrameProtocolBuilder();

            builder.AddFrame(getChunkedFileRequestMessage);

            return(builder);
        }
コード例 #4
0
        protected override MemoryStream GetRequestContent(IResourceManager resourceManager)
        {
            ValidateBodyParameters();

            GetChunkedFileRequestMessage GetChunkedFileRequestMessage = BuildGetChunkedFileRequest(resourceManager);

            FrameProtocolBuilder builder = BuildMessageJSONFrame(GetChunkedFileRequestMessage);
            // builder.CreateStream() will add EndFrame and create stream
            MemoryStream outputMemoryStream = (MemoryStream)builder.CreateStream();

            return(outputMemoryStream);
        }
コード例 #5
0
        private GetChunkedFileRequestMessage CreateGetChunkedFileRequestMessage()
        {
            GetChunkedFileRequestMessage request = new GetChunkedFileRequestMessage();

            request.ContentPropertiesToReturn = new string[] { "prop1", "lastocssave" };
            ContentFilter filter = new ContentFilter();

            filter.ChunkingScheme     = ChunkingScheme.FullFile.ToString();
            filter.StreamId           = "MainContent";
            filter.ChunksToReturn     = ChunksToReturn.All.ToString();
            filter.AlreadyKnownChunks = new string[] { "ChunkId1" };
            request.ContentFilters    = new ContentFilter[] { filter };

            return(request);
        }
コード例 #6
0
        public void FrameProtocol_RoundTripOfOneMessageFrame_Success()
        {
            // Arrange
            GetChunkedFileRequestMessage request = CreateGetChunkedFileRequestMessage();

            // Act
            // Build a request stream from GetChunkedFile message frame
            FrameProtocolBuilder builder = new FrameProtocolBuilder();

            builder.AddFrame(request);
            var inputStream = builder.CreateStream();

            // Parse the request stream into WopiFrame
            List <Frame> frameList = FrameProtocolParser.ParseStream(inputStream);

            // Assert
            Assert.AreEqual(1, frameList.Count);
            Assert.IsNotNull(frameList[0].Payload);
            Assert.IsNull(frameList[0].ExtendedHeader);
            GetChunkedFileRequestMessage requestDecoded = JsonMessageSerializer.Instance.DeSerialize <GetChunkedFileRequestMessage>(new MemoryStream(frameList[0].Payload));

            Assert.AreEqual(request.ToString(), requestDecoded.ToString());
        }