|
19 | 19 |
|
20 | 20 | import json |
21 | 21 | import uuid |
22 | | -from datetime import datetime |
| 22 | +from datetime import datetime, timedelta |
23 | 23 | from http import HTTPStatus |
24 | 24 | from unittest.mock import patch |
25 | 25 |
|
@@ -3005,3 +3005,102 @@ def test_search_org_members(client, jwt, session, keycloak_mock): # pylint:disa |
3005 | 3005 | ) |
3006 | 3006 | dictionary = json.loads(rv.data) |
3007 | 3007 | assert not dictionary["orgs"] |
| 3008 | + |
| 3009 | + |
| 3010 | +def test_search_org_suspended_filters(client, jwt, session, keycloak_mock): # pylint:disable=unused-argument |
| 3011 | + """Assert that orgs can be searched by suspended date and suspension reason code.""" |
| 3012 | + headers = factory_auth_header(jwt=jwt, claims=TestJwtClaims.staff_manage_accounts_role) |
| 3013 | + |
| 3014 | + today = datetime.now() |
| 3015 | + yesterday = today - timedelta(days=1) |
| 3016 | + last_week = today - timedelta(days=7) |
| 3017 | + |
| 3018 | + org1 = factory_org_model(org_info=TestOrgInfo.org1) |
| 3019 | + org1.status_code = OrgStatus.SUSPENDED.value |
| 3020 | + org1.suspended_on = yesterday |
| 3021 | + org1.suspension_reason_code = SuspensionReasonCode.OWNER_CHANGE.name |
| 3022 | + org1.save() |
| 3023 | + |
| 3024 | + org2 = factory_org_model(org_info=TestOrgInfo.org2) |
| 3025 | + org2.status_code = OrgStatus.SUSPENDED.value |
| 3026 | + org2.suspended_on = last_week |
| 3027 | + org2.suspension_reason_code = SuspensionReasonCode.DISPUTE.name |
| 3028 | + org2.save() |
| 3029 | + |
| 3030 | + org3 = factory_org_model(org_info=TestOrgInfo.org_with_mailing_address()) |
| 3031 | + org3.status_code = OrgStatus.SUSPENDED.value |
| 3032 | + org3.suspended_on = today |
| 3033 | + org3.suspension_reason_code = SuspensionReasonCode.OWNER_CHANGE.name |
| 3034 | + org3.save() |
| 3035 | + |
| 3036 | + rv = client.get( |
| 3037 | + f"/api/v1/orgs?status=SUSPENDED&suspensionReasonCode={SuspensionReasonCode.OWNER_CHANGE.name}", |
| 3038 | + headers=headers, |
| 3039 | + content_type="application/json", |
| 3040 | + ) |
| 3041 | + assert rv.status_code == HTTPStatus.OK |
| 3042 | + orgs = json.loads(rv.data) |
| 3043 | + assert orgs.get("total") == 2 |
| 3044 | + org_ids = [org.get("id") for org in orgs.get("orgs")] |
| 3045 | + assert org1.id in org_ids |
| 3046 | + assert org3.id in org_ids |
| 3047 | + assert org2.id not in org_ids |
| 3048 | + |
| 3049 | + rv = client.get( |
| 3050 | + f"/api/v1/orgs?status=SUSPENDED&suspensionReasonCode={SuspensionReasonCode.DISPUTE.name}", |
| 3051 | + headers=headers, |
| 3052 | + content_type="application/json", |
| 3053 | + ) |
| 3054 | + assert rv.status_code == HTTPStatus.OK |
| 3055 | + orgs = json.loads(rv.data) |
| 3056 | + assert orgs.get("total") == 1 |
| 3057 | + assert orgs.get("orgs")[0].get("id") == org2.id |
| 3058 | + |
| 3059 | + rv = client.get( |
| 3060 | + f"/api/v1/orgs?status=SUSPENDED&suspendedDateFrom={yesterday.strftime('%Y-%m-%d')}", |
| 3061 | + headers=headers, |
| 3062 | + content_type="application/json", |
| 3063 | + ) |
| 3064 | + assert rv.status_code == HTTPStatus.OK |
| 3065 | + orgs = json.loads(rv.data) |
| 3066 | + assert orgs.get("total") == 2 |
| 3067 | + org_ids = [org.get("id") for org in orgs.get("orgs")] |
| 3068 | + assert org1.id in org_ids |
| 3069 | + assert org3.id in org_ids |
| 3070 | + assert org2.id not in org_ids |
| 3071 | + |
| 3072 | + rv = client.get( |
| 3073 | + f"/api/v1/orgs?status=SUSPENDED&suspendedDateTo={yesterday.strftime('%Y-%m-%d')}", |
| 3074 | + headers=headers, |
| 3075 | + content_type="application/json", |
| 3076 | + ) |
| 3077 | + assert rv.status_code == HTTPStatus.OK |
| 3078 | + orgs = json.loads(rv.data) |
| 3079 | + assert orgs.get("total") == 2 |
| 3080 | + org_ids = [org.get("id") for org in orgs.get("orgs")] |
| 3081 | + assert org1.id in org_ids |
| 3082 | + assert org2.id in org_ids |
| 3083 | + assert org3.id not in org_ids |
| 3084 | + |
| 3085 | + rv = client.get( |
| 3086 | + f"/api/v1/orgs?status=SUSPENDED&suspendedDateFrom={last_week.strftime('%Y-%m-%d')}&suspendedDateTo={yesterday.strftime('%Y-%m-%d')}", |
| 3087 | + headers=headers, |
| 3088 | + content_type="application/json", |
| 3089 | + ) |
| 3090 | + assert rv.status_code == HTTPStatus.OK |
| 3091 | + orgs = json.loads(rv.data) |
| 3092 | + assert orgs.get("total") == 2 |
| 3093 | + org_ids = [org.get("id") for org in orgs.get("orgs")] |
| 3094 | + assert org1.id in org_ids |
| 3095 | + assert org2.id in org_ids |
| 3096 | + assert org3.id not in org_ids |
| 3097 | + |
| 3098 | + rv = client.get( |
| 3099 | + f"/api/v1/orgs?status=SUSPENDED&suspendedDateFrom={last_week.strftime('%Y-%m-%d')}&suspendedDateTo={yesterday.strftime('%Y-%m-%d')}&suspensionReasonCode={SuspensionReasonCode.OWNER_CHANGE.name}", |
| 3100 | + headers=headers, |
| 3101 | + content_type="application/json", |
| 3102 | + ) |
| 3103 | + assert rv.status_code == HTTPStatus.OK |
| 3104 | + orgs = json.loads(rv.data) |
| 3105 | + assert orgs.get("total") == 1 |
| 3106 | + assert orgs.get("orgs")[0].get("id") == org1.id |
0 commit comments