public void DownloadFileAsync_FromLink_Succeeds()
        {
            // Arrange
            const string ExpectedResultFile = "Data/SampleFile.jpg";

            var eventTester             = new EventTester <double>();
            IProgress <double> progress = new SyncProgress <double>(eventTester.OnRaised);

            var outputFile = GetTempFileName();

            // Act
            var task   = Context.Client.DownloadFileAsync(new Uri(AuthenticatedTestContext.Inputs.FileLink), outputFile, progress);
            var result = task.Wait(Timeout);

            // Assert
            Assert.True(result);
            Assert.Equal(8, eventTester.Calls);
            AreFileEquivalent(GetAbsoluteFilePath(ExpectedResultFile), outputFile);
        }
        public void DownloadFileAsync_FromLink_Succeeds()
        {
            // Arrange
            const string expectedResultFile = "Data/SampleFile.jpg";

            EventTester <double> eventTester = new EventTester <double>();
            IProgress <double>   progress    = new SyncProgress <double>(eventTester.OnRaised);

            string outputFile = Path.GetTempFileName();

            File.Delete(outputFile);

            // Act
            Task task   = this.context.Client.DownloadFileAsync(new Uri(AuthenticatedTestContext.FileLink), outputFile, progress);
            bool result = task.Wait(this.Timeout);

            // Assert
            Assert.True(result);
            Assert.Equal(8, eventTester.Calls);
            this.AreFileEquivalent(this.GetAbsoluteFilePath(expectedResultFile), outputFile);
        }
        public void DownloadFileAsync_FromNode_Succeeds(long?reportProgressChunkSize, long expectedResult)
        {
            // Arrange
            Context.Options.ReportProgressChunkSize = reportProgressChunkSize.GetValueOrDefault(Context.Options.ReportProgressChunkSize);
            var node = this.GetNode(AuthenticatedTestContext.Inputs.SharedFile.Id);

            var eventTester             = new EventTester <double>();
            IProgress <double> progress = new SyncProgress <double>(eventTester.OnRaised);

            var outputFile = GetTempFileName();

            // Act
            Task task   = Context.Client.DownloadFileAsync(node, outputFile, progress);
            var  result = task.Wait(Timeout);

            // Assert
            Assert.True(result);
            AreFileEquivalent(GetAbsoluteFilePath("Data/SampleFile.jpg"), outputFile);

            Assert.Equal(expectedResult, eventTester.Calls);
        }
        public void UploadStreamAsync_DownloadLink_Succeeds(int dataSize, int expectedProgressionCalls)
        {
            //Arrange
            var data = new byte[dataSize];

            Random.NextBytes(data);

            var parent = GetNode(NodeType.Root);

            using Stream stream = new MemoryStream(data);
            double             previousProgression = 0;
            var                eventTester         = new EventTester <double>();
            IProgress <double> progress            = new SyncProgress <double>(x =>
            {
                if (previousProgression > x)
                {
                    // Reset eventTester (because upload was restarted)
                    eventTester.Reset();
                }

                previousProgression = x;
                eventTester.OnRaised(x);
            });

            // Act
            var task   = Context.Client.UploadAsync(stream, "test", parent, progress);
            var result = task.Wait(Timeout);

            // Assert
            Assert.True(result);
            Assert.NotNull(task.Result);
            Assert.Equal(expectedProgressionCalls, eventTester.Calls);

            var uri = Context.Client.GetDownloadLink(task.Result);

            stream.Position = 0;
            AreStreamsEquivalent(Context.Client.Download(uri), stream);
        }
        public void DownloadFileAsync_FromNode_Succeeds(long?reportProgressChunkSize, long expectedResult)
        {
            // Arrange
            this.context.Options.ReportProgressChunkSize = reportProgressChunkSize.GetValueOrDefault(this.context.Options.ReportProgressChunkSize);
            var node = this.GetNode(((AuthenticatedTestContext)this.context).PermanentFilesNode);

            EventTester <double> eventTester = new EventTester <double>();
            IProgress <double>   progress    = new SyncProgress <double>(eventTester.OnRaised);

            string outputFile = Path.GetTempFileName();

            File.Delete(outputFile);

            // Act
            Task task   = this.context.Client.DownloadFileAsync(node, outputFile, progress);
            bool result = task.Wait(this.Timeout);

            // Assert
            Assert.True(result);
            this.AreFileEquivalent(this.GetAbsoluteFilePath("Data/SampleFile.jpg"), outputFile);

            Assert.Equal(expectedResult, eventTester.Calls);
        }