Skip to content

Commit 28468df

Browse files
authored
Merge pull request #213 from OpenUpSA/tests/search
Tests for search & reindex api
2 parents 26552ff + 36ce4e2 commit 28468df

File tree

3 files changed

+1166
-12
lines changed

3 files changed

+1166
-12
lines changed

pytest.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ markers =
3030
submission_validation: Tests for submission validation operations
3131
submission_get_validation: Tests for retrieving submission validation status
3232
submission_start_validation: Tests for starting submission validation
33+
search: Tests for search functionality
34+
reindex: Tests for reindexing operations
3335

3436
# Permission-based markers
3537
requires_auth: Tests that require authentication

test/conftest.py

Lines changed: 85 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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
'username': '[email protected]',
@@ -521,6 +521,18 @@ def project_admin(client, system_admin_token, keycloak_auth):
521521
'email': '[email protected]'
522522
}
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
'username': '[email protected]',
@@ -546,6 +558,18 @@ def project_contributor(client, system_admin_token, keycloak_auth):
546558
'email': '[email protected]'
547559
}
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
'username': '[email protected]',
@@ -571,6 +595,18 @@ def project_viewer(client, system_admin_token, keycloak_auth):
571595
'email': '[email protected]'
572596
}
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

Comments
 (0)