mirror of
https://github.com/jlengrand/adyen-node-api-library.git
synced 2026-03-10 08:01:20 +00:00
Merge pull request #467 from Adyen/hotfix/hmac
This commit is contained in:
4
dist/es5/main.js
vendored
4
dist/es5/main.js
vendored
File diff suppressed because one or more lines are too long
2
dist/lib-esm/package.json
vendored
2
dist/lib-esm/package.json
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@adyen/api-library",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.1",
|
||||
"description": "The Adyen API Library for NodeJS enables you to work with Adyen APIs.",
|
||||
"main": "dist/lib/src/index.js",
|
||||
"types": "dist/lib/src/index.d.ts",
|
||||
|
||||
76
dist/lib-esm/src/__tests__/hmacValidator.spec.js
vendored
76
dist/lib-esm/src/__tests__/hmacValidator.spec.js
vendored
@@ -13,21 +13,28 @@ var _a;
|
||||
import HmacValidator from "../utils/hmacValidator";
|
||||
import { NotificationRequestItem } from "../typings/notification/models";
|
||||
import { ApiConstants } from "../constants/apiConstants";
|
||||
import NotificationRequest from "../notification/notificationRequest";
|
||||
var key = "DFB1EB5485895CFA84146406857104ABB4CBCABDC8AAF103A624C8F6A3EAAB00";
|
||||
var expectedSign = "xhpHvYq2u2Np0rstbZ6QjLGu7JWhvf7Iwaa6EviJSX0=";
|
||||
var expectedSign = "ZNBPtI+oDyyRrLyD1XirkKnQgIAlFc07Vj27TeHsDRE=";
|
||||
var notificationRequestItem = {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: { currency: "EUR", value: 1000 },
|
||||
eventCode: NotificationRequestItem.EventCodeEnum.CAPTURE,
|
||||
eventDate: new Date("01-01-1970").toISOString(),
|
||||
paymentMethod: "VISA",
|
||||
reason: "reason",
|
||||
success: NotificationRequestItem.SuccessEnum.True,
|
||||
additionalData: (_a = {}, _a[ApiConstants.HMAC_SIGNATURE] = expectedSign, _a),
|
||||
NotificationRequestItem: {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: { currency: "EUR", value: 1000 },
|
||||
eventCode: NotificationRequestItem.EventCodeEnum.REPORTAVAILABLE,
|
||||
eventDate: "2019-09-21T11:45:24.637Z",
|
||||
paymentMethod: "VISA",
|
||||
reason: "reason",
|
||||
success: NotificationRequestItem.SuccessEnum.True,
|
||||
additionalData: (_a = {}, _a[ApiConstants.HMAC_SIGNATURE] = expectedSign, _a),
|
||||
}
|
||||
};
|
||||
var notification = new NotificationRequest({
|
||||
live: "false",
|
||||
notificationItems: [notificationRequestItem]
|
||||
});
|
||||
describe("HMAC Validator", function () {
|
||||
var hmacValidator;
|
||||
beforeEach(function () {
|
||||
@@ -47,19 +54,54 @@ describe("HMAC Validator", function () {
|
||||
expect(encrypted).toEqual("34oR8T1whkQWTv9P+SzKyp8zhusf9n0dpqrm9nsqSJs=");
|
||||
});
|
||||
it("should get correct data to sign", function () {
|
||||
var data = hmacValidator.getDataToSign(notificationRequestItem);
|
||||
expect(data).toEqual("pspReference:originalReference:merchantAccount:reference:1000:EUR:CAPTURE:true");
|
||||
var data = hmacValidator.getDataToSign(notification.notificationItems[0]);
|
||||
expect(data).toEqual("pspReference:originalReference:merchantAccount:reference:1000:EUR:REPORT_AVAILABLE:true");
|
||||
});
|
||||
it("should have valid hmac", function () {
|
||||
var encrypted = hmacValidator.calculateHmac(notificationRequestItem, key);
|
||||
var encrypted = hmacValidator.calculateHmac(notification.notificationItems[0], key);
|
||||
expect(expectedSign).toEqual(encrypted);
|
||||
expect(hmacValidator.validateHMAC(notificationRequestItem, key)).toBeTruthy();
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeTruthy();
|
||||
});
|
||||
it("should have invalid hmac", function () {
|
||||
var _a;
|
||||
var invalidNotification = __assign(__assign({}, notificationRequestItem), { additionalData: (_a = {}, _a[ApiConstants.HMAC_SIGNATURE] = "notValidSign", _a) });
|
||||
var invalidNotification = __assign(__assign({}, notification.notificationItems[0]), { additionalData: (_a = {}, _a[ApiConstants.HMAC_SIGNATURE] = "notValidSign", _a) });
|
||||
var result = hmacValidator.validateHMAC(invalidNotification, key);
|
||||
expect(result).toBeFalsy();
|
||||
});
|
||||
it("should test hmac", function () {
|
||||
var data = "countryCode:currencyCode:merchantAccount:merchantReference:paymentAmount:sessionValidity:skinCode:NL:EUR:MagentoMerchantTest2:TEST-PAYMENT-2017-02-01-14\\:02\\:05:199:2017-02-02T14\\:02\\:05+01\\:00:PKz2KML1";
|
||||
var key = "DFB1EB5485895CFA84146406857104ABB4CBCABDC8AAF103A624C8F6A3EAAB00";
|
||||
var hmacValidator = new HmacValidator();
|
||||
var encrypted = hmacValidator.calculateHmac(data, key);
|
||||
expect(encrypted).toEqual("34oR8T1whkQWTv9P+SzKyp8zhusf9n0dpqrm9nsqSJs=");
|
||||
});
|
||||
it("should validate HMAC", function () {
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeTruthy();
|
||||
});
|
||||
it("should have valid notification request item HMAC", function () {
|
||||
var _a;
|
||||
var expectedSign = "ipnxGCaUZ4l8TUW75a71/ghd2Fe5ffvX0pV4TLTntIc=";
|
||||
var notificationRequestItem = { NotificationRequestItem: {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: { currency: "EUR", value: 1000 },
|
||||
eventCode: "EVENT",
|
||||
success: "true",
|
||||
additionalData: (_a = {}, _a[ApiConstants.HMAC_SIGNATURE] = expectedSign, _a)
|
||||
} };
|
||||
var notification = new NotificationRequest({
|
||||
live: "false",
|
||||
notificationItems: [notificationRequestItem]
|
||||
});
|
||||
var data = hmacValidator.getDataToSign(notification.notificationItems[0]);
|
||||
expect("pspReference:originalReference:merchantAccount:reference:1000:EUR:EVENT:true").toEqual(data);
|
||||
var encrypted = hmacValidator.calculateHmac(notification.notificationItems[0], key);
|
||||
expect(expectedSign).toEqual(encrypted);
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeTruthy();
|
||||
notification.notificationItems[0].additionalData[ApiConstants.HMAC_SIGNATURE] = "notValidSign";
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeFalsy();
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=hmacValidator.spec.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"hmacValidator.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/hmacValidator.spec.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"hmacValidator.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/hmacValidator.spec.ts"],"names":[],"mappings":"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"}
|
||||
318
dist/lib-esm/src/__tests__/platforms.spec.js
vendored
318
dist/lib-esm/src/__tests__/platforms.spec.js
vendored
@@ -94,76 +94,15 @@ var assertError = function (e) {
|
||||
}
|
||||
fail(e);
|
||||
};
|
||||
beforeAll(function (done) { return __awaiter(void 0, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
client = createBasicAuthClient();
|
||||
client.config.password = process.env.ADYEN_MARKETPLACE_PASSWORD;
|
||||
client.config.username = process.env.ADYEN_MARKETPLACE_USER;
|
||||
scope = nock(client.config.marketPayEndpoint);
|
||||
platforms = new Platforms(client);
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual",
|
||||
})];
|
||||
case 1:
|
||||
accountHolder = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 2:
|
||||
account = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 3:
|
||||
accountHolderToSuspend = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 4:
|
||||
accountToClose = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 5:
|
||||
accountHolderToUnSuspend = _a.sent();
|
||||
return [4, platforms.Account.suspendAccountHolder({ accountHolderCode: accountHolderToUnSuspend.accountHolderCode })];
|
||||
case 6:
|
||||
_a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 7:
|
||||
accountHolderToClose = _a.sent();
|
||||
return [4, platforms.NotificationConfiguration.createNotificationConfiguration({
|
||||
configurationDetails: __assign(__assign({}, notificationConfigurationDetails), { description: "" + generateRandomCode() })
|
||||
})];
|
||||
case 8:
|
||||
notificationConfigurationToRetrieve = _a.sent();
|
||||
done();
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
}); });
|
||||
beforeEach(function () {
|
||||
if (!nock.isActive()) {
|
||||
nock.activate();
|
||||
}
|
||||
client = createBasicAuthClient();
|
||||
client.config.password = process.env.ADYEN_MARKETPLACE_PASSWORD;
|
||||
client.config.username = process.env.ADYEN_MARKETPLACE_USER;
|
||||
scope = nock(client.config.marketPayEndpoint);
|
||||
platforms = new Platforms(client);
|
||||
});
|
||||
afterEach(function () {
|
||||
nock.cleanAll();
|
||||
@@ -211,6 +150,165 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Fund", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["accountHolderBalance", createMock(), createMock()],
|
||||
["accountHolderTransactionList", createMock(), createMock()],
|
||||
["payoutAccountHolder", createMock(), createMock()],
|
||||
["transferFunds", createMock(), createMock()],
|
||||
["refundFundsTransfer", createMock(), createMock()],
|
||||
["setupBeneficiary", createMock(), createMock()],
|
||||
["refundNotPaidOutTransfers", createMock(), createMock()],
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var fund, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
fund = platforms.Fund;
|
||||
scope.post("/Fund/" + Client.MARKETPAY_FUND_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, fund[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Notification Configuration", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["createNotificationConfiguration", createMock(), createMock()],
|
||||
["getNotificationConfiguration", createMock(), createMock()],
|
||||
["getNotificationConfigurationList", {}, createMock()],
|
||||
["testNotificationConfiguration", createMock(), createMock()],
|
||||
["updateNotificationConfiguration", createMock(), createMock()],
|
||||
["deleteNotificationConfigurations", createMock(), createMock()],
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var notificationConfiguration, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
notificationConfiguration = platforms.NotificationConfiguration;
|
||||
scope.post("/Notification/" + Client.MARKETPAY_NOTIFICATION_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, notificationConfiguration[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Hop", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["getOnboardingUrl", createMock(), createMock()]
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var hostedOnboardingPage, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
hostedOnboardingPage = platforms.HostedOnboardingPage;
|
||||
scope.post("/Hop/" + Client.MARKETPAY_HOP_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, hostedOnboardingPage[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe.skip("Platforms Test E2E", function () {
|
||||
var _this = this;
|
||||
beforeAll(function (done) { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual",
|
||||
})];
|
||||
case 1:
|
||||
accountHolder = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 2:
|
||||
account = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 3:
|
||||
accountHolderToSuspend = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 4:
|
||||
accountToClose = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 5:
|
||||
accountHolderToUnSuspend = _a.sent();
|
||||
return [4, platforms.Account.suspendAccountHolder({ accountHolderCode: accountHolderToUnSuspend.accountHolderCode })];
|
||||
case 6:
|
||||
_a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 7:
|
||||
accountHolderToClose = _a.sent();
|
||||
return [4, platforms.NotificationConfiguration.createNotificationConfiguration({
|
||||
configurationDetails: __assign(__assign({}, notificationConfigurationDetails), { description: "" + generateRandomCode() })
|
||||
})];
|
||||
case 8:
|
||||
notificationConfigurationToRetrieve = _a.sent();
|
||||
done();
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
}); });
|
||||
describe("Account", function () {
|
||||
describe("Accounts E2E", function () {
|
||||
it("should create account holder", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
@@ -525,37 +623,6 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
describe("Fund", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["accountHolderBalance", createMock(), createMock()],
|
||||
["accountHolderTransactionList", createMock(), createMock()],
|
||||
["payoutAccountHolder", createMock(), createMock()],
|
||||
["transferFunds", createMock(), createMock()],
|
||||
["refundFundsTransfer", createMock(), createMock()],
|
||||
["setupBeneficiary", createMock(), createMock()],
|
||||
["refundNotPaidOutTransfers", createMock(), createMock()],
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var fund, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
fund = platforms.Fund;
|
||||
scope.post("/Fund/" + Client.MARKETPAY_FUND_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, fund[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("should retrieve the balance of an account holder", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var result, e_11;
|
||||
@@ -642,37 +709,7 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
describe("Notification Configuration", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["createNotificationConfiguration", createMock(), createMock()],
|
||||
["getNotificationConfiguration", createMock(), createMock()],
|
||||
["getNotificationConfigurationList", {}, createMock()],
|
||||
["testNotificationConfiguration", createMock(), createMock()],
|
||||
["updateNotificationConfiguration", createMock(), createMock()],
|
||||
["deleteNotificationConfigurations", createMock(), createMock()],
|
||||
];
|
||||
var configurationID;
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var notificationConfiguration, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
notificationConfiguration = platforms.NotificationConfiguration;
|
||||
scope.post("/Notification/" + Client.MARKETPAY_NOTIFICATION_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, notificationConfiguration[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("should retrieve all Notification Configurations", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var result, resultStr, e_14;
|
||||
@@ -818,32 +855,5 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Hop", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["getOnboardingUrl", createMock(), createMock()]
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var hostedOnboardingPage, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
hostedOnboardingPage = platforms.HostedOnboardingPage;
|
||||
scope.post("/Hop/" + Client.MARKETPAY_HOP_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, hostedOnboardingPage[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=platforms.spec.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -6,6 +6,7 @@ export declare class AdditionalData {
|
||||
'expiryDate'?: string;
|
||||
'authorisedAmountValue'?: string;
|
||||
'authorisedAmountCurrency'?: string;
|
||||
'hmacSignature'?: string;
|
||||
static discriminator: string | undefined;
|
||||
static attributeTypeMap: Array<{
|
||||
name: string;
|
||||
|
||||
@@ -40,6 +40,11 @@ var AdditionalData = (function () {
|
||||
"name": "authorisedAmountCurrency",
|
||||
"baseName": "authorisedAmountCurrency",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "hmacSignature",
|
||||
"baseName": "hmacSignature",
|
||||
"type": "string"
|
||||
}
|
||||
];
|
||||
return AdditionalData;
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"additionalData.js","sourceRoot":"","sources":["../../../../../src/typings/notification/additionalData.ts"],"names":[],"mappings":"AAkCA;IAAA;IAwEA,CAAC;IAHU,kCAAmB,GAA1B;QACI,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC3C,CAAC;IAzCM,4BAAa,GAAuB,SAAS,CAAC;IAE9C,+BAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,kBAAkB;YAC1B,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,uBAAuB;YACnC,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,0BAA0B;YACtC,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,qBAAC;CAAA,AAxED,IAwEC;SAxEY,cAAc"}
|
||||
{"version":3,"file":"additionalData.js","sourceRoot":"","sources":["../../../../../src/typings/notification/additionalData.ts"],"names":[],"mappings":"AAkCA;IAAA;IAiFA,CAAC;IAHU,kCAAmB,GAA1B;QACI,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC3C,CAAC;IA9CM,4BAAa,GAAuB,SAAS,CAAC;IAE9C,+BAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,kBAAkB;YAC1B,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,uBAAuB;YACnC,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,0BAA0B;YACtC,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,eAAe;YACvB,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,qBAAC;CAAA,AAjFD,IAiFC;SAjFY,cAAc"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../../../../../src/typings/notification/amount.ts"],"names":[],"mappings":"AAmCA;IAAA;IA2BA,CAAC;IAHU,0BAAmB,GAA1B;QACI,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACnC,CAAC;IAhBM,oBAAa,GAAuB,SAAS,CAAC;IAE9C,uBAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,aAAC;CAAA,AA3BD,IA2BC;SA3BY,MAAM"}
|
||||
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../../../../../src/typings/notification/amount.ts"],"names":[],"mappings":"AAkCA;IAAA;IA2BA,CAAC;IAHU,0BAAmB,GAA1B;QACI,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACnC,CAAC;IAhBM,oBAAa,GAAuB,SAAS,CAAC;IAE9C,uBAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,aAAC;CAAA,AA3BD,IA2BC;SA3BY,MAAM"}
|
||||
11
dist/lib-esm/src/utils/hmacValidator.js
vendored
11
dist/lib-esm/src/utils/hmacValidator.js
vendored
@@ -16,10 +16,13 @@ var HmacValidator = (function () {
|
||||
return createHmac(HmacValidator.HMAC_SHA256_ALGORITHM, rawKey).update(dataString, "utf8").digest("base64");
|
||||
};
|
||||
HmacValidator.prototype.validateHMAC = function (notificationRequestItem, key) {
|
||||
var _a;
|
||||
var expectedSign = this.calculateHmac(notificationRequestItem, key);
|
||||
var merchantSign = (_a = notificationRequestItem.additionalData) === null || _a === void 0 ? void 0 : _a[ApiConstants.HMAC_SIGNATURE];
|
||||
return expectedSign === merchantSign;
|
||||
var _a, _b;
|
||||
if ((_a = notificationRequestItem.additionalData) === null || _a === void 0 ? void 0 : _a[ApiConstants.HMAC_SIGNATURE]) {
|
||||
var expectedSign = this.calculateHmac(notificationRequestItem, key);
|
||||
var merchantSign = (_b = notificationRequestItem.additionalData) === null || _b === void 0 ? void 0 : _b[ApiConstants.HMAC_SIGNATURE];
|
||||
return expectedSign === merchantSign;
|
||||
}
|
||||
throw Error("Missing " + ApiConstants.HMAC_SIGNATURE);
|
||||
};
|
||||
HmacValidator.prototype.isNotificationRequestItem = function (item) {
|
||||
return !Object.values(item).every(function (value) { return typeof value === "string"; });
|
||||
|
||||
2
dist/lib-esm/src/utils/hmacValidator.js.map
vendored
2
dist/lib-esm/src/utils/hmacValidator.js.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"hmacValidator.js","sourceRoot":"","sources":["../../../../src/utils/hmacValidator.ts"],"names":[],"mappings":";;;;;;;AAmBA,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAIvD;IAAA;IA8CA,CAAC;IA1CU,qCAAa,GAApB,UAAqB,IAAsC,EAAE,GAAW;QACpE,IAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/G,CAAC;IAEM,oCAAY,GAAnB,UAAoB,uBAAgD,EAAE,GAAW;;QAC7E,IAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACtE,IAAM,YAAY,SAAG,uBAAuB,CAAC,cAAc,0CAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAE3F,OAAO,YAAY,KAAK,YAAY,CAAC;IACzC,CAAC;IAEO,iDAAyB,GAAjC,UAAkC,IAAgB;QAC9C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAC,KAAK,IAAc,OAAA,OAAO,KAAK,KAAK,QAAQ,EAAzB,CAAyB,CAAC,CAAC;IACrF,CAAC;IAEM,qCAAa,GAApB,UAAqB,uBAAmC;QACpD,IAAI,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,EAAE;YACzD,IAAM,cAAc,GAAG,EAAE,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAC1D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAC/D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;YACjE,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAC/D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACvD,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACrD,OAAO,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SAC5D;aAAM;YACH,IAAM,MAAI,GAAa,EAAE,CAAC;YAC1B,IAAM,QAAM,GAAa,EAAE,CAAC;YAC5B,IAAM,UAAQ,GAAG,UAAC,GAAW;gBACzB,OAAA,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;YAA/C,CAA+C,CAAC;YACpD,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAC,EAAY;oBAAX,GAAG,QAAA,EAAE,KAAK,QAAA;gBAC/D,MAAI,CAAC,IAAI,CAAC,UAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,QAAM,CAAC,IAAI,CAAC,UAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,OAAO,eAAI,MAAI,EAAK,QAAM,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SAClE;IACL,CAAC;IA5Ca,mCAAqB,GAAG,QAAQ,CAAC;IACjC,4BAAc,GAAG,GAAG,CAAC;IA4CvC,oBAAC;CAAA,AA9CD,IA8CC;AAED,eAAe,aAAa,CAAC"}
|
||||
{"version":3,"file":"hmacValidator.js","sourceRoot":"","sources":["../../../../src/utils/hmacValidator.ts"],"names":[],"mappings":";;;;;;;AAmBA,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAIvD;IAAA;IAgDA,CAAC;IA5CU,qCAAa,GAApB,UAAqB,IAAsC,EAAE,GAAW;QACpE,IAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/G,CAAC;IAEM,oCAAY,GAAnB,UAAoB,uBAAgD,EAAE,GAAW;;QAC7E,UAAI,uBAAuB,CAAC,cAAc,0CAAG,YAAY,CAAC,cAAc,GAAG;YACvE,IAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YACtE,IAAM,YAAY,SAAG,uBAAuB,CAAC,cAAc,0CAAG,YAAY,CAAC,cAAc,CAAC,CAAC;YAC3F,OAAO,YAAY,KAAK,YAAY,CAAC;SACxC;QACD,MAAM,KAAK,CAAC,aAAW,YAAY,CAAC,cAAgB,CAAC,CAAC;IAC1D,CAAC;IAEO,iDAAyB,GAAjC,UAAkC,IAAgB;QAC9C,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAC,KAAK,IAAc,OAAA,OAAO,KAAK,KAAK,QAAQ,EAAzB,CAAyB,CAAC,CAAC;IACrF,CAAC;IAEM,qCAAa,GAApB,UAAqB,uBAAmC;QACpD,IAAI,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,EAAE;YACzD,IAAM,cAAc,GAAG,EAAE,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAC1D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAC/D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;YACjE,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAC/D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7D,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACvD,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACrD,OAAO,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SAC5D;aAAM;YACH,IAAM,MAAI,GAAa,EAAE,CAAC;YAC1B,IAAM,QAAM,GAAa,EAAE,CAAC;YAC5B,IAAM,UAAQ,GAAG,UAAC,GAAW;gBACzB,OAAA,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;YAA/C,CAA+C,CAAC;YACpD,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAC,EAAY;oBAAX,GAAG,QAAA,EAAE,KAAK,QAAA;gBAC/D,MAAI,CAAC,IAAI,CAAC,UAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,QAAM,CAAC,IAAI,CAAC,UAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,OAAO,eAAI,MAAI,EAAK,QAAM,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SAClE;IACL,CAAC;IA9Ca,mCAAqB,GAAG,QAAQ,CAAC;IACjC,4BAAc,GAAG,GAAG,CAAC;IA8CvC,oBAAC;CAAA,AAhDD,IAgDC;AAED,eAAe,aAAa,CAAC"}
|
||||
2
dist/lib/package.json
vendored
2
dist/lib/package.json
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@adyen/api-library",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.1",
|
||||
"description": "The Adyen API Library for NodeJS enables you to work with Adyen APIs.",
|
||||
"main": "dist/lib/src/index.js",
|
||||
"types": "dist/lib/src/index.d.ts",
|
||||
|
||||
76
dist/lib/src/__tests__/hmacValidator.spec.js
vendored
76
dist/lib/src/__tests__/hmacValidator.spec.js
vendored
@@ -18,21 +18,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var hmacValidator_1 = __importDefault(require("../utils/hmacValidator"));
|
||||
var models_1 = require("../typings/notification/models");
|
||||
var apiConstants_1 = require("../constants/apiConstants");
|
||||
var notificationRequest_1 = __importDefault(require("../notification/notificationRequest"));
|
||||
var key = "DFB1EB5485895CFA84146406857104ABB4CBCABDC8AAF103A624C8F6A3EAAB00";
|
||||
var expectedSign = "xhpHvYq2u2Np0rstbZ6QjLGu7JWhvf7Iwaa6EviJSX0=";
|
||||
var expectedSign = "ZNBPtI+oDyyRrLyD1XirkKnQgIAlFc07Vj27TeHsDRE=";
|
||||
var notificationRequestItem = {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: { currency: "EUR", value: 1000 },
|
||||
eventCode: models_1.NotificationRequestItem.EventCodeEnum.CAPTURE,
|
||||
eventDate: new Date("01-01-1970").toISOString(),
|
||||
paymentMethod: "VISA",
|
||||
reason: "reason",
|
||||
success: models_1.NotificationRequestItem.SuccessEnum.True,
|
||||
additionalData: (_a = {}, _a[apiConstants_1.ApiConstants.HMAC_SIGNATURE] = expectedSign, _a),
|
||||
NotificationRequestItem: {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: { currency: "EUR", value: 1000 },
|
||||
eventCode: models_1.NotificationRequestItem.EventCodeEnum.REPORTAVAILABLE,
|
||||
eventDate: "2019-09-21T11:45:24.637Z",
|
||||
paymentMethod: "VISA",
|
||||
reason: "reason",
|
||||
success: models_1.NotificationRequestItem.SuccessEnum.True,
|
||||
additionalData: (_a = {}, _a[apiConstants_1.ApiConstants.HMAC_SIGNATURE] = expectedSign, _a),
|
||||
}
|
||||
};
|
||||
var notification = new notificationRequest_1.default({
|
||||
live: "false",
|
||||
notificationItems: [notificationRequestItem]
|
||||
});
|
||||
describe("HMAC Validator", function () {
|
||||
var hmacValidator;
|
||||
beforeEach(function () {
|
||||
@@ -52,19 +59,54 @@ describe("HMAC Validator", function () {
|
||||
expect(encrypted).toEqual("34oR8T1whkQWTv9P+SzKyp8zhusf9n0dpqrm9nsqSJs=");
|
||||
});
|
||||
it("should get correct data to sign", function () {
|
||||
var data = hmacValidator.getDataToSign(notificationRequestItem);
|
||||
expect(data).toEqual("pspReference:originalReference:merchantAccount:reference:1000:EUR:CAPTURE:true");
|
||||
var data = hmacValidator.getDataToSign(notification.notificationItems[0]);
|
||||
expect(data).toEqual("pspReference:originalReference:merchantAccount:reference:1000:EUR:REPORT_AVAILABLE:true");
|
||||
});
|
||||
it("should have valid hmac", function () {
|
||||
var encrypted = hmacValidator.calculateHmac(notificationRequestItem, key);
|
||||
var encrypted = hmacValidator.calculateHmac(notification.notificationItems[0], key);
|
||||
expect(expectedSign).toEqual(encrypted);
|
||||
expect(hmacValidator.validateHMAC(notificationRequestItem, key)).toBeTruthy();
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeTruthy();
|
||||
});
|
||||
it("should have invalid hmac", function () {
|
||||
var _a;
|
||||
var invalidNotification = __assign(__assign({}, notificationRequestItem), { additionalData: (_a = {}, _a[apiConstants_1.ApiConstants.HMAC_SIGNATURE] = "notValidSign", _a) });
|
||||
var invalidNotification = __assign(__assign({}, notification.notificationItems[0]), { additionalData: (_a = {}, _a[apiConstants_1.ApiConstants.HMAC_SIGNATURE] = "notValidSign", _a) });
|
||||
var result = hmacValidator.validateHMAC(invalidNotification, key);
|
||||
expect(result).toBeFalsy();
|
||||
});
|
||||
it("should test hmac", function () {
|
||||
var data = "countryCode:currencyCode:merchantAccount:merchantReference:paymentAmount:sessionValidity:skinCode:NL:EUR:MagentoMerchantTest2:TEST-PAYMENT-2017-02-01-14\\:02\\:05:199:2017-02-02T14\\:02\\:05+01\\:00:PKz2KML1";
|
||||
var key = "DFB1EB5485895CFA84146406857104ABB4CBCABDC8AAF103A624C8F6A3EAAB00";
|
||||
var hmacValidator = new hmacValidator_1.default();
|
||||
var encrypted = hmacValidator.calculateHmac(data, key);
|
||||
expect(encrypted).toEqual("34oR8T1whkQWTv9P+SzKyp8zhusf9n0dpqrm9nsqSJs=");
|
||||
});
|
||||
it("should validate HMAC", function () {
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeTruthy();
|
||||
});
|
||||
it("should have valid notification request item HMAC", function () {
|
||||
var _a;
|
||||
var expectedSign = "ipnxGCaUZ4l8TUW75a71/ghd2Fe5ffvX0pV4TLTntIc=";
|
||||
var notificationRequestItem = { NotificationRequestItem: {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: { currency: "EUR", value: 1000 },
|
||||
eventCode: "EVENT",
|
||||
success: "true",
|
||||
additionalData: (_a = {}, _a[apiConstants_1.ApiConstants.HMAC_SIGNATURE] = expectedSign, _a)
|
||||
} };
|
||||
var notification = new notificationRequest_1.default({
|
||||
live: "false",
|
||||
notificationItems: [notificationRequestItem]
|
||||
});
|
||||
var data = hmacValidator.getDataToSign(notification.notificationItems[0]);
|
||||
expect("pspReference:originalReference:merchantAccount:reference:1000:EUR:EVENT:true").toEqual(data);
|
||||
var encrypted = hmacValidator.calculateHmac(notification.notificationItems[0], key);
|
||||
expect(expectedSign).toEqual(encrypted);
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeTruthy();
|
||||
notification.notificationItems[0].additionalData[apiConstants_1.ApiConstants.HMAC_SIGNATURE] = "notValidSign";
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems[0], key)).toBeFalsy();
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=hmacValidator.spec.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"hmacValidator.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/hmacValidator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmBA,yEAAmD;AACnD,yDAAuF;AACvF,0DAAuD;AAEvD,IAAM,GAAG,GAAG,kEAAkE,CAAC;AAC/E,IAAM,YAAY,GAAG,8CAA8C,CAAC;AACpE,IAAM,uBAAuB,GAA4B;IACrD,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,iBAAiB;IACtC,iBAAiB,EAAE,WAAW;IAC9B,MAAM,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC;IACtC,SAAS,EAAE,gCAAuB,CAAC,aAAa,CAAC,OAAO;IACxD,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;IAC/C,aAAa,EAAE,MAAM;IACrB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,gCAAuB,CAAC,WAAW,CAAC,IAAI;IACjD,cAAc,YAAI,GAAC,2BAAY,CAAC,cAAsC,IAAG,YAAY,KAAE;CAC1F,CAAC;AAEF,QAAQ,CAAC,gBAAgB,EAAE;IACvB,IAAI,aAA4B,CAAC;IACjC,UAAU,CAAC;QACP,aAAa,GAAG,IAAI,uBAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE;QAC1B,IAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,EAAC,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;QAC9F,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iDAAiD,EAAE;QAClD,IAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,EAAC,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,0BAA0B,EAAC,CAAC,CAAC;QAC9I,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,0FAA0F,CAAC,CAAC;IAC3H,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0BAA0B,EAAE;QAC3B,IAAM,IAAI,GAAG,iNAAiN,CAAC;QAC/N,IAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE,kEAAkE,CAAC,CAAC;QACxH,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iCAAiC,EAAE;QAClC,IAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gFAAgF,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE;QACzB,IAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC5E,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE;;QAC3B,IAAM,mBAAmB,yBAClB,uBAAuB,KAC1B,cAAc,YAAI,GAAC,2BAAY,CAAC,cAA+C,IAAG,cAAc,QACnG,CAAC;QACF,IAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
||||
{"version":3,"file":"hmacValidator.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/hmacValidator.spec.ts"],"names":[],"mappings":"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"}
|
||||
318
dist/lib/src/__tests__/platforms.spec.js
vendored
318
dist/lib/src/__tests__/platforms.spec.js
vendored
@@ -99,76 +99,15 @@ var assertError = function (e) {
|
||||
}
|
||||
fail(e);
|
||||
};
|
||||
beforeAll(function (done) { return __awaiter(void 0, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
client = base_1.createBasicAuthClient();
|
||||
client.config.password = process.env.ADYEN_MARKETPLACE_PASSWORD;
|
||||
client.config.username = process.env.ADYEN_MARKETPLACE_USER;
|
||||
scope = nock_1.default(client.config.marketPayEndpoint);
|
||||
platforms = new index_1.Platforms(client);
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual",
|
||||
})];
|
||||
case 1:
|
||||
accountHolder = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 2:
|
||||
account = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 3:
|
||||
accountHolderToSuspend = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 4:
|
||||
accountToClose = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 5:
|
||||
accountHolderToUnSuspend = _a.sent();
|
||||
return [4, platforms.Account.suspendAccountHolder({ accountHolderCode: accountHolderToUnSuspend.accountHolderCode })];
|
||||
case 6:
|
||||
_a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 7:
|
||||
accountHolderToClose = _a.sent();
|
||||
return [4, platforms.NotificationConfiguration.createNotificationConfiguration({
|
||||
configurationDetails: __assign(__assign({}, notificationConfigurationDetails), { description: "" + generateRandomCode() })
|
||||
})];
|
||||
case 8:
|
||||
notificationConfigurationToRetrieve = _a.sent();
|
||||
done();
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
}); });
|
||||
beforeEach(function () {
|
||||
if (!nock_1.default.isActive()) {
|
||||
nock_1.default.activate();
|
||||
}
|
||||
client = base_1.createBasicAuthClient();
|
||||
client.config.password = process.env.ADYEN_MARKETPLACE_PASSWORD;
|
||||
client.config.username = process.env.ADYEN_MARKETPLACE_USER;
|
||||
scope = nock_1.default(client.config.marketPayEndpoint);
|
||||
platforms = new index_1.Platforms(client);
|
||||
});
|
||||
afterEach(function () {
|
||||
nock_1.default.cleanAll();
|
||||
@@ -216,6 +155,165 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Fund", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["accountHolderBalance", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["accountHolderTransactionList", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["payoutAccountHolder", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["transferFunds", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["refundFundsTransfer", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["setupBeneficiary", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["refundNotPaidOutTransfers", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var fund, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
fund = platforms.Fund;
|
||||
scope.post("/Fund/" + index_1.Client.MARKETPAY_FUND_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, fund[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Notification Configuration", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["createNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["getNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["getNotificationConfigurationList", {}, ts_auto_mock_1.createMock()],
|
||||
["testNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["updateNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["deleteNotificationConfigurations", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var notificationConfiguration, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
notificationConfiguration = platforms.NotificationConfiguration;
|
||||
scope.post("/Notification/" + index_1.Client.MARKETPAY_NOTIFICATION_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, notificationConfiguration[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Hop", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["getOnboardingUrl", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()]
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var hostedOnboardingPage, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
hostedOnboardingPage = platforms.HostedOnboardingPage;
|
||||
scope.post("/Hop/" + index_1.Client.MARKETPAY_HOP_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, hostedOnboardingPage[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe.skip("Platforms Test E2E", function () {
|
||||
var _this = this;
|
||||
beforeAll(function (done) { return __awaiter(_this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual",
|
||||
})];
|
||||
case 1:
|
||||
accountHolder = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 2:
|
||||
account = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 3:
|
||||
accountHolderToSuspend = _a.sent();
|
||||
return [4, platforms.Account.createAccount({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
description: "This is a new account",
|
||||
metadata: { meta: "data" },
|
||||
payoutSchedule: "WEEKLY"
|
||||
})];
|
||||
case 4:
|
||||
accountToClose = _a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 5:
|
||||
accountHolderToUnSuspend = _a.sent();
|
||||
return [4, platforms.Account.suspendAccountHolder({ accountHolderCode: accountHolderToUnSuspend.accountHolderCode })];
|
||||
case 6:
|
||||
_a.sent();
|
||||
return [4, platforms.Account.createAccountHolder({
|
||||
accountHolderCode: generateRandomCode(),
|
||||
accountHolderDetails: accountHolderDetails,
|
||||
legalEntity: "Individual"
|
||||
})];
|
||||
case 7:
|
||||
accountHolderToClose = _a.sent();
|
||||
return [4, platforms.NotificationConfiguration.createNotificationConfiguration({
|
||||
configurationDetails: __assign(__assign({}, notificationConfigurationDetails), { description: "" + generateRandomCode() })
|
||||
})];
|
||||
case 8:
|
||||
notificationConfigurationToRetrieve = _a.sent();
|
||||
done();
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
}); });
|
||||
describe("Account", function () {
|
||||
describe("Accounts E2E", function () {
|
||||
it("should create account holder", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
@@ -530,37 +628,6 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
describe("Fund", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["accountHolderBalance", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["accountHolderTransactionList", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["payoutAccountHolder", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["transferFunds", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["refundFundsTransfer", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["setupBeneficiary", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["refundNotPaidOutTransfers", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var fund, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
fund = platforms.Fund;
|
||||
scope.post("/Fund/" + index_1.Client.MARKETPAY_FUND_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, fund[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("should retrieve the balance of an account holder", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var result, e_11;
|
||||
@@ -647,37 +714,7 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
describe("Notification Configuration", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["createNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["getNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["getNotificationConfigurationList", {}, ts_auto_mock_1.createMock()],
|
||||
["testNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["updateNotificationConfiguration", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
["deleteNotificationConfigurations", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()],
|
||||
];
|
||||
var configurationID;
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var notificationConfiguration, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
notificationConfiguration = platforms.NotificationConfiguration;
|
||||
scope.post("/Notification/" + index_1.Client.MARKETPAY_NOTIFICATION_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, notificationConfiguration[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
it("should retrieve all Notification Configurations", function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var result, resultStr, e_14;
|
||||
@@ -823,32 +860,5 @@ describe("Platforms Test", function () {
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Hop", function () {
|
||||
var _this = this;
|
||||
var cases = [
|
||||
["getOnboardingUrl", ts_auto_mock_1.createMock(), ts_auto_mock_1.createMock()]
|
||||
];
|
||||
test.each(cases)("should %p", function () {
|
||||
var args = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
args[_i] = arguments[_i];
|
||||
}
|
||||
return __awaiter(_this, void 0, void 0, function () {
|
||||
var hostedOnboardingPage, result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
hostedOnboardingPage = platforms.HostedOnboardingPage;
|
||||
scope.post("/Hop/" + index_1.Client.MARKETPAY_HOP_API_VERSION + "//" + args[0]).reply(200, args[2]);
|
||||
return [4, hostedOnboardingPage[args[0]](args[1])];
|
||||
case 1:
|
||||
result = _a.sent();
|
||||
expect(result).toMatchObject(args[2]);
|
||||
return [2];
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=platforms.spec.js.map
|
||||
2
dist/lib/src/__tests__/platforms.spec.js.map
vendored
2
dist/lib/src/__tests__/platforms.spec.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -6,6 +6,7 @@ export declare class AdditionalData {
|
||||
'expiryDate'?: string;
|
||||
'authorisedAmountValue'?: string;
|
||||
'authorisedAmountCurrency'?: string;
|
||||
'hmacSignature'?: string;
|
||||
static discriminator: string | undefined;
|
||||
static attributeTypeMap: Array<{
|
||||
name: string;
|
||||
|
||||
@@ -43,6 +43,11 @@ var AdditionalData = (function () {
|
||||
"name": "authorisedAmountCurrency",
|
||||
"baseName": "authorisedAmountCurrency",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "hmacSignature",
|
||||
"baseName": "hmacSignature",
|
||||
"type": "string"
|
||||
}
|
||||
];
|
||||
return AdditionalData;
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"additionalData.js","sourceRoot":"","sources":["../../../../../src/typings/notification/additionalData.ts"],"names":[],"mappings":";;;AAkCA;IAAA;IAwEA,CAAC;IAHU,kCAAmB,GAA1B;QACI,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC3C,CAAC;IAzCM,4BAAa,GAAuB,SAAS,CAAC;IAE9C,+BAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,kBAAkB;YAC1B,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,uBAAuB;YACnC,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,0BAA0B;YACtC,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,qBAAC;CAAA,AAxED,IAwEC;AAxEY,wCAAc"}
|
||||
{"version":3,"file":"additionalData.js","sourceRoot":"","sources":["../../../../../src/typings/notification/additionalData.ts"],"names":[],"mappings":";;;AAkCA;IAAA;IAiFA,CAAC;IAHU,kCAAmB,GAA1B;QACI,OAAO,cAAc,CAAC,gBAAgB,CAAC;IAC3C,CAAC;IA9CM,4BAAa,GAAuB,SAAS,CAAC;IAE9C,+BAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,kBAAkB;YAC1B,UAAU,EAAE,kBAAkB;YAC9B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,cAAc;YAC1B,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,uBAAuB;YACnC,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,0BAA0B;YACtC,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,eAAe;YACvB,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,qBAAC;CAAA,AAjFD,IAiFC;AAjFY,wCAAc"}
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../../../../../src/typings/notification/amount.ts"],"names":[],"mappings":";;;AAmCA;IAAA;IA2BA,CAAC;IAHU,0BAAmB,GAA1B;QACI,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACnC,CAAC;IAhBM,oBAAa,GAAuB,SAAS,CAAC;IAE9C,uBAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,aAAC;CAAA,AA3BD,IA2BC;AA3BY,wBAAM"}
|
||||
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../../../../../src/typings/notification/amount.ts"],"names":[],"mappings":";;;AAkCA;IAAA;IA2BA,CAAC;IAHU,0BAAmB,GAA1B;QACI,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACnC,CAAC;IAhBM,oBAAa,GAAuB,SAAS,CAAC;IAE9C,uBAAgB,GAA0D;QAC7E;YACI,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;SACnB;QACD;YACI,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,QAAQ;SACnB;KAAK,CAAC;IAKf,aAAC;CAAA,AA3BD,IA2BC;AA3BY,wBAAM"}
|
||||
11
dist/lib/src/utils/hmacValidator.js
vendored
11
dist/lib/src/utils/hmacValidator.js
vendored
@@ -18,10 +18,13 @@ var HmacValidator = (function () {
|
||||
return crypto_1.createHmac(HmacValidator.HMAC_SHA256_ALGORITHM, rawKey).update(dataString, "utf8").digest("base64");
|
||||
};
|
||||
HmacValidator.prototype.validateHMAC = function (notificationRequestItem, key) {
|
||||
var _a;
|
||||
var expectedSign = this.calculateHmac(notificationRequestItem, key);
|
||||
var merchantSign = (_a = notificationRequestItem.additionalData) === null || _a === void 0 ? void 0 : _a[apiConstants_1.ApiConstants.HMAC_SIGNATURE];
|
||||
return expectedSign === merchantSign;
|
||||
var _a, _b;
|
||||
if ((_a = notificationRequestItem.additionalData) === null || _a === void 0 ? void 0 : _a[apiConstants_1.ApiConstants.HMAC_SIGNATURE]) {
|
||||
var expectedSign = this.calculateHmac(notificationRequestItem, key);
|
||||
var merchantSign = (_b = notificationRequestItem.additionalData) === null || _b === void 0 ? void 0 : _b[apiConstants_1.ApiConstants.HMAC_SIGNATURE];
|
||||
return expectedSign === merchantSign;
|
||||
}
|
||||
throw Error("Missing " + apiConstants_1.ApiConstants.HMAC_SIGNATURE);
|
||||
};
|
||||
HmacValidator.prototype.isNotificationRequestItem = function (item) {
|
||||
return !Object.values(item).every(function (value) { return typeof value === "string"; });
|
||||
|
||||
2
dist/lib/src/utils/hmacValidator.js.map
vendored
2
dist/lib/src/utils/hmacValidator.js.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"hmacValidator.js","sourceRoot":"","sources":["../../../../src/utils/hmacValidator.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"hmacValidator.js","sourceRoot":"","sources":["../../../../src/utils/hmacValidator.ts"],"names":[],"mappings":"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"}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@adyen/api-library",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.1",
|
||||
"description": "The Adyen API Library for NodeJS enables you to work with Adyen APIs.",
|
||||
"main": "dist/lib/src/index.js",
|
||||
"types": "dist/lib/src/index.d.ts",
|
||||
|
||||
@@ -18,24 +18,32 @@
|
||||
*/
|
||||
|
||||
import HmacValidator from "../utils/hmacValidator";
|
||||
import {AdditionalData, NotificationRequestItem} from "../typings/notification/models";
|
||||
import {AdditionalData, NotificationItem, NotificationRequestItem} from "../typings/notification/models";
|
||||
import {ApiConstants} from "../constants/apiConstants";
|
||||
import NotificationRequest from "../notification/notificationRequest";
|
||||
|
||||
const key = "DFB1EB5485895CFA84146406857104ABB4CBCABDC8AAF103A624C8F6A3EAAB00";
|
||||
const expectedSign = "xhpHvYq2u2Np0rstbZ6QjLGu7JWhvf7Iwaa6EviJSX0=";
|
||||
const notificationRequestItem: NotificationRequestItem = {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: {currency: "EUR", value: 1000},
|
||||
eventCode: NotificationRequestItem.EventCodeEnum.CAPTURE,
|
||||
eventDate: new Date("01-01-1970").toISOString(),
|
||||
paymentMethod: "VISA",
|
||||
reason: "reason",
|
||||
success: NotificationRequestItem.SuccessEnum.True,
|
||||
additionalData: { [ApiConstants.HMAC_SIGNATURE as keyof AdditionalData]: expectedSign },
|
||||
const expectedSign = "ZNBPtI+oDyyRrLyD1XirkKnQgIAlFc07Vj27TeHsDRE=";
|
||||
|
||||
const notificationRequestItem: { NotificationRequestItem: NotificationRequestItem } = {
|
||||
NotificationRequestItem :{
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: {currency: "EUR", value: 1000},
|
||||
eventCode: NotificationRequestItem.EventCodeEnum.REPORTAVAILABLE,
|
||||
eventDate: "2019-09-21T11:45:24.637Z",
|
||||
paymentMethod: "VISA",
|
||||
reason: "reason",
|
||||
success: NotificationRequestItem.SuccessEnum.True,
|
||||
additionalData: { [ApiConstants.HMAC_SIGNATURE]: expectedSign },
|
||||
}
|
||||
};
|
||||
const notification = new NotificationRequest({
|
||||
live: "false",
|
||||
notificationItems: [notificationRequestItem as unknown as NotificationItem]
|
||||
});
|
||||
|
||||
describe("HMAC Validator", function (): void {
|
||||
let hmacValidator: HmacValidator;
|
||||
@@ -57,22 +65,59 @@ describe("HMAC Validator", function (): void {
|
||||
expect(encrypted).toEqual("34oR8T1whkQWTv9P+SzKyp8zhusf9n0dpqrm9nsqSJs=");
|
||||
});
|
||||
it("should get correct data to sign", function (): void {
|
||||
const data = hmacValidator.getDataToSign(notificationRequestItem);
|
||||
expect(data).toEqual("pspReference:originalReference:merchantAccount:reference:1000:EUR:CAPTURE:true");
|
||||
const data = hmacValidator.getDataToSign(notification.notificationItems![0]);
|
||||
expect(data).toEqual("pspReference:originalReference:merchantAccount:reference:1000:EUR:REPORT_AVAILABLE:true");
|
||||
});
|
||||
|
||||
it("should have valid hmac", function (): void {
|
||||
const encrypted = hmacValidator.calculateHmac(notificationRequestItem, key);
|
||||
const encrypted = hmacValidator.calculateHmac(notification.notificationItems![0], key);
|
||||
expect(expectedSign).toEqual(encrypted);
|
||||
expect(hmacValidator.validateHMAC(notificationRequestItem, key)).toBeTruthy();
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems![0], key)).toBeTruthy();
|
||||
});
|
||||
|
||||
it("should have invalid hmac", function (): void {
|
||||
const invalidNotification = {
|
||||
...notificationRequestItem,
|
||||
additionalData: { [ApiConstants.HMAC_SIGNATURE as keyof NotificationRequestItem]: "notValidSign" }
|
||||
...notification.notificationItems![0],
|
||||
additionalData: { [ApiConstants.HMAC_SIGNATURE as keyof AdditionalData]: "notValidSign" }
|
||||
};
|
||||
const result = hmacValidator.validateHMAC(invalidNotification, key);
|
||||
expect(result).toBeFalsy();
|
||||
});
|
||||
|
||||
it("should test hmac", function () {
|
||||
const data = "countryCode:currencyCode:merchantAccount:merchantReference:paymentAmount:sessionValidity:skinCode:NL:EUR:MagentoMerchantTest2:TEST-PAYMENT-2017-02-01-14\\:02\\:05:199:2017-02-02T14\\:02\\:05+01\\:00:PKz2KML1";
|
||||
const key = "DFB1EB5485895CFA84146406857104ABB4CBCABDC8AAF103A624C8F6A3EAAB00";
|
||||
const hmacValidator = new HmacValidator();
|
||||
const encrypted = hmacValidator.calculateHmac(data, key);
|
||||
expect(encrypted).toEqual("34oR8T1whkQWTv9P+SzKyp8zhusf9n0dpqrm9nsqSJs=");
|
||||
});
|
||||
|
||||
it("should validate HMAC", function () {
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems![0], key)).toBeTruthy();
|
||||
});
|
||||
|
||||
it("should have valid notification request item HMAC", function () {
|
||||
const expectedSign = "ipnxGCaUZ4l8TUW75a71/ghd2Fe5ffvX0pV4TLTntIc=";
|
||||
const notificationRequestItem = { NotificationRequestItem: {
|
||||
pspReference: "pspReference",
|
||||
originalReference: "originalReference",
|
||||
merchantAccountCode: "merchantAccount",
|
||||
merchantReference: "reference",
|
||||
amount: { currency: "EUR", value: 1000 },
|
||||
eventCode: "EVENT",
|
||||
success: "true",
|
||||
additionalData: { [ApiConstants.HMAC_SIGNATURE]: expectedSign }
|
||||
}} as unknown as NotificationItem;
|
||||
const notification = new NotificationRequest({
|
||||
live: "false",
|
||||
notificationItems: [notificationRequestItem]
|
||||
});
|
||||
const data = hmacValidator.getDataToSign(notification.notificationItems![0]);
|
||||
expect("pspReference:originalReference:merchantAccount:reference:1000:EUR:EVENT:true").toEqual(data);
|
||||
const encrypted = hmacValidator.calculateHmac(notification.notificationItems![0], key);
|
||||
expect(expectedSign).toEqual(encrypted);
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems![0], key)).toBeTruthy();
|
||||
notification.notificationItems![0].additionalData![ApiConstants.HMAC_SIGNATURE] = "notValidSign";
|
||||
expect(hmacValidator.validateHMAC(notification.notificationItems![0], key)).toBeFalsy();
|
||||
});
|
||||
});
|
||||
@@ -61,6 +61,10 @@ export class AdditionalData {
|
||||
* Currency of the authorised amount.
|
||||
*/
|
||||
'authorisedAmountCurrency'?: string;
|
||||
/**
|
||||
* HMAC Key from customer area
|
||||
*/
|
||||
'hmacSignature'?: string;
|
||||
|
||||
static discriminator: string | undefined = undefined;
|
||||
|
||||
@@ -99,6 +103,11 @@ export class AdditionalData {
|
||||
"name": "authorisedAmountCurrency",
|
||||
"baseName": "authorisedAmountCurrency",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "hmacSignature",
|
||||
"baseName": "hmacSignature",
|
||||
"type": "string"
|
||||
} ];
|
||||
|
||||
static getAttributeTypeMap() {
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* A container object for the payable amount information for the transaction.For HTTP POST notifications, currency and value are returned as URL parameters.
|
||||
*/
|
||||
|
||||
@@ -165,3 +165,4 @@ export class ObjectSerializer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,10 +34,12 @@ class HmacValidator {
|
||||
}
|
||||
|
||||
public validateHMAC(notificationRequestItem: NotificationRequestItem, key: string): boolean {
|
||||
const expectedSign = this.calculateHmac(notificationRequestItem, key);
|
||||
const merchantSign = notificationRequestItem.additionalData?.[ApiConstants.HMAC_SIGNATURE];
|
||||
|
||||
return expectedSign === merchantSign;
|
||||
if (notificationRequestItem.additionalData?.[ApiConstants.HMAC_SIGNATURE]) {
|
||||
const expectedSign = this.calculateHmac(notificationRequestItem, key);
|
||||
const merchantSign = notificationRequestItem.additionalData?.[ApiConstants.HMAC_SIGNATURE];
|
||||
return expectedSign === merchantSign;
|
||||
}
|
||||
throw Error(`Missing ${ApiConstants.HMAC_SIGNATURE}`);
|
||||
}
|
||||
|
||||
private isNotificationRequestItem(item: DataToSign): item is NotificationRequestItem {
|
||||
|
||||
Reference in New Issue
Block a user