diff --git a/ecs/crm-datafetch/tests/salesforce/test_salesfoce.py b/ecs/crm-datafetch/tests/salesforce/test_salesfoce.py index 623ead4f..aac7f109 100644 --- a/ecs/crm-datafetch/tests/salesforce/test_salesfoce.py +++ b/ecs/crm-datafetch/tests/salesforce/test_salesfoce.py @@ -416,10 +416,126 @@ class TestSalesforceApiClient: Cases: 存在しないユーザを指定した場合、エラーが発生すること Arranges: - なし + CRMのユーザ名を保持する環境変数に、存在しないユーザー名を指定する Expects: ユーザ認証でエラーが発生すること """ monkeypatch.setattr('src.salesforce.salesforce_api.CRM_USER_NAME', 'invalid_username') with pytest.raises(Exception): SalesforceApiClient() + + def test_raise_fetch_sf_count_auth_timeout(self, monkeypatch): + """ + Cases: + 認証タイムアウトが発生した場合、エラーが発生すること + Arranges: + 認証タイムアウト秒数を保持する環境変数に、0.0000000001を指定する + Expects: + コネクションタイムアウトエラーが発生すること + """ + monkeypatch.setattr('src.salesforce.salesforce_api.CRM_AUTH_TIMEOUT', 0.0000000001) + sf = SalesforceApiClient() + soql = """SELECT + COUNT(Id) + FROM + Account + WHERE + SystemModstamp > 2022-08-04T00:00:00.000Z AND + SystemModstamp <= 2022-08-06T00:00:00.000Z + """ + with pytest.raises(ConnectTimeout): + sf.fetch_sf_count(soql) + + def test_raise_fetch_sf_count_read_timeout(self, monkeypatch): + """ + Cases: + 読み取りタイムアウトが発生した場合、エラーが発生すること + Arranges: + CRMの件数取得タイムアウト秒数を保持する環境変数に、0.0000000001を指定する + Expects: + 読み取りタイムアウトエラーが発生すること + """ + monkeypatch.setattr('src.salesforce.salesforce_api.CRM_GET_RECORD_COUNT_TIMEOUT', 0.0000000001) + sf = SalesforceApiClient() + soql = """SELECT + COUNT(Id) + FROM + Account + WHERE + SystemModstamp > 2022-08-04T00:00:00.000Z AND + SystemModstamp <= 2022-08-06T00:00:00.000Z + """ + with pytest.raises(ReadTimeout): + sf.fetch_sf_count(soql) + + def test_raise_fetch_sf_count_invalid_soql(self, monkeypatch): + """ + Cases: + 不正なSOQLを指定した場合に、エラーが発生すること + Arranges: + 不正なSOQLを作成する + Expects: + エラーが発生すること + """ + sf = SalesforceApiClient() + soql = "SELECT" + with pytest.raises(Exception): + sf.fetch_sf_count(soql) + + def test_raise_fetch_sf_data_auth_timeout(self, monkeypatch): + """ + Cases: + 認証タイムアウトが発生した場合、エラーが発生すること + Arranges: + 認証タイムアウト秒数を保持する環境変数に、0.0000000001を指定する + Expects: + コネクションタイムアウトエラーが発生すること + """ + monkeypatch.setattr('src.salesforce.salesforce_api.CRM_AUTH_TIMEOUT', 0.0000000001) + sf = SalesforceApiClient() + soql = """SELECT + COUNT(Id) + FROM + Account + WHERE + SystemModstamp > 2022-08-04T00:00:00.000Z AND + SystemModstamp <= 2022-08-06T00:00:00.000Z + """ + with pytest.raises(ConnectTimeout): + sf.fetch_sf_data(soql) + + def test_raise_fetch_sf_data_read_timeout(self, monkeypatch): + """ + Cases: + 読み取りタイムアウトが発生した場合、エラーが発生すること + Arranges: + CRMのデータ取得タイムアウト秒数を保持する環境変数に、0.0000000001を指定する + Expects: + 読み取りタイムアウトエラーが発生すること + """ + monkeypatch.setattr('src.salesforce.salesforce_api.CRM_FETCH_RECORD_TIMEOUT', 0.0000000001) + sf = SalesforceApiClient() + soql = """SELECT + COUNT(Id) + FROM + Account + WHERE + SystemModstamp > 2022-08-04T00:00:00.000Z AND + SystemModstamp <= 2022-08-06T00:00:00.000Z + """ + with pytest.raises(ReadTimeout): + sf.fetch_sf_data(soql) + + def test_raise_fetch_sf_data_invalid_soql(self, monkeypatch): + """ + Cases: + 不正なSOQLを指定した場合に、エラーが発生すること + Arranges: + 不正なSOQLを作成する + Expects: + エラーが発生すること + """ + sf = SalesforceApiClient() + soql = "SELECT" + with pytest.raises(Exception): + sf.fetch_sf_count(soql)