@memberjunction/communication-ms-graph 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=MSGraphProvider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSGraphProvider.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/MSGraphProvider.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Unit tests for the MSGraph provider.
3
+ * Tests: credential resolution, supported operations, email sending, error handling.
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
+ AZURE_CLIENT_ID: 'env-client-id',
38
+ AZURE_CLIENT_SECRET: 'env-client-secret',
39
+ AZURE_TENANT_ID: 'env-tenant-id',
40
+ AZURE_ACCOUNT_EMAIL: 'test@example.com',
41
+ AZURE_ACCOUNT_ID: 'env-user-id',
42
+ AZURE_AAD_ENDPOINT: 'https://login.microsoftonline.com',
43
+ AZURE_GRAPH_ENDPOINT: 'https://graph.microsoft.com',
44
+ };
45
+ return {
46
+ default: {
47
+ get: (key) => ({
48
+ default: (def) => ({
49
+ asString: () => envMap[key] ?? def,
50
+ }),
51
+ }),
52
+ },
53
+ };
54
+ });
55
+ // Mock @azure/identity
56
+ vi.mock('@azure/identity', () => ({
57
+ ClientSecretCredential: vi.fn().mockImplementation(() => ({
58
+ getToken: vi.fn().mockResolvedValue({ token: 'test-token' }),
59
+ })),
60
+ ConfidentialClientApplication: vi.fn(),
61
+ }));
62
+ // Mock @microsoft/microsoft-graph-client
63
+ const { mockGraphApi } = vi.hoisted(() => ({
64
+ mockGraphApi: vi.fn().mockReturnValue({
65
+ post: vi.fn().mockResolvedValue({}),
66
+ get: vi.fn().mockResolvedValue({ value: [] }),
67
+ }),
68
+ }));
69
+ vi.mock('@microsoft/microsoft-graph-client', () => ({
70
+ Client: {
71
+ initWithMiddleware: vi.fn().mockReturnValue({
72
+ api: mockGraphApi,
73
+ }),
74
+ },
75
+ }));
76
+ vi.mock('@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials', () => ({
77
+ TokenCredentialAuthenticationProvider: vi.fn().mockImplementation(() => ({})),
78
+ }));
79
+ // ---------------------------------------------------------------------------
80
+ // Import after mocks
81
+ // ---------------------------------------------------------------------------
82
+ import { MSGraphProvider } from '../MSGraphProvider.js';
83
+ // ---------------------------------------------------------------------------
84
+ // Tests
85
+ // ---------------------------------------------------------------------------
86
+ describe('MSGraphProvider', () => {
87
+ let provider;
88
+ beforeEach(() => {
89
+ vi.clearAllMocks();
90
+ provider = new MSGraphProvider();
91
+ });
92
+ describe('getSupportedOperations', () => {
93
+ it('should include core messaging operations', () => {
94
+ const ops = provider.getSupportedOperations();
95
+ expect(ops).toContain('SendSingleMessage');
96
+ expect(ops).toContain('GetMessages');
97
+ });
98
+ });
99
+ describe('credential resolution', () => {
100
+ it('should return failure when required credentials are missing with fallback disabled', async () => {
101
+ const message = {
102
+ From: 'sender@example.com',
103
+ To: 'recipient@example.com',
104
+ ProcessedSubject: 'Test',
105
+ ProcessedBody: 'Body',
106
+ ProcessedHTMLBody: '',
107
+ CCRecipients: [],
108
+ BCCRecipients: [],
109
+ ContextData: {},
110
+ };
111
+ const result = await provider.SendSingleMessage(message, { disableEnvironmentFallback: true });
112
+ expect(result.Success).toBe(false);
113
+ });
114
+ });
115
+ describe('CreateDraft', () => {
116
+ it('should be a function on the provider', () => {
117
+ expect(typeof provider.CreateDraft).toBe('function');
118
+ });
119
+ });
120
+ });
121
+ //# sourceMappingURL=MSGraphProvider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSGraphProvider.test.js","sourceRoot":"","sources":["../../src/__tests__/MSGraphProvider.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/communication-ms-graph",
3
3
  "type": "module",
4
- "version": "4.2.0",
4
+ "version": "4.3.1",
5
5
  "description": "MemberJunction: Microsoft Graph Provider for the MJ Communication Framework",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -11,7 +11,7 @@
11
11
  "scripts": {
12
12
  "start": "ts-node-dev src/index.ts",
13
13
  "build": "tsc && tsc-alias -f",
14
- "test": "echo \"Error: no test specified\" && exit 1"
14
+ "test": "vitest run"
15
15
  },
16
16
  "author": "MemberJunction.com",
17
17
  "license": "ISC",
@@ -23,14 +23,14 @@
23
23
  "dependencies": {
24
24
  "@azure/identity": "^4.13.0",
25
25
  "@azure/msal-node": "^5.0.3",
26
- "@memberjunction/ai": "4.2.0",
27
- "@memberjunction/ai-provider-bundle": "4.2.0",
28
- "@memberjunction/aiengine": "4.2.0",
29
- "@memberjunction/communication-types": "4.2.0",
30
- "@memberjunction/core": "4.2.0",
31
- "@memberjunction/core-entities": "4.2.0",
32
- "@memberjunction/global": "4.2.0",
33
- "@memberjunction/sqlserver-dataprovider": "4.2.0",
26
+ "@memberjunction/ai": "4.3.1",
27
+ "@memberjunction/ai-provider-bundle": "4.3.1",
28
+ "@memberjunction/aiengine": "4.3.1",
29
+ "@memberjunction/communication-types": "4.3.1",
30
+ "@memberjunction/core": "4.3.1",
31
+ "@memberjunction/core-entities": "4.3.1",
32
+ "@memberjunction/global": "4.3.1",
33
+ "@memberjunction/sqlserver-dataprovider": "4.3.1",
34
34
  "@microsoft/microsoft-graph-client": "^3.0.7",
35
35
  "@microsoft/microsoft-graph-types": "^2.43.1",
36
36
  "@types/html-to-text": "^9.0.4",