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 NetworkOpsTest { [Test] public void TestAuthenticate([Values(true,false)]bool usePithos) { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); Uri storageUrl=client.StorageUrl; string token = client.Token; Assert.IsNotNull(storageUrl, "Storage Url was empty"); Assert.IsNotEmpty(token, "Token was empty"); } [Test] public void TestListContainers([Values(true, false)]bool usePithos) { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; var accountInfo = client.Authenticate(); client.CreateContainer(null, "PITHOS"); IList containers=client.ListContainers(account); Assert.IsTrue(containers.Count()>1); } [Test] public void TestListObjects([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.PutObject(null, "PITHOS","devguide.pdf","devguide.pdf"); IList objects=client.ListObjects(null, "PITHOS"); Assert.IsTrue(objects.Count()>=1); } [Test] public void TestContainerExists([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, "TestContainer"); bool dnzExists=client.ContainerExists(null, "TestContainer"); bool mooExists = client.ContainerExists(null, "Moo"); Assert.IsTrue(dnzExists); Assert.IsFalse(mooExists); } [Test] public void TestGetContainerInfo([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.CreateContainer(null, "DotNetZone"); var dnzInfo =client.GetContainerInfo(null, "DotNetZone"); Assert.AreNotEqual(ContainerInfo.Empty, dnzInfo,"Expected DotNetZone container not found"); var pithosInfo = client.GetContainerInfo(null, "PITHOS"); Assert.AreNotEqual(ContainerInfo.Empty, pithosInfo,"Expected PITHOS container not found"); var mooInfo = client.GetContainerInfo(null, "moo"); Assert.AreEqual(ContainerInfo.Empty, mooInfo); } [Test] public void TestCreateContainer([Values(true, false)]bool usePithos) { Assert.DoesNotThrow(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Shares2"); Assert.IsTrue(client.ContainerExists(null, "Shares2")); client.DeleteContainer(null, "Shares2"); client.CreateContainer(null, "Shares"); Assert.IsTrue(client.ContainerExists(null, "Shares")); client.CreateContainer(null, "DotNetZone"); Assert.IsTrue(client.ContainerExists(null, "DotNetZone")); }); } [Test] public void TestGetObject([Values(true, false)]bool usePithos) { Assert.DoesNotThrow(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); //Prepare test file client.CreateContainer(null, "Shares"); string testFileName = "test.txt"; var info = new FileInfo(testFileName); client.PutObject(null, "Shares",testFileName,testFileName); string downloadFile = "test2.txt"; client.GetObject(null, "Shares", testFileName, downloadFile) .Wait(); Assert.IsTrue(File.Exists(downloadFile)); }); } [Test] public void TestPutObject([Values(true, false)]bool usePithos) { Assert.DoesNotThrow(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Shares"); Assert.IsTrue(client.ContainerExists(null, "Shares")); var filePath = "devguide.pdf"; FileInfo info = new FileInfo(filePath); client.PutObject(null, "Shares", info.Name, filePath); }); } [Test] public void TestGetObjectMetadata([Values(true, false)]bool usePithos) { Assert.DoesNotThrow(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Shares"); Assert.IsTrue(client.ContainerExists(null, "Shares")); var filePath = "devguide.pdf"; FileInfo info = new FileInfo(filePath); client.PutObject(null, "Shares", info.Name, filePath); var meta=client.GetObjectInfo(null, "Shares", filePath); Assert.IsNotEmpty(meta.Hash); Assert.AreEqual(meta.Name,filePath); }); } [Test] public void TestDeleteObject([Values(true, false)]bool usePithos) { Assert.DoesNotThrow(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Shares"); Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists"); var filePath = "devguide.pdf"; FileInfo info=new FileInfo(filePath); client.PutObject(null, "Shares",info.Name, filePath); Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created"); client.DeleteObject(null, "Shares/devguide.pdf",info.Name); }); } [Test] public void TestDeleteContainer([Values(true, false)]bool usePithos) { Assert.DoesNotThrow(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Shares"); Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists"); var filePath = "devguide.pdf"; FileInfo info=new FileInfo(filePath); client.PutObject(null, "Shares",info.Name, filePath ); Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created"); client.DeleteObject(null, "Shares",info.Name); Assert.IsFalse(client.ObjectExists(null, "Shares", info.Name),"Container Deleted"); client.DeleteObject(null, "Moo",info.Name); Assert.IsFalse(client.ObjectExists(null, "Moo", info.Name),"Container Deleted"); }); } /* [Test] public void TestFilesWithSpaces([Values(true, false)]bool usePithos) { ICloudClient client = new CloudFilesClient { UsePithos = usePithos }; client.Authenticate(_userName, _apiKey); var testName = "Name with spaces.txt"; using(var stream=new MemoryStream()) using (var writer = new File.(stream)) { writer.WriteLine("This is a test line"); stream.Seek(0, 0); client.PutObject("PITHOS",testName,stream,stream.Length); } Assert.DoesNotThrow(() => { var info = client.GetObjectInfo("PITHOS", testName); Assert.AreEqual(testName, info.Name); }); Assert.DoesNotThrow(() => { client.DeleteObject("PITHOS", testName); }); }*/ [Test] public void TestMoveObject([Values(true, false)]bool usePithos) { Assert.DoesNotThrow(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); client.CreateContainer(null, "Shares"); Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists"); var filePath = "devguide.pdf"; FileInfo info=new FileInfo(filePath); client.PutObject(null, "Shares",info.Name, filePath); Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created"); client.MoveObject(null, "Shares",info.Name,"Shares","smoo.pdf"); Assert.IsFalse(client.ObjectExists(null, "Shares", info.Name),"Original File Deleted"); Assert.IsTrue(client.ObjectExists(null, "Shares", "smoo.pdf"), "Target File Created"); }); } [Test] public void TestGetObjectMissing() { } [Test] public void TestAuthenticateMissingArguments([Values(true, false)]bool usePithos) { Assert.Catch(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); }); Assert.Catch(() => { var account = "890329@vho.grnet.gr"; var apiKey = "24989dce4e0fcb072f8cb60c8922be19"; var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos }; client.Authenticate(); }); } } }