latchkey 2.21.0 → 3.0.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.
- package/README.md +36 -4
- package/dist/skills/generic/latchkey/SKILL.md +21 -0
- package/dist/skills/openclaw/latchkey/SKILL.md +21 -0
- package/dist/src/apiCredentials/account.d.ts +28 -0
- package/dist/src/apiCredentials/account.d.ts.map +1 -0
- package/dist/src/apiCredentials/account.js +49 -0
- package/dist/src/apiCredentials/account.js.map +1 -0
- package/dist/src/apiCredentials/store.d.ts +70 -4
- package/dist/src/apiCredentials/store.d.ts.map +1 -1
- package/dist/src/apiCredentials/store.js +161 -19
- package/dist/src/apiCredentials/store.js.map +1 -1
- package/dist/src/apiCredentials/utils.d.ts +2 -2
- package/dist/src/apiCredentials/utils.d.ts.map +1 -1
- package/dist/src/apiCredentials/utils.js +5 -5
- package/dist/src/apiCredentials/utils.js.map +1 -1
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/cliCommands.d.ts.map +1 -1
- package/dist/src/cliCommands.js +118 -22
- package/dist/src/cliCommands.js.map +1 -1
- package/dist/src/config.d.ts +6 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +8 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/configDataStore.d.ts +3 -0
- package/dist/src/configDataStore.d.ts.map +1 -1
- package/dist/src/configDataStore.js +1 -0
- package/dist/src/configDataStore.js.map +1 -1
- package/dist/src/curl.d.ts +21 -16
- package/dist/src/curl.d.ts.map +1 -1
- package/dist/src/curl.js +17 -24
- package/dist/src/curl.js.map +1 -1
- package/dist/src/curlInjection.d.ts +8 -2
- package/dist/src/curlInjection.d.ts.map +1 -1
- package/dist/src/curlInjection.js +13 -8
- package/dist/src/curlInjection.js.map +1 -1
- package/dist/src/errorMessages.d.ts +2 -2
- package/dist/src/errorMessages.d.ts.map +1 -1
- package/dist/src/errorMessages.js +22 -6
- package/dist/src/errorMessages.js.map +1 -1
- package/dist/src/gateway/gatewayEndpoint.d.ts +1 -1
- package/dist/src/gateway/gatewayEndpoint.d.ts.map +1 -1
- package/dist/src/gateway/gatewayEndpoint.js +3 -1
- package/dist/src/gateway/gatewayEndpoint.js.map +1 -1
- package/dist/src/gateway/latchkeyEndpoint.d.ts +6 -0
- package/dist/src/gateway/latchkeyEndpoint.d.ts.map +1 -1
- package/dist/src/gateway/latchkeyEndpoint.js +6 -4
- package/dist/src/gateway/latchkeyEndpoint.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrations.d.ts +27 -1
- package/dist/src/migrations.d.ts.map +1 -1
- package/dist/src/migrations.js +141 -4
- package/dist/src/migrations.js.map +1 -1
- package/dist/src/oauthUtils.d.ts +2 -2
- package/dist/src/oauthUtils.d.ts.map +1 -1
- package/dist/src/oauthUtils.js +5 -5
- package/dist/src/oauthUtils.js.map +1 -1
- package/dist/src/services/aws.d.ts +1 -0
- package/dist/src/services/aws.d.ts.map +1 -1
- package/dist/src/services/aws.js +13 -0
- package/dist/src/services/aws.js.map +1 -1
- package/dist/src/services/calendly.d.ts +2 -0
- package/dist/src/services/calendly.d.ts.map +1 -1
- package/dist/src/services/calendly.js +7 -0
- package/dist/src/services/calendly.js.map +1 -1
- package/dist/src/services/coolify.d.ts +3 -1
- package/dist/src/services/coolify.d.ts.map +1 -1
- package/dist/src/services/coolify.js +10 -1
- package/dist/src/services/coolify.js.map +1 -1
- package/dist/src/services/core/base.d.ts +43 -1
- package/dist/src/services/core/base.d.ts.map +1 -1
- package/dist/src/services/core/base.js +29 -9
- package/dist/src/services/core/base.js.map +1 -1
- package/dist/src/services/core/registered.d.ts +1 -0
- package/dist/src/services/core/registered.d.ts.map +1 -1
- package/dist/src/services/core/registered.js +5 -0
- package/dist/src/services/core/registered.js.map +1 -1
- package/dist/src/services/discord.d.ts +1 -0
- package/dist/src/services/discord.d.ts.map +1 -1
- package/dist/src/services/discord.js +9 -0
- package/dist/src/services/discord.js.map +1 -1
- package/dist/src/services/dropbox.d.ts +2 -1
- package/dist/src/services/dropbox.d.ts.map +1 -1
- package/dist/src/services/dropbox.js +17 -11
- package/dist/src/services/dropbox.js.map +1 -1
- package/dist/src/services/figma.d.ts +2 -0
- package/dist/src/services/figma.d.ts.map +1 -1
- package/dist/src/services/figma.js +7 -0
- package/dist/src/services/figma.js.map +1 -1
- package/dist/src/services/github.d.ts +1 -0
- package/dist/src/services/github.d.ts.map +1 -1
- package/dist/src/services/github.js +9 -0
- package/dist/src/services/github.js.map +1 -1
- package/dist/src/services/gitlab.d.ts +2 -0
- package/dist/src/services/gitlab.d.ts.map +1 -1
- package/dist/src/services/gitlab.js +9 -0
- package/dist/src/services/gitlab.js.map +1 -1
- package/dist/src/services/google/analytics.d.ts +0 -1
- package/dist/src/services/google/analytics.d.ts.map +1 -1
- package/dist/src/services/google/analytics.js +0 -3
- package/dist/src/services/google/analytics.js.map +1 -1
- package/dist/src/services/google/base.d.ts +11 -0
- package/dist/src/services/google/base.d.ts.map +1 -1
- package/dist/src/services/google/base.js +26 -7
- package/dist/src/services/google/base.js.map +1 -1
- package/dist/src/services/google/calendar.d.ts +0 -1
- package/dist/src/services/google/calendar.d.ts.map +1 -1
- package/dist/src/services/google/calendar.js +0 -3
- package/dist/src/services/google/calendar.js.map +1 -1
- package/dist/src/services/google/directions.d.ts +1 -0
- package/dist/src/services/google/directions.d.ts.map +1 -1
- package/dist/src/services/google/directions.js +5 -0
- package/dist/src/services/google/directions.js.map +1 -1
- package/dist/src/services/google/docs.d.ts +0 -1
- package/dist/src/services/google/docs.d.ts.map +1 -1
- package/dist/src/services/google/docs.js +0 -3
- package/dist/src/services/google/docs.js.map +1 -1
- package/dist/src/services/google/drive.d.ts +0 -1
- package/dist/src/services/google/drive.d.ts.map +1 -1
- package/dist/src/services/google/drive.js +0 -3
- package/dist/src/services/google/drive.js.map +1 -1
- package/dist/src/services/google/gmail.d.ts +0 -1
- package/dist/src/services/google/gmail.d.ts.map +1 -1
- package/dist/src/services/google/gmail.js +0 -3
- package/dist/src/services/google/gmail.js.map +1 -1
- package/dist/src/services/google/people.d.ts +0 -1
- package/dist/src/services/google/people.d.ts.map +1 -1
- package/dist/src/services/google/people.js +0 -3
- package/dist/src/services/google/people.js.map +1 -1
- package/dist/src/services/google/sheets.d.ts +0 -1
- package/dist/src/services/google/sheets.d.ts.map +1 -1
- package/dist/src/services/google/sheets.js +0 -3
- package/dist/src/services/google/sheets.js.map +1 -1
- package/dist/src/services/google/slides.d.ts +0 -1
- package/dist/src/services/google/slides.d.ts.map +1 -1
- package/dist/src/services/google/slides.js +0 -3
- package/dist/src/services/google/slides.js.map +1 -1
- package/dist/src/services/index.d.ts +1 -1
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/linear.d.ts +2 -1
- package/dist/src/services/linear.d.ts.map +1 -1
- package/dist/src/services/linear.js +8 -1
- package/dist/src/services/linear.js.map +1 -1
- package/dist/src/services/mailchimp.d.ts +2 -0
- package/dist/src/services/mailchimp.d.ts.map +1 -1
- package/dist/src/services/mailchimp.js +7 -0
- package/dist/src/services/mailchimp.js.map +1 -1
- package/dist/src/services/notion-mcp.d.ts +3 -2
- package/dist/src/services/notion-mcp.d.ts.map +1 -1
- package/dist/src/services/notion-mcp.js +111 -14
- package/dist/src/services/notion-mcp.js.map +1 -1
- package/dist/src/services/notion.d.ts +2 -0
- package/dist/src/services/notion.d.ts.map +1 -1
- package/dist/src/services/notion.js +17 -0
- package/dist/src/services/notion.js.map +1 -1
- package/dist/src/services/ramp.d.ts +11 -2
- package/dist/src/services/ramp.d.ts.map +1 -1
- package/dist/src/services/ramp.js +35 -9
- package/dist/src/services/ramp.js.map +1 -1
- package/dist/src/services/sentry.d.ts +3 -2
- package/dist/src/services/sentry.d.ts.map +1 -1
- package/dist/src/services/sentry.js +12 -27
- package/dist/src/services/sentry.js.map +1 -1
- package/dist/src/services/slack.d.ts +3 -2
- package/dist/src/services/slack.d.ts.map +1 -1
- package/dist/src/services/slack.js +19 -13
- package/dist/src/services/slack.js.map +1 -1
- package/dist/src/services/stripe.d.ts +7 -0
- package/dist/src/services/stripe.d.ts.map +1 -1
- package/dist/src/services/stripe.js +15 -0
- package/dist/src/services/stripe.js.map +1 -1
- package/dist/src/services/telegram.d.ts +1 -0
- package/dist/src/services/telegram.d.ts.map +1 -1
- package/dist/src/services/telegram.js +7 -0
- package/dist/src/services/telegram.js.map +1 -1
- package/dist/src/services/todoist.d.ts +2 -1
- package/dist/src/services/todoist.d.ts.map +1 -1
- package/dist/src/services/todoist.js +9 -1
- package/dist/src/services/todoist.js.map +1 -1
- package/dist/src/services/umami.d.ts +3 -1
- package/dist/src/services/umami.d.ts.map +1 -1
- package/dist/src/services/umami.js +11 -1
- package/dist/src/services/umami.js.map +1 -1
- package/dist/src/services/yelp.d.ts +1 -0
- package/dist/src/services/yelp.d.ts.map +1 -1
- package/dist/src/services/yelp.js +5 -0
- package/dist/src/services/yelp.js.map +1 -1
- package/dist/src/services/zoom.d.ts +8 -0
- package/dist/src/services/zoom.d.ts.map +1 -1
- package/dist/src/services/zoom.js +16 -0
- package/dist/src/services/zoom.js.map +1 -1
- package/dist/src/sharedOperations.d.ts +30 -10
- package/dist/src/sharedOperations.d.ts.map +1 -1
- package/dist/src/sharedOperations.js +67 -29
- package/dist/src/sharedOperations.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tests/apiCredentialStore.test.js +155 -2
- package/dist/tests/apiCredentialStore.test.js.map +1 -1
- package/dist/tests/apiCredentialsUtils.test.js +1 -1
- package/dist/tests/apiCredentialsUtils.test.js.map +1 -1
- package/dist/tests/cli.test.js +334 -147
- package/dist/tests/cli.test.js.map +1 -1
- package/dist/tests/config.test.js +5 -0
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/gateway.test.js +8 -18
- package/dist/tests/gateway.test.js.map +1 -1
- package/dist/tests/latchkeyEndpoint.test.js +18 -28
- package/dist/tests/latchkeyEndpoint.test.js.map +1 -1
- package/dist/tests/migrations.test.js +299 -39
- package/dist/tests/migrations.test.js.map +1 -1
- package/dist/tests/mockService.d.ts +25 -0
- package/dist/tests/mockService.d.ts.map +1 -0
- package/dist/tests/mockService.js +40 -0
- package/dist/tests/mockService.js.map +1 -0
- package/dist/tests/oauthUtils.test.js +12 -12
- package/dist/tests/oauthUtils.test.js.map +1 -1
- package/dist/tests/serviceAccounts.test.d.ts +12 -0
- package/dist/tests/serviceAccounts.test.d.ts.map +1 -0
- package/dist/tests/serviceAccounts.test.js +278 -0
- package/dist/tests/serviceAccounts.test.js.map +1 -0
- package/dist/tests/sharedOperations.test.js +327 -58
- package/dist/tests/sharedOperations.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,15 +4,17 @@ import { join } from 'node:path';
|
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { EncryptedStorage } from '../src/encryptedStorage.js';
|
|
6
6
|
import { ApiCredentialStore } from '../src/apiCredentials/store.js';
|
|
7
|
-
import {
|
|
7
|
+
import { OAuthCredentials } from '../src/apiCredentials/base.js';
|
|
8
8
|
import { SlackApiCredentials } from '../src/services/slack.js';
|
|
9
|
-
import {
|
|
9
|
+
import { PrepareInputInvalidError, PrepareNotSupportedError, } from '../src/services/core/base.js';
|
|
10
|
+
import { MockService } from './mockService.js';
|
|
10
11
|
import { GOOGLE_GMAIL } from '../src/services/google/gmail.js';
|
|
11
12
|
import { NOTION_MCP } from '../src/services/notion-mcp.js';
|
|
12
13
|
import { RegisteredService } from '../src/services/core/registered.js';
|
|
13
14
|
import { ServiceRegistry } from '../src/serviceRegistry.js';
|
|
15
|
+
import { saveBrowserConfig } from '../src/configDataStore.js';
|
|
14
16
|
import { Config } from '../src/config.js';
|
|
15
|
-
import { servicesList, servicesInfo, authList, authBrowser, authBrowserPrepare, prepareService, UnknownServiceError, PreparationRequiredError, } from '../src/sharedOperations.js';
|
|
17
|
+
import { servicesList, servicesInfo, authList, authBrowser, authBrowserPrepare, prepareService, UnknownServiceError, AccountNotFoundError, PreparationRequiredError, } from '../src/sharedOperations.js';
|
|
16
18
|
import { BrowserFlowsNotSupportedError } from '../src/playwrightUtils.js';
|
|
17
19
|
const TEST_ENCRYPTION_KEY = 'dGVzdGtleXRlc3RrZXl0ZXN0a2V5dGVzdGtleXRlc3Q=';
|
|
18
20
|
function writeSecureFile(path, content) {
|
|
@@ -20,25 +22,7 @@ function writeSecureFile(path, content) {
|
|
|
20
22
|
storage.writeFile(path, content);
|
|
21
23
|
}
|
|
22
24
|
function createMockService(overrides = {}) {
|
|
23
|
-
return
|
|
24
|
-
name: 'slack',
|
|
25
|
-
displayName: 'Slack',
|
|
26
|
-
baseApiUrls: ['https://slack.com/api/'],
|
|
27
|
-
loginUrl: 'https://slack.com/signin',
|
|
28
|
-
info: 'Test info for Slack service.',
|
|
29
|
-
credentialCheckCurlArguments: ['https://slack.com/api/auth.test'],
|
|
30
|
-
checkApiCredentials: vi.fn().mockResolvedValue(ApiCredentialStatus.Valid),
|
|
31
|
-
setCredentialsExample(serviceName) {
|
|
32
|
-
return `latchkey auth set ${serviceName} -H "Authorization: Bearer xoxb-your-token"`;
|
|
33
|
-
},
|
|
34
|
-
getCredentialsNoCurl() {
|
|
35
|
-
throw new NoCurlCredentialsNotSupportedError('slack');
|
|
36
|
-
},
|
|
37
|
-
getSession: vi.fn().mockReturnValue({
|
|
38
|
-
login: vi.fn().mockResolvedValue(new SlackApiCredentials('xoxc-test-token', 'test-cookie')),
|
|
39
|
-
}),
|
|
40
|
-
...overrides,
|
|
41
|
-
};
|
|
25
|
+
return Object.assign(new MockService(), overrides);
|
|
42
26
|
}
|
|
43
27
|
function createMockConfig(overrides = {}) {
|
|
44
28
|
const defaultConfig = new Config(() => undefined);
|
|
@@ -55,7 +39,9 @@ describe('operations', () => {
|
|
|
55
39
|
});
|
|
56
40
|
function createApiCredentialStore(credentialsData = {}) {
|
|
57
41
|
const storePath = join(tempDir, 'credentials.json');
|
|
58
|
-
|
|
42
|
+
// Store credentials under the default account, matching the on-disk layout.
|
|
43
|
+
const nestedCredentials = Object.fromEntries(Object.entries(credentialsData).map(([service, creds]) => [service, { '': creds }]));
|
|
44
|
+
writeSecureFile(storePath, JSON.stringify({ credentials: nestedCredentials }));
|
|
59
45
|
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
60
46
|
return new ApiCredentialStore(storePath, encryptedStorage);
|
|
61
47
|
}
|
|
@@ -110,7 +96,7 @@ describe('operations', () => {
|
|
|
110
96
|
expect(info.baseApiUrls).toEqual(['https://slack.com/api/']);
|
|
111
97
|
expect(info.authOptions).toContain('browser');
|
|
112
98
|
expect(info.authOptions).toContain('set');
|
|
113
|
-
expect(info.
|
|
99
|
+
expect(info.credentials).toEqual({});
|
|
114
100
|
expect(info.developerNotes).toBe('Test info for Slack service.');
|
|
115
101
|
});
|
|
116
102
|
it('should throw UnknownServiceError for unknown service', async () => {
|
|
@@ -136,6 +122,19 @@ describe('operations', () => {
|
|
|
136
122
|
const info = await servicesInfo(registry, store, config, 'my-gitlab');
|
|
137
123
|
expect(info.type).toBe('user-registered');
|
|
138
124
|
});
|
|
125
|
+
it('should return stored credentials keyed by account', async () => {
|
|
126
|
+
const service = createMockService();
|
|
127
|
+
const registry = new ServiceRegistry([service]);
|
|
128
|
+
const store = createApiCredentialStore();
|
|
129
|
+
store.save('slack', new SlackApiCredentials('default-token', 'default-cookie'));
|
|
130
|
+
store.save('slack', new SlackApiCredentials('work-token', 'work-cookie'), 'work@example.com');
|
|
131
|
+
const config = createMockConfig();
|
|
132
|
+
const info = await servicesInfo(registry, store, config, 'slack');
|
|
133
|
+
expect(info.credentials).toEqual({
|
|
134
|
+
'': { credentialType: 'slack', credentialStatus: 'valid' },
|
|
135
|
+
'work@example.com': { credentialType: 'slack', credentialStatus: 'valid' },
|
|
136
|
+
});
|
|
137
|
+
});
|
|
139
138
|
});
|
|
140
139
|
describe('authList', () => {
|
|
141
140
|
it('should return stored credentials with status', async () => {
|
|
@@ -146,8 +145,10 @@ describe('operations', () => {
|
|
|
146
145
|
});
|
|
147
146
|
const result = await authList(registry, store, createMockConfig());
|
|
148
147
|
expect(result.slack).toEqual({
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
'': {
|
|
149
|
+
credentialType: 'slack',
|
|
150
|
+
credentialStatus: 'valid',
|
|
151
|
+
},
|
|
151
152
|
});
|
|
152
153
|
});
|
|
153
154
|
it('should return empty object when no credentials stored', async () => {
|
|
@@ -163,8 +164,10 @@ describe('operations', () => {
|
|
|
163
164
|
});
|
|
164
165
|
const result = await authList(registry, store, createMockConfig());
|
|
165
166
|
expect(result.unknown).toEqual({
|
|
166
|
-
|
|
167
|
-
|
|
167
|
+
'': {
|
|
168
|
+
credentialType: 'rawCurl',
|
|
169
|
+
credentialStatus: 'valid',
|
|
170
|
+
},
|
|
168
171
|
});
|
|
169
172
|
});
|
|
170
173
|
});
|
|
@@ -197,6 +200,223 @@ describe('operations', () => {
|
|
|
197
200
|
const config = createMockConfig();
|
|
198
201
|
await expect(authBrowser(registry, store, encryptedStorage, config, 'slack')).rejects.toThrow(PreparationRequiredError);
|
|
199
202
|
});
|
|
203
|
+
it('stores credentials under the account reported by the login flow', async () => {
|
|
204
|
+
const originalPlatform = process.platform;
|
|
205
|
+
// Pretend we are on macOS so the graphical-environment check passes
|
|
206
|
+
// without relying on DISPLAY being set.
|
|
207
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
208
|
+
try {
|
|
209
|
+
const login = vi.fn().mockResolvedValue({
|
|
210
|
+
credentials: new SlackApiCredentials('xoxc-token', 'cookie'),
|
|
211
|
+
account: 'user@example.com',
|
|
212
|
+
});
|
|
213
|
+
const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
|
|
214
|
+
const registry = new ServiceRegistry([service]);
|
|
215
|
+
const store = createApiCredentialStore();
|
|
216
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
217
|
+
const config = createMockConfig({ directory: tempDir });
|
|
218
|
+
// A valid browser config is required for the login flow to start; point
|
|
219
|
+
// it at any existing file.
|
|
220
|
+
saveBrowserConfig(config.configPath, {
|
|
221
|
+
executablePath: process.execPath,
|
|
222
|
+
source: 'system',
|
|
223
|
+
discoveredAt: new Date().toISOString(),
|
|
224
|
+
});
|
|
225
|
+
const result = await authBrowser(registry, store, encryptedStorage, config, 'slack');
|
|
226
|
+
expect(result).toEqual({ account: 'user@example.com' });
|
|
227
|
+
expect(store.listAccounts('slack')).toEqual(['user@example.com']);
|
|
228
|
+
expect(store.get('slack', 'user@example.com')).toBeInstanceOf(SlackApiCredentials);
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
it('omits the browser state path when ephemeral browser mode is enabled', async () => {
|
|
235
|
+
const originalPlatform = process.platform;
|
|
236
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
237
|
+
try {
|
|
238
|
+
const login = vi.fn().mockResolvedValue({
|
|
239
|
+
credentials: new SlackApiCredentials('xoxc-token', 'cookie'),
|
|
240
|
+
account: 'user@example.com',
|
|
241
|
+
});
|
|
242
|
+
const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
|
|
243
|
+
const registry = new ServiceRegistry([service]);
|
|
244
|
+
const store = createApiCredentialStore();
|
|
245
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
246
|
+
const config = createMockConfig({
|
|
247
|
+
directory: tempDir,
|
|
248
|
+
browserEphemeral: true,
|
|
249
|
+
});
|
|
250
|
+
saveBrowserConfig(config.configPath, {
|
|
251
|
+
executablePath: process.execPath,
|
|
252
|
+
source: 'system',
|
|
253
|
+
discoveredAt: new Date().toISOString(),
|
|
254
|
+
});
|
|
255
|
+
await authBrowser(registry, store, encryptedStorage, config, 'slack');
|
|
256
|
+
const launchOptions = login.mock.calls[0]?.[1];
|
|
257
|
+
expect(launchOptions.browserStatePath).toBeUndefined();
|
|
258
|
+
}
|
|
259
|
+
finally {
|
|
260
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
it('passes the browser state path when ephemeral browser mode is disabled', async () => {
|
|
264
|
+
const originalPlatform = process.platform;
|
|
265
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
266
|
+
try {
|
|
267
|
+
const login = vi.fn().mockResolvedValue({
|
|
268
|
+
credentials: new SlackApiCredentials('xoxc-token', 'cookie'),
|
|
269
|
+
account: 'user@example.com',
|
|
270
|
+
});
|
|
271
|
+
const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
|
|
272
|
+
const registry = new ServiceRegistry([service]);
|
|
273
|
+
const store = createApiCredentialStore();
|
|
274
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
275
|
+
const config = createMockConfig({ directory: tempDir });
|
|
276
|
+
saveBrowserConfig(config.configPath, {
|
|
277
|
+
executablePath: process.execPath,
|
|
278
|
+
source: 'system',
|
|
279
|
+
discoveredAt: new Date().toISOString(),
|
|
280
|
+
});
|
|
281
|
+
await authBrowser(registry, store, encryptedStorage, config, 'slack');
|
|
282
|
+
const launchOptions = login.mock.calls[0]?.[1];
|
|
283
|
+
expect(launchOptions.browserStatePath).toBe(config.browserStatePath);
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
it('logs in to an additional account without ambiguity', async () => {
|
|
290
|
+
const originalPlatform = process.platform;
|
|
291
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
292
|
+
try {
|
|
293
|
+
const login = vi.fn().mockResolvedValue({
|
|
294
|
+
credentials: new SlackApiCredentials('second-token', 'second-cookie'),
|
|
295
|
+
account: 'second@example.com',
|
|
296
|
+
});
|
|
297
|
+
const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
|
|
298
|
+
const registry = new ServiceRegistry([service]);
|
|
299
|
+
const store = createApiCredentialStore();
|
|
300
|
+
store.save('slack', new SlackApiCredentials('first-token', 'first-cookie'), 'first@example.com');
|
|
301
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
302
|
+
const config = createMockConfig({ directory: tempDir });
|
|
303
|
+
saveBrowserConfig(config.configPath, {
|
|
304
|
+
executablePath: process.execPath,
|
|
305
|
+
source: 'system',
|
|
306
|
+
discoveredAt: new Date().toISOString(),
|
|
307
|
+
});
|
|
308
|
+
const result = await authBrowser(registry, store, encryptedStorage, config, 'slack');
|
|
309
|
+
expect(result).toEqual({ account: 'second@example.com' });
|
|
310
|
+
expect(store.listAccounts('slack')).toEqual(['first@example.com', 'second@example.com']);
|
|
311
|
+
}
|
|
312
|
+
finally {
|
|
313
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
it('uses the stored preparation for login and keeps it for future logins', async () => {
|
|
317
|
+
const originalPlatform = process.platform;
|
|
318
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
319
|
+
try {
|
|
320
|
+
const preparedClient = new OAuthCredentials('client-id', 'client-secret');
|
|
321
|
+
const fullCredentials = new OAuthCredentials('client-id', 'client-secret', 'access-token', 'refresh-token');
|
|
322
|
+
const login = vi.fn().mockResolvedValue({
|
|
323
|
+
credentials: fullCredentials,
|
|
324
|
+
account: 'user@example.com',
|
|
325
|
+
});
|
|
326
|
+
const service = createMockService({
|
|
327
|
+
getSession: vi.fn().mockReturnValue({ prepare: vi.fn(), login }),
|
|
328
|
+
});
|
|
329
|
+
const registry = new ServiceRegistry([service]);
|
|
330
|
+
const store = createApiCredentialStore();
|
|
331
|
+
store.savePreparation('slack', preparedClient);
|
|
332
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
333
|
+
const config = createMockConfig({ directory: tempDir });
|
|
334
|
+
saveBrowserConfig(config.configPath, {
|
|
335
|
+
executablePath: process.execPath,
|
|
336
|
+
source: 'system',
|
|
337
|
+
discoveredAt: new Date().toISOString(),
|
|
338
|
+
});
|
|
339
|
+
const result = await authBrowser(registry, store, encryptedStorage, config, 'slack');
|
|
340
|
+
expect(result).toEqual({ account: 'user@example.com' });
|
|
341
|
+
expect(store.listAccounts('slack')).toEqual(['user@example.com']);
|
|
342
|
+
const reusedCredentials = login.mock.calls[0]?.[2];
|
|
343
|
+
expect(reusedCredentials.clientId).toBe('client-id');
|
|
344
|
+
// The preparation stays around so another account can log in with the
|
|
345
|
+
// same client.
|
|
346
|
+
expect(store.getPreparation('slack')).toBeInstanceOf(OAuthCredentials);
|
|
347
|
+
}
|
|
348
|
+
finally {
|
|
349
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
it("reuses the named account's credentials when an account is given", async () => {
|
|
353
|
+
const originalPlatform = process.platform;
|
|
354
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
355
|
+
try {
|
|
356
|
+
const existingCredentials = new OAuthCredentials('client-id', 'client-secret', 'old-access-token', 'old-refresh-token');
|
|
357
|
+
const login = vi.fn().mockResolvedValue({
|
|
358
|
+
credentials: new OAuthCredentials('client-id', 'client-secret', 'new-access-token', 'new-refresh-token'),
|
|
359
|
+
account: 'second@example.com',
|
|
360
|
+
});
|
|
361
|
+
const service = createMockService({
|
|
362
|
+
getSession: vi.fn().mockReturnValue({ prepare: vi.fn(), login }),
|
|
363
|
+
});
|
|
364
|
+
const registry = new ServiceRegistry([service]);
|
|
365
|
+
const store = createApiCredentialStore();
|
|
366
|
+
store.save('slack', existingCredentials, 'first@example.com');
|
|
367
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
368
|
+
const config = createMockConfig({ directory: tempDir });
|
|
369
|
+
saveBrowserConfig(config.configPath, {
|
|
370
|
+
executablePath: process.execPath,
|
|
371
|
+
source: 'system',
|
|
372
|
+
discoveredAt: new Date().toISOString(),
|
|
373
|
+
});
|
|
374
|
+
const result = await authBrowser(registry, store, encryptedStorage, config, 'slack', 'first@example.com');
|
|
375
|
+
expect(result).toEqual({ account: 'second@example.com' });
|
|
376
|
+
expect(store.listAccounts('slack')).toEqual(['first@example.com', 'second@example.com']);
|
|
377
|
+
const reusedCredentials = login.mock.calls[0]?.[2];
|
|
378
|
+
expect(reusedCredentials.accessToken).toBe('old-access-token');
|
|
379
|
+
}
|
|
380
|
+
finally {
|
|
381
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
it('throws AccountNotFoundError when the given account has no credentials', async () => {
|
|
385
|
+
const service = createMockService({
|
|
386
|
+
getSession: vi.fn().mockReturnValue({ login: vi.fn() }),
|
|
387
|
+
});
|
|
388
|
+
const registry = new ServiceRegistry([service]);
|
|
389
|
+
const store = createApiCredentialStore();
|
|
390
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
391
|
+
const config = createMockConfig();
|
|
392
|
+
await expect(authBrowser(registry, store, encryptedStorage, config, 'slack', 'missing@example.com')).rejects.toThrow(AccountNotFoundError);
|
|
393
|
+
});
|
|
394
|
+
it('keeps complete default-account credentials when a login adds a named account', async () => {
|
|
395
|
+
const originalPlatform = process.platform;
|
|
396
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
397
|
+
try {
|
|
398
|
+
const login = vi.fn().mockResolvedValue({
|
|
399
|
+
credentials: new SlackApiCredentials('named-token', 'named-cookie'),
|
|
400
|
+
account: 'user@example.com',
|
|
401
|
+
});
|
|
402
|
+
const service = createMockService({ getSession: vi.fn().mockReturnValue({ login }) });
|
|
403
|
+
const registry = new ServiceRegistry([service]);
|
|
404
|
+
const store = createApiCredentialStore();
|
|
405
|
+
store.save('slack', new SlackApiCredentials('default-token', 'default-cookie'), '');
|
|
406
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
407
|
+
const config = createMockConfig({ directory: tempDir });
|
|
408
|
+
saveBrowserConfig(config.configPath, {
|
|
409
|
+
executablePath: process.execPath,
|
|
410
|
+
source: 'system',
|
|
411
|
+
discoveredAt: new Date().toISOString(),
|
|
412
|
+
});
|
|
413
|
+
await authBrowser(registry, store, encryptedStorage, config, 'slack');
|
|
414
|
+
expect(store.listAccounts('slack')).toEqual(['', 'user@example.com']);
|
|
415
|
+
}
|
|
416
|
+
finally {
|
|
417
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
418
|
+
}
|
|
419
|
+
});
|
|
200
420
|
});
|
|
201
421
|
describe('authBrowserPrepare', () => {
|
|
202
422
|
it('should throw UnknownServiceError for unknown service', async () => {
|
|
@@ -220,21 +440,39 @@ describe('operations', () => {
|
|
|
220
440
|
const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
|
|
221
441
|
expect(result.alreadyPrepared).toBe(true);
|
|
222
442
|
});
|
|
223
|
-
it('
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
443
|
+
it('re-runs the prepare flow when a preparation already exists', async () => {
|
|
444
|
+
const originalPlatform = process.platform;
|
|
445
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
446
|
+
try {
|
|
447
|
+
const prepare = vi
|
|
448
|
+
.fn()
|
|
449
|
+
.mockResolvedValue(new OAuthCredentials('new-client-id', 'new-client-secret'));
|
|
450
|
+
const service = createMockService({
|
|
451
|
+
getSession: vi.fn().mockReturnValue({
|
|
452
|
+
prepare,
|
|
453
|
+
login: vi.fn(),
|
|
454
|
+
}),
|
|
455
|
+
});
|
|
456
|
+
const registry = new ServiceRegistry([service]);
|
|
457
|
+
const store = createApiCredentialStore();
|
|
458
|
+
store.savePreparation('slack', new OAuthCredentials('client-id', 'client-secret'));
|
|
459
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
460
|
+
const config = createMockConfig({ directory: tempDir });
|
|
461
|
+
saveBrowserConfig(config.configPath, {
|
|
462
|
+
executablePath: process.execPath,
|
|
463
|
+
source: 'system',
|
|
464
|
+
discoveredAt: new Date().toISOString(),
|
|
465
|
+
});
|
|
466
|
+
const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
|
|
467
|
+
expect(result).toEqual({ alreadyPrepared: false });
|
|
468
|
+
expect(prepare).toHaveBeenCalledOnce();
|
|
469
|
+
// The new preparation overwrites the previous one.
|
|
470
|
+
const preparation = store.getPreparation('slack');
|
|
471
|
+
expect(preparation.clientId).toBe('new-client-id');
|
|
472
|
+
}
|
|
473
|
+
finally {
|
|
474
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
475
|
+
}
|
|
238
476
|
});
|
|
239
477
|
it('should return alreadyPrepared true when service has no getSession', async () => {
|
|
240
478
|
const service = createMockService({ getSession: undefined });
|
|
@@ -245,29 +483,60 @@ describe('operations', () => {
|
|
|
245
483
|
const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
|
|
246
484
|
expect(result.alreadyPrepared).toBe(true);
|
|
247
485
|
});
|
|
486
|
+
it("stores the prepared credentials as the service's preparation", async () => {
|
|
487
|
+
const originalPlatform = process.platform;
|
|
488
|
+
Object.defineProperty(process, 'platform', { value: 'darwin' });
|
|
489
|
+
try {
|
|
490
|
+
const prepare = vi
|
|
491
|
+
.fn()
|
|
492
|
+
.mockResolvedValue(new OAuthCredentials('client-id', 'client-secret'));
|
|
493
|
+
const service = createMockService({
|
|
494
|
+
getSession: vi.fn().mockReturnValue({ prepare, login: vi.fn() }),
|
|
495
|
+
});
|
|
496
|
+
const registry = new ServiceRegistry([service]);
|
|
497
|
+
const store = createApiCredentialStore();
|
|
498
|
+
const encryptedStorage = new EncryptedStorage(TEST_ENCRYPTION_KEY);
|
|
499
|
+
const config = createMockConfig({ directory: tempDir });
|
|
500
|
+
saveBrowserConfig(config.configPath, {
|
|
501
|
+
executablePath: process.execPath,
|
|
502
|
+
source: 'system',
|
|
503
|
+
discoveredAt: new Date().toISOString(),
|
|
504
|
+
});
|
|
505
|
+
const result = await authBrowserPrepare(registry, store, encryptedStorage, config, 'slack');
|
|
506
|
+
expect(result).toEqual({ alreadyPrepared: false });
|
|
507
|
+
expect(store.getPreparation('slack')).toBeInstanceOf(OAuthCredentials);
|
|
508
|
+
// Preparations are not account credentials.
|
|
509
|
+
expect(store.listAccounts('slack')).toEqual([]);
|
|
510
|
+
expect(prepare).toHaveBeenCalledOnce();
|
|
511
|
+
}
|
|
512
|
+
finally {
|
|
513
|
+
Object.defineProperty(process, 'platform', { value: originalPlatform });
|
|
514
|
+
}
|
|
515
|
+
});
|
|
248
516
|
});
|
|
249
517
|
describe('prepareService', () => {
|
|
250
|
-
it('stores token-less OAuth
|
|
518
|
+
it('stores a token-less OAuth preparation for a Google service and returns the result', () => {
|
|
251
519
|
const registry = new ServiceRegistry([GOOGLE_GMAIL]);
|
|
252
520
|
const store = createApiCredentialStore();
|
|
253
521
|
const result = prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'cid', clientSecret: 'csecret' }));
|
|
254
522
|
expect(result).toEqual({ serviceName: 'google-gmail', credentialType: 'oauth' });
|
|
255
|
-
const stored = store.
|
|
523
|
+
const stored = store.getPreparation('google-gmail');
|
|
256
524
|
expect(stored).toBeInstanceOf(OAuthCredentials);
|
|
257
525
|
const oauth = stored;
|
|
258
526
|
expect(oauth.clientId).toBe('cid');
|
|
259
527
|
expect(oauth.clientSecret).toBe('csecret');
|
|
260
528
|
expect(oauth.accessToken).toBeUndefined();
|
|
261
529
|
expect(oauth.refreshToken).toBeUndefined();
|
|
530
|
+
// Preparations do not touch the credentials section.
|
|
531
|
+
expect(store.get('google-gmail')).toBeNull();
|
|
262
532
|
});
|
|
263
|
-
it('overwrites existing
|
|
533
|
+
it('overwrites an existing preparation unconditionally', () => {
|
|
264
534
|
const registry = new ServiceRegistry([GOOGLE_GMAIL]);
|
|
265
|
-
const store = createApiCredentialStore(
|
|
266
|
-
|
|
267
|
-
});
|
|
535
|
+
const store = createApiCredentialStore();
|
|
536
|
+
store.savePreparation('google-gmail', new OAuthCredentials('old-id', 'old-secret'));
|
|
268
537
|
prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'new-id', clientSecret: 'new-secret' }));
|
|
269
|
-
expect(store.
|
|
270
|
-
expect(store.
|
|
538
|
+
expect(store.getPreparation('google-gmail').clientId).toBe('new-id');
|
|
539
|
+
expect(store.getPreparation('google-gmail').clientSecret).toBe('new-secret');
|
|
271
540
|
});
|
|
272
541
|
it('throws UnknownServiceError for an unknown service', () => {
|
|
273
542
|
const registry = new ServiceRegistry([GOOGLE_GMAIL]);
|
|
@@ -278,25 +547,25 @@ describe('operations', () => {
|
|
|
278
547
|
const registry = new ServiceRegistry([createMockService({ name: 'slack' })]);
|
|
279
548
|
const store = createApiCredentialStore();
|
|
280
549
|
expect(() => prepareService(registry, store, 'slack', JSON.stringify({ clientId: 'a', clientSecret: 'b' }))).toThrow(PrepareNotSupportedError);
|
|
281
|
-
expect(store.
|
|
550
|
+
expect(store.getPreparation('slack')).toBeNull();
|
|
282
551
|
});
|
|
283
552
|
it('rejects malformed JSON without storing anything', () => {
|
|
284
553
|
const registry = new ServiceRegistry([GOOGLE_GMAIL]);
|
|
285
554
|
const store = createApiCredentialStore();
|
|
286
555
|
expect(() => prepareService(registry, store, 'google-gmail', '{not valid')).toThrow(PrepareInputInvalidError);
|
|
287
|
-
expect(store.
|
|
556
|
+
expect(store.getPreparation('google-gmail')).toBeNull();
|
|
288
557
|
});
|
|
289
558
|
it('rejects input missing required fields without storing anything', () => {
|
|
290
559
|
const registry = new ServiceRegistry([GOOGLE_GMAIL]);
|
|
291
560
|
const store = createApiCredentialStore();
|
|
292
561
|
expect(() => prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'only-id' }))).toThrow(PrepareInputInvalidError);
|
|
293
|
-
expect(store.
|
|
562
|
+
expect(store.getPreparation('google-gmail')).toBeNull();
|
|
294
563
|
});
|
|
295
564
|
it('rejects unknown keys (strict schema)', () => {
|
|
296
565
|
const registry = new ServiceRegistry([GOOGLE_GMAIL]);
|
|
297
566
|
const store = createApiCredentialStore();
|
|
298
567
|
expect(() => prepareService(registry, store, 'google-gmail', JSON.stringify({ clientId: 'a', clientSecret: 'b', extra: 'nope' }))).toThrow(PrepareInputInvalidError);
|
|
299
|
-
expect(store.
|
|
568
|
+
expect(store.getPreparation('google-gmail')).toBeNull();
|
|
300
569
|
});
|
|
301
570
|
it('rejects empty string fields', () => {
|
|
302
571
|
const registry = new ServiceRegistry([GOOGLE_GMAIL]);
|
|
@@ -308,7 +577,7 @@ describe('operations', () => {
|
|
|
308
577
|
const store = createApiCredentialStore();
|
|
309
578
|
const result = prepareService(registry, store, 'notion-mcp', JSON.stringify({ clientId: 'notion-client-id' }));
|
|
310
579
|
expect(result).toEqual({ serviceName: 'notion-mcp', credentialType: 'oauth' });
|
|
311
|
-
const stored = store.
|
|
580
|
+
const stored = store.getPreparation('notion-mcp');
|
|
312
581
|
expect(stored).toBeInstanceOf(OAuthCredentials);
|
|
313
582
|
const oauth = stored;
|
|
314
583
|
expect(oauth.clientId).toBe('notion-client-id');
|
|
@@ -320,13 +589,13 @@ describe('operations', () => {
|
|
|
320
589
|
const registry = new ServiceRegistry([NOTION_MCP]);
|
|
321
590
|
const store = createApiCredentialStore();
|
|
322
591
|
expect(() => prepareService(registry, store, 'notion-mcp', JSON.stringify({ clientId: 'a', clientSecret: 'b' }))).toThrow(PrepareInputInvalidError);
|
|
323
|
-
expect(store.
|
|
592
|
+
expect(store.getPreparation('notion-mcp')).toBeNull();
|
|
324
593
|
});
|
|
325
594
|
it('rejects notion-mcp input missing clientId', () => {
|
|
326
595
|
const registry = new ServiceRegistry([NOTION_MCP]);
|
|
327
596
|
const store = createApiCredentialStore();
|
|
328
597
|
expect(() => prepareService(registry, store, 'notion-mcp', '{}')).toThrow(PrepareInputInvalidError);
|
|
329
|
-
expect(store.
|
|
598
|
+
expect(store.getPreparation('notion-mcp')).toBeNull();
|
|
330
599
|
});
|
|
331
600
|
});
|
|
332
601
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedOperations.test.js","sourceRoot":"","sources":["../../tests/sharedOperations.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sharedOperations.test.js","sourceRoot":"","sources":["../../tests/sharedOperations.test.ts"],"names":[],"mappings":"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"}
|