Statistics
| Branch: | Revision:

root / trunk / Pithos.Network.Test / NetworkOpsTest.cs @ c53aa229

History | View | Annotate | Download (13 kB)

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
namespace Pithos.Network.Test
12
{
13
    [TestFixture]
14
    class NetworkOpsTest
15
    {
16
        
17
            
18

    
19
        [Test]
20
        public void TestAuthenticate([Values(true,false)]bool usePithos)
21
        {
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;
28

    
29
            Assert.IsNotNull(storageUrl, "Storage Url was empty");
30
            Assert.IsNotEmpty(token, "Token was empty");
31
        }
32

    
33
        [Test]
34
        public void TestListContainers([Values(true, false)]bool usePithos)
35
        {
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");
41

    
42
            IList<ContainerInfo> containers=client.ListContainers(account);
43
            Assert.IsTrue(containers.Count()>1);
44
        }
45

    
46
        [Test]
47
        public void TestListObjects([Values(true, false)]bool usePithos)
48
        {
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");
55

    
56
            IList<ObjectInfo> objects=client.ListObjects(null, "PITHOS");
57
            Assert.IsTrue(objects.Count()>=1);
58
        }
59

    
60
        [Test]
61
        public void TestContainerExists([Values(true, false)]bool usePithos)
62
        {
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");
69
            
70
            bool mooExists = client.ContainerExists(null, "Moo");
71
            Assert.IsTrue(dnzExists);
72
            
73
            Assert.IsFalse(mooExists);
74
        }
75

    
76
        [Test]
77
        public void TestGetContainerInfo([Values(true, false)]bool usePithos)
78
        {
79
            var account = "890329@vho.grnet.gr";
80
            var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
81
            var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
82
            client.Authenticate();
83

    
84
            client.CreateContainer(null, "PITHOS");
85
            client.CreateContainer(null, "DotNetZone");
86

    
87
            var dnzInfo =client.GetContainerInfo(null, "DotNetZone");
88
            Assert.AreNotEqual(ContainerInfo.Empty, dnzInfo,"Expected DotNetZone container not found");
89

    
90
            var pithosInfo = client.GetContainerInfo(null, "PITHOS");
91
            Assert.AreNotEqual(ContainerInfo.Empty, pithosInfo,"Expected PITHOS container not found");
92

    
93
            var mooInfo = client.GetContainerInfo(null, "moo");
94
            Assert.AreEqual(ContainerInfo.Empty, mooInfo);
95
        }
96

    
97
        [Test]
98
        public void TestCreateContainer([Values(true, false)]bool usePithos)
99
        {
100
            Assert.DoesNotThrow(() =>
101
                                    {
102
                                        var account = "890329@vho.grnet.gr";
103
                                        var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
104
                                        var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
105
                                        client.Authenticate();
106

    
107
                                        client.CreateContainer(null, "Shares2");
108
                                        Assert.IsTrue(client.ContainerExists(null, "Shares2"));
109
                                        client.DeleteContainer(null, "Shares2");
110

    
111
                                        client.CreateContainer(null, "Shares");
112
                                        Assert.IsTrue(client.ContainerExists(null, "Shares"));
113
                                        client.CreateContainer(null, "DotNetZone");
114
                                        Assert.IsTrue(client.ContainerExists(null, "DotNetZone"));
115
                                    });
116
        }
117

    
118
        [Test]
119
        public void TestGetObject([Values(true, false)]bool usePithos)
120
        {
121
            Assert.DoesNotThrow(() =>
122
            {
123
                var account = "890329@vho.grnet.gr";
124
                var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
125
                var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
126
                client.Authenticate();
127
                //Prepare test file
128
                client.CreateContainer(null, "Shares");                
129
                string testFileName = "test.txt";                
130
                var info = new FileInfo(testFileName);
131
                client.PutObject(null, "Shares",testFileName,testFileName);
132
                
133

    
134
                string downloadFile = "test2.txt";
135
                client.GetObject(null, "Shares", testFileName, downloadFile)
136
                    .Wait();
137

    
138
                Assert.IsTrue(File.Exists(downloadFile));
139
                
140
            });
141
            
142
        }
143

    
144
        [Test]
145
        public void TestPutObject([Values(true, false)]bool usePithos)
146
        {
147
            Assert.DoesNotThrow(() =>
148
                                    {
149
                                        var account = "890329@vho.grnet.gr";
150
                                        var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
151
                                        var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
152
                                        client.Authenticate();
153

    
154
                                        client.CreateContainer(null, "Shares");
155
                                        Assert.IsTrue(client.ContainerExists(null, "Shares"));
156

    
157
                                        var filePath = "devguide.pdf";
158
                                        FileInfo info = new FileInfo(filePath);
159

    
160

    
161
                                        client.PutObject(null, "Shares", info.Name, filePath);
162

    
163

    
164
                                    });
165

    
166
        }
167

    
168
        [Test]
169
        public void TestGetObjectMetadata([Values(true, false)]bool usePithos)
170
        {
171
            Assert.DoesNotThrow(() =>
172
            {
173
                var account = "890329@vho.grnet.gr";
174
                var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
175
                var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
176
                client.Authenticate();
177

    
178
                client.CreateContainer(null, "Shares");
179
                Assert.IsTrue(client.ContainerExists(null, "Shares"));
180

    
181
                var filePath = "devguide.pdf";
182
                FileInfo info = new FileInfo(filePath);
183

    
184
               
185
                    client.PutObject(null, "Shares", info.Name, filePath);
186
                
187

    
188

    
189
                
190
                var meta=client.GetObjectInfo(null, "Shares", filePath);
191
                Assert.IsNotEmpty(meta.Hash);
192
                Assert.AreEqual(meta.Name,filePath);
193

    
194
            });
195

    
196
        }
197

    
198
        [Test]
199
        public void TestDeleteObject([Values(true, false)]bool usePithos)
200
        {
201
            Assert.DoesNotThrow(() =>
202
            {
203
                var account = "890329@vho.grnet.gr";
204
                var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
205
                var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
206
                client.Authenticate();
207

    
208
                client.CreateContainer(null, "Shares");
209
                Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");                
210

    
211
                var filePath = "devguide.pdf";
212
                FileInfo info=new FileInfo(filePath);
213
                
214
               
215
                    client.PutObject(null, "Shares",info.Name, filePath);
216
                
217

    
218
                Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
219

    
220
                client.DeleteObject(null, "Shares/devguide.pdf",info.Name);
221
                
222
            });
223

    
224
        }
225
        
226
        [Test]
227
        public void TestDeleteContainer([Values(true, false)]bool usePithos)
228
        {
229
            Assert.DoesNotThrow(() =>
230
            {
231
                var account = "890329@vho.grnet.gr";
232
                var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
233
                var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
234
                client.Authenticate();
235

    
236
                client.CreateContainer(null, "Shares");
237
                Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");                
238

    
239
                var filePath = "devguide.pdf";
240
                FileInfo info=new FileInfo(filePath);
241
                
242
               
243
                    client.PutObject(null, "Shares",info.Name, filePath );
244
                
245

    
246
                Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
247

    
248
                client.DeleteObject(null, "Shares",info.Name);
249
                Assert.IsFalse(client.ObjectExists(null, "Shares", info.Name),"Container Deleted");
250
                
251
                client.DeleteObject(null, "Moo",info.Name);
252
                Assert.IsFalse(client.ObjectExists(null, "Moo", info.Name),"Container Deleted");
253
                
254
            });
255

    
256
        }
257

    
258
       /* [Test]
259
        public void TestFilesWithSpaces([Values(true, false)]bool usePithos)
260
        {
261
            ICloudClient client = new CloudFilesClient { UsePithos = usePithos };
262
            client.Authenticate(_userName, _apiKey);
263
            
264
            var testName = "Name with spaces.txt";
265
            
266
            using(var stream=new MemoryStream())
267
            using (var writer = new File.(stream))
268
            {
269
                
270
                writer.WriteLine("This is a test line");
271
                stream.Seek(0, 0);
272
                
273
                client.PutObject("PITHOS",testName,stream,stream.Length);                
274
            }
275

    
276
            Assert.DoesNotThrow(() =>
277
                                    {
278
                                        var info = client.GetObjectInfo("PITHOS", testName);
279
                                        Assert.AreEqual(testName, info.Name);
280
                                    });
281
            Assert.DoesNotThrow(() =>
282
                                    {
283
                                        client.DeleteObject("PITHOS", testName);                                        
284
                                    });
285
        }*/
286

    
287
        [Test]
288
        public void TestMoveObject([Values(true, false)]bool usePithos)
289
        {
290
            Assert.DoesNotThrow(() =>
291
            {
292
                var account = "890329@vho.grnet.gr";
293
                var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
294
                var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
295
                client.Authenticate();
296

    
297
                client.CreateContainer(null, "Shares");
298
                Assert.IsTrue(client.ContainerExists(null, "Shares"),"Container Exists");                
299

    
300
                var filePath = "devguide.pdf";
301
                FileInfo info=new FileInfo(filePath);
302
                
303
               
304
                    client.PutObject(null, "Shares",info.Name, filePath);
305
                
306

    
307
                Assert.IsTrue(client.ObjectExists(null, "Shares",info.Name),"File Created");
308

    
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");
312

    
313
            });
314

    
315
        }
316

    
317
        [Test]
318
        public void TestGetObjectMissing()
319
        {
320

    
321
        }
322

    
323

    
324
        [Test]
325
        public void TestAuthenticateMissingArguments([Values(true, false)]bool usePithos)
326
        {
327
            Assert.Catch<ArgumentNullException>(() =>
328
            {
329
                var account = "890329@vho.grnet.gr";
330
                var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
331
                var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
332
                client.Authenticate();
333
            });
334

    
335
            Assert.Catch<ArgumentNullException>(() =>
336
            {
337
                var account = "890329@vho.grnet.gr";
338
                var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
339
                var client = new CloudFilesClient(account, apiKey) { UsePithos = usePithos };
340
                client.Authenticate();
341
            });
342

    
343
        }
344

    
345

    
346
    }
347

    
348
    
349
}