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]); } }
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))); }
private FrameProtocolBuilder BuildMessageJSONFrame(GetChunkedFileRequestMessage getChunkedFileRequestMessage) { FrameProtocolBuilder builder = new FrameProtocolBuilder(); builder.AddFrame(getChunkedFileRequestMessage); return(builder); }
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); }
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); }
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()); }