@memberjunction/communication-gmail 4.2.0 → 4.3.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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GmailProvider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GmailProvider.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/GmailProvider.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Unit tests for the Gmail provider.
3
+ * Tests: credential resolution, email content creation, supported operations.
4
+ */
5
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
6
+ // ---------------------------------------------------------------------------
7
+ // Mocks
8
+ // ---------------------------------------------------------------------------
9
+ vi.mock('@memberjunction/communication-types', () => ({
10
+ BaseCommunicationProvider: class {
11
+ getSupportedOperations() { return []; }
12
+ },
13
+ resolveCredentialValue: (requestVal, envVal, disableFallback) => {
14
+ if (requestVal)
15
+ return requestVal;
16
+ if (!disableFallback && envVal)
17
+ return envVal;
18
+ return undefined;
19
+ },
20
+ validateRequiredCredentials: (creds, required, provider) => {
21
+ for (const key of required) {
22
+ if (!creds[key]) {
23
+ throw new Error(`${provider}: Missing required credential: ${key}`);
24
+ }
25
+ }
26
+ },
27
+ }));
28
+ vi.mock('@memberjunction/global', () => ({
29
+ RegisterClass: () => (target) => target,
30
+ }));
31
+ vi.mock('@memberjunction/core', () => ({
32
+ LogError: vi.fn(),
33
+ LogStatus: vi.fn(),
34
+ }));
35
+ vi.mock('env-var', () => {
36
+ const envMap = {
37
+ GMAIL_CLIENT_ID: 'env-client-id',
38
+ GMAIL_CLIENT_SECRET: 'env-client-secret',
39
+ GMAIL_REDIRECT_URI: 'http://localhost:3000/callback',
40
+ GMAIL_REFRESH_TOKEN: 'env-refresh-token',
41
+ GMAIL_SERVICE_ACCOUNT_EMAIL: 'service@example.com',
42
+ };
43
+ return {
44
+ default: {
45
+ get: (key) => ({
46
+ default: (def) => ({
47
+ asString: () => envMap[key] ?? def,
48
+ }),
49
+ }),
50
+ },
51
+ };
52
+ });
53
+ vi.mock('dotenv', () => ({
54
+ default: { config: vi.fn() },
55
+ }));
56
+ const { mockSend, mockMessagesList, mockMessagesGet } = vi.hoisted(() => ({
57
+ mockSend: vi.fn(),
58
+ mockMessagesList: vi.fn(),
59
+ mockMessagesGet: vi.fn(),
60
+ }));
61
+ vi.mock('googleapis', () => {
62
+ class FakeOAuth2 {
63
+ constructor() {
64
+ this.setCredentials = vi.fn();
65
+ }
66
+ }
67
+ return {
68
+ default: {
69
+ google: {
70
+ auth: {
71
+ OAuth2: FakeOAuth2,
72
+ },
73
+ gmail: vi.fn().mockReturnValue({
74
+ users: {
75
+ getProfile: vi.fn().mockResolvedValue({ data: { emailAddress: 'test@gmail.com' } }),
76
+ messages: {
77
+ send: mockSend,
78
+ list: mockMessagesList,
79
+ get: mockMessagesGet,
80
+ modify: vi.fn().mockResolvedValue({}),
81
+ trash: vi.fn().mockResolvedValue({}),
82
+ delete: vi.fn().mockResolvedValue({}),
83
+ },
84
+ labels: {
85
+ list: vi.fn().mockResolvedValue({ data: { labels: [] } }),
86
+ },
87
+ drafts: {
88
+ create: vi.fn().mockResolvedValue({ status: 200, data: { id: 'draft-1' } }),
89
+ },
90
+ },
91
+ }),
92
+ },
93
+ },
94
+ };
95
+ });
96
+ // ---------------------------------------------------------------------------
97
+ // Import after mocks
98
+ // ---------------------------------------------------------------------------
99
+ import { GmailProvider } from '../GmailProvider.js';
100
+ // ---------------------------------------------------------------------------
101
+ // Tests
102
+ // ---------------------------------------------------------------------------
103
+ describe('GmailProvider', () => {
104
+ let provider;
105
+ beforeEach(() => {
106
+ vi.clearAllMocks();
107
+ provider = new GmailProvider();
108
+ });
109
+ describe('getSupportedOperations', () => {
110
+ it('should include all Gmail-supported operations', () => {
111
+ const ops = provider.getSupportedOperations();
112
+ expect(ops).toContain('SendSingleMessage');
113
+ expect(ops).toContain('GetMessages');
114
+ expect(ops).toContain('ForwardMessage');
115
+ expect(ops).toContain('ReplyToMessage');
116
+ expect(ops).toContain('CreateDraft');
117
+ expect(ops).toContain('DeleteMessage');
118
+ expect(ops).toContain('ListFolders');
119
+ expect(ops).toContain('MarkAsRead');
120
+ expect(ops).toContain('ArchiveMessage');
121
+ expect(ops).toContain('SearchMessages');
122
+ expect(ops).toContain('ListAttachments');
123
+ expect(ops).toContain('DownloadAttachment');
124
+ });
125
+ });
126
+ describe('SendSingleMessage', () => {
127
+ it('should send an email successfully', async () => {
128
+ mockSend.mockResolvedValue({ status: 200, statusText: 'OK' });
129
+ const message = {
130
+ From: 'sender@example.com',
131
+ FromName: 'Sender',
132
+ To: 'recipient@example.com',
133
+ ProcessedSubject: 'Test Subject',
134
+ ProcessedBody: 'Hello World',
135
+ ProcessedHTMLBody: '',
136
+ CCRecipients: [],
137
+ BCCRecipients: [],
138
+ ContextData: {},
139
+ };
140
+ const result = await provider.SendSingleMessage(message);
141
+ expect(result.Success).toBe(true);
142
+ expect(mockSend).toHaveBeenCalled();
143
+ });
144
+ it('should handle non-success status from Gmail API', async () => {
145
+ mockSend.mockResolvedValue({ status: 500, statusText: 'Internal Server Error' });
146
+ const message = {
147
+ From: 'sender@example.com',
148
+ To: 'recipient@example.com',
149
+ ProcessedSubject: 'Test',
150
+ ProcessedBody: 'Body',
151
+ ProcessedHTMLBody: '',
152
+ CCRecipients: [],
153
+ BCCRecipients: [],
154
+ ContextData: {},
155
+ };
156
+ const result = await provider.SendSingleMessage(message);
157
+ expect(result.Success).toBe(false);
158
+ });
159
+ it('should handle send errors gracefully', async () => {
160
+ mockSend.mockRejectedValue(new Error('API quota exceeded'));
161
+ const message = {
162
+ From: 'sender@example.com',
163
+ To: 'recipient@example.com',
164
+ ProcessedSubject: 'Test',
165
+ ProcessedBody: 'Body',
166
+ ProcessedHTMLBody: '',
167
+ CCRecipients: [],
168
+ BCCRecipients: [],
169
+ ContextData: {},
170
+ };
171
+ const result = await provider.SendSingleMessage(message);
172
+ expect(result.Success).toBe(false);
173
+ expect(result.Error).toContain('API quota exceeded');
174
+ });
175
+ });
176
+ describe('credential resolution', () => {
177
+ it('should return failure when required credentials are missing', async () => {
178
+ const message = {
179
+ From: 'sender@example.com',
180
+ To: 'recipient@example.com',
181
+ ProcessedSubject: 'Test',
182
+ ProcessedBody: 'Body',
183
+ ProcessedHTMLBody: '',
184
+ CCRecipients: [],
185
+ BCCRecipients: [],
186
+ ContextData: {},
187
+ };
188
+ // SendSingleMessage catches the error internally
189
+ const result = await provider.SendSingleMessage(message, {
190
+ disableEnvironmentFallback: true,
191
+ });
192
+ expect(result.Success).toBe(false);
193
+ expect(result.Error).toContain('Missing required credential');
194
+ });
195
+ });
196
+ describe('ReplyToMessage', () => {
197
+ it('should return error when MessageID is missing', async () => {
198
+ const result = await provider.ReplyToMessage({
199
+ MessageID: '',
200
+ Message: {},
201
+ });
202
+ expect(result.Success).toBe(false);
203
+ expect(result.ErrorMessage).toContain('Message ID not provided');
204
+ });
205
+ });
206
+ describe('ForwardMessage', () => {
207
+ it('should return error when MessageID is missing', async () => {
208
+ const result = await provider.ForwardMessage({
209
+ MessageID: '',
210
+ ToRecipients: ['r@example.com'],
211
+ });
212
+ expect(result.Success).toBe(false);
213
+ expect(result.ErrorMessage).toContain('Message ID not provided');
214
+ });
215
+ });
216
+ });
217
+ //# sourceMappingURL=GmailProvider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GmailProvider.test.js","sourceRoot":"","sources":["../../src/__tests__/GmailProvider.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/communication-gmail",
3
3
  "type": "module",
4
- "version": "4.2.0",
4
+ "version": "4.3.1",
5
5
  "description": "Gmail/Google Suite provider for MemberJunction Communication framework",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -10,12 +10,13 @@
10
10
  ],
11
11
  "scripts": {
12
12
  "build": "tsc && tsc-alias -f",
13
- "clean": "rimraf dist"
13
+ "clean": "rimraf dist",
14
+ "test": "vitest run"
14
15
  },
15
16
  "dependencies": {
16
- "@memberjunction/communication-types": "4.2.0",
17
- "@memberjunction/core": "4.2.0",
18
- "@memberjunction/global": "4.2.0",
17
+ "@memberjunction/communication-types": "4.3.1",
18
+ "@memberjunction/core": "4.3.1",
19
+ "@memberjunction/global": "4.3.1",
19
20
  "dotenv": "^17.2.4",
20
21
  "env-var": "^7.4.1",
21
22
  "googleapis": "^171.4.0"