public void ResourceLoadProvider_GetResourceContents_Given_ResourceFilePathIsExist_ExpectNonEmptyResourceContents()
        {
            CustomContainer.Register(new Mock <IWarewolfPerformanceCounterLocater>().Object);
            var workspaceResources = new ConcurrentDictionary <Guid, List <IResource> >();
            var id             = GlobalConstants.ServerWorkspaceID;
            var filePath       = "test/new/file-path";
            var data           = "test data message";
            var dataBytes      = Encoding.UTF8.GetBytes(data);
            var frMemoryStream = new MemoryStream();
            var srMemoryStream = new MemoryStream(dataBytes);
            var srStreamReader = new StreamReader(srMemoryStream);

            var fileStreamArgs = new FileStreamArgs
            {
                FileAccess = FileAccess.Read,
                FileShare  = FileShare.Read,
                FileMode   = FileMode.Open,
                FilePath   = filePath,
                IsAsync    = true,
            };

            var mockFileStreamFactory = new Mock <IFileStreamFactory>();

            mockFileStreamFactory.Setup(o => o.New(fileStreamArgs))
            .Returns(frMemoryStream);

            var mockStreamReaderWrapper = new Mock <IStreamReaderWrapper>();

            mockStreamReaderWrapper.Setup(o => o.GetStream(It.IsAny <Stream>()))
            .Returns(srStreamReader);

            var mockStreamReaderFactory = new Mock <IStreamReaderFactory>();

            mockStreamReaderFactory.Setup(o => o.New())
            .Returns(mockStreamReaderWrapper.Object);

            var mockDev2FileWrapper = new Mock <IFile>();

            mockDev2FileWrapper.Setup(o => o.Exists(filePath))
            .Returns(true);

            var mockResource = new Mock <IResource>();

            mockResource.Setup(o => o.FilePath)
            .Returns(filePath);
            var expectedResource = mockResource.Object;

            workspaceResources.GetOrAdd(id, (newId) => new List <IResource> {
                expectedResource
            });
            var serverVersionRepository = new Mock <IServerVersionRepository>().Object;

            var sut = new ResourceLoadProvider(workspaceResources, serverVersionRepository, dev2FileWrapper: mockDev2FileWrapper.Object, fileStreamFactory: mockFileStreamFactory.Object, streamReaderFactory: mockStreamReaderFactory.Object);

            var result = sut.GetResourceContents(expectedResource);

            StringAssert.Contains(result.ToString(), data);
        }
 public Stream New(FileStreamArgs fileStreamArgs) => new FileStream(fileStreamArgs.FilePath, fileStreamArgs.FileMode, fileStreamArgs.FileAccess, fileStreamArgs.FileShare, fileStreamArgs.BufferSize, fileStreamArgs.IsAsync);