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 | } |