From 8a57dc040223a4a4f505d193a4c7a53189ff370c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 May 2023 11:19:42 -0500 Subject: [PATCH] [Backport 8.3] Use correct user-agent header by default (#1874) Co-authored-by: Josh Mock --- src/client.ts | 5 ++++- test/unit/client.test.ts | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/client.ts b/src/client.ts index 0c12c1968..99bb60e4a 100644 --- a/src/client.ts +++ b/src/client.ts @@ -20,6 +20,7 @@ import { ConnectionOptions as TlsConnectionOptions } from 'tls' import { URL } from 'url' import buffer from 'buffer' +import os from 'os' import { Transport, UndiciConnection, @@ -173,7 +174,9 @@ export default class Client extends API { tls: null, caFingerprint: null, agent: null, - headers: {}, + headers: { + 'user-agent': `elasticsearch-js/${clientVersion} Node.js ${nodeVersion}; Transport ${transportVersion}; (${os.platform()} ${os.release()} ${os.arch()})` + }, nodeFilter: null, generateRequestId: null, name: 'elasticsearch-js', diff --git a/test/unit/client.test.ts b/test/unit/client.test.ts index 3131a8d6f..b9481d19b 100644 --- a/test/unit/client.test.ts +++ b/test/unit/client.test.ts @@ -432,3 +432,12 @@ test('caFingerprint can\'t be configured over http / 2', t => { ) t.end() }) + +test('user agent is in the correct format', t => { + const client = new Client({ node: 'http://localhost:9200' }) + const agentRaw = client.transport[symbols.kHeaders]['user-agent'] || '' + const agentSplit = agentRaw.split(/\s+/) + t.equal(agentSplit[0].split('/')[0], 'elasticsearch-js') + t.ok(/^\d+\.\d+\.\d+/.test(agentSplit[0].split('/')[1])) + t.end() +})