Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Source Salesforce: update API version to 57 #25507

Merged
Merged
Expand Up @@ -23186,7 +23186,7 @@
"sourceDefinitionId": "b117307c-14b6-41aa-9422-947e34922962",
"name": "Salesforce",
"dockerRepository": "airbyte/source-salesforce",
"dockerImageTag": "2.0.11",
"dockerImageTag": "2.0.12",
"documentationUrl": "https://docs.airbyte.com/integrations/sources/salesforce",
"icon": "salesforce.svg",
"sourceType": "api",
Expand Down
Expand Up @@ -1847,7 +1847,7 @@
- name: Salesforce
sourceDefinitionId: b117307c-14b6-41aa-9422-947e34922962
dockerRepository: airbyte/source-salesforce
dockerImageTag: 2.0.11
dockerImageTag: 2.0.12
documentationUrl: https://docs.airbyte.com/integrations/sources/salesforce
icon: salesforce.svg
sourceType: api
Expand Down
Expand Up @@ -13829,7 +13829,7 @@
supportsNormalization: false
supportsDBT: false
supported_destination_sync_modes: []
- dockerImage: "airbyte/source-salesforce:2.0.11"
- dockerImage: "airbyte/source-salesforce:2.0.12"
spec:
documentationUrl: "https://docs.airbyte.com/integrations/sources/salesforce"
connectionSpecification:
Expand Down
Expand Up @@ -13,5 +13,5 @@ RUN pip install .

ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]

LABEL io.airbyte.version=2.0.11
LABEL io.airbyte.version=2.0.12
LABEL io.airbyte.name=airbyte/source-salesforce

Large diffs are not rendered by default.

Expand Up @@ -206,7 +206,7 @@

class Salesforce:
logger = logging.getLogger("airbyte")
version = "v53.0"
version = "v57.0"
parallel_tasks_size = 100
# https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm
# Request Size Limits
Expand Down
Expand Up @@ -46,7 +46,7 @@ def test_bulk_stream_fallback_to_rest(mocker, requests_mock, stream_config, stre
# mock a BULK API
requests_mock.register_uri(
"POST",
"https://fase-account.salesforce.com/services/data/v53.0/jobs/query",
"https://fase-account.salesforce.com/services/data/v57.0/jobs/query",
status_code=400,
json=[{"errorCode": "INVALIDENTITY", "message": "CustomEntity is not supported by the Bulk API"}],
)
Expand Down Expand Up @@ -210,7 +210,7 @@ def test_stream_start_datetime_format_should_not_changed(stream_config, stream_a


def test_download_data_filter_null_bytes(stream_config, stream_api):
job_full_url: str = "https://fase-account.salesforce.com/services/data/v53.0/jobs/query/7504W00000bkgnpQAA"
job_full_url: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA"
stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api)

with requests_mock.Mocker() as m:
Expand All @@ -229,7 +229,7 @@ def test_download_data_filter_null_bytes(stream_config, stream_api):
ids=[f"charset: {x[1]}, chunk_size: {x[0]}" for x in encoding_symbols_parameters()],
)
def test_encoding_symbols(stream_config, stream_api, chunk_size, content_type, content, expected_result):
job_full_url: str = "https://fase-account.salesforce.com/services/data/v53.0/jobs/query/7504W00000bkgnpQAA"
job_full_url: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA"
stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api)

