Skip to content
This repository has been archived by the owner on Jan 25, 2018. It is now read-only.

Commit

Permalink
Restore "Set buyer on transaction for Boku (bug #1034305)"
Browse files Browse the repository at this point in the history
This reverts commit 283400e.

Conflicts:
	lib/solitude/api.py
  • Loading branch information
jaredlockhart committed Jul 21, 2014
1 parent cd62eb0 commit 503d8dc
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 4 deletions.
27 changes: 23 additions & 4 deletions lib/solitude/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
client = None


class BuyerNotConfigured(Exception):
"""The buyer has not yet been configured for the payment."""


class SellerNotConfigured(Exception):
"""The seller has not yet been configued for the payment."""

Expand Down Expand Up @@ -257,6 +261,14 @@ def start_transaction(self, transaction_uuid,
"""
Start a payment provider transaction to begin the purchase flow.
"""
try:
generic_buyer = self.slumber.generic.buyer.get_object_or_404(
uuid=user_uuid)
except ObjectDoesNotExist:
raise BuyerNotConfigured(
'{pr}: Buyer with uuid {u} does not exist'
.format(u=user_uuid, pr=self.provider.name))

try:
generic_seller = self.slumber.generic.seller.get_object_or_404(
uuid=generic_seller_uuid)
Expand Down Expand Up @@ -291,6 +303,7 @@ def start_transaction(self, transaction_uuid,
provider_seller_uuid=provider_seller_uuid)

trans_token, pay_url = self.provider.create_transaction(
generic_buyer=generic_buyer,
generic_seller=generic_seller,
generic_product=product,
provider_product=provider_product,
Expand Down Expand Up @@ -474,7 +487,8 @@ def get_seller(self, generic_seller, provider_seller_uuid):
"""
raise NotImplementedError()

def create_transaction(self, generic_seller, generic_product,
def create_transaction(self, generic_buyer,
generic_seller, generic_product,
provider_product, provider_seller_uuid,
product_name, transaction_uuid,
prices, user_uuid, application_size, source,
Expand Down Expand Up @@ -563,7 +577,8 @@ def get_product(self, generic_seller, generic_product):
# This pings zippy and returns us a full result.
return self.api.products(id=listing['id']).get_object_or_404()

def create_transaction(self, generic_seller, generic_product,
def create_transaction(self, generic_buyer, generic_seller,
generic_product,
provider_product, provider_seller_uuid,
product_name, transaction_uuid,
prices, user_uuid, application_size, source,
Expand Down Expand Up @@ -605,6 +620,7 @@ def create_transaction(self, generic_seller, generic_product,
'uuid': transaction_uuid,
'status': solitude_const.STATUS_PENDING,
'provider': solitude_const.PROVIDERS[self.name],
'buyer': generic_buyer['resource_uri'],
'seller': generic_seller['resource_uri'],
'seller_product': generic_product['resource_uri'],
'source': source,
Expand Down Expand Up @@ -658,7 +674,8 @@ def create_product(self, generic_product, provider_seller, external_id,
# Boku does not have a products API the way Bango does.
return None

def create_transaction(self, generic_seller, generic_product,
def create_transaction(self, generic_buyer,
generic_seller, generic_product,
provider_product, provider_seller_uuid,
product_name, transaction_uuid,
prices, user_uuid, application_size, source,
Expand Down Expand Up @@ -707,6 +724,7 @@ def create_transaction(self, generic_seller, generic_product,

trans = self.slumber.generic.transaction.post({
'provider': solitude_const.PROVIDERS[self.name],
'buyer': generic_buyer['resource_uri'],
'seller': generic_seller['resource_uri'],
'seller_product': generic_product['resource_uri'],
'source': source,
Expand Down Expand Up @@ -805,7 +823,8 @@ def get_seller(self, generic_seller, provider_seller_uuid):
.format(sel=provider_generic_seller['resource_pk']))
return provider_generic_seller['bango']

def create_transaction(self, generic_seller, generic_product,
def create_transaction(self, generic_buyer,
generic_seller, generic_product,
provider_product, provider_seller_uuid,
product_name, transaction_uuid,
prices, user_uuid, application_size, source,
Expand Down
19 changes: 19 additions & 0 deletions lib/solitude/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,10 @@ def setUp(self):

self.slumber = mock.MagicMock()

self.buyer_id = 1
self.buyer_uuid = 'buyer-xyz'
self.buyer_uri = '/generic/buyer/1/'

self.seller_id = 1
self.seller_uuid = 'seller-xyz'
self.seller_uri = '/generic/seller/1/'
Expand Down Expand Up @@ -503,6 +507,10 @@ def test_start_with_existing_prod(self):
'token': 'zippy-trans-token',
}

self.slumber.generic.buyer.get_object_or_404.return_value = {
'resource_uri': self.buyer_uri,
}

trans_id, pay_url, seller_id = self.configure(
seller_uuid=self.seller_uuid, product_uuid=self.product_uuid)

Expand All @@ -522,6 +530,7 @@ def test_start_with_existing_prod(self):
'currency': 'EUR',
'provider': constants.PROVIDER_REFERENCE,
'region': '123',
'buyer': self.buyer_uri,
'seller': self.seller_uri,
'seller_product': self.product_uri,
'source': 'unknown',
Expand All @@ -534,6 +543,10 @@ def test_with_new_prod(self):
name = 'Magic Unicorn'
new_product_uuid = 'new-product'

self.slumber.generic.buyer.get_object_or_404.return_value = {
'resource_uri': self.buyer_uri,
}

(self.slumber.generic.product.get_object_or_404
.side_effect) = ObjectDoesNotExist

Expand Down Expand Up @@ -590,6 +603,7 @@ def test_with_new_prod(self):
'currency': 'EUR',
'provider': constants.PROVIDER_REFERENCE,
'region': '123',
'buyer': self.buyer_uri,
'seller': self.seller_uri,
'seller_product': self.product_uri,
'source': 'unknown',
Expand Down Expand Up @@ -643,6 +657,10 @@ def test_start_transaction(self):
provider_seller_uuid = 'provider-sel-xyz'
user_uuid = 'user-xyz'

self.slumber.generic.buyer.get_object_or_404.return_value = {
'resource_uri': self.buyer_uri,
}

self.slumber.boku.transactions.post.return_value = {
'buy_url': boku_pay_url,
'transaction_id': boku_transaction_id,
Expand All @@ -669,6 +687,7 @@ def test_start_transaction(self):
assert 'transaction_uuid' in kw, 'Missing keys: {kw}'.format(kw=kw)
self.slumber.generic.transaction.post.assert_called_with({
'provider': constants.PROVIDER_BOKU,
'buyer': self.buyer_uri,
'seller': self.seller_uri,
'seller_product': self.product_uri,
'source': 'unknown',
Expand Down

0 comments on commit 503d8dc

Please sign in to comment.