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(null, "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(null, "PITHOS");
50 client.PutObject(null, "PITHOS","devguide.pdf","devguide.pdf");
52 IList<ObjectInfo> objects=client.ListObjects(null, "PITHOS");
53 Assert.IsTrue(objects.Count()>=1);
57 public void TestContainerExists([Values(true, false)]bool usePithos)
59 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
60 client.Authenticate(_userName, _apiKey);
61 client.CreateContainer(null, "TestContainer");
62 bool dnzExists=client.ContainerExists(null, "TestContainer");
64 bool mooExists = client.ContainerExists(null, "Moo");
65 Assert.IsTrue(dnzExists);
67 Assert.IsFalse(mooExists);
71 public void TestGetContainerInfo([Values(true, false)]bool usePithos)
73 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
74 client.Authenticate(_userName, _apiKey);
76 client.CreateContainer(null, "PITHOS");
77 client.CreateContainer(null, "DotNetZone");
79 var dnzInfo =client.GetContainerInfo(null, "DotNetZone");
80 Assert.AreNotEqual(ContainerInfo.Empty, dnzInfo,"Expected DotNetZone container not found");
82 var pithosInfo = client.GetContainerInfo(null, "PITHOS");
83 Assert.AreNotEqual(ContainerInfo.Empty, pithosInfo,"Expected PITHOS container not found");
85 var mooInfo = client.GetContainerInfo(null, "moo");
86 Assert.AreEqual(ContainerInfo.Empty, mooInfo);
90 public void TestCreateContainer([Values(true, false)]bool usePithos)
92 Assert.DoesNotThrow(() =>
94 ICloudClient client = new CloudFilesClient{UsePithos=usePithos};
95 client.Authenticate(_userName, _apiKey);
97 client.CreateContainer(null, "Shares2");
98 Assert.IsTrue(client.ContainerExists(null, "Shares2"));
99 client.DeleteContainer(null, "Shares2");
101 client.CreateContainer(null, "Shares");
102 Assert.IsTrue(client.ContainerExists(null, "Shares"));
103 client.CreateContainer(null, "DotNetZone");
104 Assert.IsTrue(client.ContainerExists(null, "DotNetZone"));
109 public void TestGetObject([Values(true, false)]bool usePithos)
111 Assert.DoesNotThrow(() =>
113 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
114 client.Authenticate(_userName, _apiKey);
116 client.CreateContainer(null, "Shares");
117 string testFileName = "test.txt";
118 var info = new FileInfo(testFileName);
119 client.PutObject(null, "Shares",testFileName,testFileName);
122 string downloadFile = "test2.txt";
123 client.GetObject(null, "Shares", testFileName, downloadFile)
126 Assert.IsTrue(File.Exists(downloadFile));
133 public void TestPutObject([Values(true, false)]bool usePithos)
135 Assert.DoesNotThrow(() =>
137 ICloudClient client = new CloudFilesClient {UsePithos = usePithos};
138 client.Authenticate(_userName, _apiKey);
140 client.CreateContainer(null, "Shares");
141 Assert.IsTrue(client.ContainerExists(null, "Shares"));
143 var filePath = "devguide.pdf";
144 FileInfo info = new FileInfo(filePath);
147 client.PutObject(null, "Shares", info.Name, filePath);
155 public void TestGetObjectMetadata([Values(true, false)]bool usePithos)
157 Assert.DoesNotThrow(() =>
159 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
160 client.Authenticate(_userName, _apiKey);
162 client.CreateContainer(null, "Shares");
163 Assert.IsTrue(client.ContainerExists(null, "Shares"));
165 var filePath = "devguide.pdf";
166 FileInfo info = new FileInfo(filePath);
169 client.PutObject(null, "Shares", info.Name, filePath);
174 var meta=client.GetObjectInfo(null, "Shares", filePath);
175 Assert.IsNotEmpty(meta.Hash);
176 Assert.AreEqual(meta.Name,filePath);
183 public void TestDeleteObject([Values(true, false)]bool usePithos)
185 Assert.DoesNotThrow(() =>
187 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
188 client.Authenticate(_userName, _apiKey);
190 client.CreateContainer(null, "Shares");
191 Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");
193 var filePath = "devguide.pdf";
194 FileInfo info=new FileInfo(filePath);
197 client.PutObject(null, "Shares",info.Name, filePath);
200 Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
202 client.DeleteObject(null, "Shares/devguide.pdf",info.Name,"trash");
209 public void TestDeleteContainer([Values(true, false)]bool usePithos)
211 Assert.DoesNotThrow(() =>
213 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
214 client.Authenticate(_userName, _apiKey);
216 client.CreateContainer(null, "Shares");
217 Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");
219 var filePath = "devguide.pdf";
220 FileInfo info=new FileInfo(filePath);
223 client.PutObject(null, "Shares",info.Name, filePath );
226 Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
228 client.DeleteObject(null, "Shares",info.Name,"trash");
229 Assert.IsFalse(client.ObjectExists(null, "Shares", info.Name),"Container Deleted");
231 client.DeleteObject(null, "Moo",info.Name,"trash");
232 Assert.IsFalse(client.ObjectExists(null, "Moo", info.Name),"Container Deleted");
239 public void TestFilesWithSpaces([Values(true, false)]bool usePithos)
241 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
242 client.Authenticate(_userName, _apiKey);
244 var testName = "Name with spaces.txt";
246 using(var stream=new MemoryStream())
247 using (var writer = new File.(stream))
250 writer.WriteLine("This is a test line");
253 client.PutObject("PITHOS",testName,stream,stream.Length);
256 Assert.DoesNotThrow(() =>
258 var info = client.GetObjectInfo("PITHOS", testName);
259 Assert.AreEqual(testName, info.Name);
261 Assert.DoesNotThrow(() =>
263 client.DeleteObject("PITHOS", testName);
268 public void TestMoveObject([Values(true, false)]bool usePithos)
270 Assert.DoesNotThrow(() =>
272 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
273 client.Authenticate(_userName, _apiKey);
275 client.CreateContainer(null, "Shares");
276 Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");
278 var filePath = "devguide.pdf";
279 FileInfo info=new FileInfo(filePath);
282 client.PutObject(null, "Shares",info.Name, filePath);
285 Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
287 client.MoveObject(null, "Shares",info.Name,"Shares","smoo.pdf");
288 Assert.IsFalse(client.ObjectExists(null, "Shares", info.Name),"Original File Deleted");
289 Assert.IsTrue(client.ObjectExists(null, "Shares", "smoo.pdf"), "Target File Created");
296 public void TestGetObjectMissing()
303 public void TestAuthenticateMissingArguments([Values(true, false)]bool usePithos)
305 Assert.Catch<ArgumentNullException>(() =>
307 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
308 client.Authenticate("someUser",null);
311 Assert.Catch<ArgumentNullException>(() =>
313 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
314 client.Authenticate(null,"someKey");