with requests_mock.Mocker() as m:
Expand Down Expand Up @@ -260,7 +260,7 @@ def test_check_connection_rate_limit(
with requests_mock.Mocker() as m:
m.register_uri("POST", "https://login.salesforce.com/services/oauth2/token", json=login_json_resp, status_code=login_status_code)
m.register_uri(
"GET", "https://instance_url/services/data/v53.0/sobjects", json=discovery_resp_json, status_code=discovery_status_code
"GET", "https://instance_url/services/data/v57.0/sobjects", json=discovery_resp_json, status_code=discovery_status_code
)
result, msg = source.check_connection(logger, stream_config)
assert result is False
Expand Down Expand Up @@ -351,7 +351,7 @@ def test_rate_limit_rest(stream_config, stream_api, rest_catalog, state):

logger = logging.getLogger("airbyte")

next_page_url = "/services/data/v53.0/query/012345"
next_page_url = "/services/data/v57.0/query/012345"
response_1 = {
"done": False,
"totalSize": 10,
Expand Down Expand Up @@ -403,7 +403,7 @@ def test_pagination_rest(stream_config, stream_api):
stream_name = "AcceptedEventRelation"
stream: RestSalesforceStream = generate_stream(stream_name, stream_config, stream_api)
stream.DEFAULT_WAIT_TIMEOUT_SECONDS = 6 # maximum wait timeout will be 6 seconds
next_page_url = "/services/data/v53.0/query/012345"
next_page_url = "/services/data/v57.0/query/012345"
with requests_mock.Mocker() as m:
resp_1 = {
"done": False,
Expand Down Expand Up @@ -444,7 +444,7 @@ def test_pagination_rest(stream_config, stream_api):

def test_csv_reader_dialect_unix():
stream: BulkSalesforceStream = BulkSalesforceStream(stream_name=None, sf_api=None, pk=None)
url = "https://fake-account.salesforce.com/services/data/v53.0/jobs/query/7504W00000bkgnpQAA"
url = "https://fake-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA"

data = [
{"Id": 1, "Name": '"first_name" "last_name"'},
Expand Down Expand Up @@ -639,7 +639,7 @@ def test_too_many_properties(stream_config, stream_api_v2_pk_too_many_properties
assert stream.too_many_properties
assert stream.primary_key
assert type(stream) == RestSalesforceStream
url = next_page_url = "https://fase-account.salesforce.com/services/data/v53.0/queryAll"
url = next_page_url = "https://fase-account.salesforce.com/services/data/v57.0/queryAll"
requests_mock.get(
url,
[
Expand Down Expand Up @@ -680,7 +680,7 @@ def test_stream_with_no_records_in_response(stream_config, stream_api_v2_pk_too_
assert stream.too_many_properties
assert stream.primary_key
assert type(stream) == RestSalesforceStream
url = "https://fase-account.salesforce.com/services/data/v53.0/queryAll"
url = "https://fase-account.salesforce.com/services/data/v57.0/queryAll"
requests_mock.get(
url,
[
Expand Down
Expand Up @@ -27,7 +27,7 @@
],
)
def test_memory_download_data(stream_config, stream_api, n_records, first_size, first_peak):
job_full_url: str = "https://fase-account.salesforce.com/services/data/v53.0/jobs/query/7504W00000bkgnpQAA"
job_full_url: str = "https://fase-account.salesforce.com/services/data/v57.0/jobs/query/7504W00000bkgnpQAA"
stream: BulkIncrementalSalesforceStream = generate_stream("Account", stream_config, stream_api)
content = b'"Id","IsDeleted"'
for _ in range(n_records):
Expand Down
1 change: 1 addition & 0 deletions docs/integrations/sources/salesforce.md
Expand Up @@ -129,6 +129,7 @@ Now that you have set up the Salesforce source connector, check out the followin

| Version | Date | Pull Request | Subject |
|:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------|
| 2.0.12 | 2023-04-25 | [25507](https://github.com/airbytehq/airbyte/pull/25507) | Update API version to 57 |
| 2.0.11 | 2023-04-20 | [25352](https://github.com/airbytehq/airbyte/pull/25352) | Update API version to 53 |
| 2.0.10 | 2023-04-05 | [24888](https://github.com/airbytehq/airbyte/pull/24888) | Add more frequent checkpointing |
| 2.0.9 | 2023-03-29 | [24660](https://github.com/airbytehq/airbyte/pull/24660) | Set default start_date. Sync for last two years if start date is not present in config |
Expand Down