Пример #1
0
def test_stream_slices(test_config):
    config = BraintreeConfig(**test_config)
    stream = TransactionStream(config)

    assert stream.stream_slices(SyncMode.incremental, None, {}) == [{
        stream.cursor_field:
        config.start_date
    }]
    assert stream.stream_slices(SyncMode.incremental, None,
                                {stream.cursor_field: "2010"}) == [{
                                    stream.cursor_field:
                                    pendulum.datetime(2010, 1, 1)
                                }]
    assert stream.stream_slices(SyncMode.full_refresh, None,
                                {stream.cursor_field: "2010"}) == [{
                                    stream.cursor_field:
                                    config.start_date
                                }]

    test_config = deepcopy(test_config)
    test_config.pop("start_date")
    config = BraintreeConfig(**test_config)
    stream = TransactionStream(config)
    assert stream.stream_slices(SyncMode.incremental, None, {}) == [{
        stream.cursor_field:
        pendulum.datetime(2020, 10, 10)
    }]
    assert stream.stream_slices(SyncMode.full_refresh, None,
                                {stream.cursor_field: "2010"}) == [{
                                    stream.cursor_field:
                                    pendulum.datetime(2020, 10, 10)
                                }]
Пример #2
0
 def check_connection(
         self, logger: AirbyteLogger,
         config: Mapping[str, Any]) -> Tuple[bool, Optional[Any]]:
     """
     :return: AirbyteConnectionStatus indicating a Success or Failure
     """
     config = BraintreeConfig(**config)
     gateway = BraintreeStream.create_gateway(config)
     gateway.customer.all()
     return True, ""
Пример #3
0
def test_plan(test_config):
    responses.add(
        responses.GET,
        "https://api.sandbox.braintreegateway.com:443/merchants/mech_id/plans/",
        body=load_file("plans.txt"),
    )
    config = BraintreeConfig(**test_config)
    stream = PlanStream(config)
    records = read_all_records(stream)
    assert len(records) == 1
Пример #4
0
def test_subscription(test_config):
    responses.add(
        responses.POST,
        "https://api.sandbox.braintreegateway.com:443/merchants/mech_id/subscriptions/advanced_search_ids",
        body=load_file("subscriptions.txt"),
    )
    config = BraintreeConfig(**test_config)
    stream = SubscriptionStream(config)
    records = read_all_records(stream)
    assert len(records) == 0
Пример #5
0
def test_dispute(test_config):
    responses.add(
        responses.POST,
        "https://api.sandbox.braintreegateway.com:443/merchants/mech_id/disputes/advanced_search",
        body=load_file("disputes.txt"),
    )
    config = BraintreeConfig(**test_config)
    stream = DisputeStream(config)
    records = read_all_records(stream)
    assert len(records) == 1
Пример #6
0
 def streams(self, config: Mapping[str, Any]) -> List[Stream]:
     config = BraintreeConfig(**config)
     return [
         CustomerStream(config),
         DiscountStream(config),
         DisputeStream(config),
         TransactionStream(config),
         MerchantAccountStream(config),
         PlanStream(config),
         SubscriptionStream(config),
     ]
Пример #7
0
def test_transaction_stream(test_config):
    responses.add(
        responses.POST,
        "https://api.sandbox.braintreegateway.com:443/merchants/mech_id/transactions/advanced_search_ids",
        body=load_file("transaction_ids.txt"),
    )
    responses.add(
        responses.POST,
        "https://api.sandbox.braintreegateway.com:443/merchants/mech_id/transactions/advanced_search",
        body=load_file("transaction__objs.txt"),
    )
    config = BraintreeConfig(**test_config)
    stream = TransactionStream(config)
    records = read_all_records(stream)
    assert len(records) == 2
Пример #8
0
def test_customers_stream(test_config):
    responses.add(
        responses.POST,
        "https://api.sandbox.braintreegateway.com:443/merchants/mech_id/customers/advanced_search_ids",
        body=load_file("customers_ids.txt"),
    )
    responses.add(
        responses.POST,
        "https://api.sandbox.braintreegateway.com:443/merchants/mech_id/customers/advanced_search",
        body=load_file("customers_obj_response.txt"),
    )
    config = BraintreeConfig(**test_config)
    stream = CustomerStream(config)
    records = read_all_records(stream)
    assert len(records) == 1
Пример #9
0
def test_updated_state(test_config):
    config = BraintreeConfig(**test_config)
    stream = TransactionStream(config)

    assert stream.get_updated_state(
        {stream.cursor_field: "2021-08-10 14:32:39"},
        {stream.cursor_field: pendulum.parse("2000")}) == {
            stream.cursor_field: "2021-08-10 14:32:39"
        }
    assert stream.get_updated_state(
        {stream.cursor_field: "2021-08-10 14:32:39"},
        {stream.cursor_field: pendulum.parse("2100")}) == {
            stream.cursor_field: "2100-01-01 00:00:00"
        }
    assert stream.get_updated_state(
        {}, {stream.cursor_field: pendulum.parse("2100")}) == {
            stream.cursor_field: "2100-01-01 00:00:00"
        }
Пример #10
0
 def spec(self, logger: AirbyteLogger) -> ConnectorSpecification:
     return ConnectorSpecification(
         connectionSpecification=BraintreeConfig.schema(),
         documentationUrl=
         "https://docs.airbyte.io/integrations/sources/braintree")
Пример #11
0
 def create_gateway(config: BraintreeConfig):
     return braintree.BraintreeGateway(
         braintree.Configuration(**config.dict()))