@google/gemini-cli-core 0.1.11 → 0.1.12
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 +1 -1
- package/dist/google-gemini-cli-core-0.1.11.tgz +0 -0
- package/dist/src/code_assist/oauth2.d.ts +0 -7
- package/dist/src/code_assist/oauth2.js +31 -75
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +66 -27
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +4 -0
- package/dist/src/code_assist/server.js +33 -0
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/config/config.d.ts +5 -0
- package/dist/src/config/config.js +12 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +23 -23
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/core/client.d.ts +3 -1
- package/dist/src/core/client.js +12 -2
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +89 -12
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +2 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/coreToolScheduler.js +1 -1
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/geminiChat.js +2 -2
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +4 -2
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/prompts.js +9 -8
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/turn.d.ts +6 -2
- package/dist/src/core/turn.js +1 -0
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +3 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +50 -28
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +3 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +1 -0
- package/dist/src/telemetry/constants.js +1 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +2 -1
- package/dist/src/telemetry/loggers.js +18 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +27 -7
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +13 -4
- package/dist/src/telemetry/types.js +19 -3
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/tools/mcp-client.js +8 -11
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +46 -1
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/read-file.js +1 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-many-files.js +1 -1
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +21 -10
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.js +6 -1
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +26 -1
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +5 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +2 -1
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +16 -0
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/paths.d.ts +1 -0
- package/dist/src/utils/paths.js +1 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/summarizer.d.ts +25 -0
- package/dist/src/utils/summarizer.js +79 -0
- package/dist/src/utils/summarizer.js.map +1 -0
- package/dist/src/utils/summarizer.test.d.ts +6 -0
- package/dist/src/utils/summarizer.test.js +131 -0
- package/dist/src/utils/summarizer.test.js.map +1 -0
- package/dist/src/utils/user_account.d.ts +9 -0
- package/dist/src/utils/user_account.js +99 -0
- package/dist/src/utils/user_account.js.map +1 -0
- package/dist/src/utils/user_account.test.d.ts +6 -0
- package/dist/src/utils/user_account.test.js +153 -0
- package/dist/src/utils/user_account.test.js.map +1 -0
- package/dist/src/utils/user_id.d.ts +0 -6
- package/dist/src/utils/user_id.js +0 -21
- package/dist/src/utils/user_id.js.map +1 -1
- package/dist/src/utils/user_id.test.js +1 -22
- package/dist/src/utils/user_id.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/google-gemini-cli-core-0.1.10.tgz +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
+
import { cacheGoogleAccount, getCachedGoogleAccount, clearCachedGoogleAccount, getLifetimeGoogleAccounts, } from './user_account.js';
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import * as os from 'node:os';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
vi.mock('os', async (importOriginal) => {
|
|
12
|
+
const os = await importOriginal();
|
|
13
|
+
return {
|
|
14
|
+
...os,
|
|
15
|
+
homedir: vi.fn(),
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
describe('user_account', () => {
|
|
19
|
+
let tempHomeDir;
|
|
20
|
+
const accountsFile = () => path.join(tempHomeDir, '.gemini', 'google_accounts.json');
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
tempHomeDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gemini-cli-test-home-'));
|
|
23
|
+
os.homedir.mockReturnValue(tempHomeDir);
|
|
24
|
+
});
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
fs.rmSync(tempHomeDir, { recursive: true, force: true });
|
|
27
|
+
vi.clearAllMocks();
|
|
28
|
+
});
|
|
29
|
+
describe('cacheGoogleAccount', () => {
|
|
30
|
+
it('should create directory and write initial account file', async () => {
|
|
31
|
+
await cacheGoogleAccount('test1@google.com');
|
|
32
|
+
// Verify Google Account ID was cached
|
|
33
|
+
expect(fs.existsSync(accountsFile())).toBe(true);
|
|
34
|
+
expect(fs.readFileSync(accountsFile(), 'utf-8')).toBe(JSON.stringify({ active: 'test1@google.com', old: [] }, null, 2));
|
|
35
|
+
});
|
|
36
|
+
it('should update active account and move previous to old', async () => {
|
|
37
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
38
|
+
fs.writeFileSync(accountsFile(), JSON.stringify({ active: 'test2@google.com', old: ['test1@google.com'] }, null, 2));
|
|
39
|
+
await cacheGoogleAccount('test3@google.com');
|
|
40
|
+
expect(fs.readFileSync(accountsFile(), 'utf-8')).toBe(JSON.stringify({
|
|
41
|
+
active: 'test3@google.com',
|
|
42
|
+
old: ['test1@google.com', 'test2@google.com'],
|
|
43
|
+
}, null, 2));
|
|
44
|
+
});
|
|
45
|
+
it('should not add a duplicate to the old list', async () => {
|
|
46
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
47
|
+
fs.writeFileSync(accountsFile(), JSON.stringify({ active: 'test1@google.com', old: ['test2@google.com'] }, null, 2));
|
|
48
|
+
await cacheGoogleAccount('test2@google.com');
|
|
49
|
+
await cacheGoogleAccount('test1@google.com');
|
|
50
|
+
expect(fs.readFileSync(accountsFile(), 'utf-8')).toBe(JSON.stringify({ active: 'test1@google.com', old: ['test2@google.com'] }, null, 2));
|
|
51
|
+
});
|
|
52
|
+
it('should handle corrupted JSON by starting fresh', async () => {
|
|
53
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
54
|
+
fs.writeFileSync(accountsFile(), 'not valid json');
|
|
55
|
+
const consoleDebugSpy = vi
|
|
56
|
+
.spyOn(console, 'debug')
|
|
57
|
+
.mockImplementation(() => { });
|
|
58
|
+
await cacheGoogleAccount('test1@google.com');
|
|
59
|
+
expect(consoleDebugSpy).toHaveBeenCalled();
|
|
60
|
+
expect(JSON.parse(fs.readFileSync(accountsFile(), 'utf-8'))).toEqual({
|
|
61
|
+
active: 'test1@google.com',
|
|
62
|
+
old: [],
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('getCachedGoogleAccount', () => {
|
|
67
|
+
it('should return the active account if file exists and is valid', () => {
|
|
68
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
69
|
+
fs.writeFileSync(accountsFile(), JSON.stringify({ active: 'active@google.com', old: [] }, null, 2));
|
|
70
|
+
const account = getCachedGoogleAccount();
|
|
71
|
+
expect(account).toBe('active@google.com');
|
|
72
|
+
});
|
|
73
|
+
it('should return null if file does not exist', () => {
|
|
74
|
+
const account = getCachedGoogleAccount();
|
|
75
|
+
expect(account).toBeNull();
|
|
76
|
+
});
|
|
77
|
+
it('should return null if file is empty', () => {
|
|
78
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
79
|
+
fs.writeFileSync(accountsFile(), '');
|
|
80
|
+
const account = getCachedGoogleAccount();
|
|
81
|
+
expect(account).toBeNull();
|
|
82
|
+
});
|
|
83
|
+
it('should return null and log if file is corrupted', () => {
|
|
84
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
85
|
+
fs.writeFileSync(accountsFile(), '{ "active": "test@google.com"'); // Invalid JSON
|
|
86
|
+
const consoleDebugSpy = vi
|
|
87
|
+
.spyOn(console, 'debug')
|
|
88
|
+
.mockImplementation(() => { });
|
|
89
|
+
const account = getCachedGoogleAccount();
|
|
90
|
+
expect(account).toBeNull();
|
|
91
|
+
expect(consoleDebugSpy).toHaveBeenCalled();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('clearCachedGoogleAccount', () => {
|
|
95
|
+
it('should set active to null and move it to old', async () => {
|
|
96
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
97
|
+
fs.writeFileSync(accountsFile(), JSON.stringify({ active: 'active@google.com', old: ['old1@google.com'] }, null, 2));
|
|
98
|
+
await clearCachedGoogleAccount();
|
|
99
|
+
const stored = JSON.parse(fs.readFileSync(accountsFile(), 'utf-8'));
|
|
100
|
+
expect(stored.active).toBeNull();
|
|
101
|
+
expect(stored.old).toEqual(['old1@google.com', 'active@google.com']);
|
|
102
|
+
});
|
|
103
|
+
it('should handle empty file gracefully', async () => {
|
|
104
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
105
|
+
fs.writeFileSync(accountsFile(), '');
|
|
106
|
+
await clearCachedGoogleAccount();
|
|
107
|
+
const stored = JSON.parse(fs.readFileSync(accountsFile(), 'utf-8'));
|
|
108
|
+
expect(stored.active).toBeNull();
|
|
109
|
+
expect(stored.old).toEqual([]);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe('getLifetimeGoogleAccounts', () => {
|
|
113
|
+
it('should return 0 if the file does not exist', () => {
|
|
114
|
+
expect(getLifetimeGoogleAccounts()).toBe(0);
|
|
115
|
+
});
|
|
116
|
+
it('should return 0 if the file is empty', () => {
|
|
117
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
118
|
+
fs.writeFileSync(accountsFile(), '');
|
|
119
|
+
expect(getLifetimeGoogleAccounts()).toBe(0);
|
|
120
|
+
});
|
|
121
|
+
it('should return 0 if the file is corrupted', () => {
|
|
122
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
123
|
+
fs.writeFileSync(accountsFile(), 'invalid json');
|
|
124
|
+
const consoleDebugSpy = vi
|
|
125
|
+
.spyOn(console, 'debug')
|
|
126
|
+
.mockImplementation(() => { });
|
|
127
|
+
expect(getLifetimeGoogleAccounts()).toBe(0);
|
|
128
|
+
expect(consoleDebugSpy).toHaveBeenCalled();
|
|
129
|
+
});
|
|
130
|
+
it('should return 1 if there is only an active account', () => {
|
|
131
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
132
|
+
fs.writeFileSync(accountsFile(), JSON.stringify({ active: 'test1@google.com', old: [] }));
|
|
133
|
+
expect(getLifetimeGoogleAccounts()).toBe(1);
|
|
134
|
+
});
|
|
135
|
+
it('should correctly count old accounts when active is null', () => {
|
|
136
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
137
|
+
fs.writeFileSync(accountsFile(), JSON.stringify({
|
|
138
|
+
active: null,
|
|
139
|
+
old: ['test1@google.com', 'test2@google.com'],
|
|
140
|
+
}));
|
|
141
|
+
expect(getLifetimeGoogleAccounts()).toBe(2);
|
|
142
|
+
});
|
|
143
|
+
it('should correctly count both active and old accounts', () => {
|
|
144
|
+
fs.mkdirSync(path.dirname(accountsFile()), { recursive: true });
|
|
145
|
+
fs.writeFileSync(accountsFile(), JSON.stringify({
|
|
146
|
+
active: 'test3@google.com',
|
|
147
|
+
old: ['test1@google.com', 'test2@google.com'],
|
|
148
|
+
}));
|
|
149
|
+
expect(getLifetimeGoogleAccounts()).toBe(3);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=user_account.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user_account.test.js","sourceRoot":"","sources":["../../../src/utils/user_account.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,3 @@
|
|
|
9
9
|
* @returns A UUID string for the user.
|
|
10
10
|
*/
|
|
11
11
|
export declare function getInstallationId(): string;
|
|
12
|
-
/**
|
|
13
|
-
* Retrieves the obfuscated Google Account ID for the currently authenticated user.
|
|
14
|
-
* When OAuth is available, returns the user's cached Google Account ID. Otherwise, returns the installation ID.
|
|
15
|
-
* @returns A string ID for the user (Google Account ID if available, otherwise installation ID).
|
|
16
|
-
*/
|
|
17
|
-
export declare function getGoogleAccountId(): Promise<string>;
|
|
@@ -46,25 +46,4 @@ export function getInstallationId() {
|
|
|
46
46
|
return '123456789';
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Retrieves the obfuscated Google Account ID for the currently authenticated user.
|
|
51
|
-
* When OAuth is available, returns the user's cached Google Account ID. Otherwise, returns the installation ID.
|
|
52
|
-
* @returns A string ID for the user (Google Account ID if available, otherwise installation ID).
|
|
53
|
-
*/
|
|
54
|
-
export async function getGoogleAccountId() {
|
|
55
|
-
// Try to get cached Google Account ID first
|
|
56
|
-
try {
|
|
57
|
-
// Dynamic import to avoid circular dependencies
|
|
58
|
-
const { getCachedGoogleAccountId } = await import('../code_assist/oauth2.js');
|
|
59
|
-
const googleAccountId = getCachedGoogleAccountId();
|
|
60
|
-
if (googleAccountId) {
|
|
61
|
-
return googleAccountId;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
// If there's any error accessing Google Account ID, just return empty string
|
|
66
|
-
console.debug('Could not get cached Google Account ID:', error);
|
|
67
|
-
}
|
|
68
|
-
return '';
|
|
69
|
-
}
|
|
70
49
|
//# sourceMappingURL=user_id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user_id.js","sourceRoot":"","sources":["../../../src/utils/user_id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAEnE,SAAS,qBAAqB;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,OAAO,cAAc,IAAI,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAsB;IACvD,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,qBAAqB,EAAE,CAAC;QACxB,IAAI,cAAc,GAAG,0BAA0B,EAAE,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,UAAU,EAAE,CAAC;YAC9B,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,KAAK,CACN,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC
|
|
1
|
+
{"version":3,"file":"user_id.js","sourceRoot":"","sources":["../../../src/utils/user_id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAEnE,SAAS,qBAAqB;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,OAAO,cAAc,IAAI,IAAI,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,cAAsB;IACvD,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,qBAAqB,EAAE,CAAC;QACxB,IAAI,cAAc,GAAG,0BAA0B,EAAE,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,UAAU,EAAE,CAAC;YAC9B,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,gEAAgE,EAChE,KAAK,CACN,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { describe, it, expect } from 'vitest';
|
|
7
|
-
import { getInstallationId
|
|
7
|
+
import { getInstallationId } from './user_id.js';
|
|
8
8
|
describe('user_id', () => {
|
|
9
9
|
describe('getInstallationId', () => {
|
|
10
10
|
it('should return a valid UUID format string', () => {
|
|
@@ -17,26 +17,5 @@ describe('user_id', () => {
|
|
|
17
17
|
expect(secondCall).toBe(installationId);
|
|
18
18
|
});
|
|
19
19
|
});
|
|
20
|
-
describe('getGoogleAccountId', () => {
|
|
21
|
-
it('should return a non-empty string', async () => {
|
|
22
|
-
const result = await getGoogleAccountId();
|
|
23
|
-
expect(result).toBeDefined();
|
|
24
|
-
expect(typeof result).toBe('string');
|
|
25
|
-
// Should be consistent on subsequent calls
|
|
26
|
-
const secondCall = await getGoogleAccountId();
|
|
27
|
-
expect(secondCall).toBe(result);
|
|
28
|
-
});
|
|
29
|
-
it('should return empty string when no Google Account ID is cached, or a valid ID when cached', async () => {
|
|
30
|
-
// The function can return either an empty string (if no cached ID) or a valid Google Account ID (if cached)
|
|
31
|
-
const googleAccountIdResult = await getGoogleAccountId();
|
|
32
|
-
expect(googleAccountIdResult).toBeDefined();
|
|
33
|
-
expect(typeof googleAccountIdResult).toBe('string');
|
|
34
|
-
// Should be either empty string or a numeric string (Google Account ID)
|
|
35
|
-
if (googleAccountIdResult !== '') {
|
|
36
|
-
// If we have a cached ID, it should be a numeric string
|
|
37
|
-
expect(googleAccountIdResult).toMatch(/^\d+$/);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
20
|
});
|
|
42
21
|
//# sourceMappingURL=user_id.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user_id.test.js","sourceRoot":"","sources":["../../../src/utils/user_id.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"user_id.test.js","sourceRoot":"","sources":["../../../src/utils/user_id.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAE3C,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAEjD,6DAA6D;YAC7D,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|