Skip to content

Commit

Permalink
#2 Рефакторинг теста "Назначение прав ролям"
Browse files Browse the repository at this point in the history
  • Loading branch information
GregoryGhost committed Dec 11, 2019
1 parent 887f146 commit 5a34cab
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 32 deletions.
7 changes: 7 additions & 0 deletions Idone/Idone.Tests/Helpers/IdoneApiHelper.fs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ module IdoneApiHelper =
open Idone.Tests.Types

open LanguageExt
open Idone.Security

let fillUserCredentials (userData : DtoAdUser) : DtoRegistrateUser =
new DtoRegistrateUser(
Expand Down Expand Up @@ -48,7 +49,13 @@ module IdoneApiHelper =

let prepareRoleData (roles : Role list) : DtoNewRole list =
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))

let preparePermRoleLinkData (links : PermRoleLink list) : DtoLinkRolePermissions list =
links |> List.map (fun link -> new DtoLinkRolePermissions(link.Role.))

let toRoleDtos (roles : Role list) : DtoNewRole list =
roles |> List.map (fun role -> new DtoNewRole(role.Name))

Expand Down
31 changes: 19 additions & 12 deletions Idone/Idone.Tests/Helpers/IdoneApiWrapper.fs
Original file line number Diff line number Diff line change
Expand Up @@ -71,22 +71,29 @@ type SecurityModuleWrapper(servicesProvider : ServiceProvider) =

member __.CreateRoles (newRoles : Role list) : DtoCreatedRole list =
newRoles |> prepareRoleData
|> List.fold (fun acc role -> either {
return! (_module.CreateRole role) :: acc}) []
|> reduceAllRights
|> Seq.toList
|> List.map (fun role -> either {
return! (_module.CreateRole role) })
|> reduceAllRights |> Seq.toList

member __.FindRole (role : Role) : Either<Error, DtoRowRole> =
role |> toDefaultGridQueryRole |> __.GetGridRoles >>= takeFirstRow

member __.GetRoleIds (roles : Role list) : int seq =
([], roles) ||> List.fold (fun acc role ->
either {
let foundRole = __.FindRole role
return! foundRole :: acc
})
roles |> List.map (fun role -> either {
return! __.FindRole role })
|> reduceAllRights
|> Seq.fold (fun acc role -> role.Id :: acc) []
|> List.toSeq
|> Seq.map (fun role -> role.Id)

member __.SetPermissionsForRole()
member __.CreatePermissions (newPerms : Perm list) : DtoCreatedPermission list =
newPerms |> preparePermData
|> List.map (fun perm -> either {
return! (_module.CreatePermissions perm) })
|> reduceAllRights
|> Seq.toList

member __.SetPermissionsForRole (links: PermRoleLink list) : Success list =
links |> preparePermRoleLinkData
|> List.map (fun link -> either {
return! (_module.AllowRolePermissions link) })
|> reduceAllRights
|> Seq.toList
48 changes: 28 additions & 20 deletions Idone/Idone.Tests/Sample.fs
Original file line number Diff line number Diff line change
Expand Up @@ -108,30 +108,38 @@ module Tests =

let startRoles = PERMS_ROLES_LINKS |> getRoles
let startPerms = PERMS_ROLES_LINKS |> getPerms
let foundRoles : Either<Error, DtoGridRole> = either {
let createdRoles =
startRoles |> _security.CreateRoles
Expect.isNonEmpty createdRoles "Не удалось создать роли"

let! createdPerms =
startPerms |> _security.CreatePermissions
Expect.isRight createdPerms "Не удалось создать права"
let linksLength = List.length PERMS_ROLES_LINKS

let! result =
_security.SetPermissionsForRole(PERMS_ROLES_LINKS)
Expect.isRight result "Не удалось назначить права для ролей"
let createdRoles =
startRoles |> _security.CreateRoles
Expect.hasLength <||| (createdRoles,
linksLength,
"Не удалось создать роли")

let createdPerms =
startPerms |> _security.CreatePermissions
Expect.hasLength <||| (createdPerms,
linksLength,
"Не удалось создать права")

let! perms =
_security.GetRolesPermissions(startRoles)
Expect.isRight perms "Не удалось получить назначенные права для ролей"

let! roles =
_security.GetPermissionsRoles(startPerms)
let result =
_security.SetPermissionsForRole(PERMS_ROLES_LINKS)
Expect.hasLength <||| (result,
linksLength,
"Не удалось назначить права для ролей")

return! roles
}
let perms =
_security.GetRolesPermissions(startRoles)
Expect.hasLength <||| (perms,
linksLength,
"Не удалось получить назначенные права для ролей")

let roles =
_security.GetPermissionsRoles(startPerms)
Expect.hasLength <||| (roles,
linksLength,
"Не найдены роли, назначенных прав")

Expect.isRight foundRoles "Не найдены роли, назначенных прав"
clearRolesPerms() |> ignore
}

Expand Down

0 comments on commit 5a34cab

Please sign in to comment.