2 using System.Collections.Generic;
7 using Newtonsoft.Json.Linq;
8 using Pithos.Interfaces;
10 namespace Pithos.Network.Test
16 public void RelativeUrlToFilePath()
19 var info1 = new ObjectInfo {Account = "pkanavos", Container = "pithos", Name = "somefolder/file1.txt"};
20 var path1=info1.RelativeUrlToFilePath("PKANAVOS");
21 Assert.AreEqual(@"pithos\somefolder\file1.txt",path1);
22 var path2 = info1.RelativeUrlToFilePath("user1");
23 Assert.AreEqual(@"others-shared\pkanavos\pithos\somefolder\file1.txt", path2);
24 var info3 = new ObjectInfo { Account = "pkanavos", Name = "somefolder/file1.txt" };
25 var path3 = info1.RelativeUrlToFilePath("PKANAVOS");
26 Assert.AreEqual(@"pithos\somefolder\file1.txt", path1);
32 public void TestDeserialization()
34 var content="[{\"x_object_meta_smoe\": \"true\", \"hash\": \"0f5fbd63a50cb19c13eb111d3c3a7e40\", \"name\": \"wlsetup-web.exe\", \"x_object_meta_moe\": \"true\", \"x_object_meta_joe\": \"true\", \"x_object_sharing\": \"read=lumumba;write=pkanavos,fufutos\", \"x_object_version_timestamp\": \"1319572542.348810\", \"bytes\": 1286504, \"last_modified\": \"2011-10-25T19:55:42.348810+00:00\", \"content_type\": \"application/octet-stream\", \"x_object_version\": 22075, \"x_object_modified_by\": \"890329@vho.grnet.gr\"}]";
35 var infos=JsonConvert.DeserializeObject<IList<ObjectInfo>>(content);
38 Assert.IsNotEmpty(info.Tags);
39 Assert.IsNotEmpty(info.Permissions);
40 Assert.AreEqual(3,info.Permissions.Count);
41 Assert.IsTrue(info.Permissions["pkanavos"]=="write");
42 Assert.IsTrue(info.Permissions["lumumba"] == "read");
43 Assert.IsTrue(info.Permissions["fufutos"] == "write");
44 Assert.IsTrue(info.Tags.ContainsKey("x_object_meta_smoe"));
48 public void ParseInfo()
51 var account = "890329@vho.grnet.gr";
52 var apiKey = "pvCJNuf28+K2UjWnSTlfVQ==";
54 var client = new CloudFilesClient(account, apiKey)
56 AuthenticationUrl = @"https://pithos.dev.grnet.gr",
59 client.Authenticate();
60 var fileName = @"wlsetup-web.exe";
62 var infos=client.ListObjects(account, "pithos");
63 var info = infos.First(i=> i.Name == fileName);
64 Assert.IsNotEmpty(info.Tags);
69 public void TestGetPermissions()
71 ObjectInfo objectInfo=new ObjectInfo();
72 objectInfo.Permissions["user1"] = "read";
73 objectInfo.Permissions["user2"] = "write";
75 var permissionString = objectInfo.GetPermissionString();
77 Assert.IsNotNullOrEmpty(permissionString);
78 Assert.AreEqual("read=user1;write=user2",Uri.UnescapeDataString(permissionString));
82 public void TestSetPermissions()
84 var objectInfo=new ObjectInfo();
86 var permissionString = "read=user1;write=user2,user3@somehost.gr";
88 objectInfo.SetPermissions(permissionString);
90 Assert.AreEqual(3,objectInfo.Permissions.Count);
91 Assert.IsTrue(objectInfo.Permissions.ContainsKey("user1"));
92 Assert.IsTrue(objectInfo.Permissions.ContainsKey("user2"));
93 Assert.IsTrue(objectInfo.Permissions.ContainsKey("user3@somehost.gr"));
94 Assert.IsTrue(objectInfo.Permissions["user1"]=="read");
95 Assert.IsTrue(objectInfo.Permissions["user2"]=="write");
96 Assert.IsTrue(objectInfo.Permissions["user3@somehost.gr"]=="write");
101 public void empty_should_be_writable()
103 Assert.That(ObjectInfo.Empty.IsWritable("somAccount"),Is.True);
107 public void should_be_writeable_for_write_permission()
109 var objectInfo = new ObjectInfo();
110 var permissionString = "read=user1;write=user2,user3@somehost.gr";
111 objectInfo.SetPermissions(permissionString);
113 Assert.That(objectInfo.IsWritable("user3@somehost.gr"),Is.True);
118 public void should_not_be_writeable_for_read_permission()
120 var objectInfo = new ObjectInfo();
121 var permissionString = "read=user1;write=user2,user3@somehost.gr";
122 objectInfo.SetPermissions(permissionString);
124 Assert.That(objectInfo.IsWritable("user1"),Is.False);
129 public void should_not_be_writeable_for_allowed()
131 var objectInfo = new ObjectInfo{AllowedTo="write"};
132 var permissionString = "read=user1;write=user2,user3@somehost.gr";
133 objectInfo.SetPermissions(permissionString);
135 Assert.That(objectInfo.IsWritable("user4"),Is.True);