using System; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.Contracts; using System.Linq; using System.Text; using NUnit.Framework; using Pithos.Interfaces; using System.IO; namespace Pithos.Network.Test { [TestFixture] class FolderTests { [SetUp] public void Setup() { Directory.CreateDirectory("RootFolder"); File.WriteAllText(@"RootFolder\TestFile1.txt", "This is a test file"); Directory.CreateDirectory(@"RootFolder\Folder1"); File.WriteAllText(@"RootFolder\Folder1\TestFile1.txt", "This is a test file"); Directory.CreateDirectory(@"RootFolder\Folder1\Subfolder1"); File.WriteAllText(@"RootFolder\Folder1\Subfolder1\TestFile1.txt", "This is a test file"); Directory.CreateDirectory(@"RootFolder\Folder2"); File.WriteAllText(@"RootFolder\Folder2\TestFile1.txt", "This is a test file"); } [TearDown] public void TearDown() { Directory.Delete("RootFolder",true); } [Test] public void TestCreateSingleFolder([Values(true, false)]bool usePithos) { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey){ UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Pithos"); client.CreateFolder(null, "Pithos", "RootFolder"); Assert.IsTrue(client.ObjectExists(null, "Pithos","RootFolder")); var info = client.GetObjectInfo(null, "Pithos", "RootFolder"); Assert.AreEqual(@"application/directory",info.Content_Type); } [Test] public void TestCreateSubFolders([Values(true, false)]bool usePithos) { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Pithos"); client.CreateFolder(null, "Pithos", "RootFolder"); client.CreateFolder(null, "Pithos", "RootFolder/Folder1"); client.PutObject(null, "Pithos","RootFolder/Folder1/test.txt","test.txt"); Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1")); var folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1"); Assert.AreEqual(@"application/directory",folderInfo.Content_Type); Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1/test.txt")); var fileInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1/test.txt"); Assert.AreEqual(@"application/octet-stream", fileInfo.Content_Type); } [Test] public void TestDeleteSubFolders([Values(true, false)]bool usePithos) { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Pithos"); client.CreateFolder(null, "Pithos", "RootFolder"); client.CreateFolder(null, "Pithos", "RootFolder/Folder1"); var localInfo = new FileInfo("test.txt"); client.PutObject(null, "Pithos","RootFolder/Folder1/test.txt","test.txt"); client.DeleteObject(null, "pithos", "RootFolder/Folder1"); Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1")); var folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1"); Assert.AreEqual(@"application/directory",folderInfo.Content_Type); Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1/test.txt")); var fileInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1/test.txt"); Assert.AreEqual(@"application/octet-stream", fileInfo.Content_Type); } [Test] public void ListFolderContents([Values(true, false)]bool usePithos) { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Pithos"); client.CreateFolder(null, "Pithos", "RootFolder3"); client.CreateFolder(null, "Pithos", "RootFolder3/Folder1"); client.PutObject(null, "Pithos", "RootFolder3/test1.txt", "test.txt"); client.PutObject(null, "Pithos", "RootFolder3/test2.txt", "test.txt"); client.PutObject(null, "Pithos", "RootFolder3/Folder1/test2.txt", "test.txt"); var files=client.ListObjects("Pithos", "RootFolder3"); Assert.AreEqual(3,files.Count,"Unexpected number of root items"); files = client.ListObjects("Pithos", "RootFolder3/Folder1"); Assert.AreEqual(1, files.Count, "Unexpected number of subfolder items"); } [Test] public void TestCreateSubFoldersInOneStep([Values(true, false)]bool usePithos) { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Pithos"); client.CreateFolder(null, "Pithos", "RootFolder2/Folder1"); Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder2/Folder1")); var folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder2/Folder1"); Assert.AreEqual(@"application/directory",folderInfo.Content_Type); Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder2")); folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder2"); Assert.AreEqual(@"application/directory", folderInfo.Content_Type); Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder2/Folder1/test.txt")); var fileInfo = client.GetObjectInfo(null, "Pithos", "RootFolder2/Folder1/test.txt"); Assert.AreEqual(@"application/octet-stream", fileInfo.Content_Type); } } }