Example #1
0
 def test_01_create_marketplace(self):
     self.assertTrue(self.merchant.accounts_uri.endswith('/accounts'))
     self.assertIsNotNone(balanced.config.api_key_secret)
     marketplace = balanced.Marketplace().save()
     self.assertTrue(marketplace.id.startswith('TEST-MP'))
     self.merchant = balanced.Merchant.find(self.merchant.uri)
     self.assertEqual(marketplace.in_escrow, 0)
Example #2
0
    def test_20_test_filter_and_sort(self):
        try:
            self._find_marketplace()
        except balanced.exc.NoResultFound:
            balanced.Marketplace().save()

        buyer = self._find_account('buyer')
        deb1 = buyer.debit(amount=1122, meta={'tag': '1'})
        deb2 = buyer.debit(amount=3322, meta={'tag': '1'})
        deb3 = buyer.debit(amount=2211, meta={'tag': '2'})

        debs = (balanced.Debit.query.filter(
            balanced.Debit.f.meta.tag == '1').all())
        self.assertItemsEqual([deb.id for deb in debs], [deb1.id, deb2.id])

        debs = (balanced.Debit.query.filter(
            balanced.Debit.f.meta.tag == '2').all())
        self.assertItemsEqual([deb.id for deb in debs], [deb3.id])

        debs = (balanced.Debit.query.filter(
            balanced.Debit.f.meta.contains('tag')).sort(
                balanced.Debit.f.amount.asc()).all())
        self.assertEqual(len(debs), 3)
        self.assertEqual([deb.id for deb in debs], [deb1.id, deb3.id, deb2.id])

        debs = (balanced.Debit.query.filter(
            balanced.Debit.f.meta.contains('tag')).sort(
                balanced.Debit.f.amount.desc()).all())
        self.assertEqual(len(debs), 3)
        self.assertEqual([deb.id for deb in debs], [deb2.id, deb3.id, deb1.id])
Example #3
0
 def setUpClass(cls):
     super(BalancedHarness, cls).setUpClass()
     cls.balanced_api_key = balanced.APIKey().save().secret
     balanced.configure(cls.balanced_api_key)
     mp = balanced.Marketplace.my_marketplace
     if not mp:
         mp = balanced.Marketplace().save()
     cls.balanced_marketplace = mp
 def setUpClass(cls):
     balanced.config.root_uri = 'http://127.0.0.1:5000/'
     if not balanced.config.api_key_secret:
         api_key = balanced.APIKey().save()
         balanced.configure(api_key.secret)
         cls.api_key = api_key
         cls.merchant = api_key.merchant
         balanced.Marketplace().save()
Example #5
0
 def test_21_mask_bank_account(self):
     try:
         mp = balanced.Marketplace.query.one()
     except NoResultFound:
         mp = balanced.Marketplace().save()
     payload = BANK_ACCOUNT.copy()
     payload['account_number'] = '1212121-110-019'
     bank_account = mp.create_bank_account(**payload)
     self.assertEqual(bank_account.last_four, '0019')
Example #6
0
 def test_22_create_international_card(self):
     try:
         mp = balanced.Marketplace.query.one()
     except NoResultFound:
         mp = balanced.Marketplace().save()
     card = mp.create_card(**INTERNATIONAL_CARD)
     self.assertTrue(card.id.startswith('CC'))
     self.assertEqual(card.street_address,
                      INTERNATIONAL_CARD['street_address'])
Example #7
0
 def test_19_create_and_associate_bank_account(self):
     try:
         mp = balanced.Marketplace.query.one()
     except NoResultFound:
         mp = balanced.Marketplace().save()
     bank_account = mp.create_bank_account(**BANK_ACCOUNT)
     self.assertTrue(bank_account.id.startswith('BA'))
     account = mp.create_merchant('*****@*****.**',
                                  merchant=PERSON_MERCHANT)
     account.add_bank_account(bank_account.uri)
Example #8
0
 def test_18_create_and_associate_card(self):
     try:
         mp = balanced.Marketplace.query.one()
     except NoResultFound:
         mp = balanced.Marketplace().save()
     card = mp.create_card(**CARD)
     self.assertTrue(card.id.startswith('CC'))
     account = mp.create_merchant('*****@*****.**',
                                  merchant=PERSON_MERCHANT)
     account.add_card(card.uri)
def callbacks_create(ctx):
    with balanced.key_switcher(None):
        secret = balanced.APIKey().save().secret
        with balanced.key_switcher(secret):
            mp = balanced.Marketplace().save()
            balanced.Callback(
                uri=mp.callbacks_uri,
                url='http://www.example.com/cb/nu',
                method='post',
            ).save()
        return ctx.last_req, ctx.last_resp
Example #10
0
 def setUpClass(cls):
     cls.processor_key = os.environ.get('BILLY_TEST_PROCESSOR_KEY', None)
     cls.marketplace_uri = os.environ.get('BILLY_TEST_MARKETPLACE_URI',
                                          None)
     if cls.processor_key is None:
         api_key = balanced.APIKey().save()
         cls.processor_key = api_key.secret
         balanced.configure(cls.processor_key)
     try:
         cls.marketplace_uri = balanced.Marketplace.my_marketplace.href
     except (NoResultFound, balanced.exc.NoResultFound):
         cls.marketplace_uri = balanced.Marketplace().save().href
 def marketplace(self):
     balanced.config.root_uri = self.root_uri
     if not self.secret:
         logger.debug('creating api key')
         self.secret = balanced.APIKey().save().secret
     balanced.configure(self.secret)
     try:
         marketplace = balanced.Marketplace.mine
     except balanced.exc.NoResultFound:
         logger.debug('creating marketplace')
         marketplace = balanced.Marketplace().save()
     return marketplace
Example #12
0
 def test_region_deprecation(self, warnings, _):
     mkt = balanced.Marketplace()
     mkt.create_card('John Name',
                     '341111111111111',
                     '12',
                     '2020',
                     region='CA')
     call_args, _ = warnings.warn.call_args
     self.assertEqual(call_args[0],
                      ('The region parameter will be deprecated in the '
                       'next minor version of balanced-python'))
     self.assertEqual(call_args[1], PendingDeprecationWarning)
Example #13
0
    def setUpClass(cls):
        with balanced.key_switcher(None):
            cls.api_key = balanced.APIKey().save()
        balanced.configure(cls.api_key.secret)
        cls.marketplace = balanced.Marketplace().save()
        cls.user = User.objects.create_user('john', '*****@*****.**', 'pass')
        cls.user.save()

        card = balanced.Card(**FIXTURES['card']).save()
        cls.card = models.Card.create_from_card_uri(cls.user, card.uri)
        cls.buyer = cls.card.user.balanced_account
        # put some money in the escrow account
        cls.buyer.debit(100 * 100, 'test')  # $100.00
Example #14
0
def marketplaces_create(ctx):
    with balanced.key_switcher(None):
        secret = balanced.APIKey().save().secret
        with balanced.key_switcher(secret):
            balanced.Marketplace(**{
                'support_email_address': '*****@*****.**',
                'name': 'Seller of things',
                'domain_url': 'example.com',
                'support_phone_number': '+12125551212',
                'meta': {
                    'my-useful-data': 'abc123'
                }
            }).save()
            return ctx.last_req, ctx.last_resp
Example #15
0
    def test_23_kyc_redirect(self):
        try:
            mp = balanced.Marketplace.query.one()
        except NoResultFound:
            mp = balanced.Marketplace().save()

        redirect_pattern = ('https://www.balancedpayments.com'
                            '/marketplaces/(.*)/kyc')

        with self.assertRaises(MoreInformationRequiredError) as ex:
            mp.create_merchant('*****@*****.**', PERSON_FAILING_KYC)

        redirect_uri = ex.exception.redirect_uri
        result = re.search(redirect_pattern, redirect_uri)
        self.assertTrue(result)
Example #16
0
 def test_region_deprecation(self, _card):
     mkt = balanced.Marketplace()
     with warnings.catch_warnings(record=True) as w:
         mkt.create_card(
             'John Name', '341111111111111', '12', '2020',
             region='CA'
         )
         self.assertEqual(len(w), 1)
         warning_ = w[0]
     self.assertEqual(
         warning_.message.message,
         ('The region parameter will be deprecated in the '
          'next minor version of balanced-python')
     )
     self.assertTrue(isinstance(warning_.message, UserWarning))
Example #17
0
    def bootstrap(cls, ctx):
        # api conf
        if ctx.storage.get('api_location') != ctx.api_location:
            ctx.storage.clear()
            ctx.storage['api_location'] = ctx.api_location
        balanced.config.root_uri = ctx.storage['api_location']
        if 'api_key' not in ctx.storage:
            ctx.storage.clear()
            ctx.storage['api_location'] = ctx.api_location
            logger.debug('creating api key')
            key = balanced.APIKey().save()
            ctx.storage['api_key'] = key.secret
        balanced.configure(ctx.storage['api_key'])

        # marketplace
        if 'marketplace_id' not in ctx.storage:
            logger.debug('creating marketplace')
            marketplace = balanced.Marketplace().save()
            ctx.storage['marketplace_uri'] = marketplace.uri
            ctx.storage['marketplace_id'] = marketplace.id

        # card
        if 'card_id' not in ctx.storage:
            logger.debug('creating card')
            card = ctx.marketplace.create_card(
                **{
                    'name': 'Benny Riemann',
                    'card_number': '4111111111111111',
                    'expiration_month': 4,
                    'expiration_year': 2014,
                    'security_code': 323,
                    'street_address': '167 West 74th Street',
                    'postal_code': '10023',
                    'country_code': 'USA',
                    'phone_number': '+16509241212'
                })
            ctx.marketplace.create_buyer(None, card.uri)
            ctx.storage['card_uri'] = card.uri
            ctx.storage['card_id'] = card.id

        # escrow
        thresh_h, thresh_l = 10000000, 100000
        if ctx.marketplace.in_escrow < thresh_l:
            amount = thresh_h - ctx.marketplace.in_escrow
            logger.debug('incrementing escrow balanced %s', amount)
            ctx.card.debit(amount)
def marketplaces_update(ctx):
    with balanced.key_switcher(None):
        secret = balanced.APIKey().save().secret
        with balanced.key_switcher(secret):
            mp = balanced.Marketplace(
                **{
                    'support_email_address': '*****@*****.**',
                    'name': 'Seller of things',
                    'domain_url': 'example.com',
                    'support_phone_number': '+12125551212',
                    'meta': {
                        'my-useful-data': 'abc123'
                    }
                }).save()

            mp.support_email_address = '*****@*****.**'
            mp.name = 'Seller of thingz'
            mp.support_phone_number = '+18185551212'
            mp.meta.update({'even-more-useful-data': '321cba'})
            mp.save()

            return ctx.last_req, ctx.last_resp
Example #19
0
            balanced_customer_href=self.janet_href,
            last_bill_result='')
        self.homer = self.make_participant(
            'homer',
            is_suspicious=False,
            claimed_time='now',
            balanced_customer_href=self.homer_href,
            last_ach_result='')


with use_cassette('BalancedHarness'):
    cls = BalancedHarness
    balanced.configure(balanced.APIKey().save().secret)
    mp = balanced.Marketplace.my_marketplace
    if not mp:
        mp = balanced.Marketplace().save()
    cls.balanced_marketplace = mp

    cls.david_href = cls.make_balanced_customer()

    cls.janet_href = cls.make_balanced_customer()
    cls.card = balanced.Card(
        number='4111111111111111',
        expiration_month=10,
        expiration_year=2020,
        address={
            'line1': "123 Main Street",
            'state': 'Confusion',
            'postal_code': '90210',
        },
        # gratipay stores some of the address data in the meta fields,
Example #20
0
def init():
    key = balanced.APIKey().save()
    balanced.configure(key.secret)
    balanced.Marketplace().save()
 def test_create_a_second_marketplace_should_fail(self):
     with self.assertRaises(requests.HTTPError) as exc:
         balanced.Marketplace().save()
     the_exception = exc.exception
     self.assertEqual(the_exception.status_code, 409)
 def create_marketplace(self):
     balanced.configure(None)
     api_key = balanced.APIKey().save()
     balanced.configure(api_key.secret)
     marketplace = balanced.Marketplace().save()
     return marketplace, api_key
 def setUpClass(cls):
     # ensure we won't consume API key from other test case
     balanced.configure()
     cls.api_key = balanced.APIKey().save()
     balanced.configure(cls.api_key.secret)
     cls.marketplace = balanced.Marketplace().save()
 def setUp(self):
     try:
         self.mp = balanced.Marketplace.my_marketplace
     except:
         self.mp = balanced.Marketplace().save()
Example #25
0
 def _create_marketplace(self):
     try:
         return balanced.Marketplace.query.one()
     except NoResultFound:
         return balanced.Marketplace().save()
 def test_load_resource(self):
     resp = fixtures.Resources.marketplaces
     marketplace = balanced.Marketplace(**resp)
     self.assertIsNotNone(marketplace.debits)
Example #27
0
 def test_02_create_a_second_marketplace_should_fail(self):
     self.assertIsNotNone(balanced.config.api_key_secret)
     with self.assertRaises(requests.HTTPError) as exc:
         balanced.Marketplace().save()
     the_exception = exc.exception
     self.assertEqual(the_exception.status_code, 409)