Skip to content

Commit

Permalink
#2 Починил шаг по получению назначенных прав для ролей в тесте
Browse files Browse the repository at this point in the history
  • Loading branch information
GregoryGhost committed Mar 15, 2020
1 parent 0a8c7db commit 81f8c38
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 16 deletions.
2 changes: 1 addition & 1 deletion Idone/Idone.DAL/DTO/DtoFilterById.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/// <summary>
/// DTO фильтра по идентификатору сущности.
/// </summary>
public class DtoFilterById : Record<DtoFilterById>
public class DtoFilterById : Record<DtoFilterById>, IIdentity
{
/// <summary>
/// Конструктор по умолчанию.
Expand Down
6 changes: 3 additions & 3 deletions Idone/Idone.DAL/DTO/DtoLinkUserRoles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class DtoLinkUserRoles : Record<DtoLinkUserRoles>
/// </summary>
/// <param name="userId"> Идентификатор пользователя. </param>
/// <param name="roleIds"> Идентификаторы ролей пользователя. </param>
public DtoLinkUserRoles(int userId, IEnumerable<int> roleIds)
public DtoLinkUserRoles(IIdentity userId, IEnumerable<IIdentity> roleIds)
{
UserId = userId;
RoleIds = roleIds;
Expand All @@ -23,11 +23,11 @@ public DtoLinkUserRoles(int userId, IEnumerable<int> roleIds)
/// <summary>
/// Идентификаторы ролей пользователя.
/// </summary>
public IEnumerable<int> RoleIds { get; private set; }
public IEnumerable<IIdentity> RoleIds { get; private set; }

/// <summary>
/// Идентификатор пользователя.
/// </summary>
public int UserId { get; private set; }
public IIdentity UserId { get; private set; }
}
}
2 changes: 1 addition & 1 deletion Idone/Idone.Security/Services/UserService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ public UserService(AppContext appContext)
public Either<Error, Success> UnsetUserRoles(DtoLinkUserRoles link)
{
var dbQuery = _appContext.UserRoles.AsQueryable();
var foundUser = dbQuery.FirstOrDefault(x => x.Id == link.UserId) ?? Left<Error, UserRole>(Error.NotFoundRecord);
var foundUser = dbQuery.FirstOrDefault(x => x.Id == link.UserId.Id) ?? Left<Error, UserRole>(Error.NotFoundRecord);

var result = foundUser.Bind(userRole =>
{
Expand Down
6 changes: 3 additions & 3 deletions Idone/Idone.Tests/Constants.fs
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ module Constants =

let PERMISSIONS : Perm list =
[
{ Name = "" }
{ Name = "тестовое_резрешение"; Description = "описание" }
]

let PERMS_ROLES_LINKS : PermRoleLink list = [
{
Role = { Name = "админ" }
Perm = { Name = "разрешение1" }
Perm = { Name = "разрешение1"; Description = "описание" }
};
{
Role = { Name = "пользователь" }
Perm = { Name = "разрешение2" }
Perm = { Name = "разрешение2"; Description = "описание" }
}
]

Expand Down
7 changes: 6 additions & 1 deletion Idone/Idone.Tests/Helpers/IdoneApiHelper.fs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
namespace Idone.Tests.Helpers
open Idone.DAL.Base

module IdoneApiHelper =
open Idone.DAL.DTO
Expand Down Expand Up @@ -51,7 +52,11 @@ module IdoneApiHelper =
roles |> List.map (fun role -> new DtoNewRole(role.Name))

let preparePermData (perms : Perm list) : DtoNewPermission list =
perms |> List.map (fun perm -> new DtoNewPermission(perm.Name))
perms |> List.map (fun perm -> new DtoNewPermission(perm.Name, perm.Description))

let toDefaultGridQueryRolePerm (filter : #IIdentity) : DtoGridQueryRolePermission =
let query = new DtoGridQueryRolePermission(filter, FIRST_PAGE)
query

let inline bindData
(entity1 : #IIdentity list)
Expand Down
22 changes: 15 additions & 7 deletions Idone/Idone.Tests/Helpers/IdoneApiWrapper.fs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ type SecurityModuleWrapper(servicesProvider : ServiceProvider) =
member __.SetRolesForUser (roles : Role list, user : DtoRegistratedUser) : Either<Error, Success> =
either {
let roleIds = __.GetRoleIds roles
let linkUserRoles = new DtoLinkUserRoles(user.Id, roleIds)
let userId = new DtoFilterById(user.Id)
let linkUserRoles = new DtoLinkUserRoles(userId, roleIds)

return! _module.SetUserRoles linkUserRoles
}
Expand Down Expand Up @@ -78,11 +79,11 @@ type SecurityModuleWrapper(servicesProvider : ServiceProvider) =
member __.FindRole (role : Role) : Either<Error, DtoRowRole> =
role |> toDefaultGridQueryRole |> __.GetGridRoles >>= takeFirstRow

member __.GetRoleIds (roles : Role list) : int seq =
member __.GetRoleIds (roles : Role list) : #IIdentity seq =
roles |> List.map (fun role -> either {
return! __.FindRole role })
|> reduceAllRights
|> Seq.map (fun role -> role.Id)
|> Seq.map (fun role -> new DtoFilterById(role.Id) :> IIdentity)

member __.CreatePermissions (newPerms : Perm list) : DtoPermission list =
newPerms |> preparePermData
Expand All @@ -98,10 +99,17 @@ type SecurityModuleWrapper(servicesProvider : ServiceProvider) =
|> reduceAllRights
|> Seq.toList

member __.GetRolesPermissions (roles: #IIdentity list) : DtoRowPermission list =
member __.GetRolesPermissions (roles: Role list) : DtoRowPermission list =
roles
|> List.map (fun role -> either {
return! (_module.GetGridRolePermissions roleId)})
|> __.GetRoleIds
|> Seq.map (fun roleId -> either {
let filter = toDefaultGridQueryRolePerm (roleId :?> DtoFilterById)
let grid = _module.GetGridRolePermissions filter
return! grid})
|> reduceAllRights
|> Seq.map (fun x -> takeFirstRow x)
|> reduceAllRights
|> Seq.toList

member __.GetPermissionsRoles (perms: #IIdentity list) : DtoRowRole list =
member __.GetPermissionsRoles (perms: Perm list) : DtoRowRole list =
raise (System.NotImplementedException())
1 change: 1 addition & 0 deletions Idone/Idone.Tests/Types.fs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ type Role =
type Perm =
{
Name : string
Description : string
}

type PermRoleLink =
Expand Down

0 comments on commit 81f8c38

Please sign in to comment.