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,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
- import type Braintree from 'braintree';
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.0",
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.14.2",
57
- "@medusajs/cli": "2.14.2",
58
- "@medusajs/framework": "2.14.2",
59
- "@medusajs/icons": "2.14.2",
60
- "@medusajs/ui": "4.1.9",
61
- "@swc/core": "1.7.28",
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": "5.6.2",
74
- "vite": "5.4.14",
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.14.2",
79
- "@medusajs/js-sdk": "2.14.2",
80
- "@medusajs/medusa": "2.14.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": "35f16164d0d17e6281b2801a9f1eb355b5035571"
87
+ "gitHead": "e09c71de0e01897fa9441b40b67315b5a7b6d5bf"
87
88
  }