Statistics
| Branch: | Revision:

root / trunk / Pithos.Network.Test / ChecksumTest.cs @ 70c12416

History | View | Annotate | Download (1.8 kB)

1 d78cbf09 Panagiotis Kanavos
using System;
2 d78cbf09 Panagiotis Kanavos
using System.Collections.Generic;
3 d78cbf09 Panagiotis Kanavos
using System.IO;
4 d78cbf09 Panagiotis Kanavos
using System.Linq;
5 d78cbf09 Panagiotis Kanavos
using System.Security.Cryptography;
6 d78cbf09 Panagiotis Kanavos
using System.Text;
7 d78cbf09 Panagiotis Kanavos
using NUnit.Framework;
8 d78cbf09 Panagiotis Kanavos
using Pithos.Interfaces;
9 d78cbf09 Panagiotis Kanavos
10 d78cbf09 Panagiotis Kanavos
11 d78cbf09 Panagiotis Kanavos
namespace Pithos.Network.Test
12 d78cbf09 Panagiotis Kanavos
{
13 d78cbf09 Panagiotis Kanavos
    [TestFixture]
14 d78cbf09 Panagiotis Kanavos
    class ChecksumTest
15 d78cbf09 Panagiotis Kanavos
    {
16 5029dcf3 Panagiotis Kanavos
17 d78cbf09 Panagiotis Kanavos
        private ICloudClient client;
18 d78cbf09 Panagiotis Kanavos
        [SetUp]
19 d78cbf09 Panagiotis Kanavos
        public void Setup()
20 d78cbf09 Panagiotis Kanavos
        {
21 c53aa229 Panagiotis Kanavos
            var account = "890329@vho.grnet.gr";
22 c53aa229 Panagiotis Kanavos
            var apiKey = "24989dce4e0fcb072f8cb60c8922be19";
23 1b4a7550 Panagiotis Kanavos
            client = new CloudFilesClient(account, apiKey);
24 c53aa229 Panagiotis Kanavos
            client.Authenticate();
25 d78cbf09 Panagiotis Kanavos
            
26 d78cbf09 Panagiotis Kanavos
        }
27 d78cbf09 Panagiotis Kanavos
28 d78cbf09 Panagiotis Kanavos
        [Test]
29 d78cbf09 Panagiotis Kanavos
        public void TestChecksum()
30 d78cbf09 Panagiotis Kanavos
        {
31 d78cbf09 Panagiotis Kanavos
            Assert.DoesNotThrow(() =>
32 d78cbf09 Panagiotis Kanavos
            {
33 d78cbf09 Panagiotis Kanavos
34 5029dcf3 Panagiotis Kanavos
                var filePath = "devguide.pdf";
35 d78cbf09 Panagiotis Kanavos
                var info=new FileInfo(filePath);
36 d78cbf09 Panagiotis Kanavos
37 b6c72f62 Panagiotis Kanavos
               
38 b6c72f62 Panagiotis Kanavos
                    var hash = CalculateHash(filePath);
39 b6c72f62 Panagiotis Kanavos
                    
40 cfed7823 Panagiotis Kanavos
                    client.PutObject(null, "Shares", info.Name, filePath);
41 d78cbf09 Panagiotis Kanavos
42 d78cbf09 Panagiotis Kanavos
43 cfed7823 Panagiotis Kanavos
                    var meta = client.GetObjectInfo(null, "Shares", "DeveloperGuide.pdf");
44 d78cbf09 Panagiotis Kanavos
                    Assert.IsNotEmpty(meta.Hash);
45 d78cbf09 Panagiotis Kanavos
                    
46 d78cbf09 Panagiotis Kanavos
47 d78cbf09 Panagiotis Kanavos
                    Assert.AreEqual(hash,meta.Hash,String.Format("The hashes don't match, expected {0} but got {1}",hash,meta.Hash));
48 b6c72f62 Panagiotis Kanavos
                
49 d78cbf09 Panagiotis Kanavos
50 d78cbf09 Panagiotis Kanavos
            });
51 d78cbf09 Panagiotis Kanavos
52 d78cbf09 Panagiotis Kanavos
        
53 d78cbf09 Panagiotis Kanavos
        }
54 d78cbf09 Panagiotis Kanavos
55 b6c72f62 Panagiotis Kanavos
        private static string CalculateHash(string fileName)
56 d78cbf09 Panagiotis Kanavos
        {
57 d78cbf09 Panagiotis Kanavos
            string hash;
58 d78cbf09 Panagiotis Kanavos
            using (var hasher = MD5.Create())
59 b6c72f62 Panagiotis Kanavos
            using(var stream=File.OpenRead(fileName))
60 d78cbf09 Panagiotis Kanavos
            {
61 d78cbf09 Panagiotis Kanavos
                var hashBuilder = new StringBuilder();
62 b6c72f62 Panagiotis Kanavos
                foreach (byte b in hasher.ComputeHash(stream))
63 d78cbf09 Panagiotis Kanavos
                    hashBuilder.Append(b.ToString("x2").ToLower());
64 d78cbf09 Panagiotis Kanavos
                hash = hashBuilder.ToString();
65 d78cbf09 Panagiotis Kanavos
            }
66 d78cbf09 Panagiotis Kanavos
            return hash;
67 d78cbf09 Panagiotis Kanavos
        }
68 d78cbf09 Panagiotis Kanavos
    }
69 d78cbf09 Panagiotis Kanavos
}