114 lines
4.9 KiB
JavaScript
114 lines
4.9 KiB
JavaScript
|
var assert = require('chai').assert;
|
||
|
var request = require('request-promise');
|
||
|
var config = require('../it.config');
|
||
|
var chai = require('chai');
|
||
|
var chaiSubset = require('chai-subset');
|
||
|
var jsonHelpers = require('../helpers/jsonUtils');
|
||
|
chai.use(chaiSubset);
|
||
|
|
||
|
/**
|
||
|
* Test case:
|
||
|
* should be able to submit an order with billingForm
|
||
|
*/
|
||
|
|
||
|
describe('billingForm', function () {
|
||
|
this.timeout(5000);
|
||
|
|
||
|
describe('positive test', function () {
|
||
|
var cookieJar = request.jar();
|
||
|
|
||
|
var myRequest = {
|
||
|
url: '',
|
||
|
method: 'POST',
|
||
|
rejectUnauthorized: false,
|
||
|
resolveWithFullResponse: true,
|
||
|
jar: cookieJar,
|
||
|
headers: {
|
||
|
'X-Requested-With': 'XMLHttpRequest'
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var cookieString;
|
||
|
|
||
|
|
||
|
var variantPid1 = '701643421084M';
|
||
|
var qty1 = 2;
|
||
|
var addProd = '/Cart-AddProduct';
|
||
|
|
||
|
// ----- Step 1 adding product to Cart
|
||
|
myRequest.url = config.baseUrl + addProd;
|
||
|
myRequest.form = {
|
||
|
pid: variantPid1,
|
||
|
quantity: qty1
|
||
|
};
|
||
|
|
||
|
return request(myRequest)
|
||
|
.then(function (addToCartResponse) {
|
||
|
assert.equal(addToCartResponse.statusCode, 200, 'Expected add to Cart request statusCode to be 200.');
|
||
|
cookieString = cookieJar.getCookieString(myRequest.url);
|
||
|
myRequest.url = config.baseUrl + '/CSRF-Generate';
|
||
|
var cookie = request.cookie(cookieString);
|
||
|
cookieJar.setCookie(cookie, myRequest.url);
|
||
|
// step2 : get cookies, Generate CSRF, then set cookies
|
||
|
return request(myRequest);
|
||
|
})
|
||
|
.then(function (csrfResponse) {
|
||
|
var csrfJsonResponse = JSON.parse(csrfResponse.body);
|
||
|
// step3 : submit billing request with token aquired in step 2
|
||
|
myRequest.url = config.baseUrl + '/CheckoutServices-SubmitPayment?' +
|
||
|
csrfJsonResponse.csrf.tokenName + '=' +
|
||
|
csrfJsonResponse.csrf.token;
|
||
|
myRequest.form = {
|
||
|
dwfrm_billing_shippingAddressUseAsBillingAddress: 'true',
|
||
|
dwfrm_billing_addressFields_firstName: 'John',
|
||
|
dwfrm_billing_addressFields_lastName: 'Smith',
|
||
|
dwfrm_billing_addressFields_address1: '10 main St',
|
||
|
dwfrm_billing_addressFields_address2: '',
|
||
|
dwfrm_billing_addressFields_country: 'us',
|
||
|
dwfrm_billing_addressFields_states_stateCode: 'MA',
|
||
|
dwfrm_billing_addressFields_city: 'burlington',
|
||
|
dwfrm_billing_addressFields_postalCode: '09876',
|
||
|
dwfrm_billing_paymentMethod: 'CREDIT_CARD',
|
||
|
dwfrm_billing_creditCardFields_cardType: 'Visa',
|
||
|
dwfrm_billing_creditCardFields_cardNumber: '4111111111111111',
|
||
|
dwfrm_billing_creditCardFields_expirationMonth: '2',
|
||
|
dwfrm_billing_creditCardFields_expirationYear: '2030.0',
|
||
|
dwfrm_billing_contactInfoFields_phone: '9786543213',
|
||
|
dwfrm_billing_creditCardFields_securityCode: '342'
|
||
|
};
|
||
|
var ExpectedResBody = {
|
||
|
locale: 'en_US',
|
||
|
address: {
|
||
|
firstName: { value: 'John' },
|
||
|
lastName: { value: 'Smith' },
|
||
|
address1: { value: '10 main St' },
|
||
|
address2: { value: null },
|
||
|
city: { value: 'burlington' },
|
||
|
stateCode: { value: 'MA' },
|
||
|
postalCode: { value: '09876' },
|
||
|
countryCode: { value: 'us' }
|
||
|
},
|
||
|
paymentMethod: { value: 'CREDIT_CARD', htmlName: 'CREDIT_CARD' },
|
||
|
phone: { value: '9786543213' },
|
||
|
error: true,
|
||
|
cartError: true,
|
||
|
fieldErrors: [],
|
||
|
serverErrors: [],
|
||
|
saveCard: false
|
||
|
};
|
||
|
|
||
|
return request(myRequest)
|
||
|
.then(function (response) {
|
||
|
var bodyAsJson = JSON.parse(response.body);
|
||
|
var strippedBody = jsonHelpers.deleteProperties(bodyAsJson, ['redirectUrl', 'action', 'queryString']);
|
||
|
assert.equal(response.statusCode, 200, 'Expected CheckoutServices-SubmitPayment statusCode to be 200.');
|
||
|
assert.containSubset(strippedBody.address, ExpectedResBody.address, 'Expecting actual response address to be equal match expected response address');
|
||
|
assert.isFalse(strippedBody.error);
|
||
|
assert.equal(strippedBody.paymentMethod.value, ExpectedResBody.paymentMethod.value);
|
||
|
assert.equal(strippedBody.phone.value, ExpectedResBody.phone.value);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|