Skip to content

Commit 648305d

Browse files
Spencerspalger
andcommitted
[keystore_cli] parse values as JSON before adding to keystore (#80848)
Co-authored-by: spalger <spalger@users.noreply.github.com>
1 parent 5122530 commit 648305d

3 files changed

Lines changed: 22 additions & 1 deletion

File tree

src/cli_keystore/add.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,15 @@ export async function add(keystore, key, options = {}) {
5959
value = await question(`Enter value for ${key}`, { mask: '*' });
6060
}
6161

62-
keystore.add(key, value.trim());
62+
const parsedValue = value.trim();
63+
let parsedJsonValue;
64+
try {
65+
parsedJsonValue = JSON.parse(parsedValue);
66+
} catch {
67+
// noop, only treat value as json if it parses as JSON
68+
}
69+
70+
keystore.add(key, parsedJsonValue ?? parsedValue);
6371
keystore.save();
6472
}
6573

src/cli_keystore/add.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,17 @@ describe('Kibana keystore', () => {
129129
expect(keystore.data.foo).toEqual('bar');
130130
});
131131

132+
it('parses JSON values', async () => {
133+
prompt.question.returns(Promise.resolve('["bar"]\n'));
134+
135+
const keystore = new Keystore('/data/test.keystore');
136+
sandbox.stub(keystore, 'save');
137+
138+
await add(keystore, 'foo');
139+
140+
expect(keystore.data.foo).toEqual(['bar']);
141+
});
142+
132143
it('persists updated keystore', async () => {
133144
prompt.question.returns(Promise.resolve('bar\n'));
134145

src/legacy/server/keystore/keystore.test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,13 @@ describe('Keystore', () => {
157157
it('adds a key/value pair', () => {
158158
const keystore = new Keystore('/data/unprotected.keystore');
159159
keystore.add('a3', 'baz');
160+
keystore.add('a4', [1, 'a', 2, 'b']);
160161

161162
expect(keystore.data).toEqual({
162163
'a1.b2.c3': 'foo',
163164
a2: 'bar',
164165
a3: 'baz',
166+
a4: [1, 'a', 2, 'b'],
165167
});
166168
});
167169
});

0 commit comments

Comments
 (0)