2 using System.Collections.Generic;
3 using System.Diagnostics;
4 using System.Diagnostics.Contracts;
8 using Pithos.Interfaces;
11 namespace Pithos.Network.Test
20 public void TestAuthenticate([Values(true,false)]bool usePithos)
22 var account = "890329@vho.grnet.gr";
23 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
24 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
25 client.Authenticate();
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 var account = "890329@vho.grnet.gr";
37 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
38 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
39 var accountInfo = client.Authenticate();
40 client.CreateContainer(null, "PITHOS");
42 IList<ContainerInfo> containers=client.ListContainers(account);
43 Assert.IsTrue(containers.Count()>1);
47 public void TestListObjects([Values(true, false)]bool usePithos)
49 var account = "890329@vho.grnet.gr";
50 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
51 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
52 client.Authenticate();
53 client.CreateContainer(null, "PITHOS");
54 client.PutObject(null, "PITHOS","devguide.pdf","devguide.pdf");
56 IList<ObjectInfo> objects=client.ListObjects(null, "PITHOS");
57 Assert.IsTrue(objects.Count()>=1);
61 public void TestContainerExists([Values(true, false)]bool usePithos)
63 var account = "890329@vho.grnet.gr";
64 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
65 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
66 client.Authenticate();
67 client.CreateContainer(null, "TestContainer");
68 bool dnzExists=client.ContainerExists(null, "TestContainer");
70 bool mooExists = client.ContainerExists(null, "Moo");
71 Assert.IsTrue(dnzExists);
73 Assert.IsFalse(mooExists);
77 public void TestGetContainerInfo([Values(true, false)]bool usePithos)
79 var account = "890329@vho.grnet.gr";
80 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
81 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
82 client.Authenticate();
84 client.CreateContainer(null, "PITHOS");
85 client.CreateContainer(null, "DotNetZone");
87 var dnzInfo =client.GetContainerInfo(null, "DotNetZone");
88 Assert.AreNotEqual(ContainerInfo.Empty, dnzInfo,"Expected DotNetZone container not found");
90 var pithosInfo = client.GetContainerInfo(null, "PITHOS");
91 Assert.AreNotEqual(ContainerInfo.Empty, pithosInfo,"Expected PITHOS container not found");
93 var mooInfo = client.GetContainerInfo(null, "moo");
94 Assert.AreEqual(ContainerInfo.Empty, mooInfo);
98 public void TestCreateContainer([Values(true, false)]bool usePithos)
100 Assert.DoesNotThrow(() =>
102 var account = "890329@vho.grnet.gr";
103 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
104 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
105 client.Authenticate();
107 client.CreateContainer(null, "Shares2");
108 Assert.IsTrue(client.ContainerExists(null, "Shares2"));
109 client.DeleteContainer(null, "Shares2");
111 client.CreateContainer(null, "Shares");
112 Assert.IsTrue(client.ContainerExists(null, "Shares"));
113 client.CreateContainer(null, "DotNetZone");
114 Assert.IsTrue(client.ContainerExists(null, "DotNetZone"));
119 public void TestGetObject([Values(true, false)]bool usePithos)
121 Assert.DoesNotThrow(() =>
123 var account = "890329@vho.grnet.gr";
124 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
125 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
126 client.Authenticate();
128 client.CreateContainer(null, "Shares");
129 string testFileName = "test.txt";
130 var info = new FileInfo(testFileName);
131 client.PutObject(null, "Shares",testFileName,testFileName);
134 string downloadFile = "test2.txt";
135 client.GetObject(null, "Shares", testFileName, downloadFile)
138 Assert.IsTrue(File.Exists(downloadFile));
145 public void TestPutObject([Values(true, false)]bool usePithos)
147 Assert.DoesNotThrow(() =>
149 var account = "890329@vho.grnet.gr";
150 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
151 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
152 client.Authenticate();
154 client.CreateContainer(null, "Shares");
155 Assert.IsTrue(client.ContainerExists(null, "Shares"));
157 var filePath = "devguide.pdf";
158 FileInfo info = new FileInfo(filePath);
161 client.PutObject(null, "Shares", info.Name, filePath);
169 public void TestGetObjectMetadata([Values(true, false)]bool usePithos)
171 Assert.DoesNotThrow(() =>
173 var account = "890329@vho.grnet.gr";
174 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
175 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
176 client.Authenticate();
178 client.CreateContainer(null, "Shares");
179 Assert.IsTrue(client.ContainerExists(null, "Shares"));
181 var filePath = "devguide.pdf";
182 FileInfo info = new FileInfo(filePath);
185 client.PutObject(null, "Shares", info.Name, filePath);
190 var meta=client.GetObjectInfo(null, "Shares", filePath);
191 Assert.IsNotEmpty(meta.Hash);
192 Assert.AreEqual(meta.Name,filePath);
199 public void TestDeleteObject([Values(true, false)]bool usePithos)
201 Assert.DoesNotThrow(() =>
203 var account = "890329@vho.grnet.gr";
204 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
205 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
206 client.Authenticate();
208 client.CreateContainer(null, "Shares");
209 Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");
211 var filePath = "devguide.pdf";
212 FileInfo info=new FileInfo(filePath);
215 client.PutObject(null, "Shares",info.Name, filePath);
218 Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
220 client.DeleteObject(null, "Shares/devguide.pdf",info.Name);
227 public void TestDeleteContainer([Values(true, false)]bool usePithos)
229 Assert.DoesNotThrow(() =>
231 var account = "890329@vho.grnet.gr";
232 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
233 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
234 client.Authenticate();
236 client.CreateContainer(null, "Shares");
237 Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");
239 var filePath = "devguide.pdf";
240 FileInfo info=new FileInfo(filePath);
243 client.PutObject(null, "Shares",info.Name, filePath );
246 Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
248 client.DeleteObject(null, "Shares",info.Name);
249 Assert.IsFalse(client.ObjectExists(null, "Shares", info.Name),"Container Deleted");
251 client.DeleteObject(null, "Moo",info.Name);
252 Assert.IsFalse(client.ObjectExists(null, "Moo", info.Name),"Container Deleted");
259 public void TestFilesWithSpaces([Values(true, false)]bool usePithos)
261 ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
262 client.Authenticate(_userName, _apiKey);
264 var testName = "Name with spaces.txt";
266 using(var stream=new MemoryStream())
267 using (var writer = new File.(stream))
270 writer.WriteLine("This is a test line");
273 client.PutObject("PITHOS",testName,stream,stream.Length);
276 Assert.DoesNotThrow(() =>
278 var info = client.GetObjectInfo("PITHOS", testName);
279 Assert.AreEqual(testName, info.Name);
281 Assert.DoesNotThrow(() =>
283 client.DeleteObject("PITHOS", testName);
288 public void TestMoveObject([Values(true, false)]bool usePithos)
290 Assert.DoesNotThrow(() =>
292 var account = "890329@vho.grnet.gr";
293 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
294 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
295 client.Authenticate();
297 client.CreateContainer(null, "Shares");
298 Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");
300 var filePath = "devguide.pdf";
301 FileInfo info=new FileInfo(filePath);
304 client.PutObject(null, "Shares",info.Name, filePath);
307 Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
309 client.MoveObject(null, "Shares",info.Name,"Shares","smoo.pdf");
310 Assert.IsFalse(client.ObjectExists(null, "Shares", info.Name),"Original File Deleted");
311 Assert.IsTrue(client.ObjectExists(null, "Shares", "smoo.pdf"), "Target File Created");
318 public void TestGetObjectMissing()
325 public void TestAuthenticateMissingArguments([Values(true, false)]bool usePithos)
327 Assert.Catch<ArgumentNullException>(() =>
329 var account = "890329@vho.grnet.gr";
330 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
331 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
332 client.Authenticate();
335 Assert.Catch<ArgumentNullException>(() =>
337 var account = "890329@vho.grnet.gr";
338 var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
339 var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
340 client.Authenticate();