def test_UploadTestPassportLimitless(self): ah = accountHolder.AccountHolder(TEST_MARKETPLACE_MERCHANT, new=True, details='TestPerson', debug=DEBUG) doc = testData.misc.MP_TEST_PASSPORT_LIMITLESS ah.accountHolderDetails['individualDetails']['name']['lastName'] = 'TestData' ah.update() ah.uploadDocument(doc) ah.dump()
def test_DefaultCreationThenForceLimitedPayout(self): ah = accountHolder.AccountHolder(TEST_MARKETPLACE_MERCHANT, new=True, details='TestPerson', debug=DEBUG) ah.forceLimitedPayout() states = ah.getStates() self.assertEqual(len(states), 2, 'Should be two states') for s in states: self.assertTrue(s in (accountHolder.LIMITED_PROCESSING, accountHolder.LIMITED_PAYOUT), 'Unexpected state %s' % s)
def test_attemptToSendWhenZeroBalance(self): ''' Create two new accountHolders. Np payments. Perform a transfer from first to second ''' merchantAccount = 'JohnDickMarketPlace' # Create accountHolder 1 (implicitly in LimitedProcessing) ah1 = accountHolder.AccountHolder(merchantAccount, new=True, debug=True) # Create accountHolder 2 ah2 = accountHolder.AccountHolder(merchantAccount, new=True, debug=True) resp = ah1.accountHolderTransfer(ah2.defaultVirtualAccountCode, utils.testUtils.TEST_1_EUR_AMOUNT, 'BALANCE_TRANSFER') utils.testUtils.jsonPrint(resp)
def do(self): ah = accountHolder.AccountHolder(self.credentials, debug=self.debug) # Add required identity info ah.update({ "address": testUtils.MP_TEST_ADDRESS, "phoneNumber": testUtils.MP_TEST_PHONE_NUMBER }) # Force to limited payout ah.updateForceLimitedPayout() return ah
def test_DefaultCreation(self): """ Create a new accountHolder with default values in the marketplace, then read it to a new accountHolder via the code""" ah1 = accountHolder.AccountHolder(TEST_MARKETPLACE_MERCHANT, new=True, debug=True) self.assertIsInstance(ah1, accountHolder.AccountHolder, 'Unable to create new accountHolder object') # Check the state self.assertEqual(ah1.accountHolderDetails['email'], testData.misc.MP_TEST_EMAIL, 'Default email is wrong') self.assertEqual(ah1.accountHolderDetails['individualDetails'], {"name": testData.misc.MP_TEST_NAME}, 'Default name iss wrong') self.assertEqual(ah1.merchantCategoryCode, accountHolder.DEFAULT_MERCHANT_CATEGORY_CODE, 'Default merchant category code is wrong') self.assertEqual(ah1.getConfig(), accountHolder.DEFAULT_STATE_CONFIG,'Default state configuration is wronng') # Read this accountHolder via the accountHoder code ah2 = accountHolder.AccountHolder(TEST_MARKETPLACE_MERCHANT, code=ah1.accountHolderCode, debug=True) self.assertEqual(ah2.accountHolderCode, ah1.accountHolderCode, 'accountHolder codes do not match ') self.assertEqual(ah2.accountHolderDetails['email'], testData.misc.MP_TEST_EMAIL, 'Email addresses do not match') self.assertEqual(ah2.accountHolderDetails['individualDetails'], {"name": testData.misc.MP_TEST_NAME}, 'Individual details do not match') self.assertEqual(ah2.merchantCategoryCode, accountHolder.DEFAULT_MERCHANT_CATEGORY_CODE, 'Merchant category codes do not match') self.assertEqual(ah2.getConfig(), accountHolder.DEFAULT_STATE_CONFIG,'State configurations do not match') # Read this accountHolder via the virtual account Code ah3 = accountHolder.AccountHolder(TEST_MARKETPLACE_MERCHANT, virtualAccount=ah1.defaultVirtualAccountCode, debug=True) self.assertEqual(ah3.accountHolderCode, ah1.accountHolderCode, 'accountHolder codes do not match ') self.assertEqual(ah3.defaultVirtualAccountCode, ah1.defaultVirtualAccountCode, 'virtual account codes do not match ') self.assertEqual(ah3.accountHolderDetails['email'], testData.misc.MP_TEST_EMAIL, 'Email addresses do not match') self.assertEqual(ah3.accountHolderDetails['individualDetails'], {"name": testData.misc.MP_TEST_NAME}, 'Individual details do not match') self.assertEqual(ah3.merchantCategoryCode, accountHolder.DEFAULT_MERCHANT_CATEGORY_CODE, 'Merchant category codes do not match') self.assertEqual(ah3.getConfig(), accountHolder.DEFAULT_STATE_CONFIG,'State configurations do not match') # Trivial test of update() method (does not trigger KYC) ah3.accountHolderDetails['email'] = testData.misc.MP_TEST_EMAIL2 ah3.update() self.assertEqual(ah3.accountHolderDetails['email'], testData.misc.MP_TEST_EMAIL2,'Check email update') # Check the default state s = ah3.getStates() self.assertEqual(len(s), 1, 'More than one state') self.assertEqual(s[0], accountHolder.LIMITED_PROCESSING, 'The state is not %s' % accountHolder.LIMITED_PROCESSING) self.assertEqual(ah3.accountStatus['status'], 'Active', 'The state is not Active')
def do(self): ah = accountHolder.AccountHolder(self.credentials, debug=self.debug) doc = testUtils.MP_TEST_DOC_PASSPORT ah.update({ "individualDetails": { "name": { "firstName": "John", "lastName": "TestData", "gender": "MALE" } } }) ah.uploadDocument(doc) return ah
def do(self): ah = accountHolder.AccountHolder(self.credentials, debug=self.debug) # Use FRAUDCITY and secondname = Testdata ah.update({ "individualDetails": { "name": { "firstName": "TestData", "lastName": "TestData", "gender": "MALE" } }, "address": testUtils.MP_FRAUD_ADDRESS, "phoneNumber": testUtils.MP_TEST_PHONE_NUMBER }) return ah
def setUp(self): merchantAccount = 'JohnDickMarketPlace' ahCode = '1481325809' live = False self.ah = accountHolder.AccountHolder(merchantAccount, code=ahCode, live=live, debug=DEBUG)
def test_CreationFromKnownPersonDetails(self): ah = accountHolder.AccountHolder(TEST_MARKETPLACE_MERCHANT, new=True, details='TestPerson', debug=DEBUG) self.assertEqual(ah.accountHolderDetails['individualDetails'], { "name" : testData.misc.MP_TEST_NAME, "personalData" : testData.misc.MP_TEST_PERSONAL_DATA }, 'Individual details do not match')
Upload KYC and Bank to move to LimitedPayout => Deadline is removed, state is now LimitedPayout Receive ACCOUNT_HOLDER_STATUS_CHANGE notification Do more processing (but less than the LimitedProcessingLimit) => should work ''' INITIAL_KYC_LIMIT = 10000 # $ 100 LIMITED_LIMIT = 500000 # $ 5000 import accountHolder, testUtils, time psp_credentials = testUtils.TEST_CRED_PAYMENT mp_credentials = testUtils.TEST_CRED_MP_JOHNDICK print "Create a new, minimal accountHolder ..." ah = accountHolder.AccountHolder(mp_credentials, debug=True) print "Make a simple payment, less than the initial_kyc_needed limit" ah.simpleSplitPayment(psp_credentials, ah.getDefaultVirtualAccount(), { 'value': 100, 'currency': 'EUR' }) print "Check that accountHolder as now dumped has no deadline set, and that the transaction was approved:" ah.dump() print "Make a simple payment than now exceeds the initial_kyc_needed limit" ah.simpleSplitPayment(psp_credentials, ah.getDefaultVirtualAccount(), { 'value': INITIAL_KYC_LIMIT, 'currency': 'EUR' })