73 lines
2.0 KiB
Python
73 lines
2.0 KiB
Python
#
|
|
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
|
#
|
|
|
|
from airbyte_cdk.logger import AirbyteLogger
|
|
from airbyte_cdk.models import (
|
|
AirbyteStream,
|
|
ConfiguredAirbyteCatalog,
|
|
ConfiguredAirbyteStream,
|
|
ConnectorSpecification,
|
|
DestinationSyncMode,
|
|
SyncMode,
|
|
)
|
|
from source_pipedrive.source import SourcePipedrive
|
|
|
|
logger = AirbyteLogger()
|
|
|
|
PIPEDRIVE_URL_BASE = "https://api.pipedrive.com/v1/"
|
|
|
|
|
|
def test_check_connection(requests_mock, config_token):
|
|
body = {"success": "true", "data": [{"id": 1, "update_time": "2020-10-14T11:30:36.551Z"}]}
|
|
response = setup_response(200, body)
|
|
api_token = config_token["authorization"]["api_token"]
|
|
requests_mock.register_uri("GET", PIPEDRIVE_URL_BASE + "recents?limit=50&api_token=" + api_token, response)
|
|
|
|
ok, error = SourcePipedrive().check_connection(logger, config_token)
|
|
|
|
assert ok
|
|
assert not error
|
|
|
|
|
|
def test_check_connection_exception(requests_mock, config_token):
|
|
response = setup_response(400, {})
|
|
api_token = config_token["authorization"]["api_token"]
|
|
requests_mock.register_uri("GET", PIPEDRIVE_URL_BASE + "recents?limit=50&api_token=" + api_token, response)
|
|
|
|
ok, error = SourcePipedrive().check_connection(logger, config_token)
|
|
|
|
assert not ok
|
|
assert error
|
|
|
|
|
|
def test_streams(config_token):
|
|
streams = SourcePipedrive().streams(config_token)
|
|
|
|
assert len(streams) == 23
|
|
|
|
|
|
def setup_response(status, body):
|
|
return [
|
|
{"json": body, "status_code": status},
|
|
]
|
|
|
|
|
|
def test_spec():
|
|
spec = SourcePipedrive().spec(logger)
|
|
assert isinstance(spec, ConnectorSpecification)
|
|
|
|
|
|
def test_read(config_token):
|
|
source = SourcePipedrive()
|
|
catalog = ConfiguredAirbyteCatalog(
|
|
streams=[
|
|
ConfiguredAirbyteStream(
|
|
stream=AirbyteStream(name="deals", json_schema={}, supported_sync_modes=["full_refresh", "incremental"]),
|
|
sync_mode=SyncMode.full_refresh,
|
|
destination_sync_mode=DestinationSyncMode.overwrite,
|
|
)
|
|
]
|
|
)
|
|
assert source.read(logger, config_token, catalog)
|