medusa-plugin-braintree 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/// <reference types="jest" />
|
|
4
|
+
const provider_1 = require("../provider");
|
|
5
|
+
// ── Mocks ────────────────────────────────────────────────────────────────────
|
|
6
|
+
const mockCaching = {
|
|
7
|
+
get: jest.fn(),
|
|
8
|
+
set: jest.fn(),
|
|
9
|
+
clear: jest.fn()
|
|
10
|
+
};
|
|
11
|
+
const mockGateway = {
|
|
12
|
+
clientToken: {
|
|
13
|
+
generate: jest.fn().mockResolvedValue({ clientToken: 'generated-token-123' })
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const mockLogger = {
|
|
17
|
+
info: jest.fn(),
|
|
18
|
+
warn: jest.fn(),
|
|
19
|
+
error: jest.fn(),
|
|
20
|
+
debug: jest.fn()
|
|
21
|
+
};
|
|
22
|
+
const defaultOptions = {
|
|
23
|
+
environment: 'sandbox',
|
|
24
|
+
merchantId: 'test-merchant',
|
|
25
|
+
publicKey: 'test-public',
|
|
26
|
+
privateKey: 'test-private',
|
|
27
|
+
webhookSecret: 'test-secret',
|
|
28
|
+
enable3DSecure: false,
|
|
29
|
+
savePaymentMethod: false,
|
|
30
|
+
autoCapture: false
|
|
31
|
+
};
|
|
32
|
+
function createProvider() {
|
|
33
|
+
const container = {
|
|
34
|
+
logger: mockLogger,
|
|
35
|
+
caching: mockCaching
|
|
36
|
+
};
|
|
37
|
+
const provider = new provider_1.BraintreeProvider(container, defaultOptions);
|
|
38
|
+
provider.gateway = mockGateway;
|
|
39
|
+
return provider;
|
|
40
|
+
}
|
|
41
|
+
// ── Tests ────────────────────────────────────────────────────────────────────
|
|
42
|
+
describe('BraintreeProvider caching', () => {
|
|
43
|
+
let provider;
|
|
44
|
+
beforeEach(() => {
|
|
45
|
+
jest.clearAllMocks();
|
|
46
|
+
provider = createProvider();
|
|
47
|
+
});
|
|
48
|
+
describe('saveClientTokenToCache', () => {
|
|
49
|
+
it('stores token as { token } object with correct key and TTL', async () => {
|
|
50
|
+
const now = Math.floor(Date.now() / 1000);
|
|
51
|
+
const expiry = now + 3600; // 1 hour from now
|
|
52
|
+
await provider.saveClientTokenToCache('tok_abc', 'cus_123', expiry);
|
|
53
|
+
expect(mockCaching.set).toHaveBeenCalledTimes(1);
|
|
54
|
+
const call = mockCaching.set.mock.calls[0][0];
|
|
55
|
+
expect(call.key).toBe('braintree:clientToken:cus_123');
|
|
56
|
+
expect(call.data).toEqual({ token: 'tok_abc' });
|
|
57
|
+
expect(call.ttl).toBeGreaterThan(0);
|
|
58
|
+
expect(call.ttl).toBeLessThanOrEqual(3600);
|
|
59
|
+
});
|
|
60
|
+
it('does not cache when TTL would be <= 0', async () => {
|
|
61
|
+
const expired = Math.floor(Date.now() / 1000) - 10;
|
|
62
|
+
await provider.saveClientTokenToCache('tok_abc', 'cus_123', expired);
|
|
63
|
+
expect(mockCaching.set).not.toHaveBeenCalled();
|
|
64
|
+
});
|
|
65
|
+
it('does not cache when clientToken is empty', async () => {
|
|
66
|
+
const expiry = Math.floor(Date.now() / 1000) + 3600;
|
|
67
|
+
await provider.saveClientTokenToCache('', 'cus_123', expiry);
|
|
68
|
+
expect(mockCaching.set).not.toHaveBeenCalled();
|
|
69
|
+
});
|
|
70
|
+
it('throws when customerId is missing', async () => {
|
|
71
|
+
const expiry = Math.floor(Date.now() / 1000) + 3600;
|
|
72
|
+
await expect(provider.saveClientTokenToCache('tok_abc', '', expiry)).rejects.toThrow('Customer ID is required');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('getClientTokenFromCache', () => {
|
|
76
|
+
it('returns the cached token string when found', async () => {
|
|
77
|
+
mockCaching.get.mockResolvedValueOnce({ token: 'cached-tok' });
|
|
78
|
+
const result = await provider.getClientTokenFromCache('cus_123');
|
|
79
|
+
expect(mockCaching.get).toHaveBeenCalledWith({ key: 'braintree:clientToken:cus_123' });
|
|
80
|
+
expect(result).toBe('cached-tok');
|
|
81
|
+
});
|
|
82
|
+
it('returns null when cache misses', async () => {
|
|
83
|
+
mockCaching.get.mockResolvedValueOnce(null);
|
|
84
|
+
const result = await provider.getClientTokenFromCache('cus_123');
|
|
85
|
+
expect(result).toBeNull();
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
describe('getValidClientToken', () => {
|
|
89
|
+
it('returns cached token without generating a new one', async () => {
|
|
90
|
+
mockCaching.get.mockResolvedValueOnce({ token: 'cached-tok' });
|
|
91
|
+
const result = await provider.getValidClientToken('cus_123', undefined);
|
|
92
|
+
expect(result).toBe('cached-tok');
|
|
93
|
+
expect(mockGateway.clientToken.generate).not.toHaveBeenCalled();
|
|
94
|
+
});
|
|
95
|
+
it('generates and caches a new token on cache miss', async () => {
|
|
96
|
+
mockCaching.get.mockResolvedValueOnce(null);
|
|
97
|
+
const result = await provider.getValidClientToken('cus_123', undefined);
|
|
98
|
+
expect(result).toBe('generated-token-123');
|
|
99
|
+
expect(mockGateway.clientToken.generate).toHaveBeenCalledTimes(1);
|
|
100
|
+
expect(mockCaching.set).toHaveBeenCalledTimes(1);
|
|
101
|
+
const setCall = mockCaching.set.mock.calls[0][0];
|
|
102
|
+
expect(setCall.key).toBe('braintree:clientToken:cus_123');
|
|
103
|
+
expect(setCall.data).toEqual({ token: 'generated-token-123' });
|
|
104
|
+
expect(setCall.ttl).toBeGreaterThan(0);
|
|
105
|
+
});
|
|
106
|
+
it('generates token without caching when no customerId', async () => {
|
|
107
|
+
const result = await provider.getValidClientToken(undefined, undefined);
|
|
108
|
+
expect(result).toBe('generated-token-123');
|
|
109
|
+
expect(mockCaching.get).not.toHaveBeenCalled();
|
|
110
|
+
expect(mockCaching.set).not.toHaveBeenCalled();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy51bml0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BheW1lbnQtYnJhaW50cmVlL19fdGVzdHNfXy9jYWNoaW5nLnVuaXQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhCQUE4QjtBQUM5QiwwQ0FBK0M7QUFHL0MsZ0ZBQWdGO0FBRWhGLE1BQU0sV0FBVyxHQUFHO0lBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2QsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtDQUNoQixDQUFBO0FBRUQsTUFBTSxXQUFXLEdBQUc7SUFDbkIsV0FBVyxFQUFFO1FBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO0tBQzdFO0NBQ0QsQ0FBQTtBQUVELE1BQU0sVUFBVSxHQUFHO0lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtJQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtDQUNoQixDQUFBO0FBRUQsTUFBTSxjQUFjLEdBQXFCO0lBQ3hDLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLFVBQVUsRUFBRSxlQUFlO0lBQzNCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLFVBQVUsRUFBRSxjQUFjO0lBQzFCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsV0FBVyxFQUFFLEtBQUs7Q0FDbEIsQ0FBQTtBQUVELFNBQVMsY0FBYztJQUN0QixNQUFNLFNBQVMsR0FB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
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
export interface BraintreeOptions extends Braintree.ClientGatewayConfig {
|
|
3
|
-
defaultCurrencyCode?: string;
|
|
1
|
+
export interface BraintreeOptions {
|
|
4
2
|
environment: 'production' | 'sandbox' | 'development' | 'qa';
|
|
5
3
|
merchantId: string;
|
|
6
4
|
publicKey: string;
|
|
7
5
|
privateKey: string;
|
|
6
|
+
webhookSecret: string;
|
|
8
7
|
enable3DSecure: boolean;
|
|
9
8
|
savePaymentMethod: boolean;
|
|
10
|
-
webhookSecret: string;
|
|
11
9
|
autoCapture: boolean;
|
|
10
|
+
defaultCurrencyCode?: string;
|
|
12
11
|
allowRefundOnRefunded?: boolean;
|
|
13
12
|
}
|
|
14
13
|
export type CustomFields = Record<string, string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medusa-plugin-braintree",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Braintree payment provider plugin for Medusa v2",
|
|
5
5
|
"author": "Lacey Pevey",
|
|
6
6
|
"license": "MIT",
|
|
@@ -47,18 +47,19 @@
|
|
|
47
47
|
"build": "medusa plugin:build",
|
|
48
48
|
"dev": "medusa plugin:develop",
|
|
49
49
|
"prepublishOnly": "medusa plugin:build",
|
|
50
|
-
"test:unit": "TEST_TYPE=unit NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --detectOpenHandles --forceExit"
|
|
50
|
+
"test:unit": "TEST_TYPE=unit NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --detectOpenHandles --forceExit",
|
|
51
|
+
"test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --detectOpenHandles --forceExit"
|
|
51
52
|
},
|
|
52
53
|
"dependencies": {
|
|
53
54
|
"braintree": "3.36.0"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
|
-
"@medusajs/admin-sdk": "2.
|
|
57
|
-
"@medusajs/cli": "2.
|
|
58
|
-
"@medusajs/framework": "2.
|
|
59
|
-
"@medusajs/icons": "2.
|
|
60
|
-
"@medusajs/ui": "4.1.
|
|
61
|
-
"@swc/core": "1.
|
|
57
|
+
"@medusajs/admin-sdk": "2.16.0",
|
|
58
|
+
"@medusajs/cli": "2.16.0",
|
|
59
|
+
"@medusajs/framework": "2.16.0",
|
|
60
|
+
"@medusajs/icons": "2.16.0",
|
|
61
|
+
"@medusajs/ui": "4.1.16",
|
|
62
|
+
"@swc/core": "1.15.33",
|
|
62
63
|
"@swc/jest": "0.2.39",
|
|
63
64
|
"@types/braintree": "3.4.4",
|
|
64
65
|
"@types/jest": "30.0.0",
|
|
@@ -70,18 +71,18 @@
|
|
|
70
71
|
"react": "18.3.1",
|
|
71
72
|
"react-dom": "18.3.1",
|
|
72
73
|
"ts-node": "10.9.2",
|
|
73
|
-
"typescript": "
|
|
74
|
-
"vite": "
|
|
74
|
+
"typescript": "6.0.3",
|
|
75
|
+
"vite": "8.0.8",
|
|
75
76
|
"yalc": "1.0.0-pre.53"
|
|
76
77
|
},
|
|
77
78
|
"peerDependencies": {
|
|
78
|
-
"@medusajs/framework": "2.
|
|
79
|
-
"@medusajs/js-sdk": "2.
|
|
80
|
-
"@medusajs/medusa": "2.
|
|
79
|
+
"@medusajs/framework": "2.16.0",
|
|
80
|
+
"@medusajs/js-sdk": "2.16.0",
|
|
81
|
+
"@medusajs/medusa": "2.16.0"
|
|
81
82
|
},
|
|
82
83
|
"engines": {
|
|
83
84
|
"node": ">=20"
|
|
84
85
|
},
|
|
85
86
|
"packageManager": "yarn@4.13.0+sha512.5c20ba010c99815433e5c8453112165e673f1c7948d8d2b267f4b5e52097538658388ebc9f9580656d9b75c5cc996f990f611f99304a2197d4c56d21eea370e7",
|
|
86
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "e09c71de0e01897fa9441b40b67315b5a7b6d5bf"
|
|
87
88
|
}
|