private void AssertPermission(List<DeployProjectEffectivePermissions> projectPermissionList, EnumPermissionAccess access)
			{
				foreach(var projectPermission in projectPermissionList)
				{
					AssertPermission(projectPermission, access);
				}
			}
			private void AssertPermission(List<DeployProjectRoleEnvironmentPermission> permissionList, EnumPermissionAccess access)
			{
				foreach(var item in permissionList)
				{
					AssertPermission(item, access);
				}
			}
			private void AssertPermission(DeployProjectEffectivePermissions projectPermissions, EnumPermissionAccess access)
			{
				Assert.AreEqual(access, projectPermissions.EditComponentConfigurationAccess);
				Assert.AreEqual(access, projectPermissions.CreateEnvironmentAccess);
				Assert.AreEqual(access, projectPermissions.EditProjectPermissionsAccess);

				AssertPermission(projectPermissions.ApproveRejectDeployPermissionList, access);
				AssertPermission(projectPermissions.EditEnvironmentPermissionList, access);
				AssertPermission(projectPermissions.EditEnvironmentPermissionsPermissionList, access);
				AssertPermission(projectPermissions.RequestDeployPermissionList, access);
				AssertPermission(projectPermissions.RunDeploymentPermissionList, access);
			}
				public DeployProjectRole AddRoleAssignment(DeployProject project, DeployEnvironment environment, 
							EnumPermissionAccess createEnvironmentAccess=EnumPermissionAccess.None,
							EnumPermissionAccess editComponentConfigurationAccess=EnumPermissionAccess.None, 
							EnumPermissionAccess editProjectPermissionsAccess=EnumPermissionAccess.None,
							EnumPermissionAccess approveRejectDeployAccess=EnumPermissionAccess.None, 
							EnumPermissionAccess requestDeploymentAccess=EnumPermissionAccess.None,
							EnumPermissionAccess runDeploymentmentAccess=EnumPermissionAccess.None,
							EnumPermissionAccess editEnvironmentAccess=EnumPermissionAccess.None,
							EnumPermissionAccess editEnvironmentPermissionsAccess = EnumPermissionAccess.None)
				{
					string roleId = this.Fixture.Create<string>();
					var role = new DeployProjectRole
					{
						Id = roleId,
						ProjectId = project.Id,
						RoleName = this.Fixture.Create<string>("RoleName"),
						Assignments = new DeployProjectRoleAssignments
						{
							UserNameList = new List<string> { this.UserName }
						},
						EveryoneRoleIndicator = false
					};
					role.Permissions.EditComponentConfigurationAccess = editComponentConfigurationAccess;
					role.Permissions.CreateEnvironmentAccess = createEnvironmentAccess;
					role.Permissions.EditProjectPermissionsAccess = editProjectPermissionsAccess;
					this.SetPermission(project, environment, role.Permissions.ApproveRejectDeployPermissionList, approveRejectDeployAccess);
					this.SetPermission(project, environment, role.Permissions.RequestDeployPermissionList, requestDeploymentAccess);
					this.SetPermission(project, environment, role.Permissions.RunDeploymentPermissionList, runDeploymentmentAccess);
					this.SetPermission(project, environment, role.Permissions.EditEnvironmentPermissionList, editEnvironmentAccess);
					this.SetPermission(project, environment, role.Permissions.EditEnvironmentPermissionsPermissionList, editEnvironmentPermissionsAccess);

					this.DeployProjectRoleList.Add(role);

					return role;
				}
			private void AssertPermission(DeployProjectRoleEnvironmentPermission item, EnumPermissionAccess access)
			{
				Assert.AreEqual(access, item.Access);
			}
				private void SetPermission(DeployProject project, DeployEnvironment environment, List<DeployProjectRoleEnvironmentPermission> list, EnumPermissionAccess access)
				{
					foreach(var x in project.EnvironmentList)
					{
						var item = list.FirstOrDefault(i=>i.EnvironmentId == x.Id);
						if(item == null)
						{
							item = new DeployProjectRoleEnvironmentPermission
							{
                                //Id = this.Fixture.Create<string>(),
                                //ProjectId = project.Id,
								EnvironmentId = x.Id,
								EnvironmentName = x.CreatedByUserName
							};
							list.Add(item);
						}
					}
					list.First(i=>i.EnvironmentId == environment.Id).Access = access;
				}
 public void SetupAdministratorUser(bool allowSelfRegistation, EnumPermissionAccess defaultAccess)
 {
     _systemSettings.AllowSelfRegistration = allowSelfRegistation;
     _systemSettings.DefaultAccess = defaultAccess;
 }
  private bool VerifyAllRolePermissions(SystemRole role, EnumPermissionAccess access)
  {
      bool anyChange = false;
      if(role.Permissions.EditSystemPermissionsAccess != access)
      {
          role.Permissions.EditSystemPermissionsAccess = access;
          anyChange = true;
      }
      if(role.Permissions.EditUsersAccess != access)
      {
          role.Permissions.EditUsersAccess = access;
          anyChange = true;
      }
      if(role.Permissions.EditDeploymentCredentialsAccess != access)
      {
          role.Permissions.EditDeploymentCredentialsAccess = access;
          anyChange = true;
      }
      if(role.Permissions.EditDeploymentToolsAccess != access)
      {
          role.Permissions.EditDeploymentToolsAccess = access;
          anyChange = true;
      }
      if(role.Permissions.EditBuildPurgeRulesAccess != access)
      {
          role.Permissions .EditBuildPurgeRulesAccess = access;
          anyChange = true;
      }
      return anyChange;
 }
 private void VerifyAndSaveAllRolePermissions(SystemRole role, EnumPermissionAccess access)
 {
     if (VerifyAllRolePermissions(role, access))
     {
         _systemRoleRepository.UpdateSystemRole(role.Id, role.RoleName, role.RoleType, role.Permissions, role.Assignments);
     }
 }