import * as axios from 'axios'; import * as MockAdapter from 'axios-mock-adapter'; import interpolate from 'cashier-payments-sdk/dist/src/utils/interpolate'; const configSDKUrls = require('cashier-payments-sdk/dist/src/assets/config.json'); export default class MockApi { private mockAdapter: any; constructor() { // axios.defaults.baseURL = baseURL this.mockAdapter = new MockAdapter(axios); } settingsResponse(configuration: any, response) { const mockedMandatoryFields = [ { fieldName: 'firstName', domain: 'CREDIT_CARD' }, { fieldName: 'lastName', domain: 'CREDIT_CARD' }, { fieldName: 'phoneNumber', domain: 'CREDIT_CARD' }, ]; this.mockAdapter.onGet(configSDKUrls.resolveCountryUrl).reply(200, { country: 'USA' }); const settingsRequestUrl = interpolate(configSDKUrls.paymentMethodsOrderApiUrl, {orderId: configuration.snapshotId}); this.mockAdapter.onGet(settingsRequestUrl).reply(200, response); this.mockAdapter.onGet(settingsRequestUrl + '?country=USA').reply(200, { paymentMethods: response.paymentMethods.map(method => { if (method.paymentMethod === 'creditCard') { return { paymentMethod: 'creditCard', connectedProviderId: 'stripe' }; } // Added mocked mandatory fields method.mandatoryFields = mockedMandatoryFields; return method; }), }); this.mockAdapter.onGet('/_api/payment-services-web/buyer/country').reply(200, { country: 'USA', }); this.mockAdapter .onGet(`${interpolate((configSDKUrls as any).mandatoryFieldsUrl, { orderId: configuration.snapshotId })}`, { params: { provider: 'tr.payu', country: 'USA' }, }) .reply(200, { mandatoryFields: mockedMandatoryFields }); this.mockAdapter .onGet(`${interpolate((configSDKUrls as any).mandatoryFieldsUrl, { orderId: configuration.snapshotId })}`, { params: { provider: 'payPal', country: 'USA' }, }) .reply(200, { mandatoryFields: [] }); } paymentDetails() { this.mockAdapter.onPost(configSDKUrls.paymentDetailsUrl).reply(200, {detailsId: '12345'}); } payOffline(orderId: string) { const url = '/_api/payment-services-web/transactions/offline?orderSnapshotId=' + orderId; this.mockAdapter.onPost(url, { orderSnapshotId: orderId }).reply(200, {}); } charge(orderId: string) { const url = `/_api/payment-services-web/payments/v2/orders/${orderId}/charges`; this.mockAdapter.onPost(url).reply(200, { chargeId: '123', transactionStatus: 'APPROVED', redirectUrl: 'http://localhost:9009/_api/payment-services-web/wallet/start', failureDetails: '' }); } order(orderId: string) { const url = `/_api/payment-services-web/payments/v2/orders/${orderId}`; this.mockAdapter.onGet(url).reply(200, { order: { id: orderId, description: { amount: 99.99, currency: 'USD', } } }); } mandatoryFields(orderId: string) { const mockedMandatoryFields = [ { fieldName: 'firstName', domain: 'CREDIT_CARD' }, { fieldName: 'lastName', domain: 'CREDIT_CARD' }, { fieldName: 'phoneNumber', domain: 'CREDIT_CARD' }, ]; this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields?provider=tr.payu`).reply(200, { mandatoryFields: mockedMandatoryFields }); this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields`, { params: { provider: 'stripe', country: 'USA' }, }).reply(200, { mandatoryFields: mockedMandatoryFields }); this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields?provider=stripe&country=USA`).reply(200, { mandatoryFields: mockedMandatoryFields }); } mandatoryFieldsWithHolderId(orderId: string) { const mockedMandatoryFields = [ { fieldName: 'firstName', domain: 'CREDIT_CARD' }, { fieldName: 'lastName', domain: 'CREDIT_CARD' }, { fieldName: 'phoneNumber', domain: 'CREDIT_CARD' }, { fieldName: 'additional_information.holder_id', domain: 'CREDIT_CARD' }, ]; this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields?provider=tr.payu`).reply(200, { mandatoryFields: mockedMandatoryFields }); this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields`, { params: { provider: 'stripe', country: 'USA' }, }).reply(200, { mandatoryFields: mockedMandatoryFields }); this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields?provider=stripe&country=USA`).reply(200, { mandatoryFields: mockedMandatoryFields }); } mandatoryFieldsForWixPay(orderId: string) { const mockedMandatoryFields = [ {domain: 'CREDIT_CARD', fieldName: 'number'}, {domain: 'CREDIT_CARD', fieldName: 'expiration'}, {domain: 'CREDIT_CARD', fieldName: 'additional_information.cvv'}, {domain: 'CREDIT_CARD', fieldName: 'additional_information.holder_name'}, {domain: 'CREDIT_CARD', fieldName: 'additional_information.holder_id'}, {domain: 'ORDER', fieldName: 'description.billingAddress.addressDetails.street'}, {domain: 'ORDER', fieldName: 'description.billingAddress.addressDetails.houseNumber'}, {domain: 'ORDER', fieldName: 'description.billingAddress.city'}, {domain: 'ORDER', fieldName: 'description.billingAddress.countryCode'}, {domain: 'ORDER', fieldName: 'description.billingAddress.zipCode'}, {domain: 'ORDER', fieldName: 'description.billingAddress.phone'}, ]; this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields?provider=tr.payu`).reply(200, { mandatoryFields: mockedMandatoryFields }); this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields`, { params: { provider: 'stripe', country: 'USA' }, }).reply(200, { mandatoryFields: mockedMandatoryFields }); this.mockAdapter.onGet(`/_api/payment-services-web/payments/v2/orders/${orderId}/mandatory-fields?provider=stripe&country=USA`).reply(200, { mandatoryFields: mockedMandatoryFields }); } reset() { this.mockAdapter.reset(); } }