fix: add missing /custom_field_values/:id page to read_only and normal_user
All checks were successful
continuous-integration/drone/push Build is passing

- Add /custom_field_values/:id to read_only pages (users can view list, should also view details)
- Add /custom_field_values/:id to normal_user pages
- Refactor tests to reduce duplication (use for-comprehension for structure tests)
- Add tests for invalid input types in valid_permission_set?/1
- Update @spec for valid_permission_set?/1 to accept any() type
This commit is contained in:
Moritz 2026-01-06 22:17:33 +01:00
parent 7845117fad
commit 18ec4bfd16
2 changed files with 32 additions and 32 deletions

View file

@ -19,40 +19,22 @@ defmodule Mv.Authorization.PermissionSetsTest do
end
describe "get_permissions/1" do
test "returns map with :resources and :pages keys for :own_data" do
permissions = PermissionSets.get_permissions(:own_data)
test "all permission sets return map with :resources and :pages keys" do
for set <- PermissionSets.all_permission_sets() do
permissions = PermissionSets.get_permissions(set)
assert Map.has_key?(permissions, :resources)
assert Map.has_key?(permissions, :pages)
assert is_list(permissions.resources)
assert is_list(permissions.pages)
end
assert Map.has_key?(permissions, :resources),
"#{set} missing :resources key"
test "returns map with :resources and :pages keys for :read_only" do
permissions = PermissionSets.get_permissions(:read_only)
assert Map.has_key?(permissions, :pages),
"#{set} missing :pages key"
assert Map.has_key?(permissions, :resources)
assert Map.has_key?(permissions, :pages)
assert is_list(permissions.resources)
assert is_list(permissions.pages)
end
assert is_list(permissions.resources),
"#{set} :resources must be a list"
test "returns map with :resources and :pages keys for :normal_user" do
permissions = PermissionSets.get_permissions(:normal_user)
assert Map.has_key?(permissions, :resources)
assert Map.has_key?(permissions, :pages)
assert is_list(permissions.resources)
assert is_list(permissions.pages)
end
test "returns map with :resources and :pages keys for :admin" do
permissions = PermissionSets.get_permissions(:admin)
assert Map.has_key?(permissions, :resources)
assert Map.has_key?(permissions, :pages)
assert is_list(permissions.resources)
assert is_list(permissions.pages)
assert is_list(permissions.pages),
"#{set} :pages must be a list"
end
end
test "each resource permission has required keys" do
@ -251,6 +233,7 @@ defmodule Mv.Authorization.PermissionSetsTest do
assert "/members" in permissions.pages
assert "/members/:id" in permissions.pages
assert "/custom_field_values" in permissions.pages
assert "/custom_field_values/:id" in permissions.pages
end
end
@ -356,6 +339,7 @@ defmodule Mv.Authorization.PermissionSetsTest do
assert "/members/:id" in permissions.pages
assert "/members/:id/edit" in permissions.pages
assert "/custom_field_values" in permissions.pages
assert "/custom_field_values/:id" in permissions.pages
assert "/custom_field_values/new" in permissions.pages
assert "/custom_field_values/:id/edit" in permissions.pages
end
@ -541,6 +525,13 @@ defmodule Mv.Authorization.PermissionSetsTest do
test "returns false for nil input" do
assert PermissionSets.valid_permission_set?(nil) == false
end
test "returns false for invalid types" do
assert PermissionSets.valid_permission_set?(123) == false
assert PermissionSets.valid_permission_set?([]) == false
assert PermissionSets.valid_permission_set?(%{}) == false
assert PermissionSets.valid_permission_set?("") == false
end
end
describe "permission_set_name_to_atom/1" do