Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Security.Core/3.2/SecurityCoreTest.cs @ 1765

Last change on this file since 1765 was 1765, checked in by mbecirov, 15 years ago

#586 Extended test data insert

File size: 7.3 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using HeuristicLab.PluginInfrastructure;
6using HeuristicLab.Security.Contracts.BusinessObjects;
7using HeuristicLab.Hive.Server.Core;
8
9namespace HeuristicLab.Security.Core {
10    [ClassInfo(Name = "Security Test App",
11        Description = "Test Application for the Security Service",
12        AutoRestart = true)]
13  class SecurityCoreTest : ApplicationBase {
14
15      SecurityManager manager = new SecurityManager();
16      PermissionManager permManager =  new PermissionManager();
17
18
19      private void testGroups() {
20
21        User user = new User();
22        user.Login = "anna";
23        user.SetHashedPassword("blubb");
24        user.Name = "Anna";
25        user = manager.AddNewUser(user);
26
27        User user2 = new User();
28        user2.Login = "stefan";
29        user2.Name = "Stefan";
30
31        UserGroup group = new UserGroup();
32        group.Name = "Students";
33
34        UserGroup group2 = new UserGroup();
35        group2.Name = "Lazy Students";
36
37        group.Members.Add(user);
38        group.Members.Add(group2);
39
40        group2.Members.Add(user2);
41
42        manager.AddNewUserGroup(group);
43
44        group = manager.GetUserGroupByName("Students");
45        group2 = manager.GetUserGroupByName("Lazy Students");
46
47        manager.RemoveUserGroup(group2.Id);
48
49        group = manager.GetUserGroupByName("Students");
50        group2 = manager.GetUserGroupByName("Lazy Students");
51
52        manager.RemoveUser(user.Id);
53
54        group = manager.GetUserGroupByName("Students");
55        manager.RemoveUserGroup(group.Id);
56
57        group = manager.GetUserGroupByName("Students");
58        manager.RemoveUser(user2.Id);
59      }
60
61      private void testPermissions() {
62
63        Permission permission = new Permission();
64        permission.Name = "ADD_JOBS";
65        permission.Description = "Add jobs";
66        permission.Plugin = "TestPlugin";
67
68        manager.AddPermission(permission);
69
70        permission = manager.GetPermissionById(permission.Id);
71
72        User user = new User();
73        user.Login = "anna";
74        user.SetHashedPassword("blubb");
75        user.Name = "Anna";
76        user = manager.AddNewUser(user);
77
78        manager.GrantPermission(user.Id, permission.Id, Guid.Empty);
79
80        Guid sessionId = permManager.Authenticate("anna", "blubb");
81
82        bool hasPermission =
83          permManager.CheckPermission(sessionId, permission.Id, Guid.Empty);
84
85        manager.RevokePermission(user.Id, permission.Id, Guid.Empty);
86
87        hasPermission =
88          permManager.CheckPermission(sessionId, permission.Id, Guid.Empty);
89
90        permManager.EndSession(sessionId);
91
92        manager.RemoveUser(user.Id);
93
94        manager.RemovePermission(permission.Id);
95
96        permission = manager.GetPermissionById(permission.Id);
97      }
98
99      private void testPermissionsGroup() {
100
101        User user = new User();
102        user.Login = "anna";
103        user.SetHashedPassword("blubb");
104        user.Name = "Anna";
105        user = manager.AddNewUser(user);
106
107        User user2 = new User();
108        user2.Login = "stefan";
109        user2.SetHashedPassword("foo");
110        user2.Name = "Stefan";
111
112        UserGroup group = new UserGroup();
113        group.Name = "Students";
114
115        UserGroup group2 = new UserGroup();
116        group2.Name = "Lazy Students";
117
118        group.Members.Add(user);
119        group.Members.Add(group2);
120
121        group2.Members.Add(user2);
122
123        manager.AddNewUserGroup(group);
124
125        Permission permission = new Permission();
126        permission.Name = "ADD_JOBS";
127        permission.Description = "Add jobs";
128        permission.Plugin = "TestPlugin";
129
130        manager.AddPermission(permission);
131
132        manager.GrantPermission(group.Id, permission.Id, Guid.Empty);
133        manager.GrantPermission(group2.Id, permission.Id, Guid.Empty);
134
135        Guid sessionId = permManager.Authenticate("anna", "blubb");
136
137        bool hasPermission =
138          permManager.CheckPermission(sessionId, permission.Id, Guid.Empty);
139
140        Guid sessionId2 = permManager.Authenticate("stefan", "foo");
141
142        hasPermission =
143          permManager.CheckPermission(sessionId2, permission.Id, Guid.Empty);
144
145        manager.RevokePermission(group.Id, permission.Id, Guid.Empty);
146
147        hasPermission =
148          permManager.CheckPermission(sessionId, permission.Id, Guid.Empty);
149
150        hasPermission =
151          permManager.CheckPermission(sessionId2, permission.Id, Guid.Empty);
152
153        manager.RevokePermission(group2.Id, permission.Id, Guid.Empty);
154
155        hasPermission =
156          permManager.CheckPermission(sessionId2, permission.Id, Guid.Empty);
157
158        permManager.EndSession(sessionId);
159        permManager.EndSession(sessionId2);
160
161        manager.RemoveUser(user.Id);
162        manager.RemoveUser(user2.Id);
163        manager.RemoveUserGroup(group.Id);
164        manager.RemoveUserGroup(group2.Id);
165
166        manager.RemovePermission(permission.Id);
167      }
168      #region TEST DATA INSERT SECTION for MB
169
170      private void InsertTestDataForPermissionCheck() {
171        int numberOfUsers = 10;
172
173        List<User> users = new List<User>();
174        for (int i = 0; i < numberOfUsers; i++) {
175          users.Add(MB_InsertTestUser());
176        }
177        MB_AssignGroups(users);
178       
179      }
180
181      private User MB_InsertTestUser() {
182        Random rand = new Random(DateTime.Now.Millisecond);
183        int usr = rand.Next(1000);
184        User user = new User();
185        user.Login = "test" + usr.ToString();
186        user.SetHashedPassword("test");
187        user.Name = "test" + usr.ToString();
188        return manager.AddNewUser(user);
189      }
190
191      /// <summary>
192      /// Splits the given users into two groups and assigns them. Some will be not assigned.
193      /// </summary>
194      /// <param name="users"></param>
195      private void MB_AssignGroups(List<User> users) {
196        UserGroup group01 = new UserGroup();
197        group01.Name = "Test Group 01";
198
199        UserGroup group02 = new UserGroup();
200        group02.Name = "Test Group 02";
201
202        //three-way split users into group1, group2 and none
203        int idx = users.Count / 3;
204        for (int i = 0; i < idx; i++) {
205          group01.Members.Add(users[i]);
206        }
207        for (int i = idx; i < users.Count / 2; i++) {
208          group02.Members.Add(users[i]);
209        }
210        manager.AddNewUserGroup(group01);
211        manager.AddNewUserGroup(group02);
212       
213      }
214
215      private void MB_AddPermission(List<User> users) {
216        if (users.Count < 2) return;
217        Permission permission = new Permission();
218        //permission.Id = PermissiveSecurityAction.Add_Job;
219        permission.Name = "ADD_JOB";
220        permission.Description = "Add new jobs";
221        permission.Plugin = "HeuristicLab.Hive.Server";
222       
223        manager.AddPermission(permission);
224        //grant permission to random users
225        Random rand = new Random(DateTime.Now.Millisecond);
226        for (int i = 0; i < users.Count/2; i++) {
227          int idx = rand.Next(users.Count);
228          manager.GrantPermission(users[i].Id, permission.Id, Guid.Empty);
229        }
230      }
231
232      #endregion
233      public override void Run() {
234        //testPermissionsGroup();
235        InsertTestDataForPermissionCheck();
236      }
237    }
238}
Note: See TracBrowser for help on using the repository browser.