1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
|
from tests.test_helper import *
class TestTransparentRedirect(unittest.TestCase):
@raises(DownForMaintenanceError)
def test_parse_and_validate_query_string_checks_http_status_before_hash(self):
customer = Customer.create().customer
tr_data = {
"credit_card": {
"customer_id": customer.id
}
}
post_params = {
"tr_data": CreditCard.tr_data_for_create(tr_data, "http://example.com/path?foo=bar"),
"credit_card[cardholder_name]": "Card Holder",
"credit_card[number]": "4111111111111111",
"credit_card[expiration_date]": "05/2012",
}
query_string = TestHelper.simulate_tr_form_post(post_params, Configuration.instantiate().base_merchant_url() + "/test/maintenance")
CreditCard.confirm_transparent_redirect(query_string)
@raises(AuthenticationError)
def test_parse_and_validate_query_string_raises_authentication_error_with_bad_credentials(self):
customer = Customer.create().customer
tr_data = {
"credit_card": {
"customer_id": customer.id
}
}
old_private_key = Configuration.private_key
try:
Configuration.private_key = "bad"
post_params = {
"tr_data": CreditCard.tr_data_for_create(tr_data, "http://example.com/path?foo=bar"),
"credit_card[cardholder_name]": "Card Holder",
"credit_card[number]": "4111111111111111",
"credit_card[expiration_date]": "05/2012",
}
query_string = TestHelper.simulate_tr_form_post(post_params, CreditCard.transparent_redirect_create_url())
CreditCard.confirm_transparent_redirect(query_string)
finally:
Configuration.private_key = old_private_key
def test_transaction_sale_from_transparent_redirect_with_successful_result(self):
tr_data = {
"transaction": {
"amount": TransactionAmounts.Authorize,
}
}
post_params = {
"tr_data": Transaction.tr_data_for_sale(tr_data, "http://example.com/path"),
"transaction[credit_card][number]": "4111111111111111",
"transaction[credit_card][expiration_date]": "05/2010",
}
query_string = TestHelper.simulate_tr_form_post(post_params)
result = TransparentRedirect.confirm(query_string)
self.assertTrue(result.is_success)
transaction = result.transaction
self.assertEquals(Decimal(TransactionAmounts.Authorize), transaction.amount)
self.assertEquals(Transaction.Type.Sale, transaction.type)
self.assertEquals("411111", transaction.credit_card_details.bin)
self.assertEquals("1111", transaction.credit_card_details.last_4)
self.assertEquals("05/2010", transaction.credit_card_details.expiration_date)
def test_transaction_credit_from_transparent_redirect_with_successful_result(self):
tr_data = {
"transaction": {
"amount": TransactionAmounts.Authorize,
}
}
post_params = {
"tr_data": Transaction.tr_data_for_credit(tr_data, "http://example.com/path"),
"transaction[credit_card][number]": "4111111111111111",
"transaction[credit_card][expiration_date]": "05/2010",
}
query_string = TestHelper.simulate_tr_form_post(post_params)
result = TransparentRedirect.confirm(query_string)
self.assertTrue(result.is_success)
transaction = result.transaction
self.assertEquals(Decimal(TransactionAmounts.Authorize), transaction.amount)
self.assertEquals(Transaction.Type.Credit, transaction.type)
self.assertEquals("411111", transaction.credit_card_details.bin)
self.assertEquals("1111", transaction.credit_card_details.last_4)
self.assertEquals("05/2010", transaction.credit_card_details.expiration_date)
def test_customer_create_from_transparent_redirect(self):
tr_data = {
"customer": {
"first_name": "John",
"last_name": "Doe",
"company": "Doe Co",
}
}
post_params = {
"tr_data": Customer.tr_data_for_create(tr_data, "http://example.com/path"),
"customer[email]": "john@doe.com",
"customer[phone]": "312.555.2323",
"customer[fax]": "614.555.5656",
"customer[website]": "www.johndoe.com"
}
query_string = TestHelper.simulate_tr_form_post(post_params)
result = TransparentRedirect.confirm(query_string)
self.assertTrue(result.is_success)
customer = result.customer
self.assertEquals("John", customer.first_name)
self.assertEquals("Doe", customer.last_name)
self.assertEquals("Doe Co", customer.company)
self.assertEquals("john@doe.com", customer.email)
self.assertEquals("312.555.2323", customer.phone)
self.assertEquals("614.555.5656", customer.fax)
self.assertEquals("www.johndoe.com", customer.website)
def test_customer_update_from_transparent_redirect(self):
customer = Customer.create({"first_name": "Sarah", "last_name": "Humphrey"}).customer
tr_data = {
"customer_id": customer.id,
"customer": {
"first_name": "Stan",
}
}
post_params = {
"tr_data": Customer.tr_data_for_update(tr_data, "http://example.com/path"),
"customer[last_name]": "Humphrey",
}
query_string = TestHelper.simulate_tr_form_post(post_params)
result = TransparentRedirect.confirm(query_string)
self.assertTrue(result.is_success)
customer = Customer.find(customer.id)
self.assertEquals("Stan", customer.first_name)
self.assertEquals("Humphrey", customer.last_name)
def test_payment_method_create_from_transparent_redirect(self):
customer = Customer.create({"first_name": "Sarah", "last_name": "Humphrey"}).customer
tr_data = {
"credit_card": {
"customer_id": customer.id,
"number": "4111111111111111",
}
}
post_params = {
"tr_data": CreditCard.tr_data_for_create(tr_data, "http://example.com/path"),
"credit_card[expiration_month]": "01",
"credit_card[expiration_year]": "10"
}
query_string = TestHelper.simulate_tr_form_post(post_params)
result = TransparentRedirect.confirm(query_string)
self.assertTrue(result.is_success)
credit_card = result.credit_card
self.assertEquals("411111", credit_card.bin)
self.assertEquals("1111", credit_card.last_4)
self.assertEquals("01/2010", credit_card.expiration_date)
def test_payment_method_update_from_transparent_redirect(self):
customer = Customer.create({"first_name": "Sarah", "last_name": "Humphrey"}).customer
credit_card = CreditCard.create({
"customer_id": customer.id,
"number": "4111111111111111",
"expiration_date": "10/10"
}).credit_card
tr_data = {
"payment_method_token": credit_card.token,
"credit_card": {
"expiration_date": "12/12"
}
}
post_params = {
"tr_data": CreditCard.tr_data_for_update(tr_data, "http://example.com/path"),
}
query_string = TestHelper.simulate_tr_form_post(post_params)
TransparentRedirect.confirm(query_string)
credit_card = CreditCard.find(credit_card.token)
self.assertEquals("12/2012", credit_card.expiration_date)
|