Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/21/11 16:51:03 (13 years ago)
Author:
cneumuel
Message:

#1233

  • created user interface for experiment sharing
  • created UserManager which provides access to the users
  • inserted a lot of security and authorization checks serverside
  • minor fixes in experiment manager
Location:
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/DaoTests.cs

    r6452 r6463  
    235235      perm.GrantedByUserId = he.OwnerUserId;
    236236      perm.GrantedUserId = Guid.NewGuid();
    237       perm.Permission = Permission.Write;
     237      perm.Permission = Permission.Full;
    238238      dao.AddHiveExperimentPermission(perm);
    239239
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/HeuristicLab.Services.Hive-3.4.Tests.csproj

    r6369 r6463  
    7272  <ItemGroup>
    7373    <Compile Include="Mocks\MockAuthenticationManager.cs" />
     74    <Compile Include="Mocks\MockUserManager.cs" />
    7475    <Compile Include="ServiceTests.cs" />
    7576    <Compile Include="Mocks\MockAuthorizationManager.cs" />
     
    108109    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
    109110    <Reference Include="System" />
     111    <Reference Include="System.Configuration" />
    110112    <Reference Include="System.Data" />
    111113    <Reference Include="System.Data.DataSetExtensions" />
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/Mocks/MockAuthorizationManager.cs

    r6457 r6463  
    2424namespace HeuristicLab.Services.Hive.Tests.Mocks {
    2525  public class MockAuthorizationManager : IAuthorizationManager {
    26     public static Guid MockUserId1 = new Guid("6C7911A1-46EA-4E51-97DF-5582653AAFCE");
    27     public static Guid MockUserId2 = new Guid("897660EB-C90F-4054-988C-D39D530A0A02");
    28     public static Guid MockUserId3 = new Guid("9F7B4EA8-A38D-4BC2-802F-E148AC7A6A87");
    29 
    30     private Guid userId = MockUserId1;
    31 
    32     public Guid UserId {
    33       get { return userId; }
     26    public void Authorize(Guid userId) {
     27      // ok.
    3428    }
    3529
    36     public void AuthorizeJobs(params Guid[] jobId) {
    37       // o.k.
     30    public void AuthorizeForJob(Guid jobId, Common.DataTransfer.Permission requiredPermission) {
     31      // ok.
    3832    }
    3933
    40     public void Authorize(Guid userId) {
    41       // o.k.
    42     }
    43    
    44     internal void SetUserId(Guid id) {
    45       this.userId = id;
     34    public void AuthorizeForExperiment(Guid experimentId, Common.DataTransfer.Permission requiredPermission) {
     35      // ok.
    4636    }
    4737  }
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/Mocks/MockServiceLocator.cs

    r6457 r6463  
    2020#endregion
    2121
     22using System;
    2223using HeuristicLab.Services.Hive.DataAccess;
    2324using HeuristicLab.Services.Hive.Tests.Mocks;
    24 using System;
    2525
    2626namespace HeuristicLab.Services.Hive.Tests {
     
    3636    }
    3737
    38     private MockAuthorizationManager mockAuthorizationManager = new MockAuthorizationManager();
     38    //private MockAuthorizationManager mockAuthorizationManager = new MockAuthorizationManager();
    3939    public IAuthorizationManager AuthorizationManager {
    40       get { return mockAuthorizationManager; }
     40      get { return defaultServiceLocator.AuthorizationManager; }
    4141    }
    4242
     
    5151      get { return defaultServiceLocator.TransactionManager; }
    5252    }
    53 
     53    private MockUserManager mockUserManager = new MockUserManager();
     54    public IUserManager UserManager {
     55      get { return mockUserManager; }
     56    }
    5457    public HeartbeatManager HeartbeatManager {
    5558      get { return defaultServiceLocator.HeartbeatManager; }
     
    5760
    5861    #region Special mocking methods
    59     public void SetCurrentUser(Guid id) {
    60       mockAuthorizationManager.SetUserId(id);
     62    public void SetCurrentUserId(Guid userId) {
     63      mockUserManager.SetUserId(userId);
    6164    }
    62 
    6365    #endregion
    6466  }
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Tests/ServiceTests.cs

    r6457 r6463  
    303303    public void TestHiveExperimentPermissions() {
    304304      var service = GetLocalService();
    305       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId1);
     305      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId1);
    306306
    307307      // create hive experiment
     
    311311      var e1loaded = service.GetHiveExperiment(e1.Id);
    312312      Assert.AreEqual(Permission.Full, e1loaded.Permission);
    313 
     313      var allExp = service.GetHiveExperiments();
     314      Assert.AreEqual(1, allExp.Count(x => x.Id == e1.Id));
     315     
    314316      // change to user2
    315       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId2);
    316       e1loaded = service.GetHiveExperiment(e1.Id);
    317       Assert.AreEqual(null, e1loaded); // no access
     317      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId2);
     318      try {
     319        e1loaded = service.GetHiveExperiment(e1.Id);
     320        Assert.Fail("Access should not be possible");
     321      } catch { /* ok, cool */ }
     322      allExp = service.GetHiveExperiments();
     323      Assert.AreEqual(0, allExp.Count(x => x.Id == e1.Id));
    318324
    319325      // user2 should not be able to grant permissions
    320326      try {
    321         service.GrantPermission(e1.Id, MockAuthorizationManager.MockUserId2, Permission.ReadOnly);
     327        service.GrantPermission(e1.Id, MockUserManager.MockUserId2, Permission.Read);
    322328        Assert.Fail("Should not be possible to grant permission due to missing permission for User2");
    323329      }
     
    325331
    326332      // switch back to user1 (owner) and grant user2 permissions
    327       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId1);
    328       service.GrantPermission(e1.Id, MockAuthorizationManager.MockUserId2, Permission.ReadOnly);
     333      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId1);
     334      service.GrantPermission(e1.Id, MockUserManager.MockUserId2, Permission.Read);
    329335
    330336      // back to user2
    331       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId2);
     337      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId2);
    332338      e1loaded = service.GetHiveExperiment(e1.Id);
    333       Assert.AreEqual(Permission.ReadOnly, e1loaded.Permission);
     339      Assert.AreEqual(Permission.Read, e1loaded.Permission);
     340      allExp = service.GetHiveExperiments();
     341      Assert.AreEqual(1, allExp.Count(x => x.Id == e1.Id));
    334342
    335343      // user2 should still not be able to grant permissions
    336344      try {
    337         service.GrantPermission(e1.Id, MockAuthorizationManager.MockUserId2, Permission.ReadOnly);
     345        service.GrantPermission(e1.Id, MockUserManager.MockUserId2, Permission.Read);
    338346        Assert.Fail("Should not be possible to grant permission due to missing permission for User2");
    339347      }
     
    341349
    342350      // back to user1
    343       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId1);
    344       service.GrantPermission(e1.Id, MockAuthorizationManager.MockUserId2, Permission.Full);
     351      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId1);
     352      service.GrantPermission(e1.Id, MockUserManager.MockUserId2, Permission.Full);
    345353
    346354      // back to user2
    347       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId2);
     355      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId2);
    348356      e1loaded = service.GetHiveExperiment(e1.Id);
    349357      Assert.AreEqual(Permission.Full, e1loaded.Permission);
    350 
     358      allExp = service.GetHiveExperiments();
     359      Assert.AreEqual(1, allExp.Count(x => x.Id == e1.Id));
     360     
    351361      // grant rights to user3, now this should be possible due to full permissions
    352       service.GrantPermission(e1.Id, MockAuthorizationManager.MockUserId3, Permission.ReadOnly);
     362      service.GrantPermission(e1.Id, MockUserManager.MockUserId3, Permission.Read);
    353363
    354364      // back to user1 and revoke rights for user2
    355       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId1);
    356       service.RevokePermission(e1.Id, MockAuthorizationManager.MockUserId2);
     365      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId1);
     366      service.RevokePermission(e1.Id, MockUserManager.MockUserId2);
    357367
    358368      // back to user2
    359       mockServiceLocator.SetCurrentUser(MockAuthorizationManager.MockUserId2);
    360       e1loaded = service.GetHiveExperiment(e1.Id);
    361       Assert.AreEqual(null, e1loaded); // no access
    362 
     369      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId2);
     370      try {
     371        e1loaded = service.GetHiveExperiment(e1.Id);
     372        Assert.Fail("Access should not be possible");
     373      }
     374      catch { /* ok, cool */ }
     375      allExp = service.GetHiveExperiments();
     376      Assert.AreEqual(0, allExp.Count(x => x.Id == e1.Id));
     377
     378      // back to user1
     379      mockServiceLocator.SetCurrentUserId(MockUserManager.MockUserId1);
    363380      service.DeleteHiveExperiment(e1.Id);
    364381    }
Note: See TracChangeset for help on using the changeset viewer.