1- import asyncio
2- from uuid import uuid4
3-
41import pytest
52from loguru import logger
63
74from permit import Permit
85from permit .api .models import (
6+ ActionBlockEditable ,
97 ElementsUserInviteApprove ,
108 ElementsUserInviteCreate ,
11- TenantCreate ,
12- RoleCreate ,
13- UserInviteStatus ,
149 ResourceCreate ,
1510 ResourceInstanceCreate ,
16- ActionBlockEditable ,
11+ RoleCreate ,
12+ TenantCreate ,
13+ UserInviteStatus ,
1714)
1815from permit .exceptions import PermitApiError , PermitConnectionError
1916
@@ -82,15 +79,9 @@ async def test_user_invites_complete_e2e(permit: Permit):
8279 name = "Test Resource for Invites" ,
8380 description = "Resource for testing user invites" ,
8481 actions = {
85- "read" : ActionBlockEditable (
86- name = "Read Access" ,
87- description = "Read access to the resource"
88- ),
89- "write" : ActionBlockEditable (
90- name = "Write Access" ,
91- description = "Write access to the resource"
92- )
93- }
82+ "read" : ActionBlockEditable (name = "Read Access" , description = "Read access to the resource" ),
83+ "write" : ActionBlockEditable (name = "Write Access" , description = "Write access to the resource" ),
84+ },
9485 )
9586 created_resource = await permit .api .resources .create (test_resource )
9687 assert created_resource is not None
@@ -109,7 +100,7 @@ async def test_user_invites_complete_e2e(permit: Permit):
109100 key = "test_instance_invites" ,
110101 resource = created_resource .key ,
111102 tenant = created_tenant .key ,
112- attributes = {"test" : "invites" }
103+ attributes = {"test" : "invites" },
113104 )
114105 created_resource_instance = await permit .api .resource_instances .create (test_resource_instance )
115106 assert created_resource_instance is not None
@@ -120,7 +111,7 @@ async def test_user_invites_complete_e2e(permit: Permit):
120111 test_role = RoleCreate (
121112 key = "test_role_invites" ,
122113 name = "Test Role for Invites" ,
123- permissions = [f"{ created_resource .key } :read" , f"{ created_resource .key } :write" ] # Use our resource actions
114+ permissions = [f"{ created_resource .key } :read" , f"{ created_resource .key } :write" ], # Use our resource actions
124115 )
125116 created_role = await permit .api .roles .create (test_role )
126117 assert created_role is not None
@@ -129,14 +120,14 @@ async def test_user_invites_complete_e2e(permit: Permit):
129120 logger .info (f"Created test role: { created_role .key } " )
130121
131122 # Create invite objects with actual IDs - CONVERT UUIDs TO STRINGS
132- TEST_INVITE_1 = ElementsUserInviteCreate (
123+ test_invite_1 = ElementsUserInviteCreate (
133124 ** TEST_INVITE_DATA_1 ,
134125 role_id = str (created_role .id ), # Convert UUID to string
135126 tenant_id = str (created_tenant .id ), # Convert UUID to string
136127 resource_instance_id = str (created_resource_instance .id ), # Convert UUID to string
137128 )
138129
139- TEST_INVITE_2 = ElementsUserInviteCreate (
130+ test_invite_2 = ElementsUserInviteCreate (
140131 ** TEST_INVITE_DATA_2 ,
141132 role_id = str (created_role .id ), # Convert UUID to string
142133 tenant_id = str (created_tenant .id ), # Convert UUID to string
@@ -151,30 +142,30 @@ async def test_user_invites_complete_e2e(permit: Permit):
151142 logger .info ("Testing user invite creation" )
152143
153144 # Create first invite
154- invite_1 = await permit .api .user_invites .create (TEST_INVITE_1 )
145+ invite_1 = await permit .api .user_invites .create (test_invite_1 )
155146 created_invites .append (invite_1 )
156147
157148 # Verify create output
158149 assert invite_1 is not None
159150 assert invite_1 .id is not None
160- assert invite_1 .key == TEST_INVITE_1 .key
161- assert invite_1 .email == TEST_INVITE_1 .email
162- assert invite_1 .first_name == TEST_INVITE_1 .first_name
163- assert invite_1 .last_name == TEST_INVITE_1 .last_name
151+ assert invite_1 .key == test_invite_1 .key
152+ assert invite_1 .email == test_invite_1 .email
153+ assert invite_1 .first_name == test_invite_1 .first_name
154+ assert invite_1 .last_name == test_invite_1 .last_name
164155 assert invite_1 .status == UserInviteStatus .pending
165156 assert invite_1 .role_id == created_role .id
166157 assert invite_1 .tenant_id == created_tenant .id
167158 logger .info (f"✅ Created invite 1: { invite_1 .email } (ID: { invite_1 .id } )" )
168159
169160 # Create second invite
170- invite_2 = await permit .api .user_invites .create (TEST_INVITE_2 )
161+ invite_2 = await permit .api .user_invites .create (test_invite_2 )
171162 created_invites .append (invite_2 )
172163
173164 # Verify second invite
174165 assert invite_2 is not None
175166 assert invite_2 .id is not None
176- assert invite_2 .key == TEST_INVITE_2 .key
177- assert invite_2 .email == TEST_INVITE_2 .email
167+ assert invite_2 .key == test_invite_2 .key
168+ assert invite_2 .email == test_invite_2 .email
178169 assert invite_2 .status == UserInviteStatus .pending
179170 logger .info (f"✅ Created invite 2: { invite_2 .email } (ID: { invite_2 .id } )" )
180171
@@ -191,10 +182,7 @@ async def test_user_invites_complete_e2e(permit: Permit):
191182 assert invites_list .total_count >= 2 # At least our 2 invites
192183
193184 # Find our created invites in the list
194- our_invites = [
195- invite for invite in invites_list .data
196- if invite .id in [invite_1 .id , invite_2 .id ]
197- ]
185+ our_invites = [invite for invite in invites_list .data if invite .id in [invite_1 .id , invite_2 .id ]]
198186 assert len (our_invites ) == 2
199187 logger .info (f"✅ Listed invites: found { invites_list .total_count } total, including our 2 test invites" )
200188
@@ -223,12 +211,11 @@ async def test_user_invites_complete_e2e(permit: Permit):
223211 approve_data = ElementsUserInviteApprove (
224212 email = invite_1 .email ,
225213 key = invite_1 .key ,
226- attributes = {"department" : "Engineering" , "role" : "Developer" , "test" : "complete_e2e_test" }
214+ attributes = {"department" : "Engineering" , "role" : "Developer" , "test" : "complete_e2e_test" },
227215 )
228216
229217 approved_user = await permit .api .user_invites .approve (
230- user_invite_id = str (invite_1 .id ),
231- approve_data = approve_data
218+ user_invite_id = str (invite_1 .id ), approve_data = approve_data
232219 )
233220
234221 # Verify approval
@@ -274,7 +261,8 @@ async def test_user_invites_complete_e2e(permit: Permit):
274261 # List invites again to verify our changes
275262 final_invites_list = await permit .api .user_invites .list (page = 1 , per_page = 50 )
276263 our_remaining_invites = [
277- invite for invite in final_invites_list .data
264+ invite
265+ for invite in final_invites_list .data
278266 if invite .id == invite_1 .id # Only invite_1 should remain
279267 ]
280268
0 commit comments