@memberjunction/storage 3.1.1 → 3.2.0

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.
Files changed (47) hide show
  1. package/dist/__tests__/FileStorageBase.test.d.ts +6 -0
  2. package/dist/__tests__/FileStorageBase.test.d.ts.map +1 -0
  3. package/dist/__tests__/FileStorageBase.test.js +213 -0
  4. package/dist/__tests__/FileStorageBase.test.js.map +1 -0
  5. package/dist/__tests__/util.test.d.ts +7 -0
  6. package/dist/__tests__/util.test.d.ts.map +1 -0
  7. package/dist/__tests__/util.test.js +326 -0
  8. package/dist/__tests__/util.test.js.map +1 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +28 -14
  11. package/dist/config.js.map +1 -1
  12. package/dist/drivers/AWSFileStorage.d.ts +20 -0
  13. package/dist/drivers/AWSFileStorage.d.ts.map +1 -1
  14. package/dist/drivers/AWSFileStorage.js +43 -18
  15. package/dist/drivers/AWSFileStorage.js.map +1 -1
  16. package/dist/drivers/AzureFileStorage.d.ts +1 -1
  17. package/dist/drivers/AzureFileStorage.d.ts.map +1 -1
  18. package/dist/drivers/AzureFileStorage.js +17 -17
  19. package/dist/drivers/AzureFileStorage.js.map +1 -1
  20. package/dist/drivers/BoxFileStorage.d.ts +47 -1
  21. package/dist/drivers/BoxFileStorage.d.ts.map +1 -1
  22. package/dist/drivers/BoxFileStorage.js +219 -95
  23. package/dist/drivers/BoxFileStorage.js.map +1 -1
  24. package/dist/drivers/DropboxFileStorage.d.ts +59 -0
  25. package/dist/drivers/DropboxFileStorage.d.ts.map +1 -1
  26. package/dist/drivers/DropboxFileStorage.js +314 -62
  27. package/dist/drivers/DropboxFileStorage.js.map +1 -1
  28. package/dist/drivers/GoogleDriveFileStorage.d.ts +29 -0
  29. package/dist/drivers/GoogleDriveFileStorage.d.ts.map +1 -1
  30. package/dist/drivers/GoogleDriveFileStorage.js +220 -72
  31. package/dist/drivers/GoogleDriveFileStorage.js.map +1 -1
  32. package/dist/drivers/GoogleFileStorage.d.ts.map +1 -1
  33. package/dist/drivers/GoogleFileStorage.js +12 -12
  34. package/dist/drivers/GoogleFileStorage.js.map +1 -1
  35. package/dist/drivers/SharePointFileStorage.d.ts +64 -5
  36. package/dist/drivers/SharePointFileStorage.d.ts.map +1 -1
  37. package/dist/drivers/SharePointFileStorage.js +265 -94
  38. package/dist/drivers/SharePointFileStorage.js.map +1 -1
  39. package/dist/generic/FileStorageBase.d.ts +79 -13
  40. package/dist/generic/FileStorageBase.d.ts.map +1 -1
  41. package/dist/generic/FileStorageBase.js +57 -12
  42. package/dist/generic/FileStorageBase.js.map +1 -1
  43. package/dist/util.d.ts +429 -11
  44. package/dist/util.d.ts.map +1 -1
  45. package/dist/util.js +677 -16
  46. package/dist/util.js.map +1 -1
  47. package/package.json +11 -5
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Unit tests for the FileStorageBase class.
3
+ * These tests focus on the initialize() method and account information handling.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=FileStorageBase.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileStorageBase.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/FileStorageBase.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for the FileStorageBase class.
4
+ * These tests focus on the initialize() method and account information handling.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const FileStorageBase_1 = require("../generic/FileStorageBase");
8
+ /**
9
+ * Concrete implementation of FileStorageBase for testing purposes.
10
+ * This class implements all abstract methods with minimal functionality
11
+ * to allow testing the base class behavior.
12
+ */
13
+ class TestableFileStorageDriver extends FileStorageBase_1.FileStorageBase {
14
+ providerName = 'TestableProvider';
15
+ _isConfigured = false;
16
+ configPassedToInitialize = null;
17
+ async initialize(config) {
18
+ // Call the base implementation
19
+ await super.initialize(config);
20
+ // Store the config for test verification
21
+ this.configPassedToInitialize = config;
22
+ this._isConfigured = true;
23
+ }
24
+ get IsConfigured() {
25
+ return this._isConfigured;
26
+ }
27
+ // Minimal implementations of abstract methods
28
+ async CreatePreAuthUploadUrl(objectName) {
29
+ return { UploadUrl: `https://test.url/${objectName}` };
30
+ }
31
+ async CreatePreAuthDownloadUrl(objectName) {
32
+ return `https://test.url/${objectName}`;
33
+ }
34
+ async MoveObject(oldObjectName, newObjectName) {
35
+ return true;
36
+ }
37
+ async DeleteObject(objectName) {
38
+ return true;
39
+ }
40
+ async ListObjects(prefix, delimiter) {
41
+ return { objects: [], prefixes: [] };
42
+ }
43
+ async CreateDirectory(directoryPath) {
44
+ return true;
45
+ }
46
+ async DeleteDirectory(directoryPath, recursive) {
47
+ return true;
48
+ }
49
+ async GetObjectMetadata(params) {
50
+ return {
51
+ name: 'test.txt',
52
+ path: '/',
53
+ fullPath: '/test.txt',
54
+ size: 0,
55
+ contentType: 'text/plain',
56
+ lastModified: new Date(),
57
+ isDirectory: false,
58
+ };
59
+ }
60
+ async GetObject(params) {
61
+ return Buffer.from('');
62
+ }
63
+ async PutObject(objectName, data, contentType, metadata) {
64
+ return true;
65
+ }
66
+ async CopyObject(sourceObjectName, destinationObjectName) {
67
+ return true;
68
+ }
69
+ async ObjectExists(objectName) {
70
+ return false;
71
+ }
72
+ async DirectoryExists(directoryPath) {
73
+ return false;
74
+ }
75
+ async SearchFiles(query, options) {
76
+ return { results: [], hasMore: false };
77
+ }
78
+ // Expose the protected method for testing
79
+ testThrowUnsupportedOperationError(methodName) {
80
+ return this.throwUnsupportedOperationError(methodName);
81
+ }
82
+ }
83
+ describe('FileStorageBase', () => {
84
+ let driver;
85
+ beforeEach(() => {
86
+ driver = new TestableFileStorageDriver();
87
+ });
88
+ describe('initialize()', () => {
89
+ it('should store accountId from config', async () => {
90
+ const config = {
91
+ accountId: 'test-account-id-123',
92
+ };
93
+ await driver.initialize(config);
94
+ expect(driver.AccountId).toBe('test-account-id-123');
95
+ });
96
+ it('should store accountName from config when provided', async () => {
97
+ const config = {
98
+ accountId: 'test-account-id-123',
99
+ accountName: 'My Test Storage Account',
100
+ };
101
+ await driver.initialize(config);
102
+ expect(driver.AccountName).toBe('My Test Storage Account');
103
+ });
104
+ it('should handle undefined accountName gracefully', async () => {
105
+ const config = {
106
+ accountId: 'test-account-id-123',
107
+ // accountName intentionally omitted
108
+ };
109
+ await driver.initialize(config);
110
+ expect(driver.AccountId).toBe('test-account-id-123');
111
+ expect(driver.AccountName).toBeUndefined();
112
+ });
113
+ it('should allow additional provider-specific config values', async () => {
114
+ const config = {
115
+ accountId: 'account-456',
116
+ accountName: 'S3 Bucket Account',
117
+ bucket: 'my-bucket',
118
+ region: 'us-west-2',
119
+ accessKeyId: 'AKIA...',
120
+ };
121
+ await driver.initialize(config);
122
+ // Verify base properties are set
123
+ expect(driver.AccountId).toBe('account-456');
124
+ expect(driver.AccountName).toBe('S3 Bucket Account');
125
+ // Verify the full config was passed through
126
+ expect(driver.configPassedToInitialize).toEqual({
127
+ accountId: 'account-456',
128
+ accountName: 'S3 Bucket Account',
129
+ bucket: 'my-bucket',
130
+ region: 'us-west-2',
131
+ accessKeyId: 'AKIA...',
132
+ });
133
+ });
134
+ });
135
+ describe('AccountId getter', () => {
136
+ it('should return undefined before initialization', () => {
137
+ expect(driver.AccountId).toBeUndefined();
138
+ });
139
+ it('should return the accountId after initialization', async () => {
140
+ await driver.initialize({ accountId: 'my-account-id' });
141
+ expect(driver.AccountId).toBe('my-account-id');
142
+ });
143
+ });
144
+ describe('AccountName getter', () => {
145
+ it('should return undefined before initialization', () => {
146
+ expect(driver.AccountName).toBeUndefined();
147
+ });
148
+ it('should return the accountName after initialization', async () => {
149
+ await driver.initialize({
150
+ accountId: 'my-account-id',
151
+ accountName: 'Production S3 Account',
152
+ });
153
+ expect(driver.AccountName).toBe('Production S3 Account');
154
+ });
155
+ });
156
+ describe('UnsupportedOperationError', () => {
157
+ it('should create error with correct message format', () => {
158
+ const error = new FileStorageBase_1.UnsupportedOperationError('SearchFiles', 'AWS S3');
159
+ expect(error.message).toBe("Operation 'SearchFiles' is not supported by the AWS S3 provider");
160
+ expect(error.name).toBe('UnsupportedOperationError');
161
+ });
162
+ it('should throw UnsupportedOperationError via helper method', () => {
163
+ expect(() => {
164
+ driver.testThrowUnsupportedOperationError('TestMethod');
165
+ }).toThrow(FileStorageBase_1.UnsupportedOperationError);
166
+ expect(() => {
167
+ driver.testThrowUnsupportedOperationError('TestMethod');
168
+ }).toThrow("Operation 'TestMethod' is not supported by the TestableProvider provider");
169
+ });
170
+ });
171
+ describe('IsConfigured', () => {
172
+ it('should return false before initialization', () => {
173
+ expect(driver.IsConfigured).toBe(false);
174
+ });
175
+ it('should return true after initialization', async () => {
176
+ await driver.initialize({ accountId: 'test' });
177
+ expect(driver.IsConfigured).toBe(true);
178
+ });
179
+ });
180
+ });
181
+ describe('StorageProviderConfig interface', () => {
182
+ it('should require accountId property', () => {
183
+ // This is a compile-time check - if the type is wrong, TypeScript will error
184
+ const validConfig = {
185
+ accountId: 'required-account-id',
186
+ };
187
+ expect(validConfig.accountId).toBe('required-account-id');
188
+ });
189
+ it('should allow optional accountName property', () => {
190
+ const configWithName = {
191
+ accountId: 'account-1',
192
+ accountName: 'Optional Name',
193
+ };
194
+ const configWithoutName = {
195
+ accountId: 'account-2',
196
+ };
197
+ expect(configWithName.accountName).toBe('Optional Name');
198
+ expect(configWithoutName.accountName).toBeUndefined();
199
+ });
200
+ it('should allow additional provider-specific properties', () => {
201
+ const s3Config = {
202
+ accountId: 'aws-account',
203
+ accountName: 'AWS S3 Account',
204
+ bucket: 'my-bucket',
205
+ region: 'us-east-1',
206
+ accessKeyId: 'AKIA...',
207
+ secretAccessKey: 'secret...',
208
+ };
209
+ expect(s3Config.bucket).toBe('my-bucket');
210
+ expect(s3Config.region).toBe('us-east-1');
211
+ });
212
+ });
213
+ //# sourceMappingURL=FileStorageBase.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileStorageBase.test.js","sourceRoot":"","sources":["../../src/__tests__/FileStorageBase.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Unit tests for the MJStorage utility functions.
3
+ * These tests focus on the initializeDriverWithAccountCredentials function
4
+ * which is the core enterprise model for initializing storage drivers.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=util.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/util.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for the MJStorage utility functions.
4
+ * These tests focus on the initializeDriverWithAccountCredentials function
5
+ * which is the core enterprise model for initializing storage drivers.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || function (mod) {
24
+ if (mod && mod.__esModule) return mod;
25
+ var result = {};
26
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
27
+ __setModuleDefault(result, mod);
28
+ return result;
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ const FileStorageBase_1 = require("../generic/FileStorageBase");
32
+ const global_1 = require("@memberjunction/global");
33
+ // Mock the external dependencies
34
+ jest.mock('@memberjunction/global', () => {
35
+ const actualGlobal = jest.requireActual('@memberjunction/global');
36
+ return {
37
+ ...actualGlobal,
38
+ MJGlobal: {
39
+ Instance: {
40
+ ClassFactory: {
41
+ CreateInstance: jest.fn(),
42
+ },
43
+ },
44
+ },
45
+ };
46
+ });
47
+ jest.mock('@memberjunction/credentials', () => ({
48
+ CredentialEngine: {
49
+ Instance: {
50
+ Config: jest.fn().mockResolvedValue(undefined),
51
+ getCredentialById: jest.fn(),
52
+ getCredential: jest.fn(),
53
+ },
54
+ },
55
+ }));
56
+ jest.mock('@memberjunction/core', () => ({
57
+ LogStatus: jest.fn(),
58
+ UserInfo: class MockUserInfo {
59
+ ID = 'test-user-id';
60
+ Name = 'Test User';
61
+ },
62
+ }));
63
+ // Create a concrete implementation of FileStorageBase for testing
64
+ class MockFileStorageDriver extends FileStorageBase_1.FileStorageBase {
65
+ providerName = 'MockProvider';
66
+ initializeCalledWith = null;
67
+ _isConfigured = false;
68
+ async initialize(config) {
69
+ await super.initialize(config);
70
+ this.initializeCalledWith = config;
71
+ this._isConfigured = true;
72
+ }
73
+ get IsConfigured() {
74
+ return this._isConfigured;
75
+ }
76
+ // Implement all abstract methods with minimal implementations
77
+ async CreatePreAuthUploadUrl(objectName) {
78
+ return { UploadUrl: `https://mock.upload.url/${objectName}` };
79
+ }
80
+ async CreatePreAuthDownloadUrl(objectName) {
81
+ return `https://mock.download.url/${objectName}`;
82
+ }
83
+ async MoveObject(oldObjectName, newObjectName) {
84
+ return true;
85
+ }
86
+ async DeleteObject(objectName) {
87
+ return true;
88
+ }
89
+ async ListObjects(prefix, delimiter) {
90
+ return { objects: [], prefixes: [] };
91
+ }
92
+ async CreateDirectory(directoryPath) {
93
+ return true;
94
+ }
95
+ async DeleteDirectory(directoryPath, recursive) {
96
+ return true;
97
+ }
98
+ async GetObjectMetadata(params) {
99
+ return {
100
+ name: 'test.txt',
101
+ path: '/',
102
+ fullPath: '/test.txt',
103
+ size: 100,
104
+ contentType: 'text/plain',
105
+ lastModified: new Date(),
106
+ isDirectory: false,
107
+ };
108
+ }
109
+ async GetObject(params) {
110
+ return Buffer.from('test content');
111
+ }
112
+ async PutObject(objectName, data, contentType, metadata) {
113
+ return true;
114
+ }
115
+ async CopyObject(sourceObjectName, destinationObjectName) {
116
+ return true;
117
+ }
118
+ async ObjectExists(objectName) {
119
+ return true;
120
+ }
121
+ async DirectoryExists(directoryPath) {
122
+ return true;
123
+ }
124
+ async SearchFiles(query, options) {
125
+ return { results: [], hasMore: false };
126
+ }
127
+ }
128
+ describe('initializeDriverWithAccountCredentials', () => {
129
+ let mockDriver;
130
+ let mockAccountEntity;
131
+ let mockProviderEntity;
132
+ let mockContextUser;
133
+ beforeEach(() => {
134
+ // Reset all mocks
135
+ jest.clearAllMocks();
136
+ // Create fresh mock instances
137
+ mockDriver = new MockFileStorageDriver();
138
+ // Setup the ClassFactory to return our mock driver
139
+ global_1.MJGlobal.Instance.ClassFactory.CreateInstance.mockReturnValue(mockDriver);
140
+ mockAccountEntity = {
141
+ ID: 'account-123',
142
+ Name: 'Test Storage Account',
143
+ CredentialID: null,
144
+ };
145
+ mockProviderEntity = {
146
+ Name: 'Test Provider',
147
+ ServerDriverKey: 'TestDriver',
148
+ Configuration: null,
149
+ };
150
+ mockContextUser = {
151
+ ID: 'user-123',
152
+ Name: 'Test User',
153
+ };
154
+ });
155
+ describe('driver creation', () => {
156
+ it('should create a driver instance using the provider ServerDriverKey', async () => {
157
+ // Import the function we're testing
158
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
159
+ await initializeDriverWithAccountCredentials({
160
+ accountEntity: mockAccountEntity,
161
+ providerEntity: mockProviderEntity,
162
+ contextUser: mockContextUser,
163
+ });
164
+ expect(global_1.MJGlobal.Instance.ClassFactory.CreateInstance).toHaveBeenCalledWith(FileStorageBase_1.FileStorageBase, 'TestDriver');
165
+ });
166
+ it('should throw an error if driver creation fails', async () => {
167
+ global_1.MJGlobal.Instance.ClassFactory.CreateInstance.mockReturnValue(null);
168
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
169
+ await expect(initializeDriverWithAccountCredentials({
170
+ accountEntity: mockAccountEntity,
171
+ providerEntity: mockProviderEntity,
172
+ contextUser: mockContextUser,
173
+ })).rejects.toThrow(/Failed to create storage driver/);
174
+ });
175
+ });
176
+ describe('account information', () => {
177
+ it('should pass accountId from the account entity to the driver', async () => {
178
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
179
+ await initializeDriverWithAccountCredentials({
180
+ accountEntity: mockAccountEntity,
181
+ providerEntity: mockProviderEntity,
182
+ contextUser: mockContextUser,
183
+ });
184
+ expect(mockDriver.initializeCalledWith).toBeDefined();
185
+ expect(mockDriver.initializeCalledWith.accountId).toBe('account-123');
186
+ });
187
+ it('should pass accountName from the account entity to the driver', async () => {
188
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
189
+ await initializeDriverWithAccountCredentials({
190
+ accountEntity: mockAccountEntity,
191
+ providerEntity: mockProviderEntity,
192
+ contextUser: mockContextUser,
193
+ });
194
+ expect(mockDriver.initializeCalledWith).toBeDefined();
195
+ expect(mockDriver.initializeCalledWith.accountName).toBe('Test Storage Account');
196
+ });
197
+ });
198
+ describe('credential handling', () => {
199
+ it('should use Credential Engine when account has a CredentialID', async () => {
200
+ const { CredentialEngine } = await Promise.resolve().then(() => __importStar(require('@memberjunction/credentials')));
201
+ mockAccountEntity.CredentialID = 'credential-456';
202
+ // Setup credential engine mocks
203
+ CredentialEngine.Instance.getCredentialById.mockReturnValue({
204
+ ID: 'credential-456',
205
+ Name: 'Test Credential',
206
+ });
207
+ CredentialEngine.Instance.getCredential.mockResolvedValue({
208
+ values: {
209
+ accessKey: 'test-access-key',
210
+ secretKey: 'test-secret-key',
211
+ bucket: 'test-bucket',
212
+ },
213
+ });
214
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
215
+ await initializeDriverWithAccountCredentials({
216
+ accountEntity: mockAccountEntity,
217
+ providerEntity: mockProviderEntity,
218
+ contextUser: mockContextUser,
219
+ });
220
+ // Verify Credential Engine was configured
221
+ expect(CredentialEngine.Instance.Config).toHaveBeenCalledWith(false, mockContextUser);
222
+ // Verify credential was looked up by ID
223
+ expect(CredentialEngine.Instance.getCredentialById).toHaveBeenCalledWith('credential-456');
224
+ // Verify getCredential was called with correct parameters
225
+ expect(CredentialEngine.Instance.getCredential).toHaveBeenCalledWith('Test Credential', expect.objectContaining({
226
+ credentialId: 'credential-456',
227
+ contextUser: mockContextUser,
228
+ subsystem: 'FileStorage',
229
+ }));
230
+ });
231
+ it('should merge credential values with account info in driver config', async () => {
232
+ const { CredentialEngine } = await Promise.resolve().then(() => __importStar(require('@memberjunction/credentials')));
233
+ mockAccountEntity.CredentialID = 'credential-456';
234
+ CredentialEngine.Instance.getCredentialById.mockReturnValue({
235
+ ID: 'credential-456',
236
+ Name: 'Test Credential',
237
+ });
238
+ CredentialEngine.Instance.getCredential.mockResolvedValue({
239
+ values: {
240
+ accessKey: 'decrypted-access-key',
241
+ secretKey: 'decrypted-secret-key',
242
+ region: 'us-west-2',
243
+ },
244
+ });
245
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
246
+ await initializeDriverWithAccountCredentials({
247
+ accountEntity: mockAccountEntity,
248
+ providerEntity: mockProviderEntity,
249
+ contextUser: mockContextUser,
250
+ });
251
+ // Verify driver was initialized with merged config
252
+ expect(mockDriver.initializeCalledWith).toMatchObject({
253
+ accountId: 'account-123',
254
+ accountName: 'Test Storage Account',
255
+ accessKey: 'decrypted-access-key',
256
+ secretKey: 'decrypted-secret-key',
257
+ region: 'us-west-2',
258
+ });
259
+ // Verify that onTokenRefresh callback was added
260
+ expect(mockDriver.initializeCalledWith.onTokenRefresh).toBeDefined();
261
+ expect(typeof mockDriver.initializeCalledWith.onTokenRefresh).toBe('function');
262
+ });
263
+ it('should throw error if credential lookup fails', async () => {
264
+ const { CredentialEngine } = await Promise.resolve().then(() => __importStar(require('@memberjunction/credentials')));
265
+ mockAccountEntity.CredentialID = 'credential-456';
266
+ // Return null to simulate credential not found
267
+ CredentialEngine.Instance.getCredentialById.mockReturnValue(null);
268
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
269
+ await expect(initializeDriverWithAccountCredentials({
270
+ accountEntity: mockAccountEntity,
271
+ providerEntity: mockProviderEntity,
272
+ contextUser: mockContextUser,
273
+ })).rejects.toThrow(/Credential with ID credential-456 not found/);
274
+ });
275
+ });
276
+ describe('fallback to provider configuration', () => {
277
+ it('should use provider Configuration when no CredentialID', async () => {
278
+ mockAccountEntity.CredentialID = null;
279
+ mockProviderEntity.Configuration = JSON.stringify({
280
+ defaultBucket: 'provider-default-bucket',
281
+ defaultRegion: 'us-east-1',
282
+ });
283
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
284
+ await initializeDriverWithAccountCredentials({
285
+ accountEntity: mockAccountEntity,
286
+ providerEntity: mockProviderEntity,
287
+ contextUser: mockContextUser,
288
+ });
289
+ // Verify driver was initialized with provider config merged with account info
290
+ expect(mockDriver.initializeCalledWith).toEqual({
291
+ accountId: 'account-123',
292
+ accountName: 'Test Storage Account',
293
+ defaultBucket: 'provider-default-bucket',
294
+ defaultRegion: 'us-east-1',
295
+ });
296
+ });
297
+ it('should initialize with just account info when no credential or provider config', async () => {
298
+ mockAccountEntity.CredentialID = null;
299
+ mockProviderEntity.Configuration = null;
300
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
301
+ await initializeDriverWithAccountCredentials({
302
+ accountEntity: mockAccountEntity,
303
+ providerEntity: mockProviderEntity,
304
+ contextUser: mockContextUser,
305
+ });
306
+ // Verify driver was initialized with only account info
307
+ expect(mockDriver.initializeCalledWith).toEqual({
308
+ accountId: 'account-123',
309
+ accountName: 'Test Storage Account',
310
+ });
311
+ });
312
+ });
313
+ describe('return value', () => {
314
+ it('should return the initialized driver', async () => {
315
+ const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
316
+ const result = await initializeDriverWithAccountCredentials({
317
+ accountEntity: mockAccountEntity,
318
+ providerEntity: mockProviderEntity,
319
+ contextUser: mockContextUser,
320
+ });
321
+ expect(result).toBe(mockDriver);
322
+ expect(mockDriver.IsConfigured).toBe(true);
323
+ });
324
+ });
325
+ });
326
+ //# sourceMappingURL=util.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.test.js","sourceRoot":"","sources":["../../src/__tests__/util.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,QAAA,MAAM,sBAAsB;IAC1B;;;OAGG;;;;;;;;;;;;;;;;;;;;IASH;;;OAGG;;;;;;;;;;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;;;;;IAQH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;IAaH;;;OAGG;;;;;;;;;;;;;;;;;;;;IASH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;IAUH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASH,CAAC;AAEH;;GAEG;AACH,QAAA,MAAM,mBAAmB;IACvB;;OAEG;;QAjGH;;;WAGG;;;;;;;;;;;;;;;;;;;;QASH;;;WAGG;;;;;;;;;;;;;;;;;QAQH;;;WAGG;;;;;;;;;;;;;;;;;QAQH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;QAaH;;;WAGG;;;;;;;;;;;;;;;;;;;;QASH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;QAUH;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBH,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAI5E;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAgFhD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACtE,QAAQ,EAAE,CAAC,GACV,sBAAsB,CAAC,CAAC,CAAC,CAG3B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,QAAA,MAAM,sBAAsB;IAC1B;;;OAGG;;;;;;;;;;;;;;;;;;;;IAWH;;;OAGG;;;;;;;;;;;;;;;;;IAUH;;;OAGG;;;;;;;;;;;;;;;;;IAUH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;IAeH;;;OAGG;;;;;;;;;;;;;;;;;;;;IAWH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;IAYH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWH,CAAC;AAEH;;GAEG;AACH,QAAA,MAAM,mBAAmB;IACvB;;OAEG;;QA/GH;;;WAGG;;;;;;;;;;;;;;;;;;;;QAWH;;;WAGG;;;;;;;;;;;;;;;;;QAUH;;;WAGG;;;;;;;;;;;;;;;;;QAUH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;QAeH;;;WAGG;;;;;;;;;;;;;;;;;;;;QAWH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;QAYH;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBH,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAI5E;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAgFhD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,QAAQ,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAGhH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}