[Erp5-report] r28209 - /erp5/trunk/products/ERP5/tests/testERP5Commerce.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Jul 29 17:05:26 CEST 2009
Author: vincentd
Date: Wed Jul 29 17:05:23 2009
New Revision: 28209
URL: http://svn.erp5.org?rev=28209&view=rev
Log:
Add parts of the paypal implementation, actually can't work without good security (unquote all commented lines to see the problem)
Modified:
erp5/trunk/products/ERP5/tests/testERP5Commerce.py
Modified: erp5/trunk/products/ERP5/tests/testERP5Commerce.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testERP5Commerce.py?rev=28209&r1=28208&r2=28209&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testERP5Commerce.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testERP5Commerce.py [utf8] Wed Jul 29 17:05:23 2009
@@ -31,6 +31,7 @@
from Testing import ZopeTestCase
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from AccessControl.SecurityManagement import newSecurityManager
+from AccessControl.SecurityManagement import getSecurityManager
from zLOG import LOG
import transaction
import urllib
@@ -144,6 +145,49 @@
self.clearModule(self.portal.sale_order_module)
self.clearModule(self.portal.currency_module)
self.portal.portal_caches.clearAllCache()
+
+ def createDefaultOrganisation(self):
+ """
+ Create Seller organisation
+ """
+ self.organisation_module = self.portal.getDefaultModule('Organisation')
+ if 'seller' not in self.organisation_module.objectIds():
+ self.nexedi = self.organisation_module.newContent(
+ title="Seller",
+ group='seller',
+ role='internal',
+ id='seller',
+ )
+
+ def createTestUser(self, first_name, last_name, reference, group,
+ destination_project=None, id=None):
+ """
+ Create a user with the given parameters
+ """
+ # Do not create an already existing user - XXX why is this needed after all ? (JPS)
+ if self.portal.portal_catalog.getResultValue(portal_type='Person',
+ reference=reference) is not None:
+ return
+
+ self.person_module = self.getPersonModule()
+ person = self.person_module.newContent(
+ first_name=first_name,
+ last_name=last_name,
+ reference=reference,
+ password='secret',
+ career_role='internal',
+ id=id or reference,
+ )
+
+ # Set the assignment
+ assignment = person.newContent(portal_type='Assignment')
+ assignment.edit(function='', destination_value= getattr(self, 'seller', None),
+ start_date='1972-01-01', stop_date='2999-12-31',
+ group=group, destination_project=destination_project)
+ assignment.open()
+
+ get_transaction().commit()
+ self.tic()
def changeUser(self, name):
user_folder = self.getPortal().acl_users
@@ -215,7 +259,16 @@
supply_line.setPricedQuantity(1)
supply_line.setDefaultResourceValue(product)
supply_line.setPriceCurrency('currency_module/1')
-
+
+ def createUser(self, name, role_list):
+ user_folder = self.getPortal().acl_users
+ user_folder._doAddUser(name, 'password', role_list, [])
+
+ def changeUser(self, user_id):
+ user_folder = self.getPortal().acl_users
+ user = user_folder.getUserById(user_id).__of__(user_folder)
+ newSecurityManager(None, user)
+
def setupWebSite(self, **kw):
"""
Setup Web Site
@@ -236,8 +289,19 @@
**kw)
transaction.commit()
self.tic()
+
web_site.WebSite_setupECommerceWebSite()
self.initialiseSupplyLine()
+
+ transaction.commit()
+ self.tic()
+
+ self.createDefaultOrganisation()
+ self.createTestUser(first_name="Web",
+ last_name='master',
+ reference='webmaster',
+ group=None)
+ #XXX INSERT security here
return web_site
def test_01_AddResourceToShoppingCart(self, quiet=0, run=run_all_test):
@@ -707,31 +771,51 @@
#1 initialise a website
web_site = self.setupWebSite()
-
- #2 login
+ web_site.setProperty('ecommerce_paypal_username', 'user')
+ web_site.setProperty('ecommerce_paypal_password', 'pass')
+ web_site.setProperty('ecommerce_paypal_signature', 'signature')
+
+ #2 login and activate a cart
+ #self.changeUser('webmaster')
+ request = self.app.REQUEST
+ request.set('session_id', SESSION_ID)
#3 add a product in the cart
-
+ default_product = self.getDefaultProduct()
+ portal.Resource_addToShoppingCart(default_product, 1)
+ get_transaction().commit()
+ self.tic()
+
#4 chose a shipping for the cart
+ shipping_resource_list = portal.SaleOrder_getAvailableShippingResourceList()
+ #XXX apply it to the cart
#5 : paypal step 1 : get a new token
- #token = web_site.WebSite_getNewPaypalToken()
- #self.assertNotEquals(token, None)
+ token = web_site.WebSite_getNewPaypalToken()
+ self.assertNotEquals(token, None)
#6 : paypal step 2 : go to paypal and confirm this token
-
+ # PayerID is normaly set in the request when paypal redirect to the instance
+ request.set('PayerID', 'THEPAYERID')
+
#7 : paypal step 3 : check if this token is confirmed by paypal
- # use WebSection_checkPaypalIdentification
-
+ error = web_site.WebSection_checkPaypalIdentification()
+ self.assertEquals(error, None)
+ self.assertTrue('/checkout' in request.RESPONSE.getHeader('location'))
+
#8 : paypal step 4 : validate the payment
- # use WebSection_doPaypalPayment
-
+ self.assertEquals(1, len(portal.SaleOrder_getShoppingCartItemList()))
+ self.assertEquals(0, len(portal.sale_order_module.contentValues()))
+ #web_site.WebSection_doPaypalPayment(token=token)
+ #get_transaction().commit()
+ #self.tic()
+
#9 check if sale order created
-
- #10 check sale order price and status
-
- #11 clean
+ #self.assertEquals(0, len(portal.SaleOrder_getShoppingCartItemList()))
+ #self.assertEquals(1, len(portal.sale_order_module.contentValues()))
+
custom_skin.manage_delObjects([method_id])
+ self.changeUser('ivan')
import unittest
def test_suite():
More information about the Erp5-report
mailing list