'use strict' const { test } = require('tap') const { URL } = require('url') const { Client, symbols } = require('../../index') const { kConnectionPool } = symbols test('Configure host', t => { t.test('Single string', t => { const client = new Client({ node: 'http://localhost:9200' }) const pool = client[kConnectionPool] t.match(pool.connections.get('http://localhost:9200/'), { url: new URL('http://localhost:9200'), id: 'http://localhost:9200/', ssl: null, deadCount: 0, resurrectTimeout: 0, roles: { master: true, data: true, ingest: true, coordinating: true, machine_learning: true } }) t.end() }) t.test('Array of strings', t => { const client = new Client({ nodes: ['http://localhost:9200', 'http://localhost:9201'] }) const pool = client[kConnectionPool] t.match(pool.connections.get('http://localhost:9200/'), { url: new URL('http://localhost:9200'), id: 'http://localhost:9200/', ssl: null, deadCount: 0, resurrectTimeout: 0, roles: { master: true, data: true, ingest: true, coordinating: true, machine_learning: true } }) t.match(pool.connections.get('http://localhost:9201/'), { url: new URL('http://localhost:9201'), id: 'http://localhost:9201/', ssl: null, deadCount: 0, resurrectTimeout: 0, roles: { master: true, data: true, ingest: true, coordinating: true, machine_learning: true } }) t.end() }) t.test('Single object', t => { const client = new Client({ node: { url: new URL('http://localhost:9200'), id: 'node', roles: { master: true, data: false }, ssl: 'ssl' } }) const pool = client[kConnectionPool] t.match(pool.connections.get('node'), { url: new URL('http://localhost:9200'), id: 'node', ssl: 'ssl', deadCount: 0, resurrectTimeout: 0, roles: { master: true, data: false } }) t.end() }) t.test('Array of objects', t => { const client = new Client({ nodes: [{ url: new URL('http://localhost:9200'), id: 'node1', roles: { master: true, data: false }, ssl: 'ssl' }, { url: new URL('http://localhost:9200'), id: 'node2', roles: { master: false, data: true }, ssl: 'ssl' }] }) const pool = client[kConnectionPool] t.match(pool.connections.get('node1'), { url: new URL('http://localhost:9200'), id: 'node1', ssl: 'ssl', deadCount: 0, resurrectTimeout: 0, roles: { master: true, data: false } }) t.match(pool.connections.get('node2'), { url: new URL('http://localhost:9200'), id: 'node2', ssl: 'ssl', deadCount: 0, resurrectTimeout: 0, roles: { master: false, data: true } }) t.end() }) t.test('Custom headers', t => { const client = new Client({ node: { url: new URL('http://localhost:9200'), headers: { 'x-foo': 'bar' }, id: 'node' } }) const pool = client[kConnectionPool] t.match(pool.connections.get('node'), { url: new URL('http://localhost:9200'), headers: { 'x-foo': 'bar' } }) t.end() }) t.test('Missing node conf', t => { try { new Client() // eslint-disable-line t.fail('Should fail') } catch (err) { t.ok(err) } t.end() }) t.end() })