@@ -9,17 +9,18 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
9
9
10
10
import Mock
11
11
import Ecto.Query
12
+ alias Ecto.UUID
12
13
alias InternalApi.RBAC.RBAC.Stub
13
14
14
15
@ store_backend Application . compile_env ( :rbac , :key_value_store_backend )
15
16
@ user_permissions_store_name Application . compile_env ( :rbac , :user_permissions_store_name )
16
17
@ project_access_store_name Application . compile_env ( :rbac , :project_access_store_name )
17
18
18
19
@ user_name "Jane Doe"
19
- @ user_id Ecto. UUID. generate ( )
20
- @ org_id Ecto. UUID. generate ( )
21
- @ project_id Ecto. UUID. generate ( )
22
- @ requester_id Ecto. UUID. generate ( )
20
+ @ user_id UUID . generate ( )
21
+ @ org_id UUID . generate ( )
22
+ @ project_id UUID . generate ( )
23
+ @ requester_id UUID . generate ( )
23
24
@ org_admin_permissions [ "organization.general_settings.manage" , "organization.view" ]
24
25
@ proj_reader_permissions [ "project.view" ]
25
26
@@ -60,7 +61,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
60
61
test "organization permissions are not returned for user without organization role" ,
61
62
state do
62
63
Support.Rbac . assign_org_role_by_name ( @ org_id , @ user_id , "Admin" )
63
- req = % Request { user_id: @ user_id , org_id: Ecto. UUID. generate ( ) }
64
+ req = % Request { user_id: @ user_id , org_id: UUID . generate ( ) }
64
65
65
66
{ :ok , % { permissions: permissions } } = state . grpc_channel |> Stub . list_user_permissions ( req )
66
67
assert permissions == [ ]
@@ -145,12 +146,12 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
145
146
describe "assign_role" do
146
147
test "role is not assigned if parameters are not valid UUIDs" , state do
147
148
reqs = [
148
- gen_assign_role_req ( "" , Ecto. UUID. generate ( ) , Ecto. UUID. generate ( ) ) ,
149
- gen_assign_role_req ( "*" , Ecto. UUID. generate ( ) , Ecto. UUID. generate ( ) ) ,
150
- gen_assign_role_req ( @ user_id , "" , Ecto. UUID. generate ( ) ) ,
151
- gen_assign_role_req ( @ user_id , "*" , Ecto. UUID. generate ( ) ) ,
152
- gen_assign_role_req ( @ user_id , Ecto. UUID. generate ( ) , "" ) ,
153
- gen_assign_role_req ( @ user_id , Ecto. UUID. generate ( ) , "*" )
149
+ gen_assign_role_req ( "" , UUID . generate ( ) , UUID . generate ( ) ) ,
150
+ gen_assign_role_req ( "*" , UUID . generate ( ) , UUID . generate ( ) ) ,
151
+ gen_assign_role_req ( @ user_id , "" , UUID . generate ( ) ) ,
152
+ gen_assign_role_req ( @ user_id , "*" , UUID . generate ( ) ) ,
153
+ gen_assign_role_req ( @ user_id , UUID . generate ( ) , "" ) ,
154
+ gen_assign_role_req ( @ user_id , UUID . generate ( ) , "*" )
154
155
]
155
156
156
157
Enum . each ( reqs , fn req ->
@@ -161,7 +162,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
161
162
end
162
163
163
164
test "organization role is not assigned if it does not exist" , state do
164
- role_id = Ecto. UUID. generate ( )
165
+ role_id = UUID . generate ( )
165
166
req = gen_assign_role_req ( @ user_id , role_id , @ org_id )
166
167
{ :error , err } = state . grpc_channel |> Stub . assign_role ( req )
167
168
@@ -170,7 +171,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
170
171
end
171
172
172
173
test "role is not assigned if it is not owned by organization" , state do
173
- non_existant_org_id = Ecto. UUID. generate ( )
174
+ non_existant_org_id = UUID . generate ( )
174
175
{ :ok , role } = Rbac.Repo.RbacRole . get_role_by_name ( "Admin" , "org_scope" , @ org_id )
175
176
176
177
req = gen_assign_role_req ( @ user_id , role . id , non_existant_org_id )
@@ -188,7 +189,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
188
189
end )
189
190
190
191
{ :ok , role } = Rbac.Repo.RbacRole . get_role_by_name ( "Reader" , "project_scope" , @ org_id )
191
- non_existant_proj_id = Ecto. UUID. generate ( )
192
+ non_existant_proj_id = UUID . generate ( )
192
193
req = gen_assign_role_req ( @ user_id , role . id , @ org_id , non_existant_proj_id )
193
194
194
195
{ :error , err } = state . grpc_channel |> Stub . assign_role ( req )
@@ -197,7 +198,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
197
198
end
198
199
199
200
test "project role is not assigned if project does not belong to organization" , state do
200
- project_id = Ecto. UUID. generate ( )
201
+ project_id = UUID . generate ( )
201
202
Support.Projects . insert ( project_id: project_id )
202
203
203
204
GrpcMock . stub ( ProjecthubMock , :describe , fn _ , _ ->
@@ -424,7 +425,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
424
425
Support.Factories.UserGroupBinding . insert ( group_id: group . id , user_id: @ user_id )
425
426
426
427
# Role within some other organization
427
- other_org = Ecto. UUID. generate ( )
428
+ other_org = UUID . generate ( )
428
429
Support.Rbac . create_org_roles ( other_org )
429
430
Support.Rbac . assign_org_role_by_name ( other_org , @ user_id , "Admin" )
430
431
@@ -494,7 +495,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
494
495
describe "list_members" do
495
496
alias InternalApi.RBAC.ListMembersRequest , as: Request
496
497
@ new_member_name "Adam Neely"
497
- @ new_member Ecto. UUID. generate ( )
498
+ @ new_member UUID . generate ( )
498
499
499
500
setup state do
500
501
Support.Factories.RbacUser . insert ( @ new_member , @ new_member_name )
@@ -578,7 +579,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
578
579
test "when listing project members" , state do
579
580
alias Support.Factories.OrgRoleToProjRoleMappings
580
581
581
- { :ok , third_user } = Support.Factories.RbacUser . insert ( Ecto. UUID. generate ( ) , @ user_name )
582
+ { :ok , third_user } = Support.Factories.RbacUser . insert ( UUID . generate ( ) , @ user_name )
582
583
583
584
# Two users are 'normal' members of the org
584
585
Support.Rbac . assign_org_role_by_name ( @ org_id , @ user_id , "Member" )
@@ -616,7 +617,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
616
617
1 .. 3
617
618
|> Enum . each ( fn i ->
618
619
{ :ok , rbac_user } =
619
- Support.Factories.RbacUser . insert ( Ecto. UUID. generate ( ) , "John Doe #{ i } " )
620
+ Support.Factories.RbacUser . insert ( UUID . generate ( ) , "John Doe #{ i } " )
620
621
621
622
Support.Rbac . assign_org_role_by_name ( @ org_id , rbac_user . id , Enum . at ( roles , i - 1 ) )
622
623
end )
@@ -633,7 +634,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
633
634
end
634
635
635
636
test "Should return not found error if organization is not found" , % { grpc_channel: channel } do
636
- org_id = Ecto. UUID. generate ( )
637
+ org_id = UUID . generate ( )
637
638
request = % Request { org_id: org_id }
638
639
639
640
assert { :error , grpc_error } = channel |> Stub . count_members ( request )
@@ -711,7 +712,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
711
712
alias InternalApi.RBAC.DescribeRoleRequest , as: Request
712
713
713
714
test "when role does not exist" , state do
714
- req = % Request { role_id: Ecto. UUID. generate ( ) , org_id: @ org_id }
715
+ req = % Request { role_id: UUID . generate ( ) , org_id: @ org_id }
715
716
{ :error , err } = state . grpc_channel |> Stub . describe_role ( req )
716
717
assert err . status == GRPC.Status . not_found ( )
717
718
assert err . message =~ "not found"
@@ -763,8 +764,8 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
763
764
764
765
test "creates refresh request and calls worker" , state do
765
766
# Insert a couple more test projects
766
- project_id2 = Ecto. UUID. generate ( )
767
- project_id3 = Ecto. UUID. generate ( )
767
+ project_id2 = UUID . generate ( )
768
+ project_id3 = UUID . generate ( )
768
769
Support.Projects . insert ( project_id: project_id2 , org_id: @ org_id )
769
770
Support.Projects . insert ( project_id: project_id3 , org_id: @ org_id )
770
771
@@ -803,7 +804,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
803
804
test "modify role that does not exist" , state do
804
805
req = % Request {
805
806
role: % InternalApi.RBAC.Role {
806
- id: Ecto. UUID. generate ( ) ,
807
+ id: UUID . generate ( ) ,
807
808
org_id: @ org_id ,
808
809
scope: :SCOPE_ORG
809
810
} ,
@@ -907,7 +908,7 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
907
908
end
908
909
909
910
test "user is unauthorized to update roles" , state do
910
- req = % Request { role_id: Ecto. UUID. generate ( ) , org_id: @ org_id , requester_id: @ requester_id }
911
+ req = % Request { role_id: UUID . generate ( ) , org_id: @ org_id , requester_id: @ requester_id }
911
912
912
913
{ :error , err } = state . grpc_channel |> Stub . destroy_role ( req )
913
914
@@ -927,11 +928,18 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
927
928
assert err_msg . message =~ "Invalid uuid passed"
928
929
end
929
930
931
+ test "role does not exist anymore" , state do
932
+ req = % Request { role_assignments: [ gen_role_assignment ( UUID . generate ( ) , @ user_id , @ org_id ) ] }
933
+
934
+ { :ok , response } = state . grpc_channel |> Stub . subjects_have_roles ( req )
935
+ assert response . has_roles |> Enum . at ( 0 ) |> Map . get ( :has_role ) == false
936
+ end
937
+
930
938
test "first subject has the role, second does not" , state do
931
939
Support.Rbac . assign_org_role_by_name ( @ org_id , @ user_id , "Admin" )
932
940
{ :ok , role } = Rbac.Repo.RbacRole . get_role_by_name ( "Admin" , "org_scope" , @ org_id )
933
941
934
- random_user = Ecto. UUID. generate ( )
942
+ random_user = UUID . generate ( )
935
943
936
944
req = % Request {
937
945
role_assignments: [
@@ -972,8 +980,8 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
972
980
end
973
981
974
982
test "If user has access to 2 orgs, return those ids" , state do
975
- org1_id = Ecto. UUID. generate ( )
976
- org2_id = Ecto. UUID. generate ( )
983
+ org1_id = UUID . generate ( )
984
+ org2_id = UUID . generate ( )
977
985
978
986
Support.Rbac . create_org_roles ( org1_id )
979
987
Support.Rbac . create_org_roles ( org2_id )
@@ -1013,10 +1021,10 @@ defmodule Rbac.GrpcServers.RbacServer.Test do
1013
1021
end
1014
1022
1015
1023
test "return only projects that user has access to" , state do
1016
- project1_id = Ecto. UUID. generate ( )
1017
- project2_id = Ecto. UUID. generate ( )
1018
- project3_id = Ecto. UUID. generate ( )
1019
- org2_id = Ecto. UUID. generate ( )
1024
+ project1_id = UUID . generate ( )
1025
+ project2_id = UUID . generate ( )
1026
+ project3_id = UUID . generate ( )
1027
+ org2_id = UUID . generate ( )
1020
1028
1021
1029
Support.Rbac . create_org_roles ( org2_id )
1022
1030
Support.Rbac . create_project_roles ( org2_id )
0 commit comments