generated from jric11/baseProject
ChatGPT's update to harden software and run db updates.
This commit is contained in:
+17
-5
@@ -50,15 +50,27 @@ try:
|
||||
assert all(row['ok'] for row in result),result
|
||||
assert len(app.fixture('inspect')['club_due_adjustments'])==1
|
||||
print('PASS: Concurrent dues correction retries create only one adjustment.')
|
||||
response=app.post('Users.addUser',step='add',user_name='second_admin',user_first_name='Second',user_last_name='Administrator',user_email='second@example.test',user_role='Administrator')
|
||||
response=app.post('Users.addUser',step='add',user_name='second_admin',user_first_name='Second',user_last_name='Administrator',user_email='second@example.test',user_role='Super System Administrator')
|
||||
assert response[0]==200,response[1]
|
||||
ids=[row['user_serial'] for row in app.fixture('inspect')['users'] if row['user_role']=='Administrator']
|
||||
ids=[row['user_serial'] for row in app.fixture('inspect')['users'] if row['user_role']=='Super System Administrator']
|
||||
result=race('disable',ids)
|
||||
assert sorted(item['ok'] for item in result)==[False,True],result
|
||||
assert next(item for item in result if not item['ok'])['status']==409,result
|
||||
assert sum(row['user_role']=='Administrator' and row['user_status']=='active' for row in app.fixture('inspect')['users'])==1
|
||||
assert next(item for item in result if not item['ok'])['status'] in [403,409],result
|
||||
assert sum(row['user_role']=='Super System Administrator' and row['user_status']=='active' for row in app.fixture('inspect')['users'])==1
|
||||
print('PASS: Concurrent administrator changes cannot disable the final administrator.')
|
||||
print('5 concurrency scenarios passed.')
|
||||
tenant=app.fixture('tenantSeed')
|
||||
invitation=app.fixture('seedTenantInvitation',str(tenant['clubA']),str(tenant['admina']),'invitee@example.test')['invitation']
|
||||
result=race('accept',[invitation,invitation],[tenant['invitee']])
|
||||
assert sorted(item['ok'] for item in result)==[False,True],result
|
||||
assert sum(row['user_serial']==tenant['invitee'] and row['club_serial']==tenant['clubA'] for row in app.fixture('inspect')['club_memberships'])==1
|
||||
print('PASS: Concurrent invitation acceptance grants exactly one membership.')
|
||||
# Restore the worker actor after the previous last-super race, for this isolated fixture only.
|
||||
app.fixture('restoreTestSuper')
|
||||
result=race('membership',[tenant['clubA_admina'],tenant['clubA_admina2']],[tenant['clubA']])
|
||||
assert sorted(item['ok'] for item in result)==[False,True],result
|
||||
assert sum(row['club_serial']==tenant['clubA'] and row['membership_role']=='administrator' and row['membership_status']=='active' for row in app.fixture('inspect')['club_memberships'])==1
|
||||
print('PASS: Concurrent membership changes preserve the last club administrator.')
|
||||
print('7 concurrency scenarios passed.')
|
||||
finally:
|
||||
for process in workers:
|
||||
if process.poll() is None:process.terminate();process.wait(timeout=10)
|
||||
|
||||
Reference in New Issue
Block a user