Added isDirectory parameter to DeleteObject
[pithos-ms-client] / trunk / Pithos.Network.Test / FolderTests.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Diagnostics;
4 using System.Diagnostics.Contracts;
5 using System.Linq;
6 using System.Text;
7 using NUnit.Framework;
8 using Pithos.Interfaces;
9 using System.IO;
10
11
12 namespace Pithos.Network.Test
13 {
14     [TestFixture]
15     class FolderTests
16     {
17         [SetUp]
18         public void Setup()
19         {
20             Directory.CreateDirectory("RootFolder");
21             File.WriteAllText(@"RootFolder\TestFile1.txt", "This is a test file");
22             Directory.CreateDirectory(@"RootFolder\Folder1");
23             File.WriteAllText(@"RootFolder\Folder1\TestFile1.txt", "This is a test file");
24             Directory.CreateDirectory(@"RootFolder\Folder1\Subfolder1");
25             File.WriteAllText(@"RootFolder\Folder1\Subfolder1\TestFile1.txt", "This is a test file");
26             Directory.CreateDirectory(@"RootFolder\Folder2");
27             File.WriteAllText(@"RootFolder\Folder2\TestFile1.txt", "This is a test file");
28
29         }
30
31         [TearDown]
32         public void TearDown()
33         {
34             Directory.Delete("RootFolder",true);
35         }
36         
37         [Test]
38         public void TestCreateSingleFolder([Values(true, false)]bool usePithos)
39         {
40             var account = "890329@vho.grnet.gr";
41             var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
42             var client = new CloudFilesClient(account, apiKey){ UsePithos = usePithos };
43             client.Authenticate();
44
45             client.CreateContainer(null, "Pithos");
46
47             client.CreateFolder(null, "Pithos", "RootFolder");
48
49             Assert.IsTrue(client.ObjectExists(null, "Pithos","RootFolder"));
50             var info = client.GetObjectInfo(null, "Pithos", "RootFolder");
51             Assert.AreEqual(@"application/directory",info.Content_Type);
52             
53         } 
54         
55         [Test]
56         public void TestCreateSubFolders([Values(true, false)]bool usePithos)
57         {
58             var account = "890329@vho.grnet.gr";
59             var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
60             var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
61             client.Authenticate();
62
63             client.CreateContainer(null, "Pithos");
64
65             client.CreateFolder(null, "Pithos", "RootFolder");
66             client.CreateFolder(null, "Pithos", "RootFolder/Folder1");            
67             client.PutObject(null, "Pithos","RootFolder/Folder1/test.txt","test.txt");
68
69
70             Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1"));
71             var folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1");
72             Assert.AreEqual(@"application/directory",folderInfo.Content_Type);
73
74
75             Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1/test.txt"));
76             var fileInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1/test.txt");
77             Assert.AreEqual(@"application/octet-stream", fileInfo.Content_Type);
78             
79         }
80         
81         [Test]
82         public void TestDeleteSubFolders([Values(true, false)]bool usePithos)
83         {
84             var account = "890329@vho.grnet.gr";
85             var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
86             var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
87             client.Authenticate();
88
89             client.CreateContainer(null, "Pithos");
90
91             client.CreateFolder(null, "Pithos", "RootFolder");
92             client.CreateFolder(null, "Pithos", "RootFolder/Folder1");
93             var localInfo = new FileInfo("test.txt");
94             client.PutObject(null, "Pithos","RootFolder/Folder1/test.txt","test.txt");
95
96             client.DeleteObject(null, "pithos", "RootFolder/Folder1", false);
97
98             Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1"));
99             var folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1");
100             Assert.AreEqual(@"application/directory",folderInfo.Content_Type);
101
102
103             Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder/Folder1/test.txt"));
104             var fileInfo = client.GetObjectInfo(null, "Pithos", "RootFolder/Folder1/test.txt");
105             Assert.AreEqual(@"application/octet-stream", fileInfo.Content_Type);
106             
107         } 
108
109         [Test]
110         public void ListFolderContents([Values(true, false)]bool usePithos)
111         {
112             var account = "890329@vho.grnet.gr";
113             var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
114             var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
115             client.Authenticate();
116
117             client.CreateContainer(null, "Pithos");
118             client.CreateFolder(null, "Pithos", "RootFolder3");
119             client.CreateFolder(null, "Pithos", "RootFolder3/Folder1");
120
121             
122             client.PutObject(null, "Pithos", "RootFolder3/test1.txt", "test.txt");
123             client.PutObject(null, "Pithos", "RootFolder3/test2.txt", "test.txt");
124             client.PutObject(null, "Pithos", "RootFolder3/Folder1/test2.txt", "test.txt");
125
126             var files=client.ListObjects("Pithos", "RootFolder3");
127             Assert.AreEqual(3,files.Count,"Unexpected number of root items");
128
129             files = client.ListObjects("Pithos", "RootFolder3/Folder1");
130             Assert.AreEqual(1, files.Count, "Unexpected number of subfolder items");
131
132
133
134         }
135         
136         [Test]
137         public void TestCreateSubFoldersInOneStep([Values(true, false)]bool usePithos)
138         {
139             var account = "890329@vho.grnet.gr";
140             var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
141             var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
142             client.Authenticate();
143
144             client.CreateContainer(null, "Pithos");
145             
146             client.CreateFolder(null, "Pithos", "RootFolder2/Folder1");
147
148             Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder2/Folder1"));
149             var folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder2/Folder1");
150             Assert.AreEqual(@"application/directory",folderInfo.Content_Type);
151
152             Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder2"));
153             folderInfo = client.GetObjectInfo(null, "Pithos", "RootFolder2");
154             Assert.AreEqual(@"application/directory", folderInfo.Content_Type);
155
156
157             Assert.IsTrue(client.ObjectExists(null, "Pithos", "RootFolder2/Folder1/test.txt"));
158             var fileInfo = client.GetObjectInfo(null, "Pithos", "RootFolder2/Folder1/test.txt");
159             Assert.AreEqual(@"application/octet-stream", fileInfo.Content_Type);
160             
161         }
162     }
163 }