def test_anonymous_listing_with_existing_buyer_account(self): email_address = email_generator.next() card = balanced.Card(card_number='4111111111111111', expiration_month=12, expiration_year=2020, security_code=123).save() ogaccount = balanced.Marketplace.my_marketplace.create_buyer( email_address, card.uri, ) payload = self._guest_listing_payload(email_address) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter(User.email_address == email_address).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_account self.assertTrue('merchant' in account.roles) self.assertTrue('buyer' in account.roles) self.assertEqual(account.email_address, email_address) self.assertEqual(ogaccount.uri, account.uri)
def test_anonymous_purchase(self, *_): email = email_generator.next() payload = self._guest_rental_payload(email) self._populate_data() self._rent(payload) self._verify_buyer_transactions(email)
def test_authenticated_purchase(self, *_): email = email_generator.next() self._create_user(email) payload = self._rental_payload() self._populate_data() self._rent(payload) self._verify_buyer_transactions(email)
def test_anonymous_listing_with_existing_buyer_account(self): email = email_generator.next() card = balanced.Card( number='4111111111111111', expiration_month=12, expiration_year=2020, cvv=123 ).save() ogaccount = balanced.Customer( email=email, source=card.href, ).save() payload = self._guest_listing_payload(email) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter(User.email == email).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_customer self.assertEqual(account.email, email) self.assertEqual(ogaccount.href, account.href)
def test_anonymous_listing_with_existing_buyer_account(self): email = email_generator.next() card = balanced.Card(number='4111111111111111', expiration_month=12, expiration_year=2020, cvv=123).save() ogaccount = balanced.Customer( email=email, source=card.href, ).save() payload = self._guest_listing_payload(email) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter(User.email == email).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_customer self.assertEqual(account.email, email) self.assertEqual(ogaccount.href, account.href)
def test_anonymous_listing_with_bank_account(self): email_address = email_generator.next() payload = self._guest_listing_payload(email_address) bank_account = balanced.BankAccount(name='Myata Marketplace', account_number=321174851, bank_code=321174851 ).save() payload['bank_account_uri'] = bank_account.uri resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter( User.email_address == email_address).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_account self.assertTrue('merchant' in account.roles) self.assertEqual(account.email_address, email_address) self.assertTrue( [ba for ba in account.bank_accounts if bank_account.id in ba.uri] )
def test_failure_and_then_success(self, fetch, rentalmanager, *_): email = email_generator.next() payload = self._guest_rental_payload(email) self._populate_data() manager = rentalmanager.return_value http_mock = mock.Mock() http_mock.response = mock.Mock() http_mock.response.status_code = 400 http_mock.response.data = {"errors": [ { "status": "Bad Request", "category_code": "request", "status_code": 400, "category_type": "request", "extras": { "routing_number": "Missing required field [routing_number]" }, "request_id": "OHM8ede8fee2f9a11e4ab2502a1fe52a36c", "description": "Missing required field [routing_number] Your request id is OHM8ede8fee2f9a11e4ab2502a1fe52a36c." } ]} manager.rent.side_effect = balanced.exc.HTTPError(http_mock) resp = self.client.post('/rent/1', data=payload) self.assertEqual(resp.status_code, 201) payload = self._guest_rental_payload(email) manager.rent.side_effect = None rental = manager.rent.return_value rental.buyer.guid = '123' rental.buyer.email = '[email protected]' rental.guid = 1 self._rent(payload)
def test_anonymous_listing_with_existing_buyer_account(self): email_address = email_generator.next() card = balanced.Card( card_number='4111111111111111', expiration_month=12, expiration_year=2020, security_code=123 ).save() ogaccount = balanced.Marketplace.my_marketplace.create_buyer( email_address, card.uri, ) payload = self._guest_listing_payload(email_address) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter( User.email_address == email_address).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_account self.assertTrue('merchant' in account.roles) self.assertTrue('buyer' in account.roles) self.assertEqual(account.email_address, email_address) self.assertEqual(ogaccount.uri, account.uri)
def test_anonymous_purchase_with_existing_merchant_account(self, *_): email_address = email_generator.next() # 1. create an account on balanced payload = merchant_fixtures.balanced_merchant_payload(email_address) balanced.Marketplace.my_marketplace.create_merchant( email_address, merchant=payload['merchant'], ) # 2. anonymous purchase using this account should work. self.test_anonymous_purchase()
def test_anonymous_purchase_with_existing_customer_account(self, *_): email = email_generator.next() # 1. create an account on balanced payload = merchant_fixtures.balanced_customer_payload(email) customer = balanced.Customer( email=email, merchant=payload['customer'], ) customer.save() # 2. anonymous purchase using this account should work. self.test_anonymous_purchase()
def test_anonymous_purchase_with_existing_buyer_account(self, *_): email_address = email_generator.next() # 1. create an account on balanced card_uri = self._card_payload() balanced.Marketplace.my_marketplace.create_buyer( email_address, card_uri=card_uri, ) # 2. anonymous purchase using this account should work. self.test_anonymous_purchase()
def test_anonymous_purchase_with_existing_buyer_account(self, *_): email = email_generator.next() # 1. create an account on balanced card_href = self._card_payload() balanced.Customer( email=email, source=card_href, ) # 2. anonymous purchase using this account should work. self.test_anonymous_purchase()
def test_merchant_purchase(self, *_): # 1. create an authenticated merchant account email = email_generator.next() self._create_user(email) payload = self._listing_payload() user = User.query.filter(User.email == email).one() resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # 2. purchase should require payment method and should just work. self.test_authenticated_purchase(email)
def test_authenticated_purchase_repeat(self, *_, **kwargs): email = kwargs.pop('email', None) if not email: email = email_generator.next() self._create_user(email) payload = self._rental_payload() self._populate_data() self._rent(payload) payload = self._rental_payload() payload.pop('card_href') self._rent(payload) self._verify_buyer_transactions(email)
def test_anonymous_listing_with_existing_merchant_account(self): email = email_generator.next() ogaccount = balanced.Customer(**self._merchant_payload(email)).save() payload = self._guest_listing_payload(email) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter(User.email == email).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_customer self.assertEqual(account.email, email) self.assertEqual(ogaccount.href, account.href)
def test_failure_and_then_success(self, find, rentalmanager, *_): email_address = email_generator.next() payload = self._guest_rental_payload(email_address) self._populate_data() manager = rentalmanager.return_value manager.rent.side_effect = balanced.exc.HTTPError resp = self.client.post('/rent/1', data=payload) self.assertEqual(resp.status_code, 201) payload = self._guest_rental_payload(email_address) manager.rent.side_effect = None rental = manager.rent.return_value rental.buyer.guid = '123' rental.buyer.email_address = '[email protected]' rental.guid = 1 self._rent(payload)
def test_authenticated_listing_with_bank_account(self, email=None): email = email or email_generator.next() self._create_user(email) payload = self._listing_payload() bank_account = balanced.BankAccount(name='Bob Saget', account_number=321174851, routing_number=321174851).save() payload['bank_account_href'] = bank_account.href user = User.query.filter(User.email == email).one() resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check in balanced user = User.query.filter(User.email == email).one() account = user.balanced_customer self.assertEqual(account.email, email) self.assertTrue( [ba for ba in account.bank_accounts if bank_account.id in ba.href])
def test_anonymous_listing_with_existing_merchant_account(self): email = email_generator.next() ogaccount = balanced.Customer( **self._merchant_payload(email)).save() payload = self._guest_listing_payload(email) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter( User.email == email).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_customer self.assertEqual(account.email, email) self.assertEqual(ogaccount.href, account.href)
def test_anonymous_listing_with_existing_merchant_account(self): email_address = email_generator.next() ogaccount = balanced.Marketplace.my_marketplace.create_merchant( **self._merchant_payload(email_address)) payload = self._guest_listing_payload(email_address) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter(User.email_address == email_address).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_account self.assertTrue('merchant' in account.roles) self.assertEqual(account.email_address, email_address) self.assertEqual(ogaccount.uri, account.uri)
def test_authenticated_listing_with_bank_account(self, email_address=None): email_address = email_address or email_generator.next() self._create_user(email_address) payload = self._listing_payload() bank_account = balanced.BankAccount(name='Bob Saget', account_number=321174851, bank_code=321174851).save() payload['bank_account_uri'] = bank_account.uri user = User.query.filter(User.email_address == email_address).one() resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check in balanced user = User.query.filter(User.email_address == email_address).one() account = user.balanced_account self.assertTrue('merchant' in account.roles) self.assertEqual(account.email_address, email_address) self.assertTrue( [ba for ba in account.bank_accounts if bank_account.id in ba.uri])
def test_failure_and_then_success(self, fetch, rentalmanager, *_): email = email_generator.next() payload = self._guest_rental_payload(email) self._populate_data() manager = rentalmanager.return_value http_mock = mock.Mock() http_mock.response = mock.Mock() http_mock.response.status_code = 400 http_mock.response.data = { "errors": [{ "status": "Bad Request", "category_code": "request", "status_code": 400, "category_type": "request", "extras": { "routing_number": "Missing required field [routing_number]" }, "request_id": "OHM8ede8fee2f9a11e4ab2502a1fe52a36c", "description": "Missing required field [routing_number] Your request id is OHM8ede8fee2f9a11e4ab2502a1fe52a36c." }] } manager.rent.side_effect = balanced.exc.HTTPError(http_mock) resp = self.client.post('/rent/1', data=payload) self.assertEqual(resp.status_code, 201) payload = self._guest_rental_payload(email) manager.rent.side_effect = None rental = manager.rent.return_value rental.buyer.guid = '123' rental.buyer.email = '[email protected]' rental.guid = 1 self._rent(payload)
def test_anonymous_listing_with_existing_merchant_account(self): email_address = email_generator.next() ogaccount = balanced.Marketplace.my_marketplace.create_merchant( **self._merchant_payload(email_address)) payload = self._guest_listing_payload(email_address) resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter( User.email_address == email_address).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_account self.assertTrue('merchant' in account.roles) self.assertEqual(account.email_address, email_address) self.assertEqual(ogaccount.uri, account.uri)
def test_authenticated_listing_with_bank_account(self, email=None): email = email or email_generator.next() self._create_user(email) payload = self._listing_payload() bank_account = balanced.BankAccount(name='Bob Saget', account_number=321174851, routing_number=321174851 ).save() payload['bank_account_href'] = bank_account.href user = User.query.filter(User.email == email).one() resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check in balanced user = User.query.filter( User.email == email).one() account = user.balanced_customer self.assertEqual(account.email, email) self.assertTrue( [ba for ba in account.bank_accounts if bank_account.id in ba.href] )
def test_authenticated_listing_with_bank_account(self, email_address=None): email_address = email_address or email_generator.next() self._create_user(email_address) payload = self._listing_payload() bank_account = balanced.BankAccount(name='Bob Saget', account_number=321174851, bank_code=321174851 ).save() payload['bank_account_uri'] = bank_account.uri user = User.query.filter(User.email_address == email_address).one() resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check in balanced user = User.query.filter( User.email_address == email_address).one() account = user.balanced_account self.assertTrue('merchant' in account.roles) self.assertEqual(account.email_address, email_address) self.assertTrue( [ba for ba in account.bank_accounts if bank_account.id in ba.uri] )
def test_anonymous_listing_with_bank_account(self): email = email_generator.next() payload = self._guest_listing_payload(email) bank_account = balanced.BankAccount(name='Myata Marketplace', account_number=321174851, routing_number=321174851).save() payload['bank_account_href'] = bank_account.href resp = self.client.post('/list', data=payload) self.assertEqual(resp.status_code, 302) self.assertIn('/list/1/complete', resp.data) # check locally user = User.query.filter(User.email == email).one() # NOTE: guest passwords currently disabled self.assertIsNone(user.password_hash) # self.assertTrue(user.check_password('ab')) # check in balanced account = user.balanced_customer self.assertEqual(account.email, email) self.assertTrue( [ba for ba in account.bank_accounts if bank_account.id in ba.href])