2 using System.Collections.Generic;
3 using System.Diagnostics;
4 using System.Diagnostics.Contracts;
8 using Pithos.Interfaces;
11 namespace Pithos.Network.Test
16 private string _apiKey = "9d3cb7b231e96f72ebe96af1c6cd5112";
17 private string _userName = "pkanavos";
18 private bool _usePithos = false;
22 public void TestAuthenticate()
24 ICloudClient client = new CloudFilesClient{UsePithos=_usePithos};
25 client.Authenticate(_userName, _apiKey);
26 string storageUrl=client.StorageUrl;
27 string token = client.Token;
29 Assert.IsNotEmpty(storageUrl, "Storage Url was empty");
30 Assert.IsNotEmpty(token, "Token was empty");
34 public void TestListContainers()
36 ICloudClient client = new CloudFilesClient { UsePithos = _usePithos };
37 client.Authenticate(_userName, _apiKey);
39 IList<ContainerInfo> containers=client.ListContainers();
40 Assert.IsTrue(containers.Count()>1);
44 public void TestListObjects()
46 ICloudClient client = new CloudFilesClient();
47 client.Authenticate("", "");
49 IList<ObjectInfo> objects=client.ListObjects("PITHOS");
50 Assert.IsTrue(objects.Count()>=1);
54 public void TestContainerExists()
56 ICloudClient client = new CloudFilesClient();
57 client.Authenticate("", "");
59 bool dnzExists=client.ContainerExists("DotNetZone");
60 bool pithosExists = client.ContainerExists("PITHOS");
61 bool mooExists = client.ContainerExists("Moo");
62 Assert.IsTrue(dnzExists);
63 Assert.IsTrue(pithosExists);
64 Assert.IsFalse(mooExists);
68 public void TestGetContainerInfo()
70 ICloudClient client = new CloudFilesClient();
71 client.Authenticate("", "");
73 var dnzInfo =client.GetContainerInfo("DotNetZone");
74 Assert.AreNotEqual(ContainerInfo.Empty, dnzInfo);
76 var pithosInfo = client.GetContainerInfo("PITHOS");
77 Assert.AreNotEqual(ContainerInfo.Empty, pithosInfo);
79 var mooInfo = client.GetContainerInfo("moo");
80 Assert.AreEqual(ContainerInfo.Empty, mooInfo);
84 public void TestCreateContainer()
86 Assert.DoesNotThrow(() =>
88 ICloudClient client = new CloudFilesClient{UsePithos=_usePithos};
89 client.Authenticate(_userName, _apiKey);
91 client.CreateContainer("Shares2");
92 Assert.IsTrue(client.ContainerExists("Shares2"));
93 client.DeleteContainer("Shares2");
95 client.CreateContainer("Shares");
96 Assert.IsTrue(client.ContainerExists("Shares"));
97 client.CreateContainer("DotNetZone");
98 Assert.IsTrue(client.ContainerExists("DotNetZone"));
103 public void TestGetObject()
105 Assert.DoesNotThrow(() =>
107 ICloudClient client = new CloudFilesClient();
108 client.Authenticate("", "");
110 client.CreateContainer("Shares");
111 Assert.IsTrue(client.ContainerExists("Shares"));
112 using (var stream = client.GetObject("DotNetZone", "OData and WCF Data Services.pptx"))
113 using(var file=File.Create(@"e:\test.pptx",4096,FileOptions.DeleteOnClose))
116 Assert.IsTrue(File.Exists(@"e:\test.pptx"));
124 public void TestPutObject()
126 Assert.DoesNotThrow(() =>
128 ICloudClient client = new CloudFilesClient();
129 client.Authenticate("", "");
131 client.CreateContainer("Shares");
132 Assert.IsTrue(client.ContainerExists("Shares"));
134 var filePath = @"e:\DeveloperGuide.pdf";
135 FileInfo info=new FileInfo(filePath);
137 using (var file = File.OpenRead(filePath))
139 client.PutObject("Shares",info.Name, file,info.Length );
147 public void TestGetObjectMetadata()
149 Assert.DoesNotThrow(() =>
151 ICloudClient client = new CloudFilesClient();
152 client.Authenticate("", "");
154 var filePath = "DeveloperGuide.pdf";
155 var meta=client.GetObjectInfo("Shares", filePath);
156 Assert.IsNotEmpty(meta.Hash);
157 Assert.AreEqual(meta.Name,filePath);
164 public void TestDeleteObject()
166 Assert.DoesNotThrow(() =>
168 ICloudClient client = new CloudFilesClient();
169 client.Authenticate("", "");
171 client.CreateContainer("Shares");
172 Assert.IsTrue(client.ContainerExists("Shares"),"Container Exists");
174 var filePath = @"e:\DeveloperGuide.pdf";
175 FileInfo info=new FileInfo(filePath);
177 using (var file = File.OpenRead(filePath))
179 client.PutObject("Shares",info.Name, file,info.Length );
182 Assert.IsTrue(client.ObjectExists("Shares",info.Name),"File Created");
184 client.DeleteObject("Shares",info.Name);
185 Assert.IsFalse(client.ObjectExists("Shares", info.Name),"File Deleted");
195 public void TestFilesWithSpaces()
197 ICloudClient client = new CloudFilesClient();
198 client.Authenticate("", "");
200 var testName = "Name with spaces.txt";
202 using(var stream=new MemoryStream())
203 using (var writer = new StreamWriter(stream))
206 writer.WriteLine("This is a test line");
209 client.PutObject("PITHOS",testName,stream,stream.Length);
212 Assert.DoesNotThrow(() =>
214 var info = client.GetObjectInfo("PITHOS", testName);
215 Assert.AreEqual(testName, info.Name);
217 Assert.DoesNotThrow(() =>
219 client.DeleteObject("PITHOS", testName);
224 public void TestMoveObject()
226 Assert.DoesNotThrow(() =>
228 ICloudClient client = new CloudFilesClient();
229 client.Authenticate("", "");
231 client.CreateContainer("Shares");
232 Assert.IsTrue(client.ContainerExists("Shares"),"Container Exists");
234 var filePath = @"e:\DeveloperGuide.pdf";
235 FileInfo info=new FileInfo(filePath);
237 using (var file = File.OpenRead(filePath))
239 client.PutObject("Shares",info.Name, file,info.Length );
242 Assert.IsTrue(client.ObjectExists("Shares",info.Name),"File Created");
244 client.MoveObject("Shares",info.Name,"smoo.pdf");
245 Assert.IsFalse(client.ObjectExists("Shares", info.Name),"Original File Deleted");
246 Assert.IsTrue(client.ObjectExists("Shares", "smoo.pdf"), "Target File Created");
253 public void TestGetObjectMissing()
260 public void TestAuthenticateMissingArguments()
262 Assert.Catch<ArgumentNullException>(() =>
264 ICloudClient client = new CloudFilesClient();
265 client.Authenticate("someUser",null);
268 Assert.Catch<ArgumentNullException>(() =>
270 ICloudClient client = new CloudFilesClient();
271 client.Authenticate(null,"someKey");