@@ -511,7 +511,7 @@ def semi_private_project(client, org1_admin_token, pathogen):
511511
512512
513513@pytest .fixture
514- def project_admin (client , system_admin_token , keycloak_auth ):
514+ def org1_project_admin (client , org1 , system_admin_token , keycloak_auth ):
515515 """Create a project admin user from org1"""
516516 user_data = {
517517@@ -521,6 +521,18 @@ def project_admin(client, system_admin_token, keycloak_auth):
521521522522 }
523523 user = create_user_if_not_exists (client , system_admin_token , keycloak_auth , ** user_data )
524+
525+ # Add user to org1 as member
526+ response = client .post (
527+ f'/organisations/{ org1 ["id" ]} /members' ,
528+ data = json .dumps ({'user_id' : user ['user_id' ], 'role' : 'org-viewer' }),
529+ headers = {
530+ 'Authorization' : f'Bearer { system_admin_token } ' ,
531+ 'Content-Type' : 'application/json'
532+ }
533+ )
534+ assert response .status_code == 200 , f"Failed to add org1 project admin to org: { response .get_json ()} "
535+
524536 yield user
525537
526538 client .delete (
@@ -530,13 +542,13 @@ def project_admin(client, system_admin_token, keycloak_auth):
530542
531543
532544@pytest .fixture
533- def project_admin_token ( project_admin ):
534- """Get token for project admin"""
535- return keycloak_password_auth (project_admin ["email" ], 'pass123' )
545+ def org1_project_admin_token ( org1_project_admin ):
546+ """Get token for org1 project admin"""
547+ return keycloak_password_auth (org1_project_admin ["email" ], 'pass123' )
536548
537549
538550@pytest .fixture
539- def project_contributor (client , system_admin_token , keycloak_auth ):
551+ def org1_project_contributor (client , org1 , system_admin_token , keycloak_auth ):
540552 """Create a project contributor user from org1"""
541553 user_data = {
542554@@ -546,6 +558,18 @@ def project_contributor(client, system_admin_token, keycloak_auth):
546558547559 }
548560 user = create_user_if_not_exists (client , system_admin_token , keycloak_auth , ** user_data )
561+
562+ # Add user to org1 as member
563+ response = client .post (
564+ f'/organisations/{ org1 ["id" ]} /members' ,
565+ data = json .dumps ({'user_id' : user ['user_id' ], 'role' : 'org-viewer' }),
566+ headers = {
567+ 'Authorization' : f'Bearer { system_admin_token } ' ,
568+ 'Content-Type' : 'application/json'
569+ }
570+ )
571+ assert response .status_code == 200 , f"Failed to add org1 project contributor to org: { response .get_json ()} "
572+
549573 yield user
550574
551575 client .delete (
@@ -555,13 +579,13 @@ def project_contributor(client, system_admin_token, keycloak_auth):
555579
556580
557581@pytest .fixture
558- def project_contributor_token ( project_contributor ):
559- """Get token for project contributor"""
560- return keycloak_password_auth (project_contributor ["email" ], 'pass123' )
582+ def org1_project_contributor_token ( org1_project_contributor ):
583+ """Get token for org1 project contributor"""
584+ return keycloak_password_auth (org1_project_contributor ["email" ], 'pass123' )
561585
562586
563587@pytest .fixture
564- def project_viewer (client , system_admin_token , keycloak_auth ):
588+ def org1_project_viewer (client , org1 , system_admin_token , keycloak_auth ):
565589 """Create a project viewer user from org1"""
566590 user_data = {
567591@@ -571,6 +595,18 @@ def project_viewer(client, system_admin_token, keycloak_auth):
571595572596 }
573597 user = create_user_if_not_exists (client , system_admin_token , keycloak_auth , ** user_data )
598+
599+ # Add user to org1 as member
600+ response = client .post (
601+ f'/organisations/{ org1 ["id" ]} /members' ,
602+ data = json .dumps ({'user_id' : user ['user_id' ], 'role' : 'org-viewer' }),
603+ headers = {
604+ 'Authorization' : f'Bearer { system_admin_token } ' ,
605+ 'Content-Type' : 'application/json'
606+ }
607+ )
608+ assert response .status_code == 200 , f"Failed to add org1 project viewer to org: { response .get_json ()} "
609+
574610 yield user
575611
576612 client .delete (
@@ -580,9 +616,46 @@ def project_viewer(client, system_admin_token, keycloak_auth):
580616
581617
582618@pytest .fixture
583- def project_viewer_token (project_viewer ):
584- """Get token for project viewer"""
585- return keycloak_password_auth (project_viewer ["email" ], 'pass123' )
619+ def org1_project_viewer_token (org1_project_viewer ):
620+ """Get token for org1 project viewer"""
621+ return keycloak_password_auth (org1_project_viewer ["email" ], 'pass123' )
622+
623+
624+ # Legacy fixtures for backwards compatibility
625+ @pytest .fixture
626+ def project_admin (org1_project_admin ):
627+ """Alias for org1_project_admin for backwards compatibility"""
628+ return org1_project_admin
629+
630+
631+ @pytest .fixture
632+ def project_admin_token (org1_project_admin_token ):
633+ """Alias for org1_project_admin_token for backwards compatibility"""
634+ return org1_project_admin_token
635+
636+
637+ @pytest .fixture
638+ def project_contributor (org1_project_contributor ):
639+ """Alias for org1_project_contributor for backwards compatibility"""
640+ return org1_project_contributor
641+
642+
643+ @pytest .fixture
644+ def project_contributor_token (org1_project_contributor_token ):
645+ """Alias for org1_project_contributor_token for backwards compatibility"""
646+ return org1_project_contributor_token
647+
648+
649+ @pytest .fixture
650+ def project_viewer (org1_project_viewer ):
651+ """Alias for org1_project_viewer for backwards compatibility"""
652+ return org1_project_viewer
653+
654+
655+ @pytest .fixture
656+ def project_viewer_token (org1_project_viewer_token ):
657+ """Alias for org1_project_viewer_token for backwards compatibility"""
658+ return org1_project_viewer_token
586659
587660
588661@pytest .fixture
0 commit comments