+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+
+namespace Pithos.Interfaces.Test
+{
+ [TestFixture]
+ class PermissionConverterTest
+ {
+ [Test]
+ public void TestMostPermissivePermissions()
+ {
+ var permissions = "read=acc1@gmail.com,acc2@gmail.com;write=acc1@gmail.com";
+ var result = PermissionConverter.ParsePermissions(permissions);
+
+ Assert.That(result.ContainsKey("acc1@gmail.com"),Is.True);
+ Assert.That(result["acc1@gmail.com"], Is.EqualTo("write"));
+
+ Assert.That(result.ContainsKey("acc2@gmail.com"),Is.True);
+ Assert.That(result["acc2@gmail.com"], Is.EqualTo("read"));
+ }
+
+ [Test]
+ public void TestReadPermissions()
+ {
+ var permissions = "read=acc1@gmail.com";
+ var result = PermissionConverter.ParsePermissions(permissions);
+
+ Assert.That(result.ContainsKey("acc1@gmail.com"),Is.True);
+ Assert.That(result["acc1@gmail.com"], Is.EqualTo("read"));
+ }
+
+ [Test]
+ public void TestMultipleReadPermissions()
+ {
+ var permissions = "read=acc1@gmail.com,acc2@gmail.com";
+ var result = PermissionConverter.ParsePermissions(permissions);
+
+ Assert.That(result.ContainsKey("acc1@gmail.com"),Is.True);
+ Assert.That(result["acc1@gmail.com"], Is.EqualTo("read"));
+ Assert.That(result.ContainsKey("acc2@gmail.com"),Is.True);
+ Assert.That(result["acc2@gmail.com"], Is.EqualTo("read"));
+ }
+
+ [Test]
+ public void TestMixedPermissions()
+ {
+ var permissions = "read=acc1@gmail.com,acc2@gmail.com;write=acc3@gmail.com";
+ var result = PermissionConverter.ParsePermissions(permissions);
+
+ Assert.That(result.ContainsKey("acc1@gmail.com"),Is.True);
+ Assert.That(result["acc1@gmail.com"], Is.EqualTo("read"));
+ Assert.That(result.ContainsKey("acc2@gmail.com"),Is.True);
+ Assert.That(result["acc2@gmail.com"], Is.EqualTo("read"));
+ Assert.That(result.ContainsKey("acc3@gmail.com"),Is.True);
+ Assert.That(result["acc3@gmail.com"], Is.EqualTo("write"));
+ }
+
+ [Test]
+ public void TestMixedPermissionsSeparated()
+ {
+ var permissions = "read=acc1@gmail.com;read=acc2@gmail.com;write=acc3@gmail.com;write=acc3@gmail.com";
+ var result = PermissionConverter.ParsePermissions(permissions);
+
+ Assert.That(result.ContainsKey("acc1@gmail.com"),Is.True);
+ Assert.That(result["acc1@gmail.com"], Is.EqualTo("read"));
+ Assert.That(result.ContainsKey("acc2@gmail.com"),Is.True);
+ Assert.That(result["acc2@gmail.com"], Is.EqualTo("read"));
+ Assert.That(result.ContainsKey("acc3@gmail.com"),Is.True);
+ Assert.That(result["acc3@gmail.com"], Is.EqualTo("write"));
+ }
+
+ [Test]
+ public void TestWritePermissions()
+ {
+ var permissions = "write=acc1@gmail.com";
+ var result = PermissionConverter.ParsePermissions(permissions);
+
+ Assert.That(result.ContainsKey("acc1@gmail.com"),Is.True);
+ Assert.That(result["acc1@gmail.com"], Is.EqualTo("write"));
+ }
+ }
+}