예제 #1
0
		public async Task SendFileToContact_SeemsToWork()
		{
			using (var feedback = new DebugFeedbackChannel("Test"))
			{
				using (var initializing = feedback.BeginSubOperation("InitializeData"))
					await TestData.Current.BringToInitialState(initializing);

				using (var sending = feedback.BeginSubOperation("Sending"))
				{
					var client = new MegaClient(TestData.Current.Email1, TestData.Current.Password1);

					await client.AddContactAsync(TestData.Current.Email2, sending);
					var contactList = await client.GetContactListSnapshotAsync(sending);
					Assert.AreEqual(1, contactList.Count);
					var account2 = contactList.Single();

					var filesystem = await client.GetFilesystemSnapshotAsync(sending);

					var file = TestData.SmallFile.Find(filesystem);

					await file.SendToContactAsync(account2, sending);
				}

				using (var receiving = feedback.BeginSubOperation("Receiving"))
				{
					var client = new MegaClient(TestData.Current.Email2, TestData.Current.Password2);

					var filesystem = await client.GetFilesystemSnapshotAsync(receiving);

					var file = TestData.SmallFile.Find(filesystem);

					Assert.IsNotNull(file);

					var target = Path.GetTempFileName();

					// Verify contents.
					try
					{
						Debug.WriteLine("Temporary local file: " + target);

						await file.DownloadContentsAsync(target, feedback);

						using (var expectedContents = TestData.SmallFile.Open())
						using (var contents = File.OpenRead(target))
							TestHelper.AssertStreamsAreEqual(expectedContents, contents);
					}
					finally
					{
						File.Delete(target);
					}
				}
			}
		}
예제 #2
0
		/// <summary>
		/// Downloads the specified test file and verifies its contents.
		/// </summary>
		private async Task TestFileDownload(TestData.TestFile testFile)
		{
			var target = Path.GetTempFileName();

			try
			{
				Debug.WriteLine("Temporary local file: " + target);

				using (var feedback = new DebugFeedbackChannel("Test"))
				{
					using (var initializing = feedback.BeginSubOperation("InitializeData"))
						await TestData.Current.BringToInitialState(initializing);

					var client = new MegaClient(TestData.Current.Email1, TestData.Current.Password1);
					var filesystem = await client.GetFilesystemSnapshotAsync(feedback);

					var file = testFile.TryFind(filesystem);

					if (file == null)
						Assert.Fail("Could not find expected file to download: " + testFile.Name);

					await file.DownloadContentsAsync(target, feedback);

					using (var expectedContents = testFile.Open())
					using (var contents = File.OpenRead(target))
						TestHelper.AssertStreamsAreEqual(expectedContents, contents);
				}
			}
			finally
			{
				File.Delete(target);
			}
		}
예제 #3
0
		public async Task AccountListLoad_DoesNotCauseApocalypse()
		{
			using (var feedback = new DebugFeedbackChannel("Test"))
			{
				using (var initializing = feedback.BeginSubOperation("InitializeData"))
					await TestData.Current.BringToInitialState(initializing);

				var client = new MegaClient(TestData.Current.Email1, TestData.Current.Password1);
				await client.EnsureConnectedAsync(feedback);
				await client.GetContactListSnapshotAsync(feedback);
			}
		}
예제 #4
0
		public async Task TestAccountInitialization_IsSuccessful()
		{
			using (var connecting = new DebugFeedbackChannel("Test"))
			{
				using (var initializing = connecting.BeginSubOperation("InitializeData"))
				{
					await TestData.Current.BringToInitialState(initializing);

					var client = new MegaClient(TestData.Current.Email1, TestData.Current.Password1);
					await client.EnsureConnectedAsync(connecting);
				}
			}
		}
예제 #5
0
		public async Task SendFolderToContact_SeemsToWork()
		{
			using (var feedback = new DebugFeedbackChannel("Test"))
			{
				using (var initializing = feedback.BeginSubOperation("InitializeData"))
					await TestData.Current.BringToInitialState(initializing);

				using (var sending = feedback.BeginSubOperation("Sending"))
				{
					var client = new MegaClient(TestData.Current.Email1, TestData.Current.Password1);

					await client.AddContactAsync(TestData.Current.Email2, sending);
					var contactList = await client.GetContactListSnapshotAsync(sending);
					Assert.AreEqual(1, contactList.Count);
					var account2 = contactList.Single();

					var filesystem = await client.GetFilesystemSnapshotAsync(sending);

					var folder = filesystem.Files.Children
						.Single(i => i.Type == ItemType.Folder && i.Name == "Folder1");

					await folder.SendToContactAsync(account2, sending);
				}

				using (var receiving = feedback.BeginSubOperation("Receiving"))
				{
					var client = new MegaClient(TestData.Current.Email2, TestData.Current.Password2);

					var filesystem = await client.GetFilesystemSnapshotAsync(receiving);

					var file = TestData.SmallFile.Find(filesystem);

					Assert.IsNotNull(file);
					Assert.IsNotNull(file.Parent);
					Assert.AreEqual("Folder1", file.Parent.Name);
				}
			}
		}
예제 #6
0
		public async Task CancelingDownload_SeemsToWork()
		{
			var target = Path.GetTempFileName();

			try
			{
				Debug.WriteLine("Temporary local file: " + target);

				using (var feedback = new DebugFeedbackChannel("Test"))
				{
					using (var initializing = feedback.BeginSubOperation("InitializeData"))
						await TestData.Current.BringToInitialState(initializing);

					var client = new MegaClient(TestData.Current.Email1, TestData.Current.Password1);
					var filesystem = await client.GetFilesystemSnapshotAsync(feedback);

					var file = TestData.BigFile.TryFind(filesystem);

					if (file == null)
						Assert.Fail("Could not find the test file to download.");

					CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromSeconds(3));

					await file.DownloadContentsAsync(target, feedback, cts.Token);
				}
			}
			finally
			{
				File.Delete(target);
			}
		}