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";
22 public void TestAuthenticate([Values(true,false)]bool usePithos)
24 ICloudClient client = new CloudFilesClient{UsePithos=usePithos};
25 client.Authenticate(_userName, _apiKey);
26 Uri storageUrl=client.StorageUrl;
27 string token = client.Token;
29 Assert.IsNotNull(storageUrl, "Storage Url was empty");
30 Assert.IsNotEmpty(token, "Token was empty");
34 public void TestListContainers([Values(true, false)]bool usePithos)
36 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
37 client.Authenticate(_userName, _apiKey);
38 client.CreateContainer("PITHOS");
40 IList<ContainerInfo> containers=client.ListContainers();
41 Assert.IsTrue(containers.Count()>1);
45 public void TestListObjects([Values(true, false)]bool usePithos)
47 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
48 client.Authenticate(_userName, _apiKey);
49 client.CreateContainer("PITHOS");
50 var info = new FileInfo("devguide.pdf");
51 client.PutObject("PITHOS","devguide.pdf","devguide.pdf",info.Length);
53 IList<ObjectInfo> objects=client.ListObjects("PITHOS");
54 Assert.IsTrue(objects.Count()>=1);
58 public void TestContainerExists([Values(true, false)]bool usePithos)
60 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
61 client.Authenticate(_userName, _apiKey);
62 client.CreateContainer("TestContainer");
63 bool dnzExists=client.ContainerExists("TestContainer");
65 bool mooExists = client.ContainerExists("Moo");
66 Assert.IsTrue(dnzExists);
68 Assert.IsFalse(mooExists);
72 public void TestGetContainerInfo([Values(true, false)]bool usePithos)
74 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
75 client.Authenticate(_userName, _apiKey);
77 client.CreateContainer("PITHOS");
78 client.CreateContainer("DotNetZone");
80 var dnzInfo =client.GetContainerInfo("DotNetZone");
81 Assert.AreNotEqual(ContainerInfo.Empty, dnzInfo,"Expected DotNetZone container not found");
83 var pithosInfo = client.GetContainerInfo("PITHOS");
84 Assert.AreNotEqual(ContainerInfo.Empty, pithosInfo,"Expected PITHOS container not found");
86 var mooInfo = client.GetContainerInfo("moo");
87 Assert.AreEqual(ContainerInfo.Empty, mooInfo);
91 public void TestCreateContainer([Values(true, false)]bool usePithos)
93 Assert.DoesNotThrow(() =>
95 ICloudClient client = new CloudFilesClient{UsePithos=usePithos};
96 client.Authenticate(_userName, _apiKey);
98 client.CreateContainer("Shares2");
99 Assert.IsTrue(client.ContainerExists("Shares2"));
100 client.DeleteContainer("Shares2");
102 client.CreateContainer("Shares");
103 Assert.IsTrue(client.ContainerExists("Shares"));
104 client.CreateContainer("DotNetZone");
105 Assert.IsTrue(client.ContainerExists("DotNetZone"));
110 public void TestGetObject([Values(true, false)]bool usePithos)
112 Assert.DoesNotThrow(() =>
114 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
115 client.Authenticate(_userName, _apiKey);
117 client.CreateContainer("Shares");
118 string testFileName = "test.txt";
119 var info = new FileInfo(testFileName);
120 client.PutObject("Shares",testFileName,testFileName,info.Length);
123 string downloadFile = "test2.txt";
124 using (var stream = client.GetObject("Shares", testFileName))
125 using (var file = File.Create(downloadFile, 4096, FileOptions.DeleteOnClose))
128 Assert.IsTrue(File.Exists(downloadFile));
136 public void TestPutObject([Values(true, false)]bool usePithos)
138 Assert.DoesNotThrow(() =>
140 ICloudClient client = new CloudFilesClient {UsePithos = usePithos};
141 client.Authenticate(_userName, _apiKey);
143 client.CreateContainer("Shares");
144 Assert.IsTrue(client.ContainerExists("Shares"));
146 var filePath = "devguide.pdf";
147 FileInfo info = new FileInfo(filePath);
150 client.PutObject("Shares", info.Name, filePath, info.Length);
158 public void TestGetObjectMetadata([Values(true, false)]bool usePithos)
160 Assert.DoesNotThrow(() =>
162 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
163 client.Authenticate(_userName, _apiKey);
165 client.CreateContainer("Shares");
166 Assert.IsTrue(client.ContainerExists("Shares"));
168 var filePath = "devguide.pdf";
169 FileInfo info = new FileInfo(filePath);
172 client.PutObject("Shares", info.Name, filePath, info.Length);
177 var meta=client.GetObjectInfo("Shares", filePath);
178 Assert.IsNotEmpty(meta.Hash);
179 Assert.AreEqual(meta.Name,filePath);
186 public void TestDeleteObject([Values(true, false)]bool usePithos)
188 Assert.DoesNotThrow(() =>
190 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
191 client.Authenticate(_userName, _apiKey);
193 client.CreateContainer("Shares");
194 Assert.IsTrue(client.ContainerExists("Shares"),"Container Exists");
196 var filePath = "devguide.pdf";
197 FileInfo info=new FileInfo(filePath);
200 client.PutObject("Shares",info.Name, filePath,info.Length );
203 Assert.IsTrue(client.ObjectExists("Shares",info.Name),"File Created");
205 client.DeleteObject("Shares/devguide.pdf",info.Name);
212 public void TestDeleteContainer([Values(true, false)]bool usePithos)
214 Assert.DoesNotThrow(() =>
216 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
217 client.Authenticate(_userName, _apiKey);
219 client.CreateContainer("Shares");
220 Assert.IsTrue(client.ContainerExists("Shares"),"Container Exists");
222 var filePath = "devguide.pdf";
223 FileInfo info=new FileInfo(filePath);
226 client.PutObject("Shares",info.Name, filePath,info.Length );
229 Assert.IsTrue(client.ObjectExists("Shares",info.Name),"File Created");
231 client.DeleteObject("Shares",info.Name);
232 Assert.IsFalse(client.ObjectExists("Shares", info.Name),"Container Deleted");
234 client.DeleteObject("Moo",info.Name);
235 Assert.IsFalse(client.ObjectExists("Moo", info.Name),"Container Deleted");
242 public void TestFilesWithSpaces([Values(true, false)]bool usePithos)
244 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
245 client.Authenticate(_userName, _apiKey);
247 var testName = "Name with spaces.txt";
249 using(var stream=new MemoryStream())
250 using (var writer = new File.(stream))
253 writer.WriteLine("This is a test line");
256 client.PutObject("PITHOS",testName,stream,stream.Length);
259 Assert.DoesNotThrow(() =>
261 var info = client.GetObjectInfo("PITHOS", testName);
262 Assert.AreEqual(testName, info.Name);
264 Assert.DoesNotThrow(() =>
266 client.DeleteObject("PITHOS", testName);
271 public void TestMoveObject([Values(true, false)]bool usePithos)
273 Assert.DoesNotThrow(() =>
275 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
276 client.Authenticate(_userName, _apiKey);
278 client.CreateContainer("Shares");
279 Assert.IsTrue(client.ContainerExists("Shares"),"Container Exists");
281 var filePath = "devguide.pdf";
282 FileInfo info=new FileInfo(filePath);
285 client.PutObject("Shares",info.Name, filePath,info.Length );
288 Assert.IsTrue(client.ObjectExists("Shares",info.Name),"File Created");
290 client.MoveObject("Shares",info.Name,"smoo.pdf");
291 Assert.IsFalse(client.ObjectExists("Shares", info.Name),"Original File Deleted");
292 Assert.IsTrue(client.ObjectExists("Shares", "smoo.pdf"), "Target File Created");
299 public void TestGetObjectMissing()
306 public void TestAuthenticateMissingArguments([Values(true, false)]bool usePithos)
308 Assert.Catch<ArgumentNullException>(() =>
310 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
311 client.Authenticate("someUser",null);
314 Assert.Catch<ArgumentNullException>(() =>
316 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
317 client.Authenticate(null,"someKey